CN114781618A - 一种神经网络量化处理方法、装置、设备及可读存储介质 - Google Patents
一种神经网络量化处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN114781618A CN114781618A CN202210467176.2A CN202210467176A CN114781618A CN 114781618 A CN114781618 A CN 114781618A CN 202210467176 A CN202210467176 A CN 202210467176A CN 114781618 A CN114781618 A CN 114781618A
- Authority
- CN
- China
- Prior art keywords
- convolution
- result
- value
- current layer
- bias
- 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.)
- Pending
Links
- 238000013139 quantization Methods 0.000 title claims abstract description 184
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 75
- 238000003672 processing method Methods 0.000 title claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 55
- 238000010606 normalization Methods 0.000 claims description 48
- 230000004913 activation Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 18
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 6
- 230000003213 activating effect Effects 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 abstract description 49
- 238000004364 calculation method Methods 0.000 abstract description 45
- 230000008569 process Effects 0.000 abstract description 23
- 238000013473 artificial intelligence Methods 0.000 abstract description 21
- 230000002349 favourable effect Effects 0.000 abstract 1
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 37
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 37
- 230000014509 gene expression Effects 0.000 description 28
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请适用于人工智能数据处理技术领域,公开了一种神经网络量化处理方法、装置、设备及可读存储介质,在进行神经网络量化处理中,通过将量化系数均转换为小于且等于最接近的2的幂次方的形式,使得在后续量化与反量化过程中,只需要右移处理,不需要进行整型的乘法计算,省略了大量计算步骤;在进行反量化与进一步量化的过程中,先将当前层卷积运算的初始卷积结果加上由当前层量化后的偏置参数和2n‑1的弥补项合并的值,n由当前层的量化系数求得;再进行量化推理运算,使得神经网络量化推理简化为卷积、加法和移位,进一步简化了量化推理的步骤,节约了大量的计算资源和存储资源,有利于在算力和资源有限的人工智能设备上部署人工智能应用。
Description
技术领域
本申请涉及人工智能数据处理技术领域,特别是涉及一种神经网络量化处理方法、装置、设备及可读存储介质。
背景技术
为适应计算量较大、计算密度较高的人工智能(Artificial Intelligence,AI)技术发展,需要对性能落后的人工智能设备进行改进,同时挖掘计算更加高效的人工智能算法。神经网络量化是一种在不影响人工智能算法的精度和效果的前提下,完成简化网络计算,减少计算量和计算密度,加速神经网络计算的人工智能处理方案。
神经网络量化即将占用计算资源多的高比特数据转换为占用计算资源少的低比特数据,目前最常用的是将FP32转换为INT8的量化,即将32位浮点数据转换为8位整型数据,用INT8(-128~127)范围内的整数来表示FP32的数据(一般位于-1.0~1.0之间)并进行卷积计算。神经网络量化包括两部分量化任务:权重量化和特征值量化。权值量化是根据权值参数的最大值,将FP32的权值参数量化到INT8的范围内。特征值量化需要根据数据集的结果动态获取特征量化系数。在神经网络量化完成后,即得到需要参与量化计算的量化系数,包括权值量化系数和特征量化系数。在进行神经网络计算的过程中,需要进行量化的算子会进行INT8或INT16(16位整型数据)的计算,之后会得到INT32的结果,这时需要把结果反量化为FP32,最后再量化为INT8,再进行下一层卷积的计算。
而在上述神经网络量化过程中,在反量化和进一步量化的过程中,对于INT32的卷积输出,需要乘以一个较大值,然后加上移位所需的弥补量,再进行右移,整个过程需要多种不同的计算形式:乘、加和移位,对于算力和资源有限的人工智能芯片来说,整个过程过于复杂,耗费较多的计算和存储周期和资源,同时对人工智能芯片的架构和设计具有较大的挑战。
发明内容
本申请的目的是提供一种神经网络量化处理方法、装置、设备及可读存储介质,用于降低量化处理复杂度,从而降低对算力和资源的要求,节约系统资源且提高人工智能应用在设备部署的可靠性。
为解决上述技术问题,本申请提供一种神经网络量化处理方法,包括:
对当前层卷积运算的模型权值和所述当前层卷积运算的输入特征值进行卷积运算后,得到初始卷积结果;
将所述初始卷积结果加上预设偏置值,得到第二卷积结果;
将所述第二卷积结果进行右移n位处理,得到第三卷积结果;
适应下一层卷积运算的输入需求,将所述第三卷积结果转换为所述当前层卷积运算的最终输出结果;
其中,所述预设偏置值为所述当前层卷积运算中量化后的偏置参数与弥补项合并得到,且所述预设偏置值的数据类型与所述初始卷积结果的数据类型相同;
所述偏置参数为所述当前层卷积运算的卷积算子和所述当前层卷积运算的归一化算子融合后的偏置值;
所述弥补项为2n-1,n=a+b-c,a为所述模型权值的量化系数最接近且小于等于的2的幂次方数的幂值,b为所述输入特征值的量化系数最接近且小于等于的2的幂次方数的幂值,c为所述当前层卷积运算的输出特征值的量化系数最接近且小于等于的2的幂次方数的幂值,n、a、b、c均为正整数;
所述模型权值、所述输入特征值、所述输出特征值均为量化后的低比特数据。
可选的,所述当前层卷积运算包括具有偏置项的卷积算子和不具有偏置项的卷积算子;
对所述具有偏置项的卷积算子,所述偏置参数为所述具有偏置项的卷积算子的偏置项与所述归一化算子的第二权值的和值;
对所述不具有偏置项的卷积算子,所述偏置参数为所述归一化算子的第二权值;
所述归一化算子的第二权值为所述归一化算子除输入量的系数外的另一权值。
可选的,所述当前层卷积运算包括具有偏置项的卷积算子和不具有偏置项的卷积算子;
所述偏置参数包括第一偏置参数和第二偏置参数;
所述第一偏置参数为所述具有偏置项的卷积算子的偏置项;
所述第二偏置参数为所述归一化算子的第二权值;
所述预设偏置值为量化后的所述第一偏置参数、量化后的所述第二偏置参数与所述弥补项合并得到;
其中,所述归一化算子的第二权值为所述归一化算子除输入量的系数外的另一权值。
可选的,所述适应下一层卷积运算的输入需求,将所述第三卷积结果转换为所述当前层卷积运算的最终输出结果,具体包括:
将所述第三卷积结果进行过阈操作,得到过阈操作结果;
将所述过阈操作结果进行强制转换为低比特数据操作,得到低比特数据类型结果;
将所述低比特数据类型结果进行激活处理,得到所述最终输出结果。
可选的,所述将所述第三卷积结果进行过阈操作,得到过阈操作结果,具体包括:
若所述当前层卷积运算不具有激活层,则将所述第三卷积结果转换为(-127,127)范围的所述过阈操作结果;
若所述当前层卷积运算具有激活层,则将所述第三卷积结果转换为(0,255)范围的所述过阈操作结果。
可选的,所述将所述低比特数据类型结果进行激活处理,得到所述当前层卷积运算的最终输出结果,具体根据下式转换得到:
其中,yf为所述最终输出结果,ReLU(x)为对x的激活函数,x为所述低比特数据类型结果。
可选的,所述量化后的低比特数据具体为8位整型数据。
为解决上述技术问题,本申请还提供一种神经网络量化处理装置,包括:
卷积运算单元,用于对当前层卷积运算的模型权值和所述当前层卷积运算的输入特征值进行卷积运算后,得到初始卷积结果;
预处理单元,用于将所述初始卷积结果加上预设偏置值,得到第二卷积结果;
移位处理单元,用于将所述第二卷积结果进行右移n位处理,得到第三卷积结果;
输出转换处理单元,用于适应下一层卷积运算的输入需求,将所述第三卷积结果转换为所述当前层卷积运算的最终输出结果;
其中,所述预设偏置值为所述当前层卷积运算中量化后的偏置参数与弥补项合并得到,且所述预设偏置值的数据类型与所述初始卷积结果的数据类型相同;
所述偏置参数为所述当前层卷积运算的卷积算子和所述当前层卷积运算的归一化算子融合后的偏置值;
所述弥补项为2n-1,n=a+b-c,a为所述模型权值的量化系数最接近且小于等于的2的幂次方数的幂值,b为所述输入特征值的量化系数最接近且小于等于的2的幂次方数的幂值,c为所述当前层卷积运算的输出特征值的量化系数最接近且小于等于的2的幂次方数的幂值,n、a、b、c均为正整数;
所述模型权值、所述输入特征值、所述输出特征值均为量化后的低比特数据。
为解决上述技术问题,本申请还提供一种神经网络量化处理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如上述任意一项所述神经网络量化处理方法的步骤。
为解决上述技术问题,本申请还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述神经网络量化处理方法的步骤。
本申请所提供的神经网络量化处理方法,在进行神经网络量化处理中,通过将量化系数均转换为小于且等于最接近的2的幂次方的形式,使得在后续量化与反量化过程中,只需要右移处理,而不需要进行整型的乘法计算,省略了大量的计算步骤;在对当前层卷积运算的初始卷积结果进行反量化与进一步量化的过程中,先将初始卷积结果加上由当前层量化后的偏置参数和2n-1的弥补项合并的值,n由当前层的量化系数求得;再进行量化推理运算,使得神经网络量化推理简化为卷积、加法和移位三个步骤即可完成现有技术中需要卷积、加法、乘法、加法、移位所需的计算,进一步简化了量化推理的步骤,节约了大量的计算资源和存储资源,适于在算力和资源有限的人工智能设备上部署人工智能应用。
本申请还提供一种神经网络量化处理装置、设备及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种神经网络量化处理方法的流程图;
图2为本申请实施例提供的权值量化示意图;
图3为本申请实施例提供的一种量化过程示意图;
图4为本申请实施例提供的一种步骤S104的具体实施方式的流程图;
图5为本申请实施例提供的另一种神经网络量化处理方法的流程图;
图6为本申请实施例提供的一种神经网络量化处理装置的结构示意图;
图7为本申请实施例提供的一种神经网络量化处理设备的结构示意图。
具体实施方式
本申请的核心是提供一种神经网络量化处理方法、装置、设备及可读存储介质,用于降低量化处理复杂度,从而降低对算力和资源的要求,节约系统资源且提高人工智能应用在设备部署的可靠性。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
图1为本申请实施例提供的一种神经网络量化处理方法的流程图;图2为本申请实施例提供的权值量化示意图;图3为本申请实施例提供的一种量化过程示意图。
神经网络量化即将占用计算资源多的高比特数据转换为占用计算资源少的低比特数据,目前最常用的是将FP32(32位浮点数据)转换为INT8(8位整型数据)的量化。则在本申请中,量化后的低比特数据均可以为8位整型数据。
神经网络量化包括权值量化和特征值量化两部分。
权值量化是根据权值参数的最大值,把FP32的权值参数量化到INT8的范围之内即-128~127。如图2所示,通过量化得到的权值量化系数scalew(weights scale factor),将输出变为INT8类型的数据。
权值量化系数scalew可以通过下式求取:
其中,ε=10-5。
特征量化需要根据数据集的结果动态获取特征量化系数scaleaf。
具体地,需要找到卷积网络中每一层FP32特征数据的最佳阈值作为量化的边界,假设卷积神经网络中某一层特征阈值为a,那么本层的特征量化系数为本层特征中所有的元素都要乘以该系数并四舍五入为整数,并将大于127的数据强制等于127,小于-128的数据强制等于-128。这样就保证了所有的数据转化为-128~127之间的整数,并当进行卷积计算的时候,使用转化好的INT8数据进行计算。
常用的特征量化方法有最大值量化、KL散度量化、百分比99.9%量化、百分比99.99%量化、百分比99.999%量化等,不同的方法对应不同的特征量化系数。首先从数据集中随机筛选出来一部分数据集(全部数据集的1/50左右)进行推理,获取每一层输出特征的结果(FP32数据类型),并保存;之后根据设置的量化方法求取对应的特征量化系数scaleaf。
神经网络量化包括训练中量化和训练后量化两种。本申请的量化目标为INT8类型的数据,故只采用训练后量化的方式,即能满足计算精度的需求,最后的计算结果与FP32计算结果基本一致或者损失很小,不需要参与前期训练的过程。
在神经网络量化完成之后,即可得到需要参与量化计算的量化系数包括权值量化系数scalew和特征量化系数scaleaf。一般在进行神经网络计算的过程中,需要进行量化的算子,如conv2D(二维卷积)算子,会进行INT8或INT16(16位整型数据)的计算,之后会得到INT32(32位整型数据)的结果,这时需要把结果反量化为FP32,最后再量化为INT8,不过真正实现时往往是将反量化和量化进行合并。如图3所示,在当前层卷积运算中,模型权值W、特征值X均为INT8类型的数据,进行卷积运算后得到INT32类型的卷积结果,将偏置B量化为INT32类型数据后与INT32类型的卷积结果求和得到INT32类型的结果,进行反量化得到FP32类型的数据,再量化得到INT8类型的数据。
而对于实现了全整型推理的量化算法中,为了满足推理精度要求,推理步骤又过于繁琐。为保证在量化推理过程中,使用全整型计算,且推理步骤简单又保证神经网络的计算精度需求,如图1所示,本申请实施例提供的神经网络量化处理方法包括:
S101:对当前层卷积运算的模型权值和当前层卷积运算的输入特征值进行卷积运算后,得到初始卷积结果。
S102:将初始卷积结果加上预设偏置值,得到第二卷积结果。
S103:将第二卷积结果进行右移n位处理,得到第三卷积结果。
S104:适应下一层卷积运算的输入需求,将第三卷积结果转换为当前层卷积运算的最终输出结果。
其中,预设偏置值为当前层卷积运算中量化后的偏置参数与弥补项合并得到,且预设偏置值的数据类型与初始卷积结果的数据类型相同。
偏置参数为当前层卷积运算的卷积算子和当前层卷积运算的归一化算子融合后的偏置值。
弥补项为2n-1,n=a+b-c,a为模型权值的量化系数最接近且小于等于的2的幂次方数的幂值,b为输入特征值的量化系数最接近且小于等于的2的幂次方数的幂值,c为当前层卷积运算的输出特征值的量化系数最接近且小于等于的2的幂次方数的幂值,n、a、b、c均为正整数。
模型权值、输入特征值、输出特征值均为量化后的低比特数据。
具体地,对于步骤S101来说,在当前层卷积运算中,卷积层(Conv)的计算表达式通常如下:
y=(∑wa)+(bias); (2)
其中,y为当前层卷积运算的卷积计算结果;w为当前层卷积运算的模型权值;a为当前层卷积运算的输入值,称为特征值或激活值;bias为当前层卷积运算的偏置值。对于神经网络来说,有的卷积层可能具有偏置bias,有的不具有。
对于神经网络来说,当经过以上的卷积运算之后会有归一化层(Batch Norm)和激活层(ReLU层),将卷积运算结果进行归一化和激活。
归一化层的归一化表达式为:y′=αy+β; (3)
其中,y′为归一化之后的结果,y为本层的卷积计算结果,α和β均为归一化参数。
其中,yf为激活值,ReLU(x)为激活函数,x为卷积算子的输出。
经过以上激活后,yf∈[0,+∞)。
则根据当前层卷积运算所包含的算子类型,将卷积算子和归一化算子融合后,参考图3所示的量化过程,先将INT8类型的模型权值和INT8类型的输入特征值进行卷积运算,此时得到INT32类型的初始卷积结果,而后需要将INT32类型的初始卷积结果进行反量化和进一步量化。
对于步骤S102来说,为将INT32类型的初始卷积结果进行反量化,需要除以卷积运算过程中用到的系数,如下式所示:
其中,ydq为反量化后的值,yq为INT32类型的激活值(即参照表达式(4)对初始卷积结果进行激活后的值),scalew为模型权值w的量化系数,scalea为输入特征值a的量化系数。ydq为浮点数值,需要对其进行进一步量化,即乘以当前层卷积运算的输出特征值的量化系数scaleyf,将输出特征值进一步量化到INT8的范围,作为下一层的输入特征值anext_q,即下式所示:
在实际的人工智能芯片运算中,由于人工智能芯片可能只支持INT类型的计算,上述的计算形式不能出现。故在本申请实施例中,将输出特征值的量化系数scaleyf、模型权值的量化系数scalew、输入特征值的量化系数scalea,均做转换为最接近且小于等于的2的幂次方数(round_power_2)处理。
则模型权值的量化系数scalew通过下式得到:
输入特征值的量化系数scalea通过表达式(8)或(9)得到:
其中,如果量化在激活之前执行,则取127(即表达式(8));如果量化在激活之后发生,则可以取255(即表达式(9))。
如果不进行round_power_2处理,量化系数本身可以为任意值。而本申请对量化系数进行round_power_2处理后,假设不进行round_power_2处理的量化系数为1033.3,那么离1033.3最接近且小于等于的2的幂次方数(2n形式)为1024即210,那么最终采用的量化系数为210。
则在经过对输出特征值的量化系数scaleyf、模型权值的量化系数scalew、输入特征值的量化系数scalea等进行round_power_2处理后,表达式(6)可以表达为:
INT8(anext_q)=yq>>Shift_value; (10)
那么假设经过量化后,模型权值的量化系数scalew=2a,输入特征值的量化系数scalea=2b,输出特征值的量化系数scaleyf=2c,那么
Shift_value=a+b-c。 (11)
一般在移位运算过程中,为弥补移位计算带来的误差,需要对移位计算进行移位的弥补计算,具体为在右移之前进行一个弥补加法,对于表达式(10),在移位之前,卷积或激活的输出首先要加上2a+b-c-1。则整个量化推理计算过程可以表达为:
anext_q=ReLU((INT32(∑INT8(wq)·INT8(aq))+INT32(biasq)+2Shift_value-1)>>Shift_value)=ReLU((INT32(∑INT8(wq)·INT8(aq))+INT32(biasq+2Shift_value-1))>>Shift_value)=ReLU((INT32(∑INT8(wq)·INT8(aq))+INT32(new_biasq))>>Shift_value)。(12)
通过表达式(12)可以看到,可以先将量化后的偏置参数biasq和弥补项2Shift_value-1合为一个新的表达形式new_biasq,再进行量化推理运算。
则在步骤S102中,根据模型权值的量化系数scalew=2a,输入特征值的量化系数scalea=2b,输出特征值的量化系数scaleyf=2c确定a、b、c,令n=Shift_value=a+b-c,以2n-1为弥补项。对步骤S101得到的INT32的初始卷积结果加上由当前层卷积运算中量化后的偏置参数与弥补项合并得到的预设偏置值new_biasq,得到INT32的第二卷积结果,再进行量化推理运算,即将原本需要卷积、加法、乘法、加法、移位的处理过程,仅需要卷积、加法和移位三个步骤即可实现。
在步骤S103中,参照表达式(12),将INT32的第二卷积结果进行右移n位处理,得到第三卷积结果。
对于步骤S104来说,根据下一层卷积运算的输入需求,将第三卷积结果转换为当前层卷积运算的最终输出结果。例如表达式(12)、(10),对第三卷积结果进行激活以及强制转换为INT8类型数据后,得到最终输出结果。
本申请实施例提供的神经网络量化处理方法,在进行神经网络量化处理中,通过将量化系数均转换为小于且等于最接近的2的幂次方的形式,使得在后续量化与反量化过程中,只需要右移处理,而不需要进行整型的乘法计算,省略了大量的计算步骤;在对当前层卷积运算的初始卷积结果进行反量化与进一步量化的过程中,先将初始卷积结果加上由当前层量化后的偏置参数和2n-1的弥补项合并的值,n由当前层的量化系数求得;再进行量化推理运算,使得神经网络量化推理简化为卷积、加法和移位三个步骤即可完成现有技术中需要卷积、加法、乘法、加法、移位所需的计算,进一步简化了量化推理的步骤,节约了大量的计算资源和存储资源,适于在算力和资源有限的人工智能设备上部署人工智能应用。
实施例二
在上述实施例中提到,对于神经网络来说,有的卷积层可能具有偏置bias,有的不具有。具有偏置的卷积算子的表达式如(2)所示,不具有偏置的卷积算子即没有偏置bias。在执行卷积运算之前,先将卷积算子和归一化算子融合,相当于省略了归一化算子中的权值和原卷积结果的计算。卷积算子和归一化算子融合,即将卷积算子的权值w和归一化算子的权值α融合为一个新的权值w′,以此为模型权值。
则不具有偏置的卷积算子与归一化算子融合后的表达式为:
y′=(∑w′a)+β; (13)
具有偏置的卷积算子与归一化算子融合后的表达式为:
y′=(∑w′a)+bias+β。 (14)
可以看到,不具有偏置的卷积算子与归一化算子融合后,与具有偏置的卷积算子与归一化算子融合后的表达形式不同,在量化处理中,可以分别对这两种情况设计量化方法。
则在上述实施例的基础上,在本申请实施例提供的神经网络量化处理方法中,在当前层卷积运算包括具有偏置项的卷积算子和不具有偏置项的卷积算子时,偏置参数包括第一偏置参数和第二偏置参数;第一偏置参数为具有偏置项的卷积算子的偏置项;第二偏置参数为归一化算子的第二权值;预设偏置值为量化后的第一偏置参数、量化后的第二偏置参数与弥补项合并得到;其中,归一化算子的第二权值为归一化算子除输入量的系数(即表达式(3)中的α)外的另一权值(即表达式(3)中的β)。
则在对不具有偏置的卷积算子与归一化算子融合后的卷积层的运算中,分别对w′、β、a进行量化后再执行卷积运算,而后再执行反量化和进一步量化的过程。
在对具有偏置的卷积算子与归一化算子融合后的卷积层的运算中,分别对w′、β、a、bias进行量化后再执行卷积运算,而后再执行反量化和进一步量化的过程。对于具有偏置的卷积算子与归一化算子融合后的情况,需要增加将当前层卷积运算的卷积算子的偏置进行量化的步骤。
实施例三
本申请实施例二对当前层卷积运算的卷积算子具有偏置和不具有偏置的两种情况的量化办法进行了说明。但是这种分别量化的办法,导致神经网络中层与层的量化算法可能不一致,算法实现较为复杂。从表达式(13)、(14)可以看到,二者的表达形式基本相同,均可以视为卷积+偏置的形式。故可以将表达式(13)、(14)进一步融合为一种新的形式:
y′=(∑w′a)+bias′; (15)
其中,w′为卷积算子的权值w和归一化算子的权值α融合后得到的权值,bias′为卷积算子和归一化算子融合后的偏置。
则在上述实施例一的基础上,在本申请实施例提供的神经网络量化处理方法中,在当前层卷积运算包括具有偏置项的卷积算子和不具有偏置项的卷积算子时,对具有偏置项的卷积算子,偏置参数bias′为具有偏置项的卷积算子的偏置项与归一化算子的第二权值的和值;对不具有偏置项的卷积算子,偏置参数bias′为归一化算子的第二权值;归一化算子的第二权值为归一化算子除输入量的系数(即表达式(3)中的α)外的另一权值(即表达式(3)中的β)。
经过上述处理,对于具有偏置的卷积算子和不具有偏置的卷积算子,均可以执行相同的与归一化算子融合后进行量化、反量化和进一步量化的过程,而不再对卷积算子的偏置进行单独的量化。
具体来说,在原始的浮点数据的计算中,表达式(15)中涉及到的量(y′,w′,a,bias′)的取值范围一般为(-1,1)的浮点数值。将卷积部分∑w′a量化为INT8的卷积计算,将卷积结果和偏置bias′相加的部分量化为INT32的整型加法,即:
yq=ReLU(INT32(∑INT8(wq)·INT8(aq))+INT32(biasq)); (16)
其中,浮点类型的w′到INT8的wq,需要乘以当前层权值w′的量化系数scalew,scalew的计算方式见表达式(7)。浮点类型的a到INT8的aq,需要乘以当前层权值a的量化系数scalea,scalea的计算方式见表达式(8)或(9)。浮点类型的bias′到INT8的biasq,则乘以当前层的偏置参数bias′的量化系数,即:
biasq=bias′·scalew·scalea=bias′·scalebias。 (17)
其中,biasq为量化后的偏置参数,bias′为卷积算子和归一化算子融合后的偏置,scalebias为偏置参数的量化系数。
最终经过激活之后,得到INT32的激活值yq。对于下一层卷积运算来说,需要保证输入的数据同样为INT8的值才能保证卷积计算为INT8的卷积计算。即需要将INT32的激活值yq进行反量化和进一步量化,具体过程可以参考本申请实施例一中对S102、S103的说明。
实施例四
图4为本申请实施例提供的一种步骤S104的具体实施方式的流程图。
在本申请实施例一中提到,根据下一层卷积运算的输入需求,将第三卷积结果转换为当前层卷积运算的最终输出结果。例如表达式(12)、(10),对第三卷积结果进行激活以及强制转换为INT8类型数据后,得到最终输出结果。在此基础上,在本申请实施例提供的神经网络量化处理方法中,步骤S104:适应下一层卷积运算的输入需求,将第三卷积结果转换为当前层卷积运算的最终输出结果,具体可以包括:
S401:将第三卷积结果进行过阈操作,得到过阈操作结果。
S402:将过阈操作结果进行强制转换为低比特数据操作,得到低比特数据类型结果。
S403:将低比特数据类型结果进行激活处理,得到最终输出结果。
具体的,步骤S401:将第三卷积结果进行过阈操作,得到过阈操作结果,具体可以包括:
若当前层卷积运算不具有激活层,则将第三卷积结果转换为(-127,127)范围的过阈操作结果;
若当前层卷积运算具有激活层,则将第三卷积结果转换为(0,255)范围的过阈操作结果;
对于步骤S402来说,若在前述计算中为提高精度,需将INT32的激活值yq强制转换为INT64的值再进行反量化计算,则这里为将INT64的过阈操作结果活INT32的过阈操作结果进行强制类型转换,得到INT8类型的低比特数据类型结果。
对于步骤S403来说,则可以根据表达式(4)提供的激活函数转换得到。
实施例五
图5为本申请实施例提供的另一种神经网络量化处理方法的流程图。
在上述实施例的基础上,本申请实施例提供一种优选的神经网络量化处理方法。如图5所示,本申请实施例提供的神经网络量化处理方法包括:
S501:在当前层卷积运算中,对INT8类型的模型权值和INT8类型的输入特征值进行卷积计算,得到INT32的卷积输出值。
算法表达为:conv(int8 input,int8 weight)→int32 conv_output。
S502:将INT32的卷积输出值加上INT32的预设偏置值,得到INT32类型的第二卷积结果。
算法表达为:add(int32 conv_output,int32 bn_add_partion)→int32 add_output。
S503:对INT32的第二卷积结果进行右移n位处理,得到第三卷积结果。n即Shift_value。
算法表达为:right_shift(int32 add_output,int32 shift_value)=add_output>>shift_value。
S504:将第三卷积结果进行过阈操作,转换为(-127,127)的过阈操作结果或(0,255)的过阈操作结果。其中,如果当前层没有激活层,则转换为(-127,127)的过阈操作结果;如果当前层有激活层,则转换为(0,255)的过阈操作结果。
算法表达为:clip:fixed_output→int32 clip_output(-127,127)或者(0,255)。
S505:将过阈操作结果进行强制类型转换,将INT64的值强制转换为INT8类型的低比特数据类型结果。
算法表达为:cast:int8(clip_output)→int8 clip_output。
S506:对低比特数据类型结果进行激活处理,得到INT8的激活值作为当前层的INT8的最终输出结果(下一卷积层的INT8的输入特征值)。
算法表达为:relu(int8 cast_output)→int8 relu_output。
上文详述了神经网络量化处理方法对应的各个实施例,在此基础上,本申请还公开了与上述方法对应的神经网络量化处理装置、设备及可读存储介质。
实施例六
图6为本申请实施例提供的一种神经网络量化处理装置的结构示意图。
如图6所示,本申请实施例提供的神经网络量化处理装置包括:
卷积运算单元601,用于对当前层卷积运算的模型权值和当前层卷积运算的输入特征值进行卷积运算后,得到初始卷积结果;
预处理单元602,用于将初始卷积结果加上预设偏置值,得到第二卷积结果;
移位处理单元603,用于将第二卷积结果进行右移n位处理,得到第三卷积结果;
输出转换处理单元604,用于适应下一层卷积运算的输入需求,将第三卷积结果转换为当前层卷积运算的最终输出结果;
其中,预设偏置值为当前层卷积运算中量化后的偏置参数与弥补项合并得到,且预设偏置值的数据类型与初始卷积结果的数据类型相同;
偏置参数为当前层卷积运算的卷积算子和当前层卷积运算的归一化算子融合后的偏置值;
弥补项为2n-1,n=a+b-c,a为模型权值的量化系数最接近且小于等于的2的幂次方数的幂值,b为输入特征值的量化系数最接近且小于等于的2的幂次方数的幂值,c为当前层卷积运算的输出特征值的量化系数最接近且小于等于的2的幂次方数的幂值,n、a、b、c均为正整数;
模型权值、输入特征值、输出特征值均为量化后的低比特数据。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
实施例七
图7为本申请实施例提供的一种神经网络量化处理设备的结构示意图。
如图7所示,本申请实施例提供的神经网络量化处理设备包括:
存储器710,用于存储计算机程序711;
处理器720,用于执行计算机程序711,该计算机程序711被处理器720执行时实现如上述任意一项实施例所述神经网络量化处理方法的步骤。
其中,处理器720可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器720可以采用数字信号处理DSP(Digital Signal Processing)、现场可编程门阵列FPGA(Field-Programmable Gate Array)、可编程逻辑阵列PLA(Programmable LogicArray)中的至少一种硬件形式来实现。处理器720也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器CPU(CentralProcessing Unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器720可以集成有图像处理器GPU(Graphics Processing Unit),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器720还可以包括人工智能AI(Artificial Intelligence)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器710可以包括一个或多个可读存储介质,该可读存储介质可以是非暂态的。存储器710还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器710至少用于存储以下计算机程序711,其中,该计算机程序711被处理器720加载并执行之后,能够实现前述任一实施例公开的神经网络量化处理方法中的相关步骤。另外,存储器710所存储的资源还可以包括操作系统712和数据713等,存储方式可以是短暂存储或者永久存储。其中,操作系统712可以为Windows。数据713可以包括但不限于上述方法所涉及到的数据。
在一些实施例中,神经网络量化处理设备还可包括有显示屏730、电源740、通信接口750、输入输出接口760、传感器770以及通信总线780。
本领域技术人员可以理解,图7中示出的结构并不构成对神经网络量化处理设备的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的神经网络量化处理设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的神经网络量化处理方法,效果同上。
实施例八
需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。
为此,本申请实施例还提供一种可读存储介质,该可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如神经网络量化处理方法的步骤。
该可读存储介质可以包括:U盘、移动硬盘、只读存储器ROM(Read-Only Memory)、随机存取存储器RAM(Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例中提供的可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的神经网络量化处理方法的步骤,效果同上。
以上对本申请所提供的一种神经网络量化处理方法、装置、设备及可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种神经网络量化处理方法,其特征在于,包括:
对当前层卷积运算的模型权值和所述当前层卷积运算的输入特征值进行卷积运算后,得到初始卷积结果;
将所述初始卷积结果加上预设偏置值,得到第二卷积结果;
将所述第二卷积结果进行右移n位处理,得到第三卷积结果;
适应下一层卷积运算的输入需求,将所述第三卷积结果转换为所述当前层卷积运算的最终输出结果;
其中,所述预设偏置值为所述当前层卷积运算中量化后的偏置参数与弥补项合并得到,且所述预设偏置值的数据类型与所述初始卷积结果的数据类型相同;
所述偏置参数为所述当前层卷积运算的卷积算子和所述当前层卷积运算的归一化算子融合后的偏置值;
所述弥补项为2n-1,n=a+b-c,a为所述模型权值的量化系数最接近且小于等于的2的幂次方数的幂值,b为所述输入特征值的量化系数最接近且小于等于的2的幂次方数的幂值,c为所述当前层卷积运算的输出特征值的量化系数最接近且小于等于的2的幂次方数的幂值,n、a、b、c均为正整数;
所述模型权值、所述输入特征值、所述输出特征值均为量化后的低比特数据。
2.根据权利要求1所述的神经网络量化处理方法,其特征在于,所述当前层卷积运算包括具有偏置项的卷积算子和不具有偏置项的卷积算子;
对所述具有偏置项的卷积算子,所述偏置参数为所述具有偏置项的卷积算子的偏置项与所述归一化算子的第二权值的和值;
对所述不具有偏置项的卷积算子,所述偏置参数为所述归一化算子的第二权值;
所述归一化算子的第二权值为所述归一化算子除输入量的系数外的另一权值。
3.根据权利要求1所述的神经网络量化处理方法,其特征在于,所述当前层卷积运算包括具有偏置项的卷积算子和不具有偏置项的卷积算子;
所述偏置参数包括第一偏置参数和第二偏置参数;
所述第一偏置参数为所述具有偏置项的卷积算子的偏置项;
所述第二偏置参数为所述归一化算子的第二权值;
所述预设偏置值为量化后的所述第一偏置参数、量化后的所述第二偏置参数与所述弥补项合并得到;
其中,所述归一化算子的第二权值为所述归一化算子除输入量的系数外的另一权值。
4.根据权利要求1所述的神经网络量化处理方法,其特征在于,所述适应下一层卷积运算的输入需求,将所述第三卷积结果转换为所述当前层卷积运算的最终输出结果,具体包括:
将所述第三卷积结果进行过阈操作,得到过阈操作结果;
将所述过阈操作结果进行强制转换为低比特数据操作,得到低比特数据类型结果;
将所述低比特数据类型结果进行激活处理,得到所述最终输出结果。
5.根据权利要求4所述的神经网络量化处理方法,其特征在于,所述将所述第三卷积结果进行过阈操作,得到过阈操作结果,具体包括:
若所述当前层卷积运算不具有激活层,则将所述第三卷积结果转换为(-127,127)范围的所述过阈操作结果;
若所述当前层卷积运算具有激活层,则将所述第三卷积结果转换为(0,255)范围的所述过阈操作结果。
7.根据权利要求1所述的神经网络量化处理方法,其特征在于,所述量化后的低比特数据具体为8位整型数据。
8.一种神经网络量化处理装置,其特征在于,包括:
卷积运算单元,用于对当前层卷积运算的模型权值和所述当前层卷积运算的输入特征值进行卷积运算后,得到初始卷积结果;
预处理单元,用于将所述初始卷积结果加上预设偏置值,得到第二卷积结果;
移位处理单元,用于将所述第二卷积结果进行右移n位处理,得到第三卷积结果;
输出转换处理单元,用于适应下一层卷积运算的输入需求,将所述第三卷积结果转换为所述当前层卷积运算的最终输出结果;
其中,所述预设偏置值为所述当前层卷积运算中量化后的偏置参数与弥补项合并得到,且所述预设偏置值的数据类型与所述初始卷积结果的数据类型相同;
所述偏置参数为所述当前层卷积运算的卷积算子和所述当前层卷积运算的归一化算子融合后的偏置值;
所述弥补项为2n-1,n=a+b-c,a为所述模型权值的量化系数最接近且小于等于的2的幂次方数的幂值,b为所述输入特征值的量化系数最接近且小于等于的2的幂次方数的幂值,c为所述当前层卷积运算的输出特征值的量化系数最接近且小于等于的2的幂次方数的幂值,n、a、b、c均为正整数;
所述模型权值、所述输入特征值、所述输出特征值均为量化后的低比特数据。
9.一种神经网络量化处理设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7任意一项所述神经网络量化处理方法的步骤。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述神经网络量化处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210467176.2A CN114781618A (zh) | 2022-04-29 | 2022-04-29 | 一种神经网络量化处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210467176.2A CN114781618A (zh) | 2022-04-29 | 2022-04-29 | 一种神经网络量化处理方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114781618A true CN114781618A (zh) | 2022-07-22 |
Family
ID=82435232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210467176.2A Pending CN114781618A (zh) | 2022-04-29 | 2022-04-29 | 一种神经网络量化处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114781618A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117634577A (zh) * | 2024-01-25 | 2024-03-01 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
WO2024117542A1 (ko) * | 2022-11-28 | 2024-06-06 | 삼성전자주식회사 | 전자 장치 및 이의 제어 방법 |
-
2022
- 2022-04-29 CN CN202210467176.2A patent/CN114781618A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024117542A1 (ko) * | 2022-11-28 | 2024-06-06 | 삼성전자주식회사 | 전자 장치 및 이의 제어 방법 |
CN117634577A (zh) * | 2024-01-25 | 2024-03-01 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
CN117634577B (zh) * | 2024-01-25 | 2024-06-07 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11361213B1 (en) | Using lookup table to represent neural network activation function | |
CN107729989B (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
US20210263995A1 (en) | Reduced dot product computation circuit | |
CN111652368A (zh) | 一种数据处理方法及相关产品 | |
CN114781618A (zh) | 一种神经网络量化处理方法、装置、设备及可读存储介质 | |
US11275561B2 (en) | Mixed precision floating-point multiply-add operation | |
US11704556B2 (en) | Optimization methods for quantization of neural network models | |
CN113570033B (zh) | 神经网络处理单元、神经网络的处理方法及其装置 | |
CN111967608A (zh) | 数据处理方法、装置、设备及存储介质 | |
WO2022163861A1 (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
Kim et al. | Performance evaluation of INT8 quantized inference on mobile GPUs | |
TW202109281A (zh) | 帶正負號多字乘法器 | |
CN110337636A (zh) | 数据转换方法和装置 | |
CN112085175A (zh) | 基于神经网络计算的数据处理方法和装置 | |
CN113791756A (zh) | 转数方法、存储介质、装置及板卡 | |
US11604973B1 (en) | Replication of neural network layers | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
US20230058500A1 (en) | Method and machine learning system to perform quantization of neural network | |
CN113313253A (zh) | 神经网络压缩方法、数据处理方法、装置及计算机设备 | |
EP4196919A1 (en) | Method and system for quantizing a neural network | |
CN114692865A (zh) | 一种神经网络量化训练方法、装置及相关产品 | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN114580625A (zh) | 用于训练神经网络的方法、设备和计算机可读存储介质 | |
CN111313905A (zh) | 一种浮点数转换方法及装置 | |
CN112308226A (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 |