一种神经网络量化部署方法、系统及存储介质与流程

allin2023-04-05  62



1.本发明涉及神经网络技术领域,具体涉及一种神经网络量化部署方法、系统及存储介质。


背景技术:

2.近些年来深度学习迅速发展,在自然语言处理、目标检测、计算机视觉等领域取得了最优越的性能,从最初的alexnet到googlenet、vgg,模型预测精度越来越高、网络层数也越来越深。resnet网络的提出,更是解决了因网络加深而出现的梯度消失或梯度爆炸问题,shortcut结构保证了深层网络至少不低于浅层网络预测精度。
3.而随着神经网络模型堆叠的层数越来越多,消耗的内存大小成为问题,特别是在嵌入式移动设备中,因此如何减小网络规模,压缩网络内存以更好嵌入移动设备中成为了亟需解决的问题。


技术实现要素:

4.针对现有技术的不足,本发明提供一种神经网络量化部署方法、系统及存储介质,用于以较小的模型尺寸完成任务并且压缩网络内存以更好的嵌入到移动设备中去。
5.本发明解决技术问题采用如下技术方案:
6.本发明提供了一种神经网络量化部署方法,包括数据预处理、搭建网络模型和提取网络参数进行量化部署,所述搭建网络模型具体包括:
7.采用神经常微分方程配置网络架构,通过ode-solver求解器匹配硬件设备进行网络深度和数值误差的配置;
8.采用量化感知训练量化神经常微分方程网络,对激活值和权重量化后执行数据运算的结果直接进行反量化,保持网络量化部署在端侧时的推理过程和训练时的推理过程一致,并采用直通估计直接将梯度回传到量化之前的权重上,更新权重。
9.优选地,所述数据预处理具体包括:
10.收集整理数据并清理无关数据、特殊数据,配置每个样本数据使其规格相同,赋予数据标签并按照7:2:1划分为训练集、验证集和测试集。
11.优选地,所述ode-solver求解器通过调整计算间隔时间以增加或减少计算次数进行网络层数的调整。
12.优选地,所述权重采用层级量化。
13.优选地,所述激活值和权重通过缩放系数量化数据,并直接采用移位运算完成量化,具体包括:
14.采用滑动平均统计激活值或权重的最大值和最小值;
15.返回最大值的绝对值和最小值绝对值的最值;
16.对最值求取其最接近的2的次方数作为位数值;
17.根据位数值和量化目标位数得到缩放比例;
18.按缩放比例对激活值或权重进行缩放并四舍五入取整;
19.截断超过预设表示范围的取整数据,返回结果作为量化后的激活值或权重输出。
20.优选地,权重的预设表示范围下限值为激活值的预设表示范围下限值减一。
21.优选地,所述网络量化部署在端侧时的推理过程为全量化推理,具体包括:
22.读取所述缩放比例,并采用量化训练时的量化方法对权重执行量化处理;
23.对初始输入执行量化操作,并将输出结果作为量化后的激活值和量化后的权重执行数据运算;
24.对运算输出结果执行再量化处理,并将处理结果作为下一个操作的输入;
25.所述再量化处理具体为根据权重和激活值的位数值对运算输出结果执行移位操作。
26.本发明还提供一种神经网络系统,包括数据预处理模块、网络模型模块和量化部署模块,所述网络模型模块配置为用于采用神经常微分方程配置网络架构,通过ode-solver求解器匹配硬件设备进行网络深度和数值误差的配置;采用量化感知训练量化神经常微分方程网络,对激活值和权重量化后执行数据运算的结果直接进行反量化,保持网络量化部署在端侧时的推理过程和训练时的推理过程一致,并采用直通估计直接将梯度回传到量化之前的权重上,更新权重,其中,
27.ode-solver求解器通过调整计算间隔时间以增加或减少计算次数进行网络层数的调整;
28.权重采用层级量化,激活值和权重通过缩放系数量化数据,并直接采用移位运算完成量化,具体包括:
29.采用滑动平均统计激活值或权重的最大值和最小值;
30.返回最大值的绝对值和最小值绝对值的最值;
31.对最值求取其最接近的2的次方数作为位数值;
32.根据位数值和量化目标位数得到缩放比例;
33.按缩放比例对激活值或权重进行缩放并四舍五入取整;
34.截断超过预设表示范围的取整数据,返回结果作为量化后的激活值或权重输出,所述权重的预设表示范围下限值为激活值的预设表示范围下限值减一;
35.所述数据预处理模块配置为用于收集整理数据并清理无关数据、特殊数据,配置每个样本数据使其规格相同,赋予数据标签并按照7:2:1划分为训练集、验证集和测试集;
36.所述量化部署模块配置为用于将网络量化部署在端侧时的推理过程为全量化推理,具体包括:
37.读取所述缩放比例,并采用量化训练时的量化方法对权重执行量化处理;
38.对初始输入执行量化操作,并将输出结果作为量化后的激活值和量化后的权重执行数据运算;
39.对运算输出结果执行再量化处理,并将处理结果作为下一个操作的输入;
40.所述再量化处理具体为根据权重和激活值的位数值对运算输出结果执行移位操作。
41.本发明还提供一种电子设备,包括:
42.至少一个处理器;以及
43.与所述至少一个处理器通信连接的存储器;其中,
44.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如前述的神经网络量化部署方法。
45.本发明还提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如前述的神经网络量化部署方法。
46.与现有技术相比,本发明具有如下的有益效果:
47.本发明的神经网络量化部署方法在量化激活值和权重时,量化后并没有紧接着反量化,而是对操作后的输出结果进行反量化,使网络在训练的过程中适应这种操作,保存与端侧的推理过程一致,降低因网络量化部署而造成的损失;其次本发明采用ode-solver求解器匹配硬件设备进行网络深度和数值误差的配置,能够自适应调整δt的值,根据不同的应用场景自适应调节网络深度,以较小的模型尺寸完成任务。还能控制数值误差,因此可以在计算时间和模型准确度之间做权衡,以适应硬件设备,发挥最佳性能,最后本发明在量化时能够直接使用移位运算完成量化,使网络部署到端侧时更方便快捷。
48.关于本发明相对于现有技术,其他突出的实质性特点和显著的进步在实施例部分进一步详细介绍。
附图说明
49.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
50.图1为实施例1的量化训练推理模式示意图;
51.图2为实施例1的残差模块示意图;
52.图3为实施例1的经典残差resnet18网络结构示意图;
53.图4为实施例1的node模块结构示意图;
54.图5为实施例1的18-layer node结构示意图;
55.图6为实施例1的端侧推理模式结构示意图;
56.图7为实施例2的神经网络系统结构示意图。
具体实施方式
57.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
58.需要说明的是,在说明书及权利要求书当中使用了某些名称来指称特定组件。应当理解,本领域普通技术人员可能会用不同名称来指称同一个组件。本技术说明书及权利要求书并不以名称的差异作为区分组件的方式,而是以组件在功能上的实质性差异作为区分组件的准则。如在本技术说明书和权利要求书中所使用的“包含”或“包括”为一开放式用语,其应解释为“包含但不限定于”或“包括但不限定于”。具体实施方式部分所描述的实施例为本发明的较佳实施例,并非用以限定本发明的范围。
59.此外,所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或
计算机程序产品。因此,本发明的各个方面可以具体实现为软硬件结合的形式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个微控制器可读介质中的计算机程序产品的形式,该微控制器可读介质中包含微控制器可读的程序代码。
60.实施例1
61.本实施例提供的一种神经网络量化部署方法,包括数据预处理、搭建网络模型和提取网络参数进行量化部署,其中,
62.数据预处理具体包括:
63.收集整理数据并清理无关数据、特殊数据,配置每个样本数据使其规格相同,赋予数据标签并按照7:2:1划分为训练集、验证集和测试集;
64.搭建网络模型具体包括:
65.采用神经常微分方程配置网络架构,通过ode-solver求解器匹配硬件设备进行网络深度和数值误差的配置,其中,ode-solver求解器通过调整计算间隔时间以增加或减少计算次数进行网络层数的调整;
66.为了进一步说明采用的神经常微分方程配置网络架构,请参照图2为残差模块示意图,残差网络是一类特殊的卷积网络,它通过残差连接而解决了梯度反传问题,即当神经网络层级非常深时,梯度仍然能有效传回输入端,可以抽象表示为公式:
67.h
t+1-h
t
=f(h
t

t
)
68.其中h
t
为第t层的输出值,θ
t
为第t层网络的参数,f为通过θ
t
参数化的神经网络,请参照图3,为经典残差resnet18网络结构示意图;
69.请参照图4为node(neural ordinary differential equation)神经常微分方程的结构示意图,残差网络参数化的是隐藏层之间的残差,而神经微分方程参数化的是隐藏层的导数,神经常微分方程可以抽象表示为公式:
70.h
t+1-h
t
=∫
tt+1
f(h
t
,t,θ
t
)dt
71.如上公式所示,常微分方程的数值解h
t+1
需要神经网络f从t到t+1的积分,这可以利用ode-solver解出这个值,那么就相当于完成了前向传播;请参照图5为在残差网络的结构上,加入node模块后的网络结构图;
72.采用量化感知训练(quantification aware training,qat)量化神经常微分方程网络,量化感知训练是在量化的过程中,对网络进行训练,从而让网络参数能更好地适应量化带来的信息损失;
73.在本实施例中对激活值和权重量化后执行数据运算的结果直接进行反量化,保持网络量化部署在端侧时的推理过程和训练时的推理过程一致,请参照图1,以fp32和int8数据为例,为了保持网络部署在端侧时的推理过程和训练时的推理流程一致,在将量化激活值(activate)和权重(weight)时量化为int8时,量化后并没有紧接着反量化为fp32,而是对操作结果进行反量化;
74.并在量化训练时,使用直通估计(straight through estimator,ste)跳过量化的过程,直接将梯度回传到量化之前的权重上,适应量化产生的误差,使其权重更新;
75.其中,权重采用层级量化,激活值a和权重w通过缩放系数量化数据,并直接采用移位运算完成量化,具体包括:
76.采用滑动平均统计激活值或权重的最大值和最小值;
77.返回最大值的绝对值和最小值绝对值的最值;
78.对最值求取其最接近的2的次方数作为位数值;
79.根据位数值和量化目标位数得到缩放比例;
80.按缩放比例对激活值或权重进行缩放并四舍五入取整;
81.截断超过预设表示范围的取整数据,返回结果作为量化后的激活值或权重输出。
82.以量化激活值为例举例说明上述量化过程:
83.量化激活值时,使用滑动平均统计激活值的最大值(max)和最小值(min),
84.max=(1-momentum)*max+momentum*max_val
85.min=(1-momentum)*min+momentum*min_val
86.其中momentum为权重常量,一般取0.01,max_val为上一次统计到的最大值,量化激活值时,使用线性对称量化,
87.qmax=max(abs(max),abs(min))
88.其中max()为求最大值函数,abs()为绝对值函数,本实施例中没有直接使用最值qmax对数据进行归一化,而是求取qmax最接近的2的次方数,
89.bit=round(log2(qmax)
90.其中round()为四舍五入函数。通过位数值bit,求得缩放比例scale,
91.scale=2
bit
/2792.由上公式可以看出,通过缩放系数量化数据时,能够直接用移位运算来处理,使用scale将浮点型(fp32)量化为整型(int8)型,
[0093][0094]
截断超过表示范围的数据:
[0095]qa-f
=clamp(qa,-27,2
7-1)
[0096]
其中clamp()为截断函数,q
a-f
为量化后的激活值;
[0097]
量化权重时,可分为层级(layer)量化和通道级(channel)量化,通道级量化即针对每个通道的权重进行量化,每一个通道都有一个对应的缩放比例scale,本实施例采用层级量化,有效便捷了再端侧的部署,量化方式与激活值量化基本一致,只是在最后截断时,为了避免溢出风险,权重的预设表示范围下限值为激活值的预设表示范围下限值减一,公式如下,
[0098]qw-f
=clamp(qw,-2
7-1,2
7-1);
[0099]
本实施例中对激活值和权重量化后执行数据运算的结果直接进行反量化,具体为:
[0100]
权重反量化:
[0101]
w=q
w-f
*sw[0102]
激活值反量化:
[0103]
a=q
a-f
*sa[0104]
不论是卷积层还是全连接层,其本质上都是矩阵运算,因此可以表示为:
[0105][0106]
在英伟达的tensorrt量化方案中通过实验得知,去掉偏置b对精度的影响不大,则对输出结果q
output
反量化得到反量化结果output,
[0107][0108]
本实施例中网络量化部署在端侧时的推理过程为全量化推理,具体包括:
[0109]
读取所述缩放比例,并采用量化训练时的量化方法对权重执行量化处理;
[0110]
对初始输入执行量化操作,并将输出结果作为量化后的激活值和量化后的权重执行数据运算;
[0111]
对运算输出结果执行再量化处理,并将处理结果作为下一个操作的输入;
[0112]
所述再量化处理具体为根据权重和激活值的位数值对运算输出结果执行移位操作,具体的以dsp为例,dsp这类微处理器,不支持浮点运算,部署时需要做全量化推理,网络训练时,通过直通估计更新权重参数,训练完以后,得到的权重是浮点型fp32,因此需要将权重量化成int8并保存到。此时量化,主要借助量化训练时的scale值,量化方法与训练时量化一致。
[0113][0114]
在训练时,一个操作后的输出值的数据类型是int32,然后要反量化到fp32;同时一个操作的输出值,即是下一个操作的输入值,要将输入的fp32再量化为int8,在端侧推理时,只做正向推理,而不用考虑反向传播更新权重,因此将上述操作,合成一个requantize再量化操作,直接将int32量化为int8,请参照图6为端侧推理模式示意图,输入值要量化为int8,才可输入到网络中,其中将int32量化为int8,请参考如下公式:
[0115]qa+1
*s
a+1
=swsa*q
output
[0116][0117]
可知,对输出值q
output
进行移位操作,即可将int32量化为int8。
[0118]
实施例2
[0119]
如图7所示,本实施例提供一种神经网络系统,包括数据预处理模块、网络模型模块和量化部署模块,其中,
[0120]
网络模型模块配置为用于采用神经常微分方程配置网络架构,通过ode-solver求解器匹配硬件设备进行网络深度和数值误差的配置;采用量化感知训练量化神经常微分方程网络,对激活值和权重量化后执行数据运算的结果直接进行反量化,保持网络量化部署在端侧时的推理过程和训练时的推理过程一致,并采用直通估计直接将梯度回传到量化之前的权重上,更新权重,其中,
[0121]
ode-solver求解器通过调整计算间隔时间以增加或减少计算次数进行网络层数
的调整;
[0122]
权重采用层级量化,激活值和权重通过缩放系数量化数据,并直接采用移位运算完成量化,具体包括:
[0123]
采用滑动平均统计激活值或权重的最大值和最小值;
[0124]
返回最大值的绝对值和最小值绝对值的最值;
[0125]
对最值求取其最接近的2的次方数作为位数值;
[0126]
根据位数值和量化目标位数得到缩放比例;
[0127]
按缩放比例对激活值或权重进行缩放并四舍五入取整;
[0128]
截断超过预设表示范围的取整数据,返回结果作为量化后的激活值或权重输出,所述权重的预设表示范围下限值为激活值的预设表示范围下限值减一;
[0129]
所述数据预处理模块配置为用于收集整理数据并清理无关数据、特殊数据,配置每个样本数据使其规格相同,赋予数据标签并按照7:2:1划分为训练集、验证集和测试集;
[0130]
所述量化部署模块配置为用于将网络量化部署在端侧时的推理过程为全量化推理,具体包括:
[0131]
读取所述缩放比例,并采用量化训练时的量化方法对权重执行量化处理;
[0132]
对初始输入执行量化操作,并将输出结果作为量化后的激活值和量化后的权重执行数据运算;
[0133]
对运算输出结果执行再量化处理,并将处理结果作为下一个操作的输入;
[0134]
所述再量化处理具体为根据权重和激活值的位数值对运算输出结果执行移位操作。
[0135]
实施例3
[0136]
本实施例提供一种电子设备,包括:
[0137]
至少一个处理器;以及
[0138]
与所述至少一个处理器通信连接的存储器;其中,
[0139]
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行实施例1所述的神经网络量化部署方法。
[0140]
实施例4
[0141]
本实施例提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如实施例1所述的神经网络量化部署方法。
[0142]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
[0143]
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

技术特征:
1.一种神经网络量化部署方法,包括数据预处理、搭建网络模型和提取网络参数进行量化部署,其特征在于,所述搭建网络模型具体包括:采用神经常微分方程配置网络架构,通过ode-solver求解器匹配硬件设备进行网络深度和数值误差的配置;采用量化感知训练量化神经常微分方程网络,对激活值和权重量化后执行数据运算的结果直接进行反量化,保持网络量化部署在端侧时的推理过程和训练时的推理过程一致,并采用直通估计直接将梯度回传到量化之前的权重上,更新权重。2.根据权利要求1所述的一种神经网络量化部署方法,其特征在于,所述数据预处理具体包括:收集整理数据并清理无关数据、特殊数据,配置每个样本数据使其规格相同,赋予数据标签并按照7:2:1划分为训练集、验证集和测试集。3.根据权利要求1所述的一种神经网络量化部署方法,其特征在于,所述ode-solver求解器通过调整计算间隔时间以增加或减少计算次数进行网络层数的调整。4.根据权利要求1所述的一种神经网络量化部署方法,其特征在于,所述权重采用层级量化。5.根据权利要求4所述的一种神经网络量化部署方法,其特征在于,所述激活值和权重通过缩放系数量化数据,并直接采用移位运算完成量化,具体包括:采用滑动平均统计激活值或权重的最大值和最小值;返回最大值的绝对值和最小值绝对值的最值;对最值求取其最接近的2的次方数作为位数值;根据位数值和量化目标位数得到缩放比例;按缩放比例对激活值或权重进行缩放并四舍五入取整;截断超过预设表示范围的取整数据,返回结果作为量化后的激活值或权重输出。6.根据权利要求5所述的一种神经网络量化部署方法,其特征在于,权重的预设表示范围下限值为激活值的预设表示范围下限值减一。7.根据权利要求6所述的一种神经网络量化部署方法,其特征在于,所述网络量化部署在端侧时的推理过程为全量化推理,具体包括:读取所述缩放比例,并采用量化训练时的量化方法对权重执行量化处理;对初始输入执行量化操作,并将输出结果作为量化后的激活值和量化后的权重执行数据运算;对运算输出结果执行再量化处理,并将处理结果作为下一个操作的输入;所述再量化处理具体为根据权重和激活值的位数值对运算输出结果执行移位操作。8.一种神经网络系统,包括数据预处理模块、网络模型模块和量化部署模块,其特征在于,所述网络模型模块配置为用于采用神经常微分方程配置网络架构,通过ode-solver求解器匹配硬件设备进行网络深度和数值误差的配置;采用量化感知训练量化神经常微分方程网络,对激活值和权重量化后执行数据运算的结果直接进行反量化,保持网络量化部署在端侧时的推理过程和训练时的推理过程一致,并采用直通估计直接将梯度回传到量化之前的权重上,更新权重,其中,ode-solver求解器通过调整计算间隔时间以增加或减少计算次数进行网络层数的调
整;权重采用层级量化,激活值和权重通过缩放系数量化数据,并直接采用移位运算完成量化,具体包括:采用滑动平均统计激活值或权重的最大值和最小值;返回最大值的绝对值和最小值绝对值的最值;对最值求取其最接近的2的次方数作为位数值;根据位数值和量化目标位数得到缩放比例;按缩放比例对激活值或权重进行缩放并四舍五入取整;截断超过预设表示范围的取整数据,返回结果作为量化后的激活值或权重输出,所述权重的预设表示范围下限值为激活值的预设表示范围下限值减一;所述数据预处理模块配置为用于收集整理数据并清理无关数据、特殊数据,配置每个样本数据使其规格相同,赋予数据标签并按照7:2:1划分为训练集、验证集和测试集;所述量化部署模块配置为用于将网络量化部署在端侧时的推理过程为全量化推理,具体包括:读取所述缩放比例,并采用量化训练时的量化方法对权重执行量化处理;对初始输入执行量化操作,并将输出结果作为量化后的激活值和量化后的权重执行数据运算;对运算输出结果执行再量化处理,并将处理结果作为下一个操作的输入;所述再量化处理具体为根据权重和激活值的位数值对运算输出结果执行移位操作。9.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的神经网络量化部署方法。10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的神经网络量化部署方法。

技术总结
本发明涉及神经网络技术领域,公开了一种神经网络量化部署方法、系统及存储介质,其中量化部署方法包括数据预处理、搭建网络模型和提取网络参数进行量化部署,搭建网络模型具体包括:采用神经常微分方程配置网络架构,通过ODE-solver求解器匹配硬件设备进行网络深度和数值误差的配置,采用量化感知训练量化神经常微分方程网络,对激活值和权重量化后执行数据运算的结果直接进行反量化;本发明降低了因网络量化部署而造成的损失,使网络部署到端侧时更方便快捷,能够很好的适应硬件设备,发挥最佳计算性能,有切实意义上的实用价值。有切实意义上的实用价值。有切实意义上的实用价值。


技术研发人员:张峰 章润 任军 吕向东
受保护的技术使用者:恒烁半导体(合肥)股份有限公司
技术研发日:2022.03.18
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-9110.html

最新回复(0)