CN114169513B - 神经网络的量化方法、装置、存储介质及电子设备 - Google Patents
神经网络的量化方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN114169513B CN114169513B CN202210127214.XA CN202210127214A CN114169513B CN 114169513 B CN114169513 B CN 114169513B CN 202210127214 A CN202210127214 A CN 202210127214A CN 114169513 B CN114169513 B CN 114169513B
- Authority
- CN
- China
- Prior art keywords
- bit width
- quantization
- quantization bit
- input data
- neural network
- 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
- 238000013139 quantization Methods 0.000 title claims abstract description 276
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 98
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013507 mapping Methods 0.000 claims abstract description 45
- 238000004364 calculation method Methods 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 238000007667 floating Methods 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 230000001965 increasing effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及一种神经网络的量化方法、装置、存储介质及电子设备,该量化方法包括:接收神经网络中的前一神经网络层输出的与第一量化位宽对应的第一取值范围区间的输入数据;将输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,得到量化输入数据;根据量化输入数据对应的量化位宽进行计算,得到量化输出数据;将量化输出数据反映射到与第一量化位宽对应的第一取值范围区间,获得输出数据。本公开实现了量化的后的神经网络在不降低硬件间数据传输效率的同时提升推理精度的目的。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种神经网络的量化方法、装置、存储介质及电子设备。
背景技术
神经网络一般都使用FP32浮点来进行推理和训练,虽然浮点运算精度会更高,但是浮点运算会消耗大量运算资源,导致神经网络的效率底下。
量化是通过将浮点参数转化为定点参数,以降低运算精度进而提升运算速度的方法。在量化设定参数的范围内,将浮点运算转换为整数定点运算,进行前向推理,不会明显降低神经网络模型的准确性,并且能够加快运行速度,显著降低神经网络的推理和训练能耗,减少带宽,缩减神经网络处理器芯片面积,从而降低成本。
对于神经网络的量化来说,量化后的定点整数的量化位宽越大,神经网络模型的准确性越高,但是过大的量化位宽也会减慢神经网络处理器芯片的运行速度,另外,神经网络处理器芯片内部的运算并没有对量化位宽具有限制性要求。
因此,量化后的定点整数的优化,对于神经网络的量化以提升其量化精度,尚有改进的空间。
发明内容
有鉴于此,本公开提供一种神经网络的量化方法、装置、存储介质及电子设备,以提升量化后的神经网络的推理精度或处理速度,并且,硬件实现简单方便。
本公开的技术方案是这样实现的:
一种神经网络的量化方法,包括:
接收所述神经网络中的前一神经网络层输出的与第一量化位宽对应的第一取值范围区间的输入数据;
将所述输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,得到量化输入数据;
根据量化输入数据对应的量化位宽进行计算,得到量化输出数据;
将所述量化输出数据反映射到与所述第一量化位宽对应的所述第一取值范围区间,获得输出数据。
进一步地,所述将所述输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,包括如下步骤:
将与所述第二量化位宽对应的所述第二取值范围区间分为多个子区间;
对于所述多个子区间中的至少任意一个子区间,将对应所述子区间的输入数据从所述第一量化位宽映射为所述第二量化位宽,得到包括所述多个子区间的所述第二取值范围区间,其中,所述第一量化位宽小于所述第二量化位宽。
进一步地,所述将所述输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,包括如下步骤:
将与所述第二量化位宽对应的所述第二取值范围区间分为多个子区间;
对于所述多个子区间中的至少任意一个子区间,将对应所述子区间的输入数据从所述第一量化位宽映射为所述第二量化位宽,以及,将至少另一子区间的输入数据从所述第一量化位宽映射为第三量化位宽,得到包括所述多个子区间的所述第二取值范围区间,其中,所述第一量化位宽小于所述第二量化位宽,所述第一量化位宽大于所述第三量化位宽。
进一步地,在得到包括所述多个子区间的所述第二取值范围区间后,继续执行以下步骤:
将相邻的具有相同量化位宽的子区间进行合并;
获取合并后的量化位宽的子区间的起始位置和结束位置,并根据所述子区间对应的量化位宽执行所述计算。
进一步地,在所述根据量化输入数据对应的量化位宽进行计算,得到量化输出数据后,进一步包括以下步骤:
判断所述量化输出数据是否满足要求,如果不满足所述要求,则调整至少一个子区间对应的量化位宽,并根据调整后的各子区间的量化位宽进行所述计算。
一种神经网络的量化装置,包括:
数据接收单元,用于接收所述神经网络中的前一神经网络层输出的与第一量化位宽对应的第一取值范围区间的输入数据;
映射单元,用于将所述输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,得到量化输入数据;
计算单元,用于根据量化输入数据对应的量化位宽进行计算,得到量化输出数据;
反映射单元,用于将所述量化输出数据反映射到与所述第一量化位宽对应的所述第一取值范围区间,获得输出数据。
一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上任一项所述的神经网络的量化方法。
一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如上任一项所述的神经网络的量化方法。
从上述方案可以看出,本公开的神经网络的量化方法、装置、存储介质及电子设备,将神经网络中的前一神经网络层输出的位于第一取值范围区间的输入数据,映射至位于第二取值范围区间的量化输入数据,基于量化输入数据在当前神经网络层的推理,获得位于第二取值范围区间的量化输出数据,再将量化输出数据反映射回第一取值范围区间得到输出数据,一方面,能够确保输入数据和输出数据满足总线访问效率要求的对齐位宽,另一方面,NPU不需要进行硬件上的改造既可以不降低计算效率地直接进行提升量化位宽后的非对齐位宽的量化位宽的数据的计算,进而本公开实现了量化的后的神经网络在不降低硬件间数据传输效率的同时提升推理精度的目的。
附图说明
图1为本公开实施例的神经网络的量化方法的流程图;
图2为根据本公开实施例的神经网络的量化方法的数据变换过程示意图;
图3为本公开实施例中的一种8bit量化位宽和9bit量化位宽之间的映射关系的实施例示意图;
图4为本公开实施例的神经网络的量化装置的结构示意图;
图5为本公开实施例提供的电子设备的结构示意图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本公开作进一步详细说明。
常用的量化方法中,量化位宽一般会选择16bit(24)、8bit(23)、4bit(22)、2bit(21)、1bit(20)等对齐位宽,一般不会选择非2n(即,非对齐位宽)的量化位宽,这种非对齐的量化位宽会降低总线访问的效率,但是在NPU内部计算单元可以忽略这些差异,例如,可以将8bit的数据转换为9bit的数据进行运算,显然地,9bit的数据运算要比8bit的数据运算的精度更高。基于此种考虑,可以在NPU中将原有量化位宽的量化数据提升量化位宽后再进行神经网络层的运算,以提高运算精度,并在运算完毕后,将运算结果再降回原有量化位宽进行数据传输以确保总线访问效率,这样既能保证神经网络的运行速度又能提升神经网络的准确性。
图1是根据本公开实施例的神经网络的量化方法示出的流程图,图2是根据本公开实施例的神经网络的量化方法示出的数据变换过程示意图,如图1并结合图2所示,该神经网络的量化方法主要包括以下步骤:
步骤101、接收神经网络中的前一神经网络层输出的与第一量化位宽对应的第一取值范围区间的输入数据;
步骤102、将输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,得到量化输入数据;
步骤103、根据量化输入数据对应的量化位宽进行计算,得到量化输出数据;
步骤104、将量化输出数据反映射到与第一量化位宽对应的第一取值范围区间,获得输出数据。
由于神经网络是由多个神经网络层所组成,对于神经网络层中除首尾两端的神经网络层以外的任意一个神经网络层来说,是接收其前一神经网络层的输出数据(相当于步骤101中的输入数据)并进行推理得到本神经网络层的输出数据,本神经网络层的输出数据又作为下一层神经网络层的输入数据由下一神经网络层进行推理,整个神经网络的首端神经网络层可作为数据接收层以接收待推理的数据,整个神经网络的尾端神经网络层可作为数据输出层以输出最终的推理结果数据。基于此,在一些实施例中,步骤101中所接收的输入数据、以及步骤104所获得的输出数据,均为量化数据,在一些实施例中,输出数据是输出给下一神经网络层的数据,在一些实施例中,输入数据和输出数据是位宽为2n的对齐位宽的量化数据,输入数据和输出数据采用2n的对齐位宽的量化数据有利于NPU和内存之间的硬件间的数据传输,不会降低硬件间的数据传输效率。
另外,采用本公开的神经网络的量化方法的神经网络模型可以用于目标识别,目标检测,语音检测,语音解码,语音识别,声纹识别,语义分割等。
由于数据的量化位宽越大,神经网络模型的准确性越高,并且本公开实施例中是基于量化输入数据对应的量化位宽在当前神经网络层进行推理,同时,量化位宽越大对应的取值范围区间越大,所以量化输入数据的取值范围区间越大使得神经网络模型的准确性越高。本公开实施例中,量化输入数据是从输入数据通过步骤102转换而来,所以若要提升神经网络模型的准确性,则需要量化输入数据的取值范围大于输入数据的取值范围。
在此种情况下,输入数据的第一取值范围区间小于量化输入数据的第二取值范围区间。
在一些实施例中,输入数据在硬件介质间进行传输,例如神经网络中的各个神经网络层的推理结果数据在NPU和内存之间进行传输,采用量化方式,输入数据选择2n的量化位宽,例如常用的8bit量化位宽,这样能够确保硬件介质间的传输效率。
在一些实施例中,第一量化位宽为8bit量化位宽,输入数据为8bit量化位宽的输入数据。8bit所表示的范围例如[-128,127]或者[0,255]。
在一些实施例中,当前神经网络层的推理是在NPU中进行的,即,当前神经网络层基于量化输入数据进行计算获得位于第二取值范围区间的量化输出数据的执行主体为NPU,即:
在NPU中,当前神经网络层基于量化输入数据进行计算获得位于第二取值范围区间的量化输出数据。
在一些实施例中,对量化位宽的适当提升,对于NPU的计算推理来说,并不会降低NPU的性能,并且量化位宽的提升还能够提高运算精度,即在NPU内部计算单元中,可以忽略非2n的量化位宽的影响,例如,对于8bit量化位宽和9bit量化位宽来说,在NPU内部计算单元中的计算方式是完全一样的。所以,将8bit的数据提升至9bit给NPU进行计算是不需要对NPU的整体框架进行调整,只需要在NPU中添加相应的数据处理单元,采用软件控制的方式将8bit的量化位宽的数据映射到9bit的量化位宽的取值范围区间。基于此,在一些实施例中,第一取值范围区间为8bit量化位宽表示的取值范围,第二取值范围区间为9bit量化位宽表示的取值范围。
神经网络FM(Feature Map,特征图)数据分布是不均匀的,量化位宽越高,量化误差越小,精度相应就会高些。类似地,如果对精度没有那么高的需求,或者说,映射到小于第一量化位宽的第二量化位宽也可以满足需求,那么,在第一量化位宽为8bit时,可以将第二量化位宽设为7bit,以加快量化处理速度。
在一些实施例中,神经网络层之间传输的输入数据和输出数据,以矩阵(或张量)数据形式表示,输入数据中的各个元素的取值在量化的取值范围区间内并非均匀分布,而是在某些区域较为集中,在某些区域较为分散,甚至在某些区域没有取值。例如,卷积神经网络中的卷积层输出的FM中,取值集中的区域对特征推理的贡献大,而取值分散的区域对特征推理的贡献小,没有取值的区域对特征推理没有贡献。因此,在确定映射关系时,需要结合前一神经网络层输出的输入数据(即当前神经网络层的输入数据,即步骤101中所指的输入数据)在第一取值范围区间的分布以确定映射关系,进而在步骤102中根据输入数据和映射关系,使得所获得的位于第二取值范围区间的量化输入数据能够使得取值集中的区域对特征推理的贡献进一步加强,保留取值分散的区域对特征推理的贡献,并使得没有取值的区域对特征推理贡献的影响进一步减弱,进而能够提升推理的神经网络推理的准确性。
在此情况下,对于步骤102,该操作可以包括如下步骤:
步骤1021、将与第二量化位宽对应的第二取值范围区间分为多个子区间;
步骤1022、对于多个子区间中的至少任意一个子区间,将对应子区间的输入数据从第一量化位宽映射为第二量化位宽,得到包括多个子区间的第二取值范围区间,其中,第一量化位宽小于第二量化位宽。
在本公开实施例中,第二量化位宽可以大于第一量化位宽,例如,第二量化位宽为9bit,第一量化位宽为8bit,在另一实施例中,第二量化位宽可以小于第一量化位宽,例如第二量化位宽为7bit,在另一实施例中,除了包括第二量化位宽,还包括第三量化位宽,例如,第一量化位宽为8bit,第二量化位宽为9bit,第三量化位宽为7bit。在另一实施例中,第一量化位宽、第二量化位宽、和/或第三量化位宽至少占用一个子区间。
下面的实施例中,以第一取值范围区间为8bit量化位宽表示的取值范围,第二取值范围区间为9bit量化位宽表示的取值范围为例,进行说明。
步骤a、将9bit量化位宽表示的第二取值范围区间等分为16个子区间。
其中,9bit量化位宽共表示29=512个取值,取值范围例如[0,511]。16个子区间分别为[0,31]子区间、[32,63]子区间、[64,95]子区间、[96,127]子区间、[128,159]子区间、[160,191]子区间、[192,223]子区间、[224,255]子区间、[256,287]子区间、[288,319]子区间、[320,351]子区间、[352,383]子区间、[384,415]子区间、[416,447]子区间、[448,479]子区间、[480,511]子区间。
步骤b、将16个子区间中的至少任意一个子区间进行输入数据的7bit量化或者8bit量化,除7bit量化或者8bit量化以外的其它子区间采用9bit量化,使得第二取值范围区间包括7bit量化位宽子区间、8bit量化位宽子区间、9bit量化位宽子区间中的至少之一。
其中,量化的映射关系为:
Q1=S(Q2-Z)
其中,Q1为位于第一取值范围区间的任一数值,Q2为位于第二取值范围区间的任一数值,S为缩放参数,Z为零点值,其中,S和Z的取值在神经网络的量化过程中进行确定。其中,对于每一个子区间均有对应的S和Z的取值。
其中,S和Z包括i、w和o,即输入、权重和输出,FM特征映射包括:
ri=Si(Qi-Zi) (1)
rw=Sw(Qw-Zw) (2)
ro=So(Qo-Zo) (3)
其中,i、w、o分别代表输入、权重、输出,r为浮点实数,Q表示量化后的定点整数,S(即Scale)表示浮点实数和定点整数之间的比例关系,S为浮点实数,Z(即Zero Point)表示实数中的0(零)经过量化后对应的定点整数。
Scale不是固定的,每个FM不一样,量化校准集不一样(选取的图片,量化的数量,量化的方式),Scale会不一样。
例如有一层FM的量化信息为:
Min:-1.452
Max:1.704
Scale(9bit):0.0062
Zero(9bit):-22
Scale(8bit):0.0124
Zero(8bit):-11
Scale(7bit):0.0248
Zero(7bit):-6
套用上述公式:Q1=S(Q2-Z),则:
当S=Scale(9bit),Z=Zero(9bit)时,若Q1=Min,则Q2=-256,若Q1=Max,则Q2=252,可以看出,量化后的取值区间为-256至252,数量为508,即29范围,实现了对Q1的9bit量化;
当S=Scale(8bit),Z=Zero(8bit)时,若Q1=Min,则Q2=-128,若Q1=Max,则Q2=126,可以看出,量化后的取值区间为-128至126,数量为254,即28范围,实现了对Q1的8bit量化;
当S=Scale(8bit),Z=Zero(8bit)时,若Q1=Min,则Q2=-64,若Q1=Max,则Q2=62,可以看出,量化后的取值区间为-64至62,数量为126,即27范围,实现了对Q1的7bit量化。
在一些实施例中,步骤b中,结合于神经网络的量化过程,对于7bit量化或者9bit量化的子区间进行选取,以根据具体情况来提高量化速度(比如,7bit)或者量化精度(比如,9bit)。
在另一实施例中,还包括:
将相邻的具有相同量化位宽的子区间进行合并。
获取合并后的量化位宽的子区间的起始位置和结束位置,并根据该子区间对应的量化位宽执行计算。其中,可以根据起始位置和步进宽度得到每个子区间的结束位置。
图3示出了一种8bit量化位宽和9bit量化位宽之间的映射关系的实施例示意图。其中,9bit量化位宽的取值范围为[0,511],8bit量化位宽的取值范围为[0,255],图3示出了从8bit量化位宽的取值范围到9bit量化位宽的取值范围的映射关系,基于该映射关系可以基于8bit量化位宽中的取值获取对应的9bit量化位宽中的取值,也可以基于9bit量化位宽中的取值获取对应的8bit量化位宽中的取值。如图3所示:
9bit量化位宽的量化输入数据中,[0,63]的子区间为7bit量化位宽子区间,在[0,63]的7bit量化位宽子区间中的量化输入数据的取值是通过上述量化的映射关系式由8bit量化位宽的输入数据的取值经过7bit量化所得,其中,[0,63]的7bit量化位宽子区间由[0,31]子区间和[32,63]子区间合并而成,由于[0,31]子区间和[32,63]子区间均为7bit量化位宽子区间并且相邻,所以可将[0,31]子区间和[32,63]子区间进行合并,根据上述映射关系,8bit量化位宽的输入数据中落入[0,15]区间内的元素,映射至9bit量化位宽的[0,63]的7bit量化位宽子区间内,作为9bit量化位宽的量化输入数据中的[0,63]的7bit量化位宽子区间内的元素;
9bit量化位宽的量化输入数据中,[64,127]的子区间为8bit量化位宽子区间,在[64,127]的8bit量化位宽子区间中的量化输入数据的取值是通过上述量化的映射关系式由8bit量化位宽的输入数据的取值经过8bit量化所得,其中,[64,127]的8bit量化位宽子区间由[64,95]子区间和[96,127]子区间合并而成,由于[64,95]子区间和[96,127]子区间均为8bit量化位宽子区间并且相邻,所以可将[64,95]子区间和[96,127]子区间进行合并,根据上述映射关系,8bit量化位宽的输入数据中落入[16,47]区间内的元素,映射至9bit量化位宽的[64,127]的8bit量化位宽子区间内,作为9bit量化位宽的量化输入数据中的[64,127]的8bit量化位宽子区间内的元素;
9bit量化位宽的量化输入数据中,[128,191]的子区间为9bit量化位宽子区间,在[128,191]的9bit量化位宽子区间中的量化输入数据的取值是通过上述量化的映射关系式由8bit量化位宽的输入数据的取值经过9bit量化所得,其中,[128,191]的9bit量化位宽子区间由[128,159]子区间和[160,191]子区间合并而成,由于[128,159]子区间和[160,191]子区间均为9bit量化位宽子区间并且相邻,所以可将[128,159]子区间和[160,191]子区间进行合并,根据上述映射关系,8bit量化位宽的输入数据中落入[48,111]区间内的元素,映射至9bit量化位宽的[128,191]的9bit量化位宽子区间内,作为9bit量化位宽的量化输入数据中的[128,191]的9bit量化位宽子区间内的元素;
9bit量化位宽的量化输入数据中,[192,255]的子区间为8bit量化位宽子区间,在[192,255]的8bit量化位宽子区间中的量化输入数据的取值是通过上述量化的映射关系式由8bit量化位宽的输入数据的取值经过8bit量化所得,其中,[192,255]的8bit量化位宽子区间由[192,223]子区间和[224,255]子区间合并而成,由于[192,223]子区间和[224,255]子区间均为8bit量化位宽子区间并且相邻,所以可将[192,223]子区间和[224,255]子区间进行合并,根据上述映射关系,8bit量化位宽的输入数据中落入[112,143]区间内的元素,映射至9bit量化位宽的[192,255]的8bit量化位宽子区间内,作为9bit量化位宽的量化输入数据中的[192,255]的8bit量化位宽子区间内的元素;
9bit量化位宽的量化输入数据中,[256,319]的子区间为9bit量化位宽子区间,在[256,319]的9bit量化位宽子区间中的量化输入数据的取值是通过上述量化的映射关系式由8bit量化位宽的输入数据的取值经过9bit量化所得,其中,[256,319]的9bit量化位宽子区间由[256,287]子区间和[288,319]子区间合并而成,由于[256,287]子区间和[288,319]子区间均为9bit量化位宽子区间并且相邻,所以可将[256,287]子区间和[288,319]子区间进行合并,根据上述映射关系,8bit量化位宽的输入数据中落入[144,207]区间内的元素,映射至9bit量化位宽的[256,319]的9bit量化位宽子区间内,作为9bit量化位宽的量化输入数据中的[256,319]的9bit量化位宽子区间内的元素;
9bit量化位宽的量化输入数据中,[320,511]的子区间为7bit量化位宽子区间,在[320,511]的7bit量化位宽子区间中的量化输入数据的取值是通过上述量化的映射关系式由8bit量化位宽的输入数据的取值经过7bit量化所得,其中,[320,511]的7bit量化位宽子区间由[320,351]子区间、[352,383]子区间、[384,415]子区间、[416,447]子区间、[448,479]子区间和[480,511]子区间合并而成,由于[320,351]子区间、[352,383]子区间、[384,415]子区间、[416,447]子区间、[448,479]子区间和[480,511]子区间均为7bit量化位宽子区间并且相邻,所以可将[320,351]子区间、[352,383]子区间、[384,415]子区间、[416,447]子区间、[448,479]子区间和[480,511]子区间进行合并,根据上述映射关系,8bit量化位宽的输入数据中落入[208,255]区间内的元素,映射至9bit量化位宽的[320,511]的7bit量化位宽子区间内,作为9bit量化位宽的量化输入数据中的[320,511]的7bit量化位宽子区间内的元素。
基于上述映射关系,便可以根据8bit量化位宽(第一取值范围区间)的输入数据获得对应的9bit量化位宽(第二取值范围区间)的量化输入数据,同样地,基于上述映射关系,也可以根据9bit量化位宽(第二取值范围区间)的量化输出数据进行反映射而获得对应的8bit量化位宽(第一取值范围区间)的输出数据。
图3所示实施例中,9bit量化位宽的量化输入数据中包括了7bit量化位宽子区间、8bit量化位宽子区间和9bit量化位宽子区间。根据这种映射关系,使得8bit量化位宽的输入数据中的取值稠密区间(如图3中8bit量化位宽的输入数据的[48,111]子区间和[144,207]子区间)能够以9bit量化位宽进行计算,使得落入9bit量化位宽的量化输入数据在9bit量化位宽的取值范围内(如图3中9bit量化位宽的量化输入数据的[128,191]子区间和[256,319]子区间)的分布相对于7bit和8bit量化位宽的取值范围内的分布更稠密;使得8bit量化位宽的输入数据中的取值稀疏区间(如图3中8bit量化位宽的输入数据的[0,15]子区间和[208,255]子区间)能够以7bit量化位宽进行计算,使得落入9bit量化位宽的量化输入数据在7bit量化位宽的取值范围内(如图3中9bit量化位宽的量化输入数据的[0,63]子区间和[320,511]子区间)的分布相对于8bit和9bit量化位宽的取值范围内的分布更稀疏;使得8bit量化位宽的输入数据中的取值分布介于稠密和稀疏之间的区间(如图3中8bit量化位宽的输入数据的[16,47]子区间和[112,143]子区间)能够以8bit量化位宽进行计算,使得落入9bit量化位宽的量化输入数据在8bit量化位宽的取值范围内(如图3中9bit量化位宽的量化输入数据的[64,127]子区间和[192,255]子区间)的分布介于7bit和9bit量化位宽的取值范围内的稀疏分布和稠密分布之间。
通过这种方式,强化了输入数据中分布稠密(集中)区域的元素取值对特征推理的贡献,保留了输入数据中分布相对分散的区域的元素取值对特征推理的贡献,弱化了输入数据中没有取值的区域对特征推理贡献的影响,进而能够提升推理的神经网络推理的准确性。
步骤c、获取9bit量化位宽的量化输入数据中的各个量化位宽子区间的起始取值和步进宽度,以最终确定出各个量化位宽子区间在9bit量化位宽的取值的范围。
量化精度是指量化后的神经网络模型的精度,仍然采用原来模型的评价体系。
比如,一个原始的分类模型的精度为0.7534,根据工程要求,下降不得高于一个百分点,也就是量化模型精度必须高于0.7434。
比如:
完全采用9bit量化位宽,精度可达到0.7528;
完全采用8bit量化位宽,精度会下降到0.7468;
完全采用7bit量化位宽,精度直接调到0.6943;
将第二取值范围区间的取值范围划分为多个子区间,就可以达到0.7496。
上述实施例的神经网络的量化方法,将神经网络中的前一神经网络层输出的位于第一取值范围区间(例如8bit量化位宽)的输入数据,映射至位于第二取值范围区间(例如9bit量化位宽)的量化输入数据,NPU基于量化输入数据在当前神经网络层的计算,获得位于第二取值范围区间(例如9bit量化位宽)的量化输出数据,再将量化输出数据反映射回第一取值范围区间(例如8bit量化位宽)得到输出数据,一方面,能够确保输入数据和输出数据满足总线访问效率要求的对齐位宽2n,另一方面,NPU不需要进行硬件上的改造就可以不降低计算效率地直接进行提升量化位宽后的非对齐位宽2n的量化位宽的数据的计算,进而采用本公开实施例的神经网络的量化方法实现了量化的后的神经网络在不降低硬件间数据传输效率的同时提升推理和训练精度的目的。
图4是本公开实施例的神经网络的量化装置的结构示意图,如图4所示,该神经网络的量化装置包括数据接收单元401、映射单元402、计算单元403和反映射单元404。其中,数据接收单元401,用于接收神经网络中的前一神经网络层输出的与第一量化位宽对应的第一取值范围区间的输入数据。映射单元402,用于将输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,得到量化输入数据。计算单元403,用于根据量化输入数据对应的量化位宽进行计算,得到量化输出数据。反映射单元404,用于将量化输出数据反映射到与第一量化位宽对应的第一取值范围区间,获得输出数据。
关于上述实施例的神经网络的量化装置,其中各个单元执行操作的具体方式已经在上述实施例的神经网络的量化方法中进行了详细描述,此处不再赘述。
需要说明的是:上述实施例仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
关于上述实施例的神经网络的量化装置,其中各个单元执行操作的具体方式已经在上述实施例的神经网络的量化方法中进行了详细描述,此处不再赘述。
需要说明的是:上述实施例仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
需要说明的是:上述实施例仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
本公开实施例还同时提供一种非易失性计算机可读存储介质,该非易失性计算机可读存储介质存储指令,该指令在由处理器执行时使得所述处理器执行如上述各项实施例说明中的神经网络的量化方法。
本公开实施例还同时提供一种电子设备,如图5所示,该电子设备包括:至少一个处理器501以及存储器502。存储器502和至少一个处理器501通信连接,例如存储器502和至少一个处理器501通过总线连接。存储器502存储有可被至少一个处理器501执行的指令,所述指令被至少一个处理器501执行,以使至少一个处理器501执行如上述各项实施例说明中的神经网络的量化方法。
本公开实施例还同时提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由计算机设备的处理器执行,以完成上述各个实施例提供的神经网络的量化方法。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
Claims (8)
1.一种神经网络的量化方法,其特征在于,包括:
接收所述神经网络中的前一神经网络层输出的与第一量化位宽对应的第一取值范围区间的输入数据;
将所述输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,得到量化输入数据;
根据量化输入数据对应的量化位宽进行计算,得到量化输出数据;
将所述量化输出数据反映射到与所述第一量化位宽对应的所述第一取值范围区间,获得输出数据;
其中,所述第二取值范围区间包括多个子区间,所述第一量化位宽至少占用一个所述子区间,所述第二量化位宽至少占用一个所述子区间,所述第一量化位宽小于所述第二量化位宽。
2.根据权利要求1所述的神经网络的量化方法,其特征在于:
所述将所述输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,包括如下步骤:
将与所述第二量化位宽对应的所述第二取值范围区间分为所述多个子区间;
对于所述多个子区间中的至少任意一个子区间,将对应所述子区间的输入数据从所述第一量化位宽映射为所述第二量化位宽,得到包括所述多个子区间的所述第二取值范围区间。
3.根据权利要求1所述的神经网络的量化方法,其特征在于:
所述将所述输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,包括如下步骤:
将与所述第二量化位宽对应的所述第二取值范围区间分为所述多个子区间;
对于所述多个子区间中的至少任意一个子区间,将对应所述子区间的输入数据从所述第一量化位宽映射为所述第二量化位宽,以及,将至少另一子区间的输入数据从所述第一量化位宽映射为第三量化位宽,得到包括所述多个子区间的所述第二取值范围区间,其中,所述第一量化位宽大于所述第三量化位宽。
4.根据权利要求2或3所述的神经网络的量化方法,其特征在于:
在得到包括所述多个子区间的所述第二取值范围区间后,继续执行以下步骤:
将相邻的具有相同量化位宽的子区间进行合并;
获取合并后的量化位宽的子区间的起始位置和结束位置,并根据所述子区间对应的量化位宽执行所述计算。
5.根据权利要求2或3所述的神经网络的量化方法,其特征在于:
在所述根据量化输入数据对应的量化位宽进行计算,得到量化输出数据后,进一步包括以下步骤:
判断所述量化输出数据是否满足要求,如果不满足所述要求,则调整至少一个子区间对应的量化位宽,并根据调整后的各子区间的量化位宽进行所述计算。
6.一种神经网络的量化装置,其特征在于,包括:
数据接收单元,用于接收所述神经网络中的前一神经网络层输出的与第一量化位宽对应的第一取值范围区间的输入数据;
映射单元,用于将所述输入数据映射到至少包括与第二量化位宽对应的第二取值范围区间,得到量化输入数据,其中,所述第二取值范围区间包括多个子区间,所述第一量化位宽至少占用一个所述子区间,所述第二量化位宽至少占用一个所述子区间,所述第一量化位宽小于所述第二量化位宽;
计算单元,用于根据量化输入数据对应的量化位宽进行计算,得到量化输出数据;
反映射单元,用于将所述量化输出数据反映射到与所述第一量化位宽对应的所述第一取值范围区间,获得输出数据。
7.一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,其特征在于,所述指令在由处理器执行时使得所述处理器执行如权利要求1至5任一项所述的神经网络的量化方法。
8.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如权利要求1至5任一项所述的神经网络的量化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210127214.XA CN114169513B (zh) | 2022-02-11 | 2022-02-11 | 神经网络的量化方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210127214.XA CN114169513B (zh) | 2022-02-11 | 2022-02-11 | 神经网络的量化方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114169513A CN114169513A (zh) | 2022-03-11 |
CN114169513B true CN114169513B (zh) | 2022-05-24 |
Family
ID=80489687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210127214.XA Active CN114169513B (zh) | 2022-02-11 | 2022-02-11 | 神经网络的量化方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114169513B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114648101B (zh) * | 2022-05-13 | 2022-08-12 | 杭州研极微电子有限公司 | 基于transformer结构的softmax函数量化实现方法和装置 |
CN118626148A (zh) * | 2024-08-09 | 2024-09-10 | 中昊芯英(杭州)科技有限公司 | 基于神经网络模型的数据存储方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109389212A (zh) * | 2018-12-30 | 2019-02-26 | 南京大学 | 一种面向低位宽卷积神经网络的可重构激活量化池化系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480770B (zh) * | 2017-07-27 | 2020-07-28 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
US20210374511A1 (en) * | 2019-08-23 | 2021-12-02 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
CN110969251B (zh) * | 2019-11-28 | 2023-10-31 | 中国科学院自动化研究所 | 基于无标签数据的神经网络模型量化方法及装置 |
US12099930B2 (en) * | 2019-12-12 | 2024-09-24 | Texas Instruments Incorporated | Parametric power-of-2 clipping activations for quantization for convolutional neural networks |
CN111563589B (zh) * | 2020-04-14 | 2024-01-16 | 中科物栖(南京)科技有限公司 | 一种神经网络模型的量化方法及装置 |
CN114004327A (zh) * | 2021-01-15 | 2022-02-01 | 西安微电子技术研究所 | 一种适配于运行在fpga上的神经网络加速器的自适应量化方法 |
-
2022
- 2022-02-11 CN CN202210127214.XA patent/CN114169513B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109389212A (zh) * | 2018-12-30 | 2019-02-26 | 南京大学 | 一种面向低位宽卷积神经网络的可重构激活量化池化系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114169513A (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114169513B (zh) | 神经网络的量化方法、装置、存储介质及电子设备 | |
CN108701250B (zh) | 数据定点化方法和装置 | |
CN111488985B (zh) | 深度神经网络模型压缩训练方法、装置、设备、介质 | |
CN110780938B (zh) | 一种移动云环境下基于差分进化的计算任务卸载方法 | |
CN111240746B (zh) | 一种浮点数据反量化及量化的方法和设备 | |
WO2022021834A1 (zh) | 神经网络模型确定方法、装置、电子设备、介质及产品 | |
WO2021057926A1 (zh) | 一种神经网络模型训练方法及装置 | |
CN113642710B (zh) | 一种网络模型的量化方法、装置、设备和存储介质 | |
CN115983349A (zh) | 卷积神经网络的量化方法及装置、电子设备和存储介质 | |
CN113780523B (zh) | 图像处理方法、装置、终端设备及存储介质 | |
CN116992946B (zh) | 模型压缩方法、装置、存储介质和程序产品 | |
CN113159318B (zh) | 一种神经网络的量化方法、装置、电子设备及存储介质 | |
CN116523888B (zh) | 路面裂缝的检测方法、装置、设备及介质 | |
CN110837885B (zh) | 一种基于概率分布的Sigmoid函数拟合方法 | |
CN112686365B (zh) | 运行神经网络模型的方法、装置和计算机设备 | |
CN116884398A (zh) | 语音识别方法、装置、设备和介质 | |
CN112446461A (zh) | 一种神经网络模型训练方法及装置 | |
CN117973480A (zh) | 校准神经网络量化的方法、装置、设备、介质和程序产品 | |
CN112712164B (zh) | 一种神经网络的非均匀量化方法 | |
CN114372553A (zh) | 一种神经网络的量化方法及装置 | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN113762496B (zh) | 一种降低低比特卷积神经网络推理运算复杂度的方法 | |
CN109359728B (zh) | 计算神经网络压缩最佳定点位数的方法、存储介质和装置 | |
CN113255576B (zh) | 人脸识别方法及装置 | |
WO2021031298A1 (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 |