一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种神经网络卷积层的高效量化加速方法及硬件电路与流程

2022-06-05 12:47:51 来源:中国专利 TAG:


1.本发明涉及人工智能计算技术领域,具体涉及一种神经网络卷积层的高效量化加速方法及硬件电路。


背景技术:

2.近年来,人工智能发展迅速,作为人工智能的重要组成部分,深度神经网络在各行业的应用也日益广泛。在边缘端进行网络模型部署的时候,由于边缘端计算性能和功耗的制约,限制了边缘端的网络模型推理性能。因此,在保证计算精度不大幅损失的前提下,设计低位宽、高效率的神经网络加速器成为行业研究的重点。
3.目前业界主流的加速器都在8-bit的量化位宽上进行推理,将权重和特征有32-bit浮点数压缩为8-bit,相比于fp32或int16可以带来成倍的算力提升并成倍减少访存带宽压力。
4.量化是浮点数据转为定点数据的过程,分非对称量化(uint8)和对称量化(int8)。


技术实现要素:

5.本发明提供针对网络加速的高效量化方法,通过对特征进行非对称量化,对权重进行对称量化,可以避免∑q1
×
z2项的在线计算,同时避免激活函数之后特征的输出范围不以0对称造成的量化损失。同时针对权重不同kernel之间数值范围差异较大问题,对每个权重kernel独立进行量化,避免统一量化造成的精度损失。
6.本发明为解决上述背景技术问题所采用的技术方案是:
7.本发明第一方面提供了一种神经网络卷积层的高效量化加速方法,包括计算原浮点数r、量化后定点数q、量化的放缩因子s以及零点z,所述零点z为原浮点数0对应的量化后的值,计算公式如下:
8.r=s(q-z);
[0009][0010][0011][0012]
原浮点数据计算可表示为:
[0013]
r3=∑r1 x r2;其中,r1为输入特征浮点数,r2为权重浮点数,r3为输出特征浮点数,转化为定点运算公式如下:
[0014]
s3(q3-z3)=∑s1(q1-z1)
×
s2(q2-z2)
[0015]
公式转化:
[0016]
展开如下:
[0017][0018]
分别在乘累加计算后设置逐通道乘法计算和逐通道加法计算,包括:
[0019]
对输入特征和输出特征进行非对称量化,以确定放缩因子s1、s3和零点z1、z3的值;
[0020]
对每个权重进行独立量化,分别得到s2_k0、s2_k1、s2_k2

s2_ki

