一种用于神经网络推理加速的低功耗浮点乘累加运算方法技术

技术编号:35686180 阅读:14 留言:0更新日期:2022-11-23 14:31
本公开揭示了一种用于神经网络推理加速的低功耗浮点乘累加运算方法,通过对输入的浮点数进行预处理,在计算前对小数部分进行舍入并调整其指数位,对可能会被舍入的数据进行预先的舍入和规整,省去对不必要精度的计算。同时,为了累加电路能够快速执行,采用科学技术法表示的指数的小数部分放弃原有的原码表示方法,转而采用补码表示方法。本公开利用乘累加运算的特点,使用消耗资源较少的定点运算资源实现接近浮点运算的精度,从而解决了神经网络推理过程中计算精度与硬件实现复杂度的平衡问题。衡问题。衡问题。

【技术实现步骤摘要】
一种用于神经网络推理加速的低功耗浮点乘累加运算方法


[0001]本公开属于处理器和计算
,特别涉及一种用于神经网络推理加速的低功耗浮点乘累加运算方法。

技术介绍

[0002]随着人工智能算法的突破,以深度卷积神经网络为代表的推理算法广泛应用于各行各业。然而深度卷积神经网络对算力的需求极高,传统的CPU无法提供足够的算力;GPU虽然能够提供足够的算力,但性能功耗比太低,并不是移动端设备的最佳选择。
[0003]学术界和工业界提出了大量专用的神经网络加速器NPU来解决上述问题。深度卷积神经网络对数据精度不敏感,在良好的量化算法支持下,采用定点运算可以在数据动态范围不大的情况下实现接近浮点的精度。NPU设计按照运算数据精度可以划分为2种类型:一种是处理浮点数据的神经网络加速器,以英伟达公司的移动端GPU为代表,虽然其网络部署方便,但是功耗指标不理想;另一种是处理定点数据的神经网络加速器,由于采用定点运算代替复杂的浮点运算,其性能功耗比非常高,但是网络部署时必须经过专门的量化过程,且精度和动态范围受限。
[0004]因此,如何平衡神经网络加速器采用浮点运算的精度优势与采用定点运算的能量优势,是一个亟待解决的关键问题。

技术实现思路

[0005]鉴于此,本公开提供了一种用于神经网络推理加速的低功耗浮点乘累加运算方法,其特征在于:
[0006]通过对输入的浮点数进行预处理,在计算前对小数部分进行舍入并调整其指数位,对可能会被舍入的数据进行预先的舍入和规整,省去对不必要精度的计算。同时,为了累加电路能够快速执行,采用科学技术法表示的指数的小数部分放弃原有的原码表示方法,转而采用补码表示方法。
[0007]优选的,
[0008]所述方法的方案1具体为:
[0009]对于A组数据的指数位序列(n0,n1,...n7),取其中的最大值N=max(n0,n1,...n7),为A组数据的统一指数位。近似后的A组数据用表示,中的每个数据为:
[0010][0011]其中α
i
是根据统一的指数位N,将a
i
向右移位得到的。针对每个a
i
,需要右移的位数为η
i
,而η
i
=N

n
i

[0012]在较为极端的情况下,当η
i
≥8时,α
i
会因为移位变为0;
[0013]对于每个a
i
,都有η
i
位的数据被直接舍弃;
[0014]同理,对数组W也做相同处理,近似后的数组为同理,对数组W也做相同处理,近似后的数组为中的每个数据为:
[0015][0016]其中M=max(m0,m1,...m7),ω
i
是根据M将w
i
向右移μ
i
位得到的,其中,μ
i
=M

m
i

