CN111240746B - 一种浮点数据反量化及量化的方法和设备 - Google Patents
一种浮点数据反量化及量化的方法和设备 Download PDFInfo
- Publication number
- CN111240746B CN111240746B CN202010028998.1A CN202010028998A CN111240746B CN 111240746 B CN111240746 B CN 111240746B CN 202010028998 A CN202010028998 A CN 202010028998A CN 111240746 B CN111240746 B CN 111240746B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- calculation
- format
- floating point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000013139 quantization Methods 0.000 title claims abstract description 59
- 238000004364 calculation method Methods 0.000 claims abstract description 98
- 239000011159 matrix material Substances 0.000 claims abstract description 89
- 102100030148 Integrator complex subunit 8 Human genes 0.000 claims abstract description 40
- 101710092891 Integrator complex subunit 8 Proteins 0.000 claims abstract description 40
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000009825 accumulation Methods 0.000 claims abstract description 11
- 230000001186 cumulative effect Effects 0.000 claims abstract description 5
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 22
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000002360 explosive Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013138 pruning Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Abstract
本发明提供了一种浮点数据反量化及量化的方法和设备,该方法包括以下步骤:将存储器中的INT8数据转换成浮点数据;提取浮点数据中的指数得到指数矩阵并将指数矩阵中的最大值存储到数据存储器;响应于指数矩阵中的值不均为0,基于最大值得到移位矩阵;基于移位矩阵计算得到用于卷积计算的尾数矩阵;基于尾数矩阵进行卷积乘累加计算得到格式为FINT32的结果;将格式为FINT32的结果转换成格式为fp32的数据以用于卷积输入通道的累加计算。通过使用本发明的方法,能够在卷积计算时保持数据的高精度,同时减少复杂运算,能够有效保证计算的高精度,同时由于复杂计算的简化,减少了FPGA硬件资源的消耗,提高计算速度。
Description
技术领域
本领域涉及计算机领域,并且更具体地涉及一种浮点数据反量化及量化的方法和设备。
背景技术
随着数据的爆炸性增长以及人工智能的蓬勃发展,卷积神经网络广泛应用于各种人工智能应用中。在人工智能应用中,以计算机视觉相关应用最多,例如图像分类、人脸识别等,这些应用的共同特点是对精度的要求较高。因此在对网络模型进行训练时,为了获取高的精度,一般都使用浮点数据类型,例如单精度(IEEE标准单精度浮点数据格式,以下称fp32)、双精度(double)及半精度(以下称bfp16等)。然而,在推理时,为了获取低延时及高吞吐量,往往采用量化后的整型数据,常用的数据类型有INT16、INT8等。
CNN的基本组成是固定的,分别为输入层、卷积层、激活层、池化层和全连接层。其中计算量最大的部分是卷积层,其主要的功能就是完成图像(feature)与卷积核(filter)之间的卷积运算。
卷积层的结构参数主要有以下几种:
卷积核尺寸(Kernel Size):定义了卷积操作的感受野。在二维卷积中,通常设置为3,即卷积核大小为3×3。步幅(Stride):定义了卷积核遍历图像时的步幅大小。其默认值通常设置为1,也可将步幅设置为2后对图像进行下采样,这种方式与最大池化类似。边界扩充(Padding):定义了网络层处理样本边界的方式。当卷积核大于1且不进行边界扩充,输出尺寸将相应缩小;当卷积核以标准方式进行边界扩充,则输出数据的空间尺寸将与输入相等。输入与输出通道(Channels):构建卷积层时需定义输入通道I,并由此确定输出通道O。这样,可算出每个网络层的参数量为I×O×K,其中K为卷积核的参数个数。例,某个网络层有64个大小为3×3的卷积核,则对应K值为3×3=9。
网络压缩技巧越来越多地用于神经网络加速中,这些技巧一般包含模型量化、剪枝等,其中模型量化应用尤为广泛。模型压缩是指将需要计算的feature及filter数据,由浮点数据类型量化为整型数据进行网络计算,这样能够显著加快网络计算速度,但是会造成部分计算精度的损失。数据计算的精度与最终网络推理的精度直接相关,网络计算数据精度的降低会造成推理精度的下降。目前硬件加速网络推理发展迅猛,利用FPGA、ASIC等硬件,配合模型量化方法,不仅能够获得低延时及高吞吐量,在成本和功耗方面也表现优异。然而,由于浮点计算量远远超过整型数据计算量,并且采用浮点计算会消耗大量的硬件资源,同时计算时间也更长,因此FPGA及ASIC绝大部分都是采用整型数据进行网络推理计算。高精度及高吞吐率似乎不可兼得,如何在两者之间取得最好的平衡是大家研究的热点问题。
目前网络推理过程大多会采用量化、剪枝等网络压缩技巧,同时利用整型数据进行计算,这样能够加快推理过程,提高图像应用的吞吐率。然而也会带来精度的损失,对于一些对精度要求很高的应用,精度的损失往往是不可接受的。
发明内容
有鉴于此,本发明实施例的目的在于提出一种浮点数据反量化及量化的方法和设备,通过使用本发明的方法,能够在卷积计算时保持数据的高精度,同时减少复杂运算,能够有效保证计算的高精度,同时由于复杂计算的简化,减少了FPGA硬件资源的消耗,提高计算速度。
基于上述目的,本发明的实施例的一个方面提供了一种浮点数据反量化及量化的方法,包括以下步骤:
将存储器中的INT8数据转换成浮点数据;
提取浮点数据中的指数得到指数矩阵并将指数矩阵中的最大值存储到数据存储器;
响应于指数矩阵中的值不均为0,基于最大值得到移位矩阵;
基于移位矩阵计算得到用于卷积计算的尾数矩阵;
基于所述尾数矩阵进行卷积乘累加计算得到格式为FINT32的结果;
将所述格式为所述FINT32的结果转换成格式为所述fp32的数据以用于卷积输入通道的累加计算。
根据本发明的一个实施例,将存储器中的INT8数据转换成浮点数据包括:
从存储器中读取格式均为INT8的feature数据和filter数据,通过查找表的方式将格式为INT8的feature数据和filter数据转换为格式为fp32的浮点数据。
根据本发明的一个实施例,还包括:
响应于指数矩阵中的为0的值,得到尾数结果为8`b0。
根据本发明的一个实施例,基于最大值得到移位矩阵包括:
用最大值减去指数矩阵得到移位矩阵。
根据本发明的一个实施例,基于移位矩阵计算得到用于卷积计算的尾数矩阵包括:
取量化后的格式为fp32的浮点数据的尾数部分,前面加1`b1;
按照移位矩阵右移,然后取高7bit后,在前面添加1bit的符号位以得到用于计算的尾数矩阵。
根据本发明的一个实施例,将格式为FINT32的结果转换成格式为fp32的数据包括:
将格式为FINT32的数据的符号位保留作为最终数据的符号位,在FINT[23:0]这些bit中,从高位向低位寻找第一个“1”并记下索引,索引后的8bit即为新的尾数的高8bit,如果索引位置后不足8bit,则高位用0补足8bit;
响应于找不到“1”,或者最大值中有一个数为0,则最终指数为0;
根据公式计算得到新的符号位、指数和尾数以得到格式为fp32的最终结果。
根据本发明的一个实施例,还包括:
将格式为fp32的数据转换成格式为INT8的数据。
根据本发明的一个实施例,将格式为fp32的数据转换成格式为INT8的数据包括:
将格式为fp32数据的数值范围分为若干个区间,每个区间分配对应的量化值;
在FPGA中通过IP核计算出格式为fp32的整数部分Int和小数部分Frac;
利用Int即可找到对应的量化区间,然后计算格式为fp32数值在量化区间的位置,最后可得到格式为INT8的最终结果。
本发明的实施例的另一个方面,还提供了一种浮点数据反量化及量化的设备,设备包括:
第一转换模块,所述第一转换模块配置为将存储器中的INT8数据转换成浮点数据;
提取模块,提取模块配置为提取浮点数据中的指数得到指数矩阵并将指数矩阵中的最大值存储到数据存储器;
第一计算模块,计算模块配置为响应于指数矩阵中的值不均为0,基于最大值得到移位矩阵;
第二计算模块,第二计算模块配置为基于移位矩阵计算得到用于卷积计算的尾数矩阵;
第三计算模块,所述第三计算模块配置为基于所述尾数矩阵进行卷积乘累加计算得到格式为FINT32的结果;
第二转换模块,所述第二转换模块配置为将所述格式为所述FINT32的结果转换成格式为所述fp32的数据以用于卷积输入通道的累加计算。
本发明的实施例的另一个方面,还提供了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时执行上述任意一项所述的方法。
本发明具有以下有益技术效果:本发明实施例提供的浮点数据反量化及量化的方法,通过将存储器中的INT8数据转换成浮点数据;提取浮点数据中的指数得到指数矩阵并将指数矩阵中的最大值存储到数据存储器;响应于矩阵中的值不均为0,基于最大值得到移位矩阵;基于移位矩阵计算得到用于卷积计算的尾数矩阵;基于所述尾数矩阵进行卷积乘累加计算得到格式为FINT32的结果;将所述格式为所述FINT32的结果转换成格式为所述fp32的数据以用于卷积输入通道的累加计算的技术方案,能够在卷积计算时保持数据的高精度,同时减少复杂运算,能够有效保证计算的高精度,同时由于复杂计算的简化,减少了FPGA硬件资源的消耗,提高计算速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明一个实施例的浮点数据反量化及量化的方法的示意性流程图;
图2为根据本发明一个实施例的浮点数据反量化的设备的示意图;
图3为根据本发明一个实施例的反量化及量化过程的过程示意图;
图4为根据本发明一个实施例的计算矩阵的过程示意图;
图5为根据本发明一个实施例的fp32量化为INT8的过程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
基于上述目的,本发明的实施例的第一个方面,提出了一种浮点数据反量化及量化的方法的一个实施例。图1示出的是该方法的示意性流程图。
如图1中所示,该方法可以包括以下步骤:
S1将存储器中的INT8数据转换成浮点数据;
S2提取浮点数据中的指数得到指数矩阵并将指数矩阵中的最大值存储到数据存储器;
S3响应于指数矩阵中的值不均为0,基于最大值得到移位矩阵;
S4基于移位矩阵计算得到用于卷积计算的尾数矩阵;
S5基于所述尾数矩阵进行卷积乘累加计算得到格式为FINT32的结果;
S6将所述格式为所述FINT32的结果转换成格式为所述fp32的数据以用于卷积输入通道的累加计算。
本发明基于FPGA硬件平台,提出了一种浮点数据反量化的方法,利用整数数据的格式代表浮点数据,在加快计算过程的同时,能够保持计算数据的高精度。该方法适用于CNN中的卷积、激活、残差等各种运算,与传统方法相比,本发明能够有效提高神经网络计算的精度,从而提高网络推理的精度。
本发明中提出的反量化过程是指将INT8数据最终转变为整型数据进行计算,该过程的中间结果均为“整型数据”,计算后得到的结果数据具有INT32的格式,实际可代表fp32数据精度。本发明中的量化是指将FINT32数据最终转变为普通INT8数据。
图3是反量化及量化过程的简易过程图,一般来说,在卷积计算开始之前,需要从片外存储器(一般为DDR)中读取feature和filter数据,存储在DDR中的数据格式为INT8。然后,通过查表法将INT8格式的数据转换为fp32格式,经过反量化算法处理后,得出具有整型数据格式的尾数及指数部分,以用于卷积计算。卷积计算完成后的数据类型为FINT32格式,经过量化算法处理可将FINT32数据转换回fp32格式,fp32格式数据可以继续用于其他类型的计算(如池化、残差等),也可以经查表量化转为INT8格式,送回DDR存储。
通过本发明的技术方案,能够在卷积计算时保持数据的高精度,同时减少复杂运算,能够有效保证计算的高精度,同时由于复杂计算的简化,减少了FPGA硬件资源的消耗,提高计算速度。
在本发明的一个优选实施例中,将存储器中的INT8数据转换成浮点数据包括:
从存储器中读取格式均为INT8的feature数据和filter数据,通过查找表的方式将格式为INT8的feature数据和filter数据转换为格式为fp32的浮点数据。首先,从DDR中读取feature和filter数据,格式均为INT8。用于神经网络计算的数据具有一定的分布范围,在主机端(CPU)可以根据统计规律可以将INT8的数据进行浮点量化,得到浮点量化表。FPGA将量化表的数据存储在寄存器阵列或者RAM中,可以通过查找表的方式快速完成INT8转换为fp32的量化过程。
在本发明的一个优选实施例中,还包括:
响应于指数矩阵中的值为0,得到尾数结果为8`b0。
在本发明的一个优选实施例中,基于最大值得到移位矩阵包括:
用最大值减去指数矩阵得到移位矩阵。
在本发明的一个优选实施例中,基于移位矩阵计算得到用于卷积计算的尾数矩阵包括:
取量化后的格式为fp32的浮点数据的尾数部分,前面加1`b1;
按照移位矩阵右移,然后取高7bit后,在前面添加1bit的符号位以得到用于计算的尾数矩阵。
如果直接利用FPGA完成浮点运算,需要消耗大量DSP硬件资源。尤其是多通道并行进行卷积计算时,FPGA片上的硬件资源将难以满足计算需求。本发明将fp32数据转换为“整型数据”进行计算,以3x3卷积为例,进行一次卷积所需feature和filter数据均为3x3的矩阵,分别提取feature和filter数据的符号位、指数和尾数,得到指数矩阵feature_exp和filter_exp后,求得最大值Max_feature_exp和Max_filter_exp并寄存到FIFO中,后续计算仍需使用。与此同时,对指数矩阵做判断,如果指数为0,则直接得出最终尾数结果为8`b0;否则用指数最大值减去指数矩阵,得到移位矩阵N_shift_feature和N_shift_filter,操作过程如下:
N_shift_feature=Max_feature_exp.–feature_exp
N_shift_filter=Max_filter_exp.–filter_exp
得到移位矩阵后,取量化后fp32数据的尾数部分(即0-22位),前面加1`b1,再按照移位矩阵右移N_shift_feature(或者N_shift_filter),取高7bit后,再在前面添加1bit的符号位,便得到用于计算的尾数矩阵Mantissa_feature和Mantissa_filter。图4是得到尾数feature矩阵的过程示意图,同样适用于获取尾数filter矩阵过程。
在本发明的一个优选实施例中,将格式为FINT32的结果转换成格式为fp32的数据包括:
将格式为FINT32的数据的符号位保留作为最终数据的符号位,在FINT[23:0]这些bit中,从高位向低位寻找第一个“1”并记下索引,索引后的8bit即为新的尾数的高8bit,如果索引位置后不足8bit,则高位用0补足8bit;
响应于找不到“1”,或者最大值中有一个数为0,则最终指数为0;
根据公式计算得到新的符号位、指数和尾数以得到格式为fp32的最终结果。
得到尾数矩阵后,便可以进行卷积乘累加计算,计算规则与INT8完全一致,运算以补码格式进行,通过扩充符号位,最终结果为FINT32,该计算结果为中间结果,无法用于卷积输入通道累加计算,需要将其转换回fp32格式。
得到FINT32格式数据后,符号位保留作为最终数据的符号位;在FINT[23:0]这些bit中,从高位向低位寻找第一个“1”,记下其索引Index,Index后面的8bit即为新的尾数的高8bit,Index位置后不足8bit,则高位用0补足8bit。如果找不到“1”,或者Max_feature_exp和Max_filter_exp其中有一个数为0,则FINT32=0,最终指数为0。按照上述规则,再根据计算New_sign、New_exp和New_mantissa的公式能够得到新的符号位、指数和尾数,即可得到fp32的最终结果。
在本发明的一个优选实施例中,还包括:
将格式为fp32的数据转换成格式为INT8的数据。
在本发明的一个优选实施例中,将格式为fp32的数据转换成格式为INT8的数据包括:
将格式为fp32数据的数值范围分为若干个区间,每个区间分配对应的量化值;
在FPGA中通过IP核计算出格式为fp32的整数部分Int和小数部分Frac;
利用Int即可找到对应的量化区间,然后计算格式为fp32数值在量化区间的位置,最后可得到格式为INT8的最终结果。
fp32格式数据用于卷积输入通道累加计算时,能够保持高精度。在神经网络计算中,得到卷积计算结果fp32还可直接用于但用于存储则会消耗较大的存储带宽,因此需要将其转换为INT8格式。fp32量化为INT8主要过程如图5所示。首先,将fp32数值范围分为若干个区间0-f1、f1-f2……,每个区间分配对应的量化值N1、N2……;然后在FPGA中通过IP核计算出fp32的整数部分Int和小数部分Frac,利用Int即可找到对应的量化区间,其起始索引为Index_start,然后计算fp32数值在量化区间的位置Index_pos=ceil(frac*Nx),Nx为该量化区间的量化值数目。最后可得最终量化结果为INT8=Index_start+Index_pos。
以上即是fp32数据的量化及反量化算法实现流程。需要指出的是,本发明举例时采用的是3x3单精度浮点的数据与3x3的单精度浮点数据相乘,实际上,由于FPGA编程的灵活性,同时进行量化或反量化的数据个数可以任意指定,这样能够充分利用FPGA并行处理的特性。
当然,以上量化反量化算法的具体过程是针对于卷积而言的,对于其他的计算过程,算法实现过程是类似的,在一些细节上可能有所差异,本发明只是以卷积计算来举例说明。
以上算法流程分为多个步骤,还可以充分利用FPGA流水线处理的特点,以提高算法执行的效率,在保证精度的同时不降低性能
通过本发明的技术方案,能够在卷积计算时保持数据的高精度,同时减少复杂运算,能够有效保证计算的高精度,同时由于复杂计算的简化,减少了FPGA硬件资源的消耗,提高计算速度。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
此外,根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。
基于上述目的,本发明的实施例的第二个方面,提出了一种浮点数据反量化及量化的设备,如图2所示,设备200包括:
第一转换模块201,第一转换模块201配置为将存储器中的INT8数据转换成浮点数据;
提取模块202,提取模块202配置为提取浮点数据中的指数得到指数矩阵并将指数矩阵中的最大值存储到数据存储器;
第一计算模块203,计算模块203配置为响应于指数矩阵中的值不均为0,基于最大值得到移位矩阵;
第二计算模块204,第二计算模块204配置为基于移位矩阵计算得到用于卷积计算的尾数矩阵;
第三计算模块205,所述第三计算模块205配置为基于所述尾数矩阵进行卷积乘累加计算得到格式为FINT32的结果;
第二转换模块206,所述第二转换模块206配置为将所述格式为所述FINT32的结果转换成格式为所述fp32的数据以用于卷积输入通道的累加计算。
需要特别指出的是,上述系统的实施例采用了上述方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到上述方法的其他实施例中。
此外,上述方法步骤以及系统单元或模块也可以利用控制器以及用于存储使得控制器实现上述步骤或单元或模块功能的计算机程序的计算机可读存储介质实现。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。
Claims (9)
1.一种浮点数据反量化及量化的方法,其特征在于,包括以下步骤:
将存储器中的INT8数据转换成浮点数据;
提取所述浮点数据中的指数得到指数矩阵并将所述指数矩阵中的最大值存储到数据存储器;
响应于所述指数矩阵中的值不均为0,基于所述最大值得到移位矩阵;
基于所述移位矩阵计算得到用于卷积计算的尾数矩阵;
基于所述尾数矩阵进行卷积乘累加计算得到格式为FINT32的结果;
将所述格式为所述FINT32的结果转换成格式为fp32的数据以用于卷积输入通道的累加计算,其中将所述格式为所述FINT32的结果转换成格式为所述fp32的数据包括将格式为所述FINT32的数据的符号位保留作为最终数据的符号位,在FINT[23:0]这些bit中,从高位向低位寻找第一个1并记下索引,所述索引后的8bit即为新的尾数的高8bit,如果所述索引位置后不足8bit,则高位用0补足8bit,响应于找不到所述1,或者所述最大值中有一个数为0,则最终指数为0,根据公式计算得到新的符号位、指数和尾数以得到格式为所述fp32的最终结果。
2.根据权利要求1所述的方法,其特征在于,将存储器中的INT8数据转换成浮点数据包括:
从所述存储器中读取格式均为INT8的feature数据和filter数据,通过查找表的方式将格式为所述INT8的所述feature数据和filter数据转换为格式为fp32的浮点数据。
3.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述指数矩阵中的值为0,得到尾数结果为8`b0。
4.根据权利要求1所述的方法,其特征在于,基于所述最大值得到移位矩阵包括:
用所述最大值减去所述指数矩阵得到移位矩阵。
5.根据权利要求1所述的方法,其特征在于,基于所述移位矩阵计算得到用于卷积计算的尾数矩阵包括:
取量化后的格式为所述fp32的所述浮点数据的尾数部分,前面加1`b1;
按照所述移位矩阵右移,然后取高7bit后,在前面添加1bit的符号位以得到用于计算的所述尾数矩阵。
6.根据权利要求1所述的方法,其特征在于,还包括:
将格式为所述fp32的数据转换成格式为所述INT8的数据。
7.根据权利要求6所述的方法,其特征在于,将格式为所述fp32的数据转换成格式为所述INT8的数据包括:
将格式为所述fp32数据的数值范围分为若干个区间,每个区间分配对应的量化值;
在FPGA中通过IP核计算出格式为所述fp32的整数部分Int和小数部分Frac;
利用Int即可找到对应的量化区间,然后计算格式为所述fp32数值在量化区间的位置,最后可得到格式为所述INT8的最终结果。
8.一种浮点数据反量化及量化的设备,其特征在于,所述设备包括:
第一转换模块,所述第一转换模块配置为将存储器中的INT8数据转换成浮点数据;
提取模块,所述提取模块配置为提取所述浮点数据中的指数得到指数矩阵并将所述指数矩阵中的最大值存储到数据存储器;
第一计算模块,所述计算模块配置为响应于所述指数矩阵中的值不均为0,基于所述最大值得到移位矩阵;
第二计算模块,所述第二计算模块配置为基于所述移位矩阵计算得到用于卷积计算的尾数矩阵;
第三计算模块,所述第三计算模块配置为基于所述尾数矩阵进行卷积乘累加计算得到格式为FINT32的结果;
第二转换模块,所述第二转换模块配置为将所述格式为所述FINT32的结果转换成格式为fp32的数据以用于卷积输入通道的累加计算,所述第二转换模块还配置为将格式为所述FINT32的数据的符号位保留作为最终数据的符号位,在FINT[23:0]这些bit中,从高位向低位寻找第一个1并记下索引,所述索引后的8bit即为新的尾数的高8bit,如果所述索引位置后不足8bit,则高位用0补足8bit,响应于找不到所述1,或者所述最大值中有一个数为0,则最终指数为0,根据公式计算得到新的符号位、指数和尾数以得到格式为所述fp32的最终结果。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时执行如权利要求1-7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010028998.1A CN111240746B (zh) | 2020-01-12 | 2020-01-12 | 一种浮点数据反量化及量化的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010028998.1A CN111240746B (zh) | 2020-01-12 | 2020-01-12 | 一种浮点数据反量化及量化的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111240746A CN111240746A (zh) | 2020-06-05 |
CN111240746B true CN111240746B (zh) | 2023-01-10 |
Family
ID=70866112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010028998.1A Active CN111240746B (zh) | 2020-01-12 | 2020-01-12 | 一种浮点数据反量化及量化的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111240746B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230096994A1 (en) * | 2020-04-29 | 2023-03-30 | Marvell Asia Pte Ltd | System and method for int9 quantization |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112200296B (zh) * | 2020-07-31 | 2024-04-05 | 星宸科技股份有限公司 | 网络模型量化方法、装置、存储介质及电子设备 |
CN112230882B (zh) * | 2020-10-28 | 2021-06-01 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
CN114610267A (zh) * | 2022-03-22 | 2022-06-10 | 奥比中光科技集团股份有限公司 | 一种基于指数函数和softmax函数的优化方法、硬件系统及芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160239706A1 (en) * | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
CN109284475A (zh) * | 2018-09-20 | 2019-01-29 | 郑州云海信息技术有限公司 | 一种矩阵卷积计算模块及矩阵卷积计算方法 |
CN109740740A (zh) * | 2019-01-03 | 2019-05-10 | 厦门美图之家科技有限公司 | 卷积计算的定点加速方法及装置 |
EP3557484A1 (en) * | 2016-12-14 | 2019-10-23 | Shanghai Cambricon Information Technology Co., Ltd | Neural network convolution operation device and method |
-
2020
- 2020-01-12 CN CN202010028998.1A patent/CN111240746B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160239706A1 (en) * | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
EP3557484A1 (en) * | 2016-12-14 | 2019-10-23 | Shanghai Cambricon Information Technology Co., Ltd | Neural network convolution operation device and method |
CN109284475A (zh) * | 2018-09-20 | 2019-01-29 | 郑州云海信息技术有限公司 | 一种矩阵卷积计算模块及矩阵卷积计算方法 |
CN109740740A (zh) * | 2019-01-03 | 2019-05-10 | 厦门美图之家科技有限公司 | 卷积计算的定点加速方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230096994A1 (en) * | 2020-04-29 | 2023-03-30 | Marvell Asia Pte Ltd | System and method for int9 quantization |
Also Published As
Publication number | Publication date |
---|---|
CN111240746A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111240746B (zh) | 一种浮点数据反量化及量化的方法和设备 | |
US10929746B2 (en) | Low-power hardware acceleration method and system for convolution neural network computation | |
US11580719B2 (en) | Dynamic quantization for deep neural network inference system and method | |
CN110070178B (zh) | 一种卷积神经网络计算装置及方法 | |
CN110147251B (zh) | 用于计算神经网络模型的系统、芯片及计算方法 | |
US10096134B2 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
US10491239B1 (en) | Large-scale computations using an adaptive numerical format | |
CN110852416B (zh) | 基于低精度浮点数数据表现形式的cnn硬件加速计算方法及系统 | |
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN107256424B (zh) | 三值权重卷积网络处理系统及方法 | |
WO2019238029A1 (zh) | 卷积神经网络系统和卷积神经网络量化的方法 | |
CN112329922A (zh) | 一种基于质谱数据集的神经网络模型压缩方法及系统 | |
CN113132723B (zh) | 一种图像压缩方法及装置 | |
CN112633477A (zh) | 一种基于现场可编程阵列的量化神经网络加速方法 | |
CN111382860A (zh) | 一种lstm网络的压缩加速方法及fpga加速器 | |
EP3931758A1 (en) | Neural network layer processing with scaled quantization | |
KR20190140841A (ko) | 확률 적응적 자원 할당을 통한 신경망 하드웨어 가속 | |
CN110110852B (zh) | 一种深度学习网络移植到fpag平台的方法 | |
CN114626516A (zh) | 一种基于对数块浮点量化的神经网络加速系统 | |
CN116762080A (zh) | 神经网络生成装置、神经网络运算装置、边缘设备、神经网络控制方法以及软件生成程序 | |
CN113537479A (zh) | 神经网络电路、边缘设备以及神经网络运算方法 | |
CN112686365A (zh) | 运行神经网络模型的方法、装置和计算机设备 | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN113313253A (zh) | 神经网络压缩方法、数据处理方法、装置及计算机设备 | |
CN114139678A (zh) | 卷积神经网络量化方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |