实现softmax函数计算的硬件系统及方法技术方案

技术编号:38431359 阅读:33 留言:0更新日期:2023-08-11 14:18
本发明专利技术提供一种实现softmax函数计算的硬件系统及方法,涉及神经网络的硬件加速领域。本发明专利技术对softmax函数计算进行优化,通过稀疏化的方式只选择输出有效位值进行指数计算和存储以降低计算冗余和存储需求,并且采用动态移位更新最大值的方式将最大值求取隐藏在流水线中,提高了计算效率。并且,本发明专利技术针对其中复杂的指数及除法运算,确定了不同softmax精度需求的指数及除法单元精度选择的方案,改进了分段线性拟合算法,适用性强,可实现通用非线性函数如指数、除法及s型函数等的运算,操作简单,面积小,功耗低,有很大的实用价值。有很大的实用价值。有很大的实用价值。

【技术实现步骤摘要】
实现softmax函数计算的硬件系统及方法


[0001]本专利技术涉及神经网络的硬件加速领域,尤其涉及一种实现softmax函数计算的硬件系统及方法。

技术介绍

[0002]Softmax是一种归一化的指数函数,能够将线性预测值转换为类别概率,在深度学习中有着非常广泛的使用,现有的深度学习硬件体系结构大多根据CNN\LSTM\MLPS等的特点设计,很大程度上忽略了softmax操作,这是因为softmax通常值用作这些网络中的最后一层,只代表了小部分计算时间和资源占用。但对于transformer等网络不再适用,它使用softmax作为注意力机制的关键组件,对于这些网络,softmax可能成为一个重要瓶颈。
[0003]softmax包含复杂的指数与除法运算,会消耗大量的运算资源和周期,给硬件实现带来困难。目前许多设计重点也是优化查找表法、分段拟合法、旋转坐标系法、神经网络拟合等方法以提供指数及除法单元的高效率实现。但这些设计存在问题,首先不同任务所需的计算精度不同,但缺乏对关键单元如指数单元及除法单元精度选择的方案;其次,由于分类输出本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种实现softmax函数计算的方法,其特征在于,包括:步骤S1,根据指数单元和除法单元的实现精度,确定硬件系统的结构,其中,所述硬件系统包括输入数据处理单元、指数单元、最大值更新单元、移位累加单元、中间结果存储单元、最高非零位检测单元和除法单元;步骤S2,将量化后的输入数据x
i
输入所述输入数据处理单元与常数log2e相乘,将计算得到的小数部分v
i
与整数部分u
i
分别输入所述指数单元和所述最大值更新单元;步骤S3,所述指数单元将所述小数部分v
i
作为以2为底的指数,得到指数结果2
vi
,所述最大值更新单元对所述整数部分u
i
进行筛选,得到有效整数数据及其索引;步骤S4,所述移位累加单元根据所述有效整数数据对所述指数结果2
vi
进行移位,得到自然指数计算结果e
xi
;步骤S5,根据所述有效整数数据的索引将所述指数结果2
vi
存储至所述中间结果存储单元;步骤S6,所述移位累加单元根据所述有效整数数据的索引将所述自然指数计算结果e
xi
进行累加,得到第一累加和;步骤S7,所述最高非零位检测单元将所述第一累加和转换为包含参数f和参数Q的f
×2Q
形式,其中,1≤f<2;步骤S8,将所述参数f输入所述除法单元,计算所述参数f的倒数1/f;步骤S9,将所述有效整数数据与所述参数Q相减,利用相减结果对所述倒数1/f进行移位,得到softmax函数值。2.根据权利要求1所述的方法,其特征在于,所述步骤S1包括:通过python模拟不同精度需求下softmax函数计算过程中指数单元和除法单元的精度选择方案,确定所述硬件系统的结构。3.根据权利要求1所述的方法,其特征在于,在步骤S2中,所述小数部分v
i
与整数部分u
i
按照以下操作计算得到:将输入数据x
i
与常数log2e相乘,得到乘积结果;对输入数据x
i
的符号位进行判断,若输入数据x
i
为正数,则根据位宽对所述乘积结果取整,得到所述整数部分u
i
,基于所述乘积结果与所述整数部分u
i
的差值,得到所述小数部分v
i
;否则,对所述乘积结果取整后加1,得到所述整数部分u
i
,基于所述乘积结果与所述整数部分u
i
的差值,将所述差值取反后加1,得到所述小数部分v
i
。4.根据权利要求1所述的方法,其特征在于,在步骤S3,所述最大值更新单元对所述整数部分u
i
进行筛选,得到有效整数数据及其索引,包括:基于所述整数部分u
i
,按照以下公式计算得到全局最大值MAX、局部最大值m
i
、所述局部最大值与所述整数部分的差值ΔMAXu
i
、以及所述局部最大值的前后差值Δmax
i
;MAX=max(u
i
),i=0,1,

,N

1m
i
=max(u1,u2,

,u
i
)ΔMAXu
i
=m
i

u
i
Δmax
i
=m
i

m
i
‑1其中,N为所述整数部分u
i
的数量;在所述局部最大值m
i
与所述整数部分u
i
的差值ΔMAXu
i
大于预设阈值的情况下,从所述
整数部分u
i
筛选出有效整数数据及其索引。5.根据权利要求4所述的方法,其特征在于,在步骤S3,所述最大值更新单元对所述整数部分u
i
进行筛选,得到有效整数数据及其索引,还包括:将所述局部最大值m
i
的前后差值Δmax
i
进行累加,得到第二累加和;在所述局部最大值m
i
与所述整数部分u
i
的差值ΔMAXu
i
大于第一预设阈值且所述第二累加和大于第二预设阈值的情况下,从所述整数部分u
i
筛选出有效整数数据及其索引。6.根据权利要求1所述的方法,其特征在于,在步骤S3,所述指数单元采用分段线性拟合算法计算所述小数部分v
i
对应的指数结果2
vi
,其中,所述分段线性拟合算法包括:步骤S3A,将所述小数部分v
i
离散化为多个离散点x
iw
,以模拟所述硬件系统实现的量化误差,其中,所述多个离散点x
iw
表示为;式中,iw为小数部分v
i
的位数;N,M分别为多个离散点中的起始点和终止点,离散点的数量NUM=(N

M)/(2
iw
)+1;步骤S3B,使用多个初始线性段函数f0(x)=kx+b对所述多个离散点进行拟合,得到每个初始线性段所属区间的斜率k、截距b和分段端点;步骤S3C,引入与位宽相关的斜率控制因子kw和截距控制因子bw,按照以下公式分别对所述每个初始线性段所属区间的斜率k和截距b进行修正,得到多个修正后的线性段函数f1(x)=k
kw
·
x
iw
+b
bw
;式中,k
kw
为修正后的拟合斜率;b
bw
为修正后的拟合截距;round(.)是按指定位数进行四舍五入的函数;步骤S3D,使用多个修正后的线性段函数f1(x)=k
kw
·
x
iw
+b
bw
来近似目标函数y,指定搜索区间,在所述搜索区间内计算每个修正后的线性段函数与所述目标函数的误差,当一个修正后的线性段函数与所述目标函数的误差小于预设的最大绝对误差MAE时,保留该线性段函数的拟合斜率k
kw
,将该线性段更新为过上限斜率与下限斜率k的交点且拟合斜率为k

【专利技术属性】
技术研发人员:刘海莹陈刚毛文宇申荣铉鲁华祥
申请(专利权)人:中国科学院半导体研究所
类型:发明
国别省市:

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

1