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

技术编号:33711640 阅读:19 留言:0更新日期:2022-06-06 08:45
本发明专利技术涉及人工智能计算技术领域,具体涉及一种神经网络卷积层的高效量化加速方法及硬件电路,分别在乘累加计算后设置逐通道乘法计算和逐通道加法计算,包括对输入特征和输出特征进行非对称量化,以确定放缩因子s1、s3和零点z1、z3的值;对每个权重进行独立量化,分别得到s2_k0、s2_k1、s2_k2

【技术实现步骤摘要】
一种神经网络卷积层的高效量化加速方法及硬件电路


[0001]本专利技术涉及人工智能计算
,具体涉及一种神经网络卷积层的高效量化加速方法及硬件电路。

技术介绍

[0002]近年来,人工智能发展迅速,作为人工智能的重要组成部分,深度神经网络在各行业的应用也日益广泛。在边缘端进行网络模型部署的时候,由于边缘端计算性能和功耗的制约,限制了边缘端的网络模型推理性能。因此,在保证计算精度不大幅损失的前提下,设计低位宽、高效率的神经网络加速器成为行业研究的重点。
[0003]目前业界主流的加速器都在8

bit的量化位宽上进行推理,将权重和特征有32

bit浮点数压缩为8

bit,相比于fp32或int16可以带来成倍的算力提升并成倍减少访存带宽压力。
[0004]量化是浮点数据转为定点数据的过程,分非对称量化(uint8)和对称量化(int8)。

技术实现思路

[0005]本专利技术提供针对网络加速的高效量化方法,通过对特征进行非对称量化,对权重进行对称量化,可以避免∑q1
×
z2项的在线计算,同时避免激活函数之后特征的输出范围不以0对称造成的量化损失。同时针对权重不同kernel之间数值范围差异较大问题,对每个权重kernel独立进行量化,避免统一量化造成的精度损失。
[0006]本专利技术为解决上述
技术介绍
问题所采用的技术方案是:
[0007]本专利技术第一方面提供了一种神经网络卷积层的高效量化加速方法,包括计算原浮点数r、量化后定点数q、量化的放缩因子S以及零点z,所述零点z为原浮点数0对应的量化后的值,计算公式如下:
[0008]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倍。如果对所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种神经网络卷积层的高效量化加速方法,包括计算原浮点数r、量化后定点数q、量化的放缩因子S以及零点z,所述零点z为原浮点数0对应的量化后的值,计算公式如下:r=s(q

z);z);z);原浮点数据计算可表示为:r3=∑r1 x r2;其中,r1为输入特征浮点数,r2为权重浮点数,r3为输出特征浮点数,转化为定点运算公式如下:s3(q3

z3)=∑s1(q1

z1)
×
s2(q2

z2)公式转化:展开如下:其特征在于,分别在乘累加计算后设置逐通道乘法计算和逐通道加法计算,包括:对输入特征和输出特征进行非对称量化,以确定放缩因子s1、s3和零点z1、z3的值;对每...

【专利技术属性】
技术研发人员:蔡文利戴波孙皓
申请(专利权)人:北京宏景智驾科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1