[0017]在转换后,α
i
和ω
i
均为8bit整型数据,可以送入MAC阵列进行计算;
[0018]设定点乘法部分得到的结果为
[0019][0020]对于该公式中的i=1,2...7的8项求和,由于是定点加法,故使用华莱士树加法器和一个定点加法器得到;
[0021]最后,将小数部分的计算和指数部分的运算处理结合:
[0022]设定点乘法输出序列为数组则数组中每个数为:
[0023][0024]由于得到的数组的指数统一,故可以直接使用定点加法器进行加和。设得到的结果为于是有:
[0025][0026]所述方法仅在一组乘加操作的最后才进行归一化运算,乘法部分和加法部分都可以节省很多资源;
[0027]所述方法对数据进行了预处理,在两个需要乘积的数组进入乘法阵列前,就确定了各自组的指数。
[0028]优选的,
[0029]如果等两个数组进入乘法阵列后,即在同时得到两组数据的指数位信息后,再来共同确定计算结果的指数,这样就可以提高计算结果的精度,具体为:
[0030]将两数组对应乘积数的指数先相加,找出其中的最大值:
[0031]N=max(N
i
)=max(n
i
+m
i
)
[0032]设N
i
中的最大值为N,N就是最后乘积结果的指数;根据调整后的指数移位时,只对W组的小数w
i
进行移位,A组数保持不变;设w
i
需要向左移动的位数为μ
i
,则:
[0033]μ
i
=N

n
i

m
i
[0034]μ
i
得到后,其余后续的操作和上述方案1相同;
[0035]相比权利要求2,最终得到的近似结果为:
[0036][0037]由此,本公开实现了一种用于神经网络推理加速的低功耗浮点乘累加运算方法,以及一种应用于端侧神经网络推理加速器的矩阵乘累加运算电路。本公开利用乘累加运算的特点,使用消耗资源较少的定点运算资源实现接近浮点运算的精度,从而解决了神经网络推理过程中计算精度与硬件实现复杂度的平衡问题。
附图说明
[0038]图1是现有技术中浮点数的数据构成的示意图;
[0039]图2是现有技术中,使用标准浮点乘法器计算的示意图;
[0040]图3是现有技术中,标准浮点加法器的示意图;
[0041]图3A是根据现有技术中的方法所实现的一种电路的示意图;
[0042]图4是本公开一个实施例中,应用的华莱士数加法器示意图;
[0043]图5是本公开一个实施例中,方案一的计算流程示意图;
[0044]图6是本公开一个实施例中,方案二的计算流程示意图;
[0045]图7是本公开一个实施例中,方案一在定点MAC阵列中的应用示意图;
[0046]图8是本公开一个实施例中,方案二在MAC阵列中的应用示意图。
具体实施方式
[0047]为使本公开实施方式的目的、技术方案和优点更加清楚,下面将结合本公开实施方式对本公开实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
[0048]因此,以下对在附图中提供的本公开的实施方式的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施方式。基于本公开中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
[0049]应注意到:相似的标号和字母在下面的附图中表示类本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于神经网络推理加速的低功耗浮点乘累加运算方法,其特征在于:通过对输入的浮点数进行预处理,在计算前对小数部分进行舍入并调整其指数位,对可能会被舍入的数据进行预先的舍入和规整,省去对不必要精度的计算;同时,为了累加电路能够快速执行,采用科学技术法表示的指数的小数部分放弃原有的原码表示方法,转而采用补码表示方法。2.根据权利要求1所述的方法,其中,优选的,所述方法的方案1具体为:对于A组数据的指数位序列(n0,n1,...n7),取其中的最大值N=max(n0,n1,...n7),为A组数据的统一指数位,近似后的A组数据用表示,中的每个数据为:其中α
i
是根据统一的指数位N,将a
i
向右移位得到的,针对每个a
i
,需要右移的位数为η
i
,而η
i
=N

n
i
;在较为极端的情况下,当η
i
≥8时,α
i
会因为移位变为0;对于每个a
i
,都有η
i
位的数据被直接舍弃;同理,对数组W也做相同处理,近似后的数组为中的每个数据为:其中M=max(m0,m1,

m7),ω
i
是根据M将w
i
向右移μ
i
位得到的,其中,μ
i
=M

m
i
;在转换后,α
i
和ω<...

【专利技术属性】
技术研发人员:赵文哲胡康张景铭付格林夏天任鹏举
申请(专利权)人:西安交通大学
类型:发明
国别省市:

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

1