s2_kn-1,编号ki代表第i个权重,共n个权重对应n个输出通道;则计算公式可简化为:
[0021]
进行展开如下:
[0022][0023]
令:
[0024][0025][0026]
则公式进一步简化为:
[0027]
q3=m_ki∑(q1
×
q2_ki) b_ki;
[0028]
将输出特征的定点数计算转化为乘累加计算、逐通道乘法计算和逐通道加法计算三种运算。
[0029]
作为本发明的一个技术方案,对每个权重进行独立量化采用对称量化。
[0030]
本发明第二方面提供了一种硬件电路,包括乘法器阵列mac_array单元、逐通道乘法计算单元和逐通道加法计算单元,三个单元为流水线操作,用于实现所述三种运算。
[0031]
本发明的上述技术方案具有如下有益的技术效果:
[0032]
本发明通过对卷积层的量化方法进行优化,减少了定点数的计算量,在加速器设计上简化了硬件电路,同时避免了因特征非对称性、权重kernel间动态范围差异大而导致的严重的量化精度损失。
附图说明
[0033]
图1为本发明量化结果示意图;
[0034]
图2为本发明硬件电路中三个单元流水操作示意图;
[0035]
图3为uint8量化示意图;
[0036]
图4为激活函数导致特征非对称性的展示图;
[0037]
图5为resnet-18中首个卷积层中64个权重kernel的动态范围条形图。
具体实施方式
[0038]
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结
合具体实施例和附图,进一步阐述本发明,但下述实施例仅仅为本发明的优选实施例,并非全部。基于实施方式中的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得其它实施例,都属于本发明的保护范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0039]
参考图3,对应如下公式进行;
[0040]
r=s(q-z);
[0041][0042][0043][0044]
r为原浮点数,q为量化后定点数,s为量化的缩放因子scale,z为零点zero-point即原浮点数0对应的量化后的值。对称量化(int8)可以认为是非对称量化的特殊形式,即强制零点z=0。
[0045]
量化后的模型在部署时,加速器中的运算全部以定点数运算完成,以卷积计算为例,原浮点数据计算可表示为:
[0046]
r3=∑r1 x r2;其中,r1为输入特征浮点数,r2为权重浮点数,r3为输出特征浮点数,转化为定点运算公式如下:
[0047]
s3(q3-z3)=∑s1(q1-z1)
×
s2(q2-z2)
[0048]
公式转化:
[0049]
展开如下:
[0050][0051]
从上述公式中可以看到,共有4个乘累加项。因为权重参数在训练后已知,量化参数也根据经验事先得到,而输入特征取决于输入图像,事先未知,则∑q2
·
z1和∑q2
·
z1可以通过离线计算完成,∑q1
×
q2和∑q1
×
z2需要加速器在线计算完成,其中第一项一般由加速器的乘累加模块完成,这也是加速器设计主要完成的任务;而第二项需要对输入特征进行累加,需要设计额外的计算单元来进行加速,给加速器设计带来负担。
[0052]
部分设计将特征和权重均采用int8对称量化,即z1和z2均为0,虽然简化了计算过程,但是当前比较流行的激活函数如relu、leaky-relu等会对负数的动态范围进行压缩,而正数保持不变,会导致特征的数值范围不以0点对称,如果继续做对称量化会带来精度损失,如图4所示。
[0053]
此外,权重kernel之间的动态范围存在很大差异,图5为resnet-18中首个卷积层中64个权重kernel的动态范围(已合并bn层,动态范围取最大绝对值),kernel之间动态范围最大相差11.5倍。如果对所有的权重kernel统一做量化,会导致动态范围较小的kernel产生很大的精度损失,如图5所示。
[0054]
由此,本发明提供针对网络加速的高效量化方法,通过对特征进行非对称量化,对
权重进行对称量化,可以避免∑q1
×
z2项的在线计算,同时避免激活函数之后特征的输出范围不以0对称造成的量化损失。同时针对权重不同kernel之间数值范围差异较大问题,对每个权重kernel独立进行量化,避免统一量化造成的精度损失。
[0055]
如图1所示,本发明第一方面提供的一种神经网络卷积层的高效量化加速方法,针对上述的量化方式,分别在乘累加计算后设置逐通道乘法计算和逐通道加法计算,包括:
[0056]
对输入特征和输出特征进行非对称量化,以确定放缩因子s1、s3和零点z1、z3的值;
[0057]
对每个权重进行独立量化,分别得到s2_k0、s2_k1、s2_k2

s2_ki

s2_kn-1,编号ki代表第i个权重,共n个权重对应n个输出通道;则计算公式可简化为:
[0058]
进行展开如下:
[0059][0060]
令:
[0061][0062][0063]
则公式进一步简化为:
[0064]
q3=m_ki∑(q1
×
q2_ki) b_ki;
[0065]
将输出特征的定点数计算转化为乘累加计算、逐通道乘法计算和逐通道加法计算三种运算。
[0066]
作为本发明的一个技术方案,对每个权重进行独立量化采用对称量化。
[0067]
如图2所示,本发明第二方面提供的一种硬件电路,包括乘法器阵列mac_array单元(mac array unit)、逐通道乘法计算单元(per channel mult unit)和逐通道加法计算单元(per channel add unit),三个单元为流水线操作,用于实现所述三种运算。
[0068]
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的仅为本发明的优选例,并不用来限制本发明,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献