CN117454944A - 分层确定神经网络量化模式的方法、系统、设备和介质 - Google Patents
分层确定神经网络量化模式的方法、系统、设备和介质 Download PDFInfo
- Publication number
- CN117454944A CN117454944A CN202311550235.3A CN202311550235A CN117454944A CN 117454944 A CN117454944 A CN 117454944A CN 202311550235 A CN202311550235 A CN 202311550235A CN 117454944 A CN117454944 A CN 117454944A
- Authority
- CN
- China
- Prior art keywords
- layer
- neural network
- network model
- quantization
- loss function
- 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 374
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000013528 artificial neural network Methods 0.000 title description 72
- 238000003062 neural network model Methods 0.000 claims abstract description 234
- 239000013598 vector Substances 0.000 claims abstract description 132
- 230000008859 change Effects 0.000 claims abstract description 49
- 238000003860 storage Methods 0.000 claims abstract description 38
- 238000012549 training Methods 0.000 claims abstract description 26
- 238000011002 quantification Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 239
- 239000010410 layer Substances 0.000 description 283
- 238000004364 calculation method Methods 0.000 description 21
- 238000004422 calculation algorithm Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 19
- 238000004458 analytical method Methods 0.000 description 10
- 238000012937 correction Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 9
- 238000002474 experimental method Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000004069 differentiation Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000005520 cutting process Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000001994 activation Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 102100028043 Fibroblast growth factor 3 Human genes 0.000 description 2
- 108050002021 Integrator complex subunit 2 Proteins 0.000 description 2
- 101710092887 Integrator complex subunit 4 Proteins 0.000 description 2
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 2
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 2
- 102100037075 Proto-oncogene Wnt-3 Human genes 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- -1 for example Substances 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004445 quantitative analysis Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/0495—Quantised networks; Sparse networks; Compressed networks
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
提供分层确定量化神经网络模型的量化模式的方法、系统、电子设备和非暂时存储介质。该方法包括:按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数,其中所述神经网络模型是利用第一数据集训练来得到的;利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量;如果确定所述变化量为负,则确定所述一个量化模式作为量化所述层的量化模式。
Description
技术领域
本申请涉及神经网络领域,且更具体地,涉及分层确定量化神经网络模型的量化模式的方法、系统、电子设备和非暂时存储介质。
背景技术
由于当前神经网络的发展,神经网络要处理的输入数据和要达到的目标越来越复杂,因此神经网络需要更多的计算资源进行计算。例如,1998年,最先进的神经网络是LeNet-5,其应用于MNIST数据集,输入图像大小为1×28×28。20年后,常见的基准数据集是ImageNet,其输入分辨率比MNIST大200倍,这造成了模型的内存占用量更高。事实上,在很多应用中,ImageNet分辨率被认为是偏小的分辨率,例如在自动驾驶应用中,其中输入分辨率明显更大(在某些情况下超过40倍)。
对于计算和存储系统来说,现在的神经网络的存储、推理过程和训练过程的巨量计算资源的消耗对计算系统提出了更高的要求。因此,机器学习模型的压缩算法和低精度计算算法成为当前主要的研究方向。
发明内容
根据本申请的一个方面,提供一种分层确定量化神经网络模型的量化模式的方法,包括:
按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数,其中所述神经网络模型是利用第一数据集训练来得到的;
利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量;
如果确定所述变化量为负,则确定所述一个量化模式作为量化所述层的量化模式。
在一个实施例中,所述按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数包括:利用多个数据精度中的一个数据精度来通过向上取整或向下取整中的一种取整方式来量化所述层的输入向量,并对所述层的权重参数进行四舍五入取整。
在一个实施例中,所述按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数包括:
对于所述神经网络模型的一层,在每个量化循环中,按多个量化模式的数据精度从低到高来选择一个量化模式来量化所述神经网络模型的一层的输入向量和该层的权重参数。
在一个实施例中,所述层是第i层,所述利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量包括:
至少基于神经网络模型的损失函数值l与第i层的输入向量hi的梯度神经网络模型的第i层的输入向量的量化引入的噪音∈i来得到所述变化量,i是正整数。
在一个实施例中,所述得到量化所述第i层的所述一个量化模式导致的所述神经网络模型的损失函数的所述第i层的变化量包括利用如下公式来计算所述变化量
其中n是神经网络模型的层数,是所述神经网络模型要推理的第二数据集,f(w)表示所述神经网络模型推理所述第二数据集得到的损失函数值,/>表示量化后的神经网络模型推理所述第二数据集得到的损失函数值,/>是量化后的神经网络模型推理第二数据集得到的损失函数值与所述神经网络模型推理所述第二数据集得到的损失函数值的差的最小值,∈i表示量化的神经网络模型的第i层的输入向量由于量化引入的噪音,其中E为噪音∈的集合,wi是所述神经网络模型的第i层的权重参数,δi表示量化的神经网络模型的第i层的权重参数由于量化而引入的噪音,M是所述第二数据集中的样本的数量,xm和ym分别代表了第二数据集中的第m个样本的特征xm和标签ym,l是所述神经网络模型推理所述第二数据集中的第m个样本的损失函数值,其中/>表示损失函数值l与第i层的输入向量hi的梯度,/>表示损失函数值l与第i层的权重参数wi的梯度,其中/>
在一个实施例中,通过确定来确定所述变化量为负。
在一个实施例中,如果利用包括向上取整的所述一个量化模式来量化所述层的输入向量,则用割线来替代向上取整时的/>l+是向上取整时的量化的神经网络模型推理一个样本的损失函数,其中,如果利用包括向上取整的所述一个量化模式来量化所述层的输入向量,则用割线/>来替代向上取整时的/>l-是向下取整时的量化的神经网络模型推理一个样本的损失函数,/>表示由第i层的输入数据的数量个1组成的向量,其中,f+(w)表示利用向上取整来量化所述层的输入向量的量化的神经网络模型的损失函数,Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,f-(w)表示利用向下取整来量化所述层的输入向量的量化的神经网络模型的损失函数。
在一个实施例中,方法还包括在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之后:
如果所述一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值<μ,则确定所述一个量化模式不作为量化所述层的量化模式;
如果所述一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值≥μ,则继续确定所述变化量是否为负。
在一个实施例中,通过确定割线secant+(hi,Δ)和secant-(hi,Δ)中哪个为负,来确定所述变化量为负,其中,如果割线secant+(hi,Δ)为负,则确定利用包括向上取整的所述一个量化模式来量化,如果割线secant-(hi,Δ)为负,则确定利用包括向下取整的所述一个量化模式来量化。
在一个实施例中,方法还包括在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之前:
如果Δ>errormax,则确定所述一个量化模式不作为量化所述层的量化模式,
其中Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormax表示所述最大值大于其时所述变化量为负的概率低于预定值。
在一个实施例中,方法还包括在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之前:
如果Δ<errormin,则确定所述一个量化模式作为量化所述层的量化模式,而不进行利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量的步骤,
其中Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormin表示所述最大值小于其时所述变化量低于预定值。
在一个实施例中,提供一种分层确定量化神经网络模型的量化模式的系统,包括:
量化装置,被配置为按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数,其中所述神经网络模型是利用第一数据集训练来得到的;
计算装置,被配置为利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量;
确定装置,被配置为如果确定所述变化量为负,则确定所述一个量化模式作为量化所述层的量化模式。
在一个实施例中,所述按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数包括:利用多个数据精度中的一个数据精度来通过向上取整或向下取整中的一种取整方式来量化所述层的输入向量,并对所述层的权重参数进行四舍五入取整。
在一个实施例中,所述量化装置被配置为:
对于所述神经网络模型的一层,在每个量化循环中,按多个量化模式的数据精度从低到高来选择一个量化模式来量化所述神经网络模型的一层的输入向量和该层的权重参数。
在一个实施例中,所述层是第i层,所述计算装置被配置为:
至少基于神经网络模型的损失函数值l与第i层的输入向量hi的梯度神经网络模型的第i层的输入向量的量化引入的噪音∈i来得到所述变化量,i是正整数。
在一个实施例中,所述计算装置被配置为利用如下公式来计算所述变化量
其中,n是神经网络模型的层数,是所述神经网络模型要推理的第二数据集,f(w)表示所述神经网络模型推理所述第二数据集得到的损失函数值,/>表示量化后的神经网络模型推理所述第二数据集得到的损失函数值,/>是量化后的神经网络模型推理第二数据集得到的损失函数值与所述神经网络模型推理所述第二数据集得到的损失函数值的差的最小值,∈i表示量化的神经网络模型的第i层的输入向量由于量化引入的噪音,其中E为噪音∈的集合,wi是所述神经网络模型的第i层的权重参数,δi表示量化的神经网络模型的第i层的权重参数由于量化而引入的噪音,M是所述第二数据集中的样本的数量,xm和ym分别代表了第二数据集中的第m个样本的特征xm和标签ym,l是所述神经网络模型推理所述第二数据集中的第m个样本的损失函数值,其中/>表示损失函数值l与第i层的输入向量hi的梯度,/>表示损失函数值l与第i层的权重参数wi的梯度,其中
在一个实施例中,所述确定装置被配置为通过确定来确定所述变化量为负。
在一个实施例中,所述计算装置被配置为:
如果利用包括向上取整的所述一个量化模式来量化所述层的输入向量,则用割线来替代向上取整时的/>l+是向上取整时的量化的神经网络模型推理一个样本的损失函数,
如果利用包括向上取整的所述一个量化模式来量化所述层的输入向量,则用割线来替代向上取整时的/>l-是向下取整时的量化的神经网络模型推理一个样本的损失函数,/>表示由第i层的输入数据的数量个1组成的向量,
其中,f+(w)表示利用向上取整来量化所述层的输入向量的量化的神经网络模型的损失函数,Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,f-(w)表示利用向下取整来量化所述层的输入向量的量化的神经网络模型的损失函数。
在一个实施例中,所述确定装置被配置为:在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之后:
如果所述一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值<μ,则确定所述一个量化模式不作为量化所述层的量化模式;
如果所述一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值≥μ,则继续确定所述变化量是否为负。
在一个实施例中,所述确定装置被配置为:通过确定割线secant+(hi,Δ)和secant-(hi,Δ)中哪个为负,来确定所述变化量为负,其中,如果割线secant+(hi,Δ)为负,则确定利用包括向上取整的所述一个量化模式来量化,如果割线secant-(hi,Δ)为负,则确定利用包括向下取整的所述一个量化模式来量化。
在一个实施例中,所述确定装置被配置为:在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之前:
如果Δ>errormax,则确定所述一个量化模式不作为量化所述层的量化模式,
其中Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormax表示所述最大值大于其时所述变化量为负的概率低于预定值。
在一个实施例中,所述确定装置被配置为:在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之前:
如果Δ<errormin,则确定所述一个量化模式作为量化所述层的量化模式,而不进行利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量的步骤,
其中Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormin表示所述最大值小于其时所述变化量低于预定值。
根据本申请的另一个方面,提供一种电子设备,包括:存储器,用于存储指令;处理器,用于读取所述存储器中的指令,并执行根据本申请的实施例的方法。
根据本申请的另一个方面,提供一种非暂时存储介质,其上存储有指令,其中,所述指令在被处理器读取时,使得所述处理器执行根据本申请的实施例的方法。
如此,可以分层确定每层的量化神经网络模型的输入向量和权重参数的最优或较优的量化模式,从而得到性能比全精度模型更好的量化后的神经网络模型。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请实施例的n层神经网络模型的各个层的函数表达形式以及神经网络的损失函数的表达形式。
图2示出了根据本申请的实施例的一种分层确定量化神经网络模型的量化模式的方法的流程图。
图3示出了根据本申请的实施例的使用割线取代切线来预测对应噪音的损失函数变化量的方法以扩展领域的概念。
图4示出了根据本申请的实施例的考虑方向的割线的示意图。
图5示出了根据本申请的实施例的一种分层确定量化神经网络模型的量化模式的系统的方框图。
图6示出了适于用来实现本申请的实施例的示例性电子设备的框图。
图7示出了根据本申请的实施例的非暂时性计算机可读存储介质的示意图。
具体实施方式
现在将详细参照本申请的具体实施例,在附图中例示了本申请的例子。尽管将结合具体实施例描述本申请,但将理解,不是想要将本申请限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本申请的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
基于对噪音的计算健壮性的模型量化方法是神经网络模型的最重要的压缩技术之一。在压缩计算和存储的过程中,噪音的主要来源是截断误差和数据类型转换带来的错误。
量化方法是指将初始高精度的原始模型的数据类型替换为较低精度数据类型进行存储和计算的方法。量化主要对深度神经网络的参数(即权重)和每层的输入(有的文献称为激活)进行量化,以减少推理期间模型的总内存占用。PyTorch和TensorFlow都有将浮点数转换为整数的量化技术。各种量化技术共享有相同的理论基础,即在存储和推理过程中用近似的低精度数据替代原始数据。较低精度的数据类型需要更少的内存,而处理器在使用较低精度数据进行计算时,会花费更少的计算机资源并使用更少的时间。
传统量化方法是将模型统一处理为单一的数据类型,这种模型量化方法的主要问题是量化方案可能会显著提高损失函数的值并降低模型的准确率。在不显著牺牲精度的情况下,用精度极低的数据类型大规模替换模型参数是非常困难的事情。事实上,在实际工程中,不可能使用相同的低精度数据类型进行存储和计算,即,所有模型参数和激活引入相同的噪音水平或使用相同精度的数据类型进行存储和计算,并获得良好的性能是不可能。
利用混合精度量化是解决这一问题的一种方法。对于更“敏感”的模型参数和激活,使用更高精度的数据类型进行存储和计算,而对于“非敏感”模型参数,则使用更低精度的数据类型。较高精度的数据类型表明原始数据只增加了较小的噪音,而较低精度的数据类型则表明近似数据和原始数据相比有更大的噪音。在实际的工程实践中,混合精度量化方法在现有的计算机架构上也有所限制,例如,在当前的体系架构中,在单次计算过程中,GPU和CPU必须使用相同的数据类型进行计算。
混合精度量化方法可以分为分层量化,分通道量化等不同的量化排布策略。不同量化策略将神经网络划分为不同部分,每一部分使用特定的数据类型进行量化。分通道量化因为其量化后的模型具有更好的准确性而被广泛使用,但这种方法对计算性能的提升有限,而分层量化因为在计算和存储过程中对计算设备更加友好,计算性能提升巨大,且准确性的损失在业务容忍范围内,而被广泛使用。
从传统的观念看,即用神经网络模型的精度换计算速度或内存使用量的角度上,在工程中,工程人员都希望精度的损失尽可能小,速度提升/内存使用量的减少尽可能大。但是“尽可能小”、“尽可能大”的描述缺少定量分析和表达。
但是现有的工作只是从经验的角度判断出神经网络模型的精度与量化限制之间存在的负相关关系,即量化限制越多,则精度越差,但是量化技术是否总是导致神经网络模型精度的损失或损失函数的增加并没有得到很好的验证。实际上,虽然并不多见,但是发明人总是在不同的论文中发现量化模型的性能优于全精度模型的实验例子。
如何才能得到一个精度不劣于全精度模型的量化模型是本申请主要解决的问题。
本申请的目的在于克服上述现有技术的缺陷,提供一种用于基于神经网络模型梯度信息的无损分层混合精度量化方法,大体思想包括:
1)获得训练集和校正集,其中可以将一个训练数据集按第一比例(例如80%)和第二比例(20%)的比例进行划分来获得训练集和校正集,分别用来进行模型的训练和量化的校正;并使用训练集训练出要量化压缩的全精度模型训练过程相当于调整神经网络模型的各个权重参数来使得具有某套权重参数的神经网络模型的损失函数值最小或收敛。
2)使用全精度模型推理校正集,记录所有校正集的样本上每层神经网络的输出。并计算全精度模型的损失函数值
3)按量化所用数据精度(可以由不同数据类型来决定),可以由低到高(或其他顺序)排序,分别使用一种取整量化方法(例如,解析限幅(Analytical Clipping forInteger Quantization,ACIQ)整数量化方法)(向上取整或向下取整)量化每层神经网络的输入向量,求解该输入向量在量化后的最大误差或噪音(这里,误差或噪音指的是量化后的值与原值之间的差)。另外,对权重(参数)都以同一方式或数据格式、例如以四舍五入方式进行量化,以量化到相同数据格式。
4)使用计算每层的输入和权重引入噪音后的模型的性能,使用对输入的向上取整时所有噪音都为正数,对输入的向下取整时所有噪音都为负数。若在某种量化模式(某个数据类型精度、用向上取整和向下取整中的一种取整方式)下模型性能提升(例如损失函数与全精度模型的损失函数值相近或比全精度模型的损失函数值还小),则将该层的输入按此向上取整或向下取整的量化数据类型进行量化。其中,对权重(参数)还是以同一方式、例如以四舍五入方式进行量化。
相比于现有量化技术,本申请优点在于:
根据本申请的方法,尤其是适合在需求强可解释性、可分析性方法场景下进行快速量化,其可以得到的量化模型,在损失函数方面不劣于、甚至优于全精度模型方法。
本申请将主要利用极值点的数学性质来分析量化方法。基于极值点的稳定性分析是在不同领域的广泛使用的,如信号分析等,由于被训练过的全精度神经网络恰好是损失函数的极值,所以量化方法对神经网络的可行性在于神经网络的极值特性。然而,研究者被广泛认可的观点是神经网络自身的特性保证了量化方法的成功。为了证明决定神经网络量化方法成功的理论基础是极值点的性质,即处理噪音的能力,而不是神经网络的其他数学性质,如下重新定义神经网络的概念。
在本申请中,神经网络可以被定义为函数实现的工程概念,而不是精确的数学定义;也就是说,神经网络是任意函数在计算机系统中的实现和表达方式。
当任意函数以复合函数的形式在计算系统中实现和表达时,则可以称该函数为神经网络。
神经网络可以被表达为如下公式(1)的形式。
model(x)=hn((hn-1,1(hn-2,1(...),...,hn-2,k,wn-1,1),hn-1,2(hn-2,k+1(...),...,wn-2),...,wn-1,2),...wn)(1)
其中,hi,j表示神经网络n层网络中的第i层的第j个模块的等价函数(在简化情况下,每个层可以只有1个模块,即标号j可以去掉(注意,这里的j与本文中其他地方出现的j的含义可能不同,只应用于上述公式中),只用hi表示该层的等价函数),i∈[1,...,n],n代表神经网络的层数,wi,j是hi,j(·)中的参数。
图1示出了根据本申请实施例的n层神经网络模型的各个层的函数表达形式以及神经网络的损失函数的表达形式。
其中,只用hi表示该层的等价函数。每层具有输入数据和输出数据。注意,这里输入数据可以是向量或张量,一维或多维,在此不限制。在本文中为了说明方便,将每一层的多个输入数据和多个权重参数都用向量来指代。
假设,不失一般性地,参见图1,神经网络从输入数据x(为了统一符号,后文中也用h0代表x)开始定义这些层为第1层、第2层、……第n层,而如果抽象为函数,即为函数h1、……hn-1,hn,其中如果各个层中可能还有几个模块(也可以看做函数),用j来指代,而hn+1层是指损失函数,用于衡量模型性能,在后文中将详细表述。wi指的是每个层的权重参数(向量)。wn+1假设为神经网络输出的结果标签。
如图1所示,在对该神经网络的每层进行量化之后,量化会在神经网络模型的两个位置引入噪音,其一是神经网络的参数(权重)wi的量化会引入噪音δi,其二是由于不同层的输入数据的量化精度或者量化参数不同,在当前层的输出数据到下一层的输入数据的精度转换过程中引入的噪音∈i。
这里第一种噪音的含义是例如当前层的某个参数是1.4,假设四舍五入量化为整数类型之后为1,则神经网络的当前层的参数(权重)的量化会引入噪音0.4。这里第二种噪音的含义是例如当前层的输出数据为3.46(即量化精度为0.01),而下一层的量化精度为0.1,则这种精度转换导致下取整量化后下一层的输入数据量化为3.4,两者相差0.06,这就是在当前层的输出数据到下一层的输入数据的精度转换过程中引入的噪音。
接下来,公式(1)表明,没有训练的神经网络可以是任何可被计算机所表达的函数,因为即便不能写成复合函数的函数,如果它能被计算机所表达,可以理解成只有一层的神经网络。因此通过该定义,神经网络不再仅仅是一个数学概念,而是可以在实践和科研中被广泛使用的概念。
在实践中,损失函数是评估神经网络的重要方法。如果一个神经网络推理数据集得到较低的损失函数,则意味着该神经网络是准确率更好的神经网络,同时相比于准确率,通过不同的损失函数设计可以保证模型的泛化能力或者体现模型的风险偏好,所以损失函数值常常应用在评估和训练神经网络中,例如,训练过程就是使得模型的损失函数最小值的问题,即公式(2)。
其中f(·)是模型在数据集上的损失函数,w是模型参数,是数据集,M是数据集中样本(sample)的数量,l(·)是一个样本的损失函数值,(xm,ym)代表了数据集中样本的特征xm和标签ym。公式(2)就是求使得各个样本的损失函数求和再平均后得到的平均损失函数值最小的模型参数w的取值。这样训练出来的具有模型参数w的模型可以看做是训练好的最佳模型。
在本申请中,使用串行的神经网络(即,不考虑神经网络的一层中有几个模块的情况)为例进行分析,因为串行的神经网络易于描述,但是本申请实际上不限制神经网络的结构。
对于串行的n层神经网络modeln,l(·)可以使用公式(3)来描述。
l(w,xm,ym)=L(modeln(xm,w),ym)
modeln=hn(hn-1(hn-2(hn-3(…h1(h0,w1)…,wn-3),wn-2),wn-1),wn) (3)
其中l(·)是单个样本(特征xm和标签ym)的损失函数,后文中为了统一符号,在分析中使用hn+1替代,如交叉熵(cross-entropy)函数;hi是神经网络中第i层网络的等价函数,i∈[1,...,n];wi是hi(·)中的参数,T表示转置;(xm,ym)代表了数据集中样本的特征xm和标签ym,为了表述的统一性,本申请用h0代表样本的特征x(h0可以看做神经网络的第0层、即整个神经网络的输入数据)。modeln表示n层神经网络模型可以被抽象为的函数公式。其中,假设,神经网络从输入数据开始的层被定义为第1层、第2层、……第n层,而如果抽象为函数,即为函数h1……、hn-1、hn。
接下来介绍神经网络量化的噪音分析和理论问题的构造。
通过设计一个量化算法,通过寻找优于全精度模型的用于推理的压缩率最高的模型来证明传统观念、即“量化程度越高,性能越差”是错误的。
首先,量化的本质是噪音的引入,发明人分析量化对模型带来的影响时表明,量化会在神经网络模型的两个位置引入噪音,其一是神经网络的参数(权重)的量化会引入噪音,其二是由于不同层的输入数据的量化精度或者量化参数不同,在精度转换过程中引入的噪音。
图1还示出了根据本申请的实施例的神经网络在每层的输入数据的量化带来的噪音∈以及对参数(权重)的量化带来的噪音δ。
在本申请的设置条件下(即以层为单位进行不同的量化方式),在某些情况下,如果对不同层的输入进行不同方式的量化,例如有的层向上取整,有的层向下取整,且由于权重的量化以及输入的量化精度(的向上取整和向下取整)的不同引入的噪音可能使得损失函数与全精度模型的损失函数相差无几、甚至比全精度模型的损失函数更小。也就是说,根据本申请的设置,量化程度越高,并不必然导致性能越差,而本申请正是要通过以层为单位的不同量化模式对损失函数的影响,来找到损失函数无恶化或甚至更优的那一种或几种以层为单位的量化模式。
本申请的主要内容涉及构造出找到更优损失函数的模型的算法。
图2示出了根据本申请的实施例的一种分层确定量化神经网络模型的量化模式的方法200的流程图。
如图2所示,一种分层确定量化神经网络模型的量化模式的方法200包括:步骤210,按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数,其中神经网络模型是利用第一数据集训练来得到的;步骤220,利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量;步骤230,如果确定变化量为负,则确定一个量化模式作为量化该层的量化模式。
具体地,在步骤210中,按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数,其中神经网络模型是利用第一数据集训练来得到的。
假设利用第一数据集(例如训练数据集的80%的训练数据)训练来得到神经网络模型,这个神经网络模型可以看做是训练得到了对第一数据集来说比较精确或最精确的权重参数的训练好了的模型,可以称之为全精度模型。全文中称神经网络模型或全精度模型指代用具有较多训练数据的第一数据集来训练得到的精度较高的神经网络模型,而用量化后的神经网络指代对该神经网络模型或全精度模型进行量化后的模型。例如训练好的全精度模型中的权重参数的精度是FP16的浮点数,FP16占用2字节。输入数据的类型例如是INT16,占用2字节。
而后续的量化主要是指将初始的该全精度模型的输入数据的精度和/或权重参数的精度替换为较低精度数据类型进行存储和计算的方法。例如对权重参数的精度替换为INT8(占用1字节)等等。输入数据的类型替换为INT2(占用1字节)等等。当然上述精度类型的例子仅是示例,而非限制。在改变数据类型(精度)的时候,也可以采用特定的取整策略,例如向上取整或向下取整或四舍五入等等。也就是说,实际上量化是通过某种取整方式来转换数据类型。
当然,在此数据类型精度只是数据精度的一种表达,因为用不同数据类型可以实现不同的数据精度,但是本申请也不限于用数据类型来限制精度,也可以采用其他数据精度,而不限于已有的数据类型(例如整数型INT8、INT16等、浮点型等等),例如数据精度可以是以0.1为精度、0.2为精度等等。
假设神经网络模型有n层,本申请分层地对每层的输入数据和权重参数单独进行量化,且单独评估该层的量化对损失函数的影响。
在步骤220,利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量。
在此,可以通过第二数据集(例如训练数据集的剩余20%的训练数据,即先前提到的校正集)输入神经网络进行推理,来得到神经网络模型、即全精度模型的损失函数,并且通过第二数据集推理以得到量化后的神经网络模型的损失函数,并用量化后的神经网络模型的损失函数减去全精度模型的损失函数即能求得量化模式导致的损失函数的变化量。
注意,此时因为神经网络模型被量化,指的是第二数据集作为神经网络模型的输入数据以及各个层的输入数据被量化且神经网络模型的各个权重参数也被量化,那么此时不再用第二数据集再训练量化后的神经网络模型以使得损失函数最小或收敛了,而是考察量化后的神经网络模型对第二数据集进行推理之后的损失函数值(输入和权重固定,则损失函数值也是固定的一个值)与用初始的全精度神经网络模型对第二数据集进行推理之后的损失函数值(输入和权重固定,则损失函数值也是固定的一个值)之间的比较。
当然,这里的第一数据集和第二数据集可以相同也可以不同,有时在直接获得已训练好的全精度模型时,可能无法获得训练时的第一数据集,用与第一数据集不同的第二数据集或用更贴合实际业务场景的业务数据集来进行量化和确定最好或较佳量化模式是更可行的。
在一个实施例中,按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数包括:利用多个数据精度中的一个数据精度来通过向上取整或向下取整中的一种取整方式来量化该层的输入向量,并对该层的权重参数进行四舍五入取整。由于对数据精度的选择、以及向上取整、向下取整、四舍五入取整、各种量化取整方式的选择来达到该数据精度可以使得量化以及量化后的神经网络的性能产生不同的影响,在某种量化模式的某种取整方式的情况下,可能使得神经网络的性能不降反升。在此,选择在同一个数据精度下,对输入向量进行向上取整或向下取整,对权重参数进行四舍五入是因为,对权重参数用四舍五入取整可以得到最小的噪音,而对输入向量进行向上取整或向下取整是因为损失函数值有可能会在某一种取整方式下变小。
注意,在本文中,“量化模式”表示的是在某一种“数据精度”下进行向上取整或向下取整或四舍五入取整等取整方式,而不是仅仅指一种数据精度,因为本申请针对不同数据精度,还要考虑向上取整使得损失函数值变小,还是向下取整使得损失函数值变小。例如一种量化模式对应于一种数据精度和向上取整以及向下取整的两种取整方式,而不是指一种量化模式对应于一种数据精度和向上取整,另一种量化模式对应于该数据精度和向下取整。
接下来介绍如何得到某种量化模式对损失函数在某层的变化量并且如何使得该变化量为负(即,量化使得损失函数值变小)。
在一个实施例中,假设当前层是第i层,用第二数据集推理得到量化该层的该一个量化模式导致的神经网络模型的损失函数的该层的变化量包括:至少基于神经网络模型的损失函数值l与第i层的输入向量hi的梯度神经网络模型的第i层的输入向量的量化引入的噪音∈i来得到变化量。
具体地,量化后,对于第二数据集中的单个样本(xm,ym)来说,推理过程中单个样本的损失函数变化量可以被如下的公式(4)进行刻画:
其中,表示具有权重参数w的量化后的神经网络模型对单个样本(xm,ym)的损失函数值,l(w,xm,ym)表示具有权重参数w的全精度神经网络模型对单个样本(xm,ym)的损失函数值。其中·是向量内积,∈i表示神经网络的第i层的(输入)数据因为与前一层第i-1层的输出数据的量化精度或者量化参数不同、在精度转换过程中引入的噪音。例如,第1层用INT4数据类型精度,而第二层用INT2数据类型精度,则需要进行数据量化以及精度转换,这同样会引入噪音。δi表示第i层的权重参数的量化引入的噪音。
上述公式的原理在于:由于损失函数变化量是由于损失函数的自变量(即,输入向量hi-1(因为,第i层的数据输入向量可以用第i-1层的数据输出向量符号hi-1来表示,虽然精度可能不同)和权重参数wi)从上一层精度量化到下一层精度量化的变化过程中带来的,因此,该公式利用损失函数的自变量的变化乘以其导数来计算各个自变量对损失函数变化量的影响。其中,i、j是正整数。
假设,f(w)表示全精度模型推理包括所有样本的第二数据集得到的整体损失函数值,表示量化后模型推理包括所有样本的第二数据集得到的整体损失函数值。在此,第二数据集可以是先前提到的“校正集”。
表示量化后模型在数据集上的损失函数与全精度模型在数据集上的损失函数的差。本申请的目的是找到使得/>为负的量化方案,即使得/>
对于整个第二数据集上的神经网络的损失函数的变化量可以使用如下公式进行刻画,其中对不同量化模式下的神经网络的损失函数值与全精度神经网络的损失函数值的差求最小值,即由于只有/>与输入数据的量化带来的噪音∈有关,因此该式可以简化为/>
其中即用量化后的神经网络模型推理所有样本得到的所有损失函数值的平均值,/>用全精度神经网络模型推理所有样本得到的所有损失函数值的平均值。/>是第二数据集,M是数据集中样本(sample)的数量。其中wi指的是神经网络模型的第i层的权重参数。∈i表示神经网络的第i层的(输入)数据因为量化精度或者量化参数不同、在精度转换过程中引入的噪音,其中E为该噪音的集合。δi表示全精度神经网络的第i层的权重因为量化而引入的噪音。wi是全精度模型的第i层的权重参数,l(·)是全精度模型推理数据集中的第m个样本的损失函数值,xm和ym代表了数据集中的第m个样本的特征xm和标签ym。其中/>表示损失函数值l与第i层的输入向量hi的梯度,/>表示损失函数值l与第i层的权重参数wi的梯度。
公式(5)中第二项被消去的原因是因为神经网络模型是经过训练的,即该全精度神经网络模型对损失函数来说处于极值状态,所以l(·)对参数(即权重w)的梯度的期望是0,即中,/>
为了达到本申请的目标,基于上述公式重新分析,可以看出在模型的局部,如果数据量化带来的噪音∈的向量是合适的话,可以与梯度内积得到一个负值,即通过确定使得上述计算的变化量为负,进而让量化后的模型的损失函数值的损失函数值的变化朝向负方向。这意味着量化后的模型的损失函数值比全精度模型的损失函数值低,即此时,量化后的模型反而比全精度的模型性能更好。
所以选择某种特定的量化方法满足是寻找性能更高量化模型的算法设计的关键。
本申请使用的量化方式是向上取整和向下取整两种取整方式混用,使得在领域范围(邻域的概念是:以a为中心的任何开区间称为点a的邻域)内总有一个取整方向能够让上述内积为负,即让损失函数的变化朝向负方向,从而使得量化后的模型的损失函数值比全精度的损失函数值低,且量化后的模型反而比全精度的模型性能更好。
为了选择精度更低(占存储空间更小)且同时使得量化模型性能也更好的量化模式,可以从低精度的量化精度开始从低精度往高精度进行量化和计算,如果低精度的量化精度就能得到比全精度模型的损失函数值更低的损失函数值,则采用该低精度的量化精度来进行量化,而无需再进行其他更高精度量化模型的量化和计算了。因此,在一个实施例中,按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数包括:对于神经网络模型的一层,在每个量化循环中,按多个量化精度的数据精度从低到高来选择一个量化精度来量化神经网络模型的一层的输入向量和该层的权重参数。
因此,在步骤230,如果确定变化量为负,则确定一个量化模式作为量化该层的量化模式。这是因为如果该层的量化对损失函数的影响、即使得量化后的神经网络模型的损失函数相比于全精度模型的损失函数的变化量小,则此种量化方式肯定能使得神经网络模型的性能更好,就应该对该层采用这种量化方式。
当然,如果这个变化量不为负,则说明当前的量化精度不能让该层使损失函数值变小,因此继续用多个量化精度中的另一个量化精度来对该层重复步骤210-230。如果所有量化精度不管向上取整还是向下取整都不能使得损失函数值变小,那也可以考虑对该层不进行量化。
如此,可以分层确定每层的量化神经网络模型的输入向量和权重参数的最优或较优的量化模式,从而得到性能比全精度模型更好的量化后的神经网络模型。
接下来,为了使得上述让损失函数值变小的目标能达成,可以使用概率论的语言对上述内容重新描述。在中,设∈i是一个随机向量。设∈i=[e1,e2,..,eK],其中K表示第i层的输入向量的维数,ek是其中一个独立随机向量,k∈[1,…,K]。设/>且pk也是其中一个随机独立变量。k∈[1,…,K]。显然地,ek和pk是相互独立的随机变量。
接着,得到和如下的公式(6),其中*表示数量积。
/>
对于经过训练的模型,Ep可以表达为其中,/>表示由第i层的输入数据的数量、即K个1组成的向量,例如(1,1,1,1,1…),其与/>内积的作用是将/>这个向量的所有位的值加起来。而E表示期望。
要设计算法得到性能更优的神经网络模型,则需要即Ee应该与Ep异号(例如,一个正数,一个负数),这样两者相乘才会是负数。
为了获得合适的∈i向量,可以用不同的方法进行调整,如使用不同的数据类型(即不同的量化程度)进行存储和计算并逐一搜索,本申请中,可以使用不同的舍入函数来确保Ee的符号。向上舍入函数,即python语言中的ceil函数,将生成一个所有元素都为正的噪音向量。向下舍入函数,即python语言中的floor函数,将产生一个所有元素都为负的噪音向量。这些向量保证了整体上Ee的符号选择。
以上说明的是对于输入数据向量的量化中向上取整或向下取整的选择使得损失函数变化量为负,而对于参数(权重)的量化,尽管神经网络层中的参数(权重)具有很强的噪音健壮性,如前,这些参数是损失函数的极值,但仍然尝试为它们添加较小的噪音以尽力满足噪音被“领域”概念所涵盖。因此,在参数(权重)量化过程中,本申请可以使用基本的四舍五入的舍入(取整)方法(即python中的round函数)来量化神经网络模型的参数(权重),因为这种四舍五入舍入方法对原始数据施加的噪音比起诸如统一向上取整或统一向下取整的其他量化方法更小。
以上介绍了通过神经网络的数学概念来分析如何实现量化后损失函数减小,接下来介绍如何在工程上实现上述想法。
A.从数学概念到工程概念
A1.从噪音映射到量化使用的数据类型
基于对公式的分析知道对模型的损失函数波动的真正影响是层间数据量化的误差∈,并且神经网络每层中参数(权重)的误差δ——如果在“领域”内的话——几乎对损失函数没有影响。因此,当噪音在领域范围内时,量化引起的损失函数值波动几乎只是噪声∈的线性函数。因此,为了限制量化引起的损失函数的变化,∈向量的范数值应该具有最小的范数值,即不同量化参数调整的目标是min∈2。在上述目标函数的基础上,不同的量化参数选择就有了目标。在传统的对称或者非对称的均匀量化方法中,这种方法对应整数量化的解析截断(Analytical Clipping for Integer Quantization,ACIQ)方法。
传统的方法是使用库尔贝克-莱布勒(Kullback-Leibler,KL)散度来确定截断值的。问题是KL散度的近似不是范数方面的近似。它仅代表了信息理论方面两种分布之间的差异。但信息理论的差异不能直接反映在损失函数的变化上。通常,直接反映损失函数变化的数学性质是损失函数的梯度或相对于梯度的值。
A2.使用割线斜率替代切线斜率
通常,估计误差的技术是使用全微分进行误差估计。全微分是用切平面代替曲面。具体地,在可微曲面的任意点上作切平面,则在足够小的邻域内,切平面上的点是曲面上点的近似,且存在全微分关系。即,正确应用全微分的一个先决条件是引入的噪音必须足够小,以允许使用全微分进行误差估计。
然而,在实践中,使用者总是期望通过使用更低精度的数据类型进行存储,这样可以节约更多的内存。因此,在工程中,这种使用低精度数据类型的需求会使得量化过程中必须引入更大噪声,例如特征数值分布较宽的向量上用INT4的方法进行量化,或2值、3值对神经网络进行量化。这种激进的需求带来的噪音不可忽略,因此不能使用全微分来在噪音大的情况下进行误差估计。
另外,使用高阶微分对于解决这种精确预测不准的问题从理论上是完美的,但由于计算时间和内存的限制,一阶近似将更加符合实际业务的基本需求。因此,为了让一阶方法在超出领域范围内的噪音下使用,本申请使用割线取代切线来预测对应噪音的损失函数变化量的方法以扩展领域的概念。
图3示出了根据本申请的实施例的使用割线取代切线来预测对应噪音的损失函数变化量的方法以扩展领域的概念。如图3所示,在较大噪声的情况下,割线的性能明显优于切线,切线的斜率为梯度,特别是对于接近极值点的点。在图3中,当预测点(xp)超出邻域范围但距离x0不远时,x0和x1之间的割线所预测的函数值明显优于切线。这里x1的选择是实际中的最大量化噪声。也就是说,接近(x0,func(x0))点的切线上的预测点(xp,y)与实际的(x,func(x))点之间的距离比割线(即,(x1,func(x1))与(x0,func(x0))之间的连线)上的预测点(xp,y)与实际的(x,func(x))点之间的距离大,即表示切线与实际func(x)曲线的距离比割线大,因此割线的性能明显优于切线。
然而,割线的选择需要考虑方向问题。图4示出了根据本申请的实施例的考虑方向的割线的示意图。如图4所示,尤其是当附近有极值点时割线的方向存在相反的差别。因此,当使用割线法进行估计时,必须规定好每个特征截断的方向。这意味着如果对数据的量化使用四舍五入方式进行截断,则由于输入向量的每个元素由于大小不同被四舍或五入的情况都不一致,因此存在指数级数量的割线需要进行计算。为了避免上述问题,当误差大于一个特定值时,本申请在量化每层的输入数据时,使用统一的向上取整,或者向下取整来简化需要估计的割线数量,进而较少地估计割线的斜率。
如图4所示,在噪音在一个数值范围内(例如,x0领域)时,切线法预测的y值与真实的func(x)的距离会比割线法的距离小。通过实验在数据集cifar10/100上用神经网络模型resnet8/14/34进行的实验表明,在噪音<3E-3时,可以使用全微分的梯度、即切线法可以达到比较好的效果,3E-3<噪音<5E-2时,割线法远远优于切线法。
鉴于上述使用全微分进行估计还是需要面对“领域”概念限制的问题,因此本章节内容用割线来拓展“领域”的限制。
割线的数学概念为使用(xg-1,f(xg-1))和(xg,f(xg))两点计算的割线斜率,用数学公式表示如下:
/>
其中,xg-1是x轴上的第g-1个点,xg是x轴上的第g个点,f(xg-1)是y轴上的xg-1的函数结果,f(xg)是y轴上的xg的函数结果。
因为在本申请要考虑割线与方向相关,在本算法中,定义两个变量进行描述:正方向的割线和负方向的割线/>其中Δ是用某种数据精度对输入数据向量中的多个输入数据进行量化时由于量化(向上取整或向下取整)所引入的最大误差(噪音)。例如,一层的数据向量(简化为2个数据输入)为(1.1,2.2),如果数据精度为1,则向上取整为(2,3),误差(噪音)∈为(0.9,0.8),则该数据精度下向上取整时最大误差(噪音)Δ=0.9。向下取整为(1,2),误差(噪音)∈为(-0.1,-0.2),最大误差的绝对值0.2,则该数据精度下向下取整时最大误差(噪音)Δ=0.2。而数据精度为10时,则向上取整为(10,10),误差(噪音)∈为(8.9,7.8),则该数据精度下向上取整时最大误差(噪音)Δ=8.9。向下取整为(0,0),误差(噪音)∈为(-1.1,-2.2),最大误差的绝对值2.2,则该数据精度下向下取整时最大误差(噪音)Δ=2.2。/>指的是一维正实数域。
Dataset表示数据集,例如在这里±表示要么向上取整+、要么向下取整-,向上取整时,都用+,向下取整时都用-,在此写成±因为+或-的公式除了符号的区别以外大体是相同的。
在本算法中使用割线secant±(·)去替代切线
具体地,在一个实施例中,如果利用向上取整来量化该层的输入向量,则用割线来替代向上取整时的/>l+是向上取整时的量化的神经网络模型推理一个样本的损失函数,其中,如果利用向下取整来量化该层的输入向量,则用/>来替代向上取整时的/>l-是向下取整时的量化的神经网络模型推理一个样本的损失函数,/>表示由第i层的输入数据的数量个1组成的向量,其中,f+(w)表示利用向上取整来量化该层的输入向量的量化的神经网络模型的损失函数,+Δ中的Δ表示在向上取整的情况下量化该层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,f-(w)表示利用向下取整来量化该层的输入向量的量化的神经网络模型的损失函数,-Δ中的Δ表示在向下取整的情况下量化该层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,f(w)表示(全精度)神经网络模型的损失函数。
这种定义和计算方法最大的优势是易于计算,同时,这样定义割线可以直接映射到分析变量中,即如果割线的斜率为[sec1,sec2...,secK],则secant(hi,Δ)±=Esec。
通过实验可以知道∈通常小于1E-2(即1E2),一般噪音在1E-2到5E-3这个范围内波动。这程度的噪音通过割线法在实验中是可以被包含在“领域”的附近的。因此,在本实验中选取的基准神经网络是可以通过割线法进行量化的。
但是,随着神经网络的快速发展,局部不稳定的神经网络可能会越来越多,因此仍然希望在算法中存在机制去保证算法噪音的量不要太大。因此,可以设置参数errormax,当Δ>errormax时,损失函数变化量为负的概率很低(例如低于预定值),则不用当前数据类型精度来进行量化,而考虑使用比当前数据类型精度的精度更高的数据类型进行存储和计算,例如可以进行下一个量化循环中精度更高的数据类型的量化的各种计算。
因此,在一个实施例中,在利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量之前:如果Δ>errormax,则确定一个量化模式不作为量化该层的量化模式,其中Δ表示用一个量化模式量化该层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormax表示最大值大于其时变化量为负的概率低于预定值。
如此,可以节省继续计算损失函数值变化量的计算成本。
而当∈接近于零(例如小于10-5)时,即使使用这种精度更高的数据类型进行量化存储和计算时,对于(其中,其中||*||是指对*求范数),损失函数变化量也基本上很小(例如低于预定值),也就是说,量化对此层的性能损失或改进都很小。因此,可以不必通过上述公式计算损失函数变化量,而是用直接当前量化精度(等级)(可以不将精度进一步提高)量化这些参数和层的输入,这样可以减少用于计算损失函数变化量的计算资源消耗。
在算法设计中,可以使用参数errormin来控制这种情况,例如在某种量化精度的量化引入的最大误差(噪音)Δ小于或等于参数errormin时,直接用当前量化精度来进行量化,而在某种量化精度的量化引入的最大误差(噪音)Δ大于参数errormin且小于errormax时,则利用上述公式计算损失函数变化量,得到损失函数变化量为负的那种量化模式来进行量化。在实验中,errormax可以取不超过0.01,errormin可以取5*10-5。当然,这些数值都是举例,而非限制。
因此,在一个实施例中,在利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量之前:如果Δ<errormin,则确定一个量化精度作为量化该层的量化精度,而不进行利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量的步骤,从而减少计算成本,其中Δ表示用一个量化模式量化该层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormin表示最大值小于其时变化量低于预定值(即最大值小于errormin时变化量很小,可以忽略不计)。
如此,也可以在上述情况下节省计算损失函数值变化量的计算成本。
A3.提升算法成功率
在实践过程中,上述算法并不能总得到一个性能更优的模型,这是因为在分析的过程中使用概率的方式进行推理,使用了期望替代了真实值。当随机变量方差较大时,会出现得到较差模型的情况。得到较好量化模型的基础在于为了分析/>的概率,可以使用切比雪夫不等式得到如下的结果。其中,得到/>则通过/>能得到/>的概率。
Var(e)、Var(p)分别表示每一层的权重和输入数据的噪音的方差,Ee、和Ep分别表示每一层的权重和输入数据的噪音的期望。
基于上式可得,为了获得更稳定地得到较好性能的量化模型,即希望的概率越大,从而得到损失函数为负的概率越大,即量化模型的性能比全精度模型要好的概率越大,则反过来希望/>越小越好。那么,根据上述公式(9)可以看出,希望越小,则公式中的每一层的权重和输入数据的噪音的方差Var(e)、Var(p)应该尽可能小,同时均值离0点应该尽可能大,即Ee和Ep尽可能大。这个需求是不难理解的,因为越稳定的模型,其中包含的随机变量的方差Var也应该越小,同时均值过0点的概率应该小。
其中,由于如前e表示的是对参数(权重)的量化的噪音∈i的向量中的元素,但在本申请中,如果确定对该参数(权重)向上取整或向下取整,则量化的噪音∈i是确定的,因此,Var(e)和Ee也是确定的。因此,在此可以只考虑Var(p)和Ep。
由于因此要使得Ep更大,也就是/>要更大。于是,对于/>较大且Var(p)较小的层,可以使用高量化精度级别来获得比高概率的全精度模型更好的模型。而如果方差较大或Ep更小,则很可能即使进行各种量化的运算也无法使得损失函数变化为负,即得不到性能更优的模型。因此为了保证成功概率高,可以设置参数来保证方差较小或Ep较大。但是,由于保证方差小于一个参数的计算量太大,在现实中为了平衡性能可以舍弃,在实际实验中发现,只保证期望Ep较大也可以获得较好的效果。因此实际上可以只设置一个算法参数μ(即Ep大于或等于μ时也可以获得较好的效果),使得仅在||Ep||>μ或等于μ时再考虑量化第i层Layeri来通过不同量化取整方式等来使得损失函数变化量为负等,如此可以平衡计算量和模型性能。这里注意,根据先前的分析,根据方向,可以用割线secant±(·)去替代切线/>因此,可以通过计算得到||secant±(•)||<μ,则不考虑求损失函数变化量了,可进入下一量化循环,而计算得到||secant±(•)||>μ或等于μ时,再求损失函数变化量。/>
因此,在一个实施例中,在利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量之后:如果一个量化精度对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值<μ,则确定该量化精度不作为量化该层的量化精度,如此能够节省计算变化量的计算成本;如果一个量化精度对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值≥μ,则继续确定变化量是否为负。
接下来,继续通过确定割线secant+(hi,Δ)和secant-(hi,Δ)中哪个为负,来确定变化量为负,其中,如果割线secant+(hi,Δ)为负,则确定利用包括向上取整的该量化精度来量化,如果割线secant-(hi,Δ)为负,则确定利用包括向下取整的该量化精度来量化。
如此,可以分层确定每层的量化神经网络模型的输入向量和权重参数的最优或较优的量化模式,从而得到性能比全精度模型更好的量化后的神经网络模型。
B.工程问题和问题求解
基于上述分析,本申请提出了无损压缩神经网络的方法,可以总结为如下算法1。
/>
C.测试效果
使用混合的国家标准和技术研究所(Modified National Institute ofStandards and Technology,MNIST)数据库、加拿大高级研究所(Canadian Institute forAdvanced Research,CIFAR)10、CIFAR100和ImageNet-100的数据集。将训练数据集分割为20%校正数据和80%训练数据集。当然20%和80%的比例可以不限于此,还可以使用其他比例,只要有一部分作为校正数据,有一部分作为训练数据集即可。
在MNIST数据集实验中,使用深度神经网络DNN作为基准。整流线性单元(Rectified Linear Unit,ReLU)层位于模型784-512-256-128-64-10架构中的每一层之间。实验将ResNet8/14和VGG11/13应用于CIFAR 10数据集。在CIFAR 100数据集中使用VGG13、ResNet34和mobilnet模型。对ImageNet-100数据集,只用MobileNet模型。
在量化过程之前,用全精度模型处理整个校正数据集,并在数据集中不同层输入的最小值和最大值,并计算Δ,其中Δ是量化引入的最大误差。为了尽可能从获得高性能模型,该测试设置errormin=0,errormax=0.1。在CIFAR100和ImageNet-100实验,同时在实验中使用μ=0.6,在MNIST和CIFAR10数据集中,μ为0.4。
实验结果如下表1所示。该表1展示了算法1在很多情况下的损失函数值比全精度模型的损失函数值小,因此算法1可以以很大概率得到比全精度模型损失函数更低、性能更好的模型。
表1
如此,根据本申请的实施例来分层确定每层的量化神经网络模型的输入向量和权重参数的最优或较优的量化模式,能够得到性能比全精度模型更好的量化后的神经网络模型。
图5示出了根据本申请的实施例的一种分层确定量化神经网络模型的量化模式的系统500的方框图。
如图5所示,一种分层确定量化神经网络模型的量化模式的系统,包括:量化装置510,被配置为按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数,其中神经网络模型是利用第一数据集训练来得到的;计算装置520,被配置为利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量;确定装置530,被配置为如果确定变化量为负,则确定一个量化模式作为量化该层的量化模式。
在一个实施例中,量化装置510被配置为:利用多个数据精度中的一个数据精度来通过向上取整或向下取整中的一种取整方式来量化该层的输入向量,并对该层的权重参数进行四舍五入取整。
在一个实施例中,量化装置510被配置为:对于神经网络模型的一层,在每个量化循环中,按多个量化模式的数据精度从低到高来选择一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数。
在一个实施例中,该层是第i层,计算装置520被配置为:至少基于神经网络模型的损失函数值l与第i层的输入向量hi的梯度神经网络模型的第i层的输入向量的量化引入的噪音∈i来得到变化量,其中i是正整数。
在一个实施例中,计算装置520被配置为利用如下公式来计算变化量
其中,n是神经网络模型的层数,是神经网络模型要推理的第二数据集,wi是神经网络模型的第i层的权重参数,f(w)表示神经网络模型推理第二数据集得到的损失函数值,/>表示量化后的神经网络模型推理第二数据集得到的损失函数值,/>是量化后的神经网络模型推理第二数据集得到的损失函数值与神经网络模型推理第二数据集得到的损失函数值的差的最小值,∈i表示量化的神经网络模型的第i层的输入向量由于量化引入的噪音,其中E为噪音∈的集合,δi表示量化的神经网络模型的第i层的权重参数由于量化而引入的噪音,wi是神经网络模型的第i层的权重参数,M是第二数据集中的样本的数量,xm和ym分别代表了第二数据集中的第m个样本的特征xm和标签ym,l是神经网络模型推理第二数据集中的第m个样本的损失函数值,其中/>表示损失函数值l与第i层的输入向量hi的梯度,/>表示损失函数值l与第i层的权重参数wi的梯度,其中/>
在一个实施例中,确定装置530被配置为通过确定来确定变化量为负。
在一个实施例中,计算装置520被配置为:
如果利用包括向上取整的一个量化模式来量化该层的输入向量,则用割线来替代向上取整时的/>l+是向上取整时的量化的神经网络模型推理一个样本的损失函数,
如果利用包括向上取整的一个量化模式来量化该层的输入向量,则用割线来替代向上取整时的/>l-是向下取整时的量化的神经网络模型推理一个样本的损失函数,/>表示由第i层的输入数据的数量个1组成的向量,
其中,f+(w)表示利用向上取整来量化该层的输入向量的量化的神经网络模型的损失函数,Δ表示用一个量化模式量化该层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,f-(w)表示利用向下取整来量化该层的输入向量的量化的神经网络模型的损失函数。
在一个实施例中,确定装置530被配置为:在利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量之后:如果一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值<μ,则确定一个量化模式不作为量化该层的量化模式;如果一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值≥μ,则继续确定变化量是否为负。
在一个实施例中,确定装置530被配置为:通过确定割线secant+(hi,Δ)和secant-(hi,Δ)中哪个为负,来确定变化量为负,其中,如果割线secant+(hi,Δ)为负,则确定利用包括向上取整的一个量化模式来量化,如果割线secant-(hi,Δ)为负,则确定利用包括向下取整的一个量化模式来量化。
在一个实施例中,确定装置530被配置为:在利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量之前:如果Δ>errormax,则确定一个量化模式不作为量化该层的量化模式,其中Δ表示用一个量化模式量化该层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormax表示最大值大于其时变化量为负的概率低于预定值。
在一个实施例中,确定装置530被配置为:在利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量之前:如果Δ<errormin,则确定一个量化模式作为量化该层的量化模式,而不进行利用第二数据集推理得到量化该层的一个量化模式导致的神经网络模型的损失函数的该层的变化量的步骤,其中Δ表示用一个量化模式量化该层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormin表示最大值小于其时变化量低于预定值。
如此,可以分层确定每层的量化神经网络模型的输入向量和权重参数的最优或较优的量化模式,从而得到性能比全精度模型更好的量化后的神经网络模型。
图6示出了适于用来实现本申请的实施例的示例性电子设备的框图。
电子设备可以包括处理器(H1);存储介质(H2),耦合于处理器(H1),且在其中存储计算机可执行指令,用于在由处理器执行时进行本申请的实施例的各个方法的步骤。
处理器(H1)可以包括但不限于例如一个或者多个处理器或者或微处理器等。
存储介质(H2)可以包括但不限于例如,随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、计算机存储介质(例如硬碟、软碟、固态硬盘、可移动碟、CD-ROM、DVD-ROM、蓝光盘等)。
除此之外,该电子设备还可以包括(但不限于)数据总线(H3)、输入/输出(I/O)总线(H4),显示器(H5)以及输入/输出设备(H6)(例如,键盘、鼠标、扬声器等)等。
处理器(H1)可以通过I/O总线(H4)经由有线或无线网络(未示出)与外部设备(H5、H6等)通信。
存储介质(H2)还可以存储至少一个计算机可执行指令,用于在由处理器(H1)运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
在一个实施例中,该至少一个计算机可执行指令也可以被编译为或组成一种软件产品,其中一个或多个计算机可执行指令被处理器运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
图7示出了根据本申请的实施例的非暂时性计算机可读存储介质的示意图。
如图7所示,计算机可读存储介质720上存储有指令,指令例如是计算机可读指令710。当计算机可读指令710由处理器运行时,可以执行参照以上描述的各个方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。例如,计算机可读存储介质720可以连接于诸如计算机等的计算设备,接着,在计算设备运行计算机可读存储介质720上存储的计算机可读指令710的情况下,可以进行如上描述的各个方法。
当然,上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本申请的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本申请的效果,这种合并和组合而成的实施例也被包括在本申请中,在此不一一描述这种合并和组合。
注意,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
本公开中的步骤流程图以及以上方法描述仅作为例示性的例子并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。
另外,本文中的各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本申请的概念来结合本文中的各个实施例中相关的部分步骤和部分装置以构思新的实施例,而这些新的实施例也包括在本申请的范围内。
以上描述的方法的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、专用集成电路(ASIC)或处理器。
可以利用被设计用于进行在此描述的功能的通用处理器、数字信号处理器(DSP)、ASIC、场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行描述的各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多个微处理器、与DSP核协作的微处理器或任何其他这样的配置。
结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
在此公开的方法包括用于实现描述的方法的动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。
上述功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为指令存储在切实的计算机可读介质上。存储介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如在此使用的,碟(disk)和盘(disc)包括紧凑盘(CD)、激光盘、光盘、数字通用盘(DVD)、软碟和蓝光盘,其中碟通常磁地再现数据,而盘利用激光光学地再现数据。
因此,本公开还可以包括计算机程序产品,其中计算机程序产品可以进行在此给出的方法、步骤和操作。例如,这样的计算机程序产品可以是计算机软件包、计算机代码指令、具有有形存储(和/或编码)在其上的计算机指令的计算机可读的有形介质,该指令可由处理器执行以进行在此描述的操作。计算机程序产品可以包括包装的材料。
软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。
此外,用于进行在此描述的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此描述的方法的手段的传送。或者,在此描述的各种方法可以经由存储部件(例如RAM、ROM、诸如CD或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此描述的方法和技术提供给设备的任何其他适当的技术。
其他例子和实现方式在本公开和所附权利要求的范围和精神内。例如,由于软件的本质,以上描述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发以便功能的部分在不同的物理位置处实现。而且,如在此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
可以不脱离由所附权利要求定义的教导的技术而进行对在此描述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上描述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此描述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (24)
1.一种分层确定量化神经网络模型的量化模式的方法,包括:
按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数,其中所述神经网络模型是利用第一数据集训练来得到的;
利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量;
如果确定所述变化量为负,则确定所述一个量化模式作为量化所述层的量化模式。
2.根据权利要求1所述的方法,其中,所述按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数包括:利用多个数据精度中的一个数据精度来通过向上取整或向下取整中的一种取整方式来量化所述层的输入向量,并对所述层的权重参数进行四舍五入取整。
3.根据权利要求1所述的方法,其中,所述按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数包括:
对于所述神经网络模型的一层,在每个量化循环中,按多个量化模式的数据精度从低到高来选择一个量化模式来量化所述神经网络模型的一层的输入向量和该层的权重参数。
4.根据权利要求1所述的方法,其中,所述层是第i层,所述利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量包括:
至少基于神经网络模型的损失函数值l与第i层的输入向量hi的梯度神经网络模型的第i层的输入向量的量化引入的噪音∈i来得到所述变化量,i是正整数。
5.根据权利要求4所述的方法,其中,所述得到量化所述第i层的所述一个量化模式导致的所述神经网络模型的损失函数的所述第i层的变化量包括利用如下公式来计算所述变化量
其中,n是神经网络模型的层数,是所述神经网络模型要推理的第二数据集,f(w)表示所述神经网络模型推理所述第二数据集得到的损失函数值,/>表示量化后的神经网络模型推理所述第二数据集得到的损失函数值,/>是量化后的神经网络模型推理第二数据集得到的损失函数值与所述神经网络模型推理所述第二数据集得到的损失函数值的差的最小值,wi是所述神经网络模型的第i层的权重参数,∈i表示量化的神经网络模型的第i层的输入向量由于量化引入的噪音,其中E为噪音∈的集合,δi表示量化的神经网络模型的第i层的权重参数由于量化而引入的噪音,M是所述第二数据集中的样本的数量,xm和ym分别代表了第二数据集中的第m个样本的特征xm和标签ym,l是所述神经网络模型推理所述第二数据集中的第m个样本的损失函数值,其中/>表示损失函数值l与第i层的输入向量hi的梯度,/>表示损失函数值l与第i层的权重参数wi的梯度,其中/>
6.根据权利要求5所述的方法,其中,通过确定来确定所述变化量为负。
7.根据权利要求6所述的方法,其中,如果利用包括向上取整的所述一个量化模式来量化所述层的输入向量,则用割线来替代向上取整时的/>是向上取整时的量化的神经网络模型推理一个样本的损失函数,其中,如果利用包括向上取整的所述一个量化模式来量化所述层的输入向量,则用割线/>来替代向上取整时的/>l-是向下取整时的量化的神经网络模型推理一个样本的损失函数,/>表示由第i层的输入数据的数量个1组成的向量,其中,f+(w)表示利用向上取整来量化所述层的输入向量的量化的神经网络模型的损失函数,Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,f-(w)表示利用向下取整来量化所述层的输入向量的量化的神经网络模型的损失函数。
8.根据权利要求7所述的方法,还包括在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之后:
如果所述一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值<μ,则确定所述一个量化模式不作为量化所述层的量化模式,其中μ是一个参数;
如果所述一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值≥μ,则继续确定所述变化量是否为负。
9.根据权利要求7所述的方法,其中,通过确定割线secant+(hi,Δ)和secant-(hi,Δ)中哪个为负,来确定所述变化量为负,其中,如果割线secant+(hi,Δ)为负,则确定利用包括向上取整的所述一个量化模式来量化,如果割线secant-(hi,Δ)为负,则确定利用包括向下取整的所述一个量化模式来量化。
10.根据权利要求1所述的方法,还包括在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之前:
如果Δ>errormax,则确定所述一个量化模式不作为量化所述层的量化模式,
其中Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormax表示所述最大值大于其时所述变化量为负的概率低于预定值。
11.根据权利要求1所述的方法,还包括在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之前:
如果Δ<errormin,则确定所述一个量化模式作为量化所述层的量化模式,而不进行利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量的步骤,
其中Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormin表示所述最大值小于其时所述变化量低于预定值。
12.一种分层确定量化神经网络模型的量化模式的系统,包括:
量化装置,被配置为按神经网络模型的层为单位、利用多个量化模式中的一个量化模式来量化神经网络模型的一层的输入向量和该层的权重参数,其中所述神经网络模型是利用第一数据集训练来得到的;
计算装置,被配置为利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量;
确定装置,被配置为如果确定所述变化量为负,则确定所述一个量化模式作为量化所述层的量化模式。
13.根据权利要求12所述的系统,其中,所述量化装置被配置为:利用多个数据精度中的一个数据精度来通过向上取整或向下取整中的一种取整方式来量化所述层的输入向量,并对所述层的权重参数进行四舍五入取整。
14.根据权利要求12所述的系统,其中,所述量化装置被配置为:
对于所述神经网络模型的一层,在每个量化循环中,按多个量化模式的数据精度从低到高来选择一个量化模式来量化所述神经网络模型的一层的输入向量和该层的权重参数。
15.根据权利要求12所述的系统,其中,所述层是第i层,所述计算装置被配置为:
至少基于神经网络模型的损失函数值l与第i层的输入向量hi的梯度神经网络模型的第i层的输入向量的量化引入的噪音∈i来得到所述变化量,i是正整数。
16.根据权利要求14所述的系统,其中,所述计算装置被配置为利用如下公式来计算所述变化量
其中,n是神经网络模型的层数,是所述神经网络模型要推理的第二数据集,f(w)表示所述神经网络模型推理所述第二数据集得到的损失函数值,/>表示量化后的神经网络模型推理所述第二数据集得到的损失函数值,/>是量化后的神经网络模型推理第二数据集得到的损失函数值与所述神经网络模型推理所述第二数据集得到的损失函数值的差的最小值,wi是所述神经网络模型的第i层的权重参数,∈i表示量化的神经网络模型的第i层的输入向量由于量化引入的噪音,其中E为噪音∈的集合,δi表示量化的神经网络模型的第i层的权重参数由于量化而引入的噪音,M是所述第二数据集中的样本的数量,xm和ym分别代表了第二数据集中的第m个样本的特征xm和标签ym,l是所述神经网络模型推理所述第二数据集中的第m个样本的损失函数值,其中/>表示损失函数值l与第i层的输入向量hi的梯度,/>表示损失函数值l与第i层的权重参数wi的梯度,其中/>
17.根据权利要求16所述的系统,其中,所述确定装置被配置为通过确定来确定所述变化量为负。
18.根据权利要求17所述的系统,其中,所述计算装置被配置为:
如果利用包括向上取整的所述一个量化模式来量化所述层的输入向量,则用割线来替代向上取整时的/>l+是向上取整时的量化的神经网络模型推理一个样本的损失函数,
如果利用包括向上取整的所述一个量化模式来量化所述层的输入向量,则用割线来替代向上取整时的/>l-是向下取整时的量化的神经网络模型推理一个样本的损失函数,/>表示由第i层的输入数据的数量个1组成的向量,
其中,f+(w)表示利用向上取整来量化所述层的输入向量的量化的神经网络模型的损失函数,Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,f-(w)表示利用向下取整来量化所述层的输入向量的量化的神经网络模型的损失函数。
19.根据权利要求18所述的系统,其中,所述确定装置被配置为:在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之后:
如果所述一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值<μ,则确定所述一个量化模式不作为量化所述层的量化模式,μ是一个参数;
如果所述一个量化模式对应的secant+(hi,Δ)或secant-(hi,Δ)的绝对值≥μ,则继续确定所述变化量是否为负。
20.根据权利要求18所述的系统,其中,所述确定装置被配置为:通过确定割线secant+(hi,Δ)和secant-(hi,Δ)中哪个为负,来确定所述变化量为负,其中,如果割线secant+(hi,Δ)为负,则确定利用包括向上取整的所述一个量化模式来量化,如果割线secant-(hi,Δ)为负,则确定利用包括向下取整的所述一个量化模式来量化。
21.根据权利要求12所述的系统,其中,所述确定装置被配置为:在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之前:
如果Δ>errormax,则确定所述一个量化模式不作为量化所述层的量化模式,
其中Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormax表示所述最大值大于其时所述变化量为负的概率低于预定值。
22.根据权利要求12所述的系统,其中,所述确定装置被配置为:在利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量之前:
如果Δ<errormin,则确定所述一个量化模式作为量化所述层的量化模式,而不进行利用第二数据集推理得到量化所述层的所述一个量化模式导致的所述神经网络模型的损失函数的所述层的变化量的步骤,
其中Δ表示用所述一个量化模式量化所述层的输入向量中的各个输入数据带来的各个噪音的绝对值中的最大值,errormin表示所述最大值小于其时所述变化量低于预定值。
23.一种电子设备,包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,并执行如权利要求1-11中任一项所述的方法。
24.一种非暂时存储介质,其上存储有指令,
其中,所述指令在被处理器读取时,使得所述处理器执行如权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311550235.3A CN117454944A (zh) | 2023-11-20 | 2023-11-20 | 分层确定神经网络量化模式的方法、系统、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311550235.3A CN117454944A (zh) | 2023-11-20 | 2023-11-20 | 分层确定神经网络量化模式的方法、系统、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117454944A true CN117454944A (zh) | 2024-01-26 |
Family
ID=89585384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311550235.3A Pending CN117454944A (zh) | 2023-11-20 | 2023-11-20 | 分层确定神经网络量化模式的方法、系统、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117454944A (zh) |
-
2023
- 2023-11-20 CN CN202311550235.3A patent/CN117454944A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | Deep neural network approximation for custom hardware: Where we've been, where we're going | |
EP3474194B1 (en) | Method and apparatus with neural network parameter quantization | |
CN111652367B (zh) | 一种数据处理方法及相关产品 | |
JP7146954B2 (ja) | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 | |
US11604647B2 (en) | Mixed precision capable hardware for tuning a machine learning model | |
EP3704638A1 (en) | Neural network representation | |
Pagliari et al. | Dynamic bit-width reconfiguration for energy-efficient deep learning hardware | |
CN111191783B (zh) | 一种自适应量化方法及装置、设备、介质 | |
CN110728350A (zh) | 用于机器学习模型的量化 | |
KR20220075407A (ko) | 뉴럴 네트워크 표현 형식 | |
CN111652664A (zh) | 训练混合元学习网络的装置和方法 | |
Goyal et al. | Fixed-point quantization of convolutional neural networks for quantized inference on embedded platforms | |
WO2020190526A1 (en) | Mixed precision training of an artificial neural network | |
US20210064634A1 (en) | Systems and Methods for Weighted Quantization | |
Pang et al. | Using multi-objective optimization to solve the long tail problem in recommender system | |
Afuecheta et al. | Flexible models for stock returns based on Student's t distribution | |
Anastasia et al. | Throughput-distortion computation of generic matrix multiplication: Toward a computation channel for digital signal processing systems | |
CN117454944A (zh) | 分层确定神经网络量化模式的方法、系统、设备和介质 | |
CN111033495A (zh) | 用于快速相似性搜索的多尺度量化 | |
CN109918237B (zh) | 异常网络层确定方法及相关产品 | |
CN113947177A (zh) | 一种量化校准方法、计算装置和计算机可读存储介质 | |
Lee et al. | Fine grain precision scaling for datapath approximations in digital signal processing systems | |
CN110008974A (zh) | 行为数据预测方法、装置、电子设备及计算机存储介质 | |
Tsuji et al. | Greedy search algorithm for partial quantization of convolutional neural networks inspired by submodular optimization | |
CN117474052A (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 |