一种用于训练的层归一化与Adam优化器的统一硬件架构

摘要: 本发明属于人工智能芯片的加速计算,尤其涉及一种用于训练的层归一化与adam优化器的统一硬件架构。背景技术:1、近年来,transformer模型凭借其优异的特征...
一种用于训练的层归一化与Adam优化器的统一硬件架构

本发明属于人工智能芯片的加速计算,尤其涉及一种用于训练的层归一化与adam优化器的统一硬件架构。

背景技术:

1、近年来,transformer模型凭借其优异的特征表示能力和强大的泛化性能,已经成为自然语言处理、计算机视觉以及多模态人工智能领域的主流网络架构。随着大语言模型和生成式人工智能技术的快速发展,越来越多的应用场景开始关注模型在终端设备或边缘设备上的部署与在线微调能力,以满足数据隐私保护、低通信延迟以及个性化模型适配等需求。

2、与推理过程相比,transformer训练过程不仅需要完成前向传播计算,还需要执行反向传播和参数优化更新,因此会产生更高的计算复杂度和存储开销。其中,层归一化和adamw优化器是保证transformer模型稳定训练和快速收敛的关键组成部分。层归一化用于消除不同特征维度之间的数据分布差异,提高网络训练稳定性;adamw优化器则通过自适应学习率机制实现模型参数更新,提高模型收敛速度和训练精度。

3、随着模型规模不断扩大,层归一化和adamw优化器所带来的硬件开销逐渐成为模型训练的重要瓶颈。一方面,两类运算均需要大量乘法、加法以及统计量计算;另一方面,其计算过程中还涉及平方根倒数、均值计算、方差计算以及仿射变换等复杂运算模块。这些运算不仅占用大量硬件资源,同时还会带来较高的数据访存开销和功耗消耗。因此,如何实现层归一化与adamw优化器的高效硬件加速,已经成为transformer训练加速领域的重要研究方向。

4、目前针对transformer训练加速的研究主要集中在矩阵乘法单元、注意力机制以及数据流优化等方面。在硬件实现过程中,层归一化和adamw优化器通常被设计为两个相互独立的功能模块。层归一化模块负责训练过程中的归一化计算,而adamw模块负责参数更新计算,两者分别配置各自的运算单元和控制逻辑。

5、深度神经网络模型的训练过程通常涉及大量的归一化和参数更新优化计算,这些非线性计算在部署到硬件实现时面临复杂度高、功耗开销大和延迟高等问题。目前,在transformer神经网络算法和硬件加速架构中,层归一化(layer normalization)和adamw优化器被广泛采用,但它们在硬件层面通常作为两个独立的模块实现。由于两者均包含统计量计算、平方根倒数计算以及仿射变换等类似运算,独立实现会造成大量硬件资源重复配置,降低资源利用率并增加芯片面积和功耗。

技术实现思路

1、发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种用于训练的层归一化与adam优化器的统一硬件架构,包括模式控制模块、状态值统计单元scu(statistics computation unit,scu)和仿射变换单元atu(affine transformationunit,atu);

2、所述模式控制模块用于产生模式控制信号,并根据当前训练任务对状态值统计单元scu和仿射变换单元atu内部的数据流路径进行配置;

3、所述状态值统计单元scu位于数据流前端,负责完成训练过程中统计量的计算;所述仿射变换单元atu位于数据流后端,负责完成仿射变换运算;

4、所述状态值统计单元scu和仿射变换单元atu之间通过中间结果寄存器进行连接,所述中间结果寄存器用于暂存状态值统计单元scu计算得到的中间变量,并将所述中间变量传输至仿射变换单元atu,从而形成统一的数据处理通路。

5、所述状态值统计单元scu包括第一加法器a1、第二加法器a2、第三加法器a3、第一乘法器m1、第二乘法器m2、第三乘法器m3和第四乘法器m4;

6、所述第一加法器a1、第二加法器a2、第三加法器a3用于统计量的加法或者累加计算;

7、所述第一乘法器m1、第二乘法器m2、第三乘法器m3和第四乘法器m4用于完成平方计算、梯度乘积计算以及矩估计更新计算;

8、所述状态值统计单元scu最终输出统计结果至平方根倒数计算模块,生成归一化因子或自适应缩放因子。

9、所述平方根倒数计算模块用于完成训练过程中所需的非线性运算;在层归一化前向传播阶段,所述平方根倒数计算模块根据输入特征的方差计算归一化因子;在adamw参数更新阶段,所述平方根倒数计算模块用于生成参数更新所需的自适应步长系数。

10、所述仿射变换单元atu包括第四加法器a4、第五加法器a5、第五乘法器m5、第六乘法器m6;

11、所述仿射变换单元atu根据模式控制模块产生的模式控制信号,对输入数据进行不同形式的仿射变换;当统一硬件架构执行层归一化前向传播时,所述仿射变换单元atu完成输入特征的归一化缩放和偏移补偿;当统一硬件架构执行层归一化反向传播时,所述仿射变换单元atu根据统计量完成梯度修正和输入梯度恢复;当统一硬件架构执行adamw参数更新时,所述仿射变换单元atu进一步完成参数衰减、梯度缩放和权重更新操作。

12、当统一硬件架构执行层归一化前向传播任务时,输入特征首先进入状态值统计单元scu,状态值统计单元scu对输入数据进行统计分析,获得归一化过程所需的统计参数,随后,统计结果被发送至仿射变换单元atu;

13、层归一化均值统计、方差统计公式如下:

14、,

15、其中,m表示参与层归一化计算的特征维度数量,表示第i个输入特征,表示输入特征的均值,表示输入特征的方差;

16、引入常数,令归一化因子,第i个归一化特征计算公式如下:

17、,

18、最后,仿射变换单元atu根据统计计算结果对输入特征进行标准化处理,并结合训练过程中学习得到的缩放参数和偏移参数完成仿射变换操作,最终输出归一化后的特征结果:

19、,

20、其中,表示第i个层归一化输出特征,表示第i个可训练缩放参数,表示第i个归一化特征,表示第i个可训练偏移参数;

21、具体硬件实现过程包括:

22、步骤a1,输入特征数据首先进入状态值统计单元scu;

23、步骤a2,第二加法器a2输出的累加结果送入第二乘法器m2,与常数因子1/m相乘,得到输入特征的均值;同时,均值结果送入第一乘法器m1进行平方运算,得到均值平方;

24、步骤a3,输入特征数据同时进入第三乘法器m3完成平方计算,得到,所有平方结果通过第三加法器a3进行累加,并送入第四乘法器m4与常数因子1/m相乘,从而得到平方均值;

25、步骤a4,均值平方与平方均值被送入第一加法器a1进行组合运算,生成输入特征的方差;

26、步骤a5,计算得到的方差结果输入平方根倒数计算模块,生成归一化因子,归一化因子作为后续仿射变换单元atu的输入,用于完成输入特征的标准化处理;

27、步骤a6,在仿射变换单元atu中,输入特征数据首先进入第四加法器a4,与均值进行组合运算,实现输入特征的中心化处理;

28、步骤a7,中心化后的结果送入第五乘法器m5,与归一化因子相乘,得到归一化特征;

29、步骤a8,归一化特征进一步送入第六乘法器m6,与可训练缩放参数相乘,实现特征缩放;

30、步骤a9,缩放结果输入第五加法器a5,并与可训练偏移参数进行加法运算,最终得到层归一化前向传播输出结果;

31、步骤a10,在整个计算过程中,状态值统计单元scu负责均值、平方均值和方差等统计量的生成,仿射变换单元atu负责完成标准化处理和仿射变换,从而实现层归一化前向传播计算。

32、当统一硬件架构工作于层归一化反向传播模式时,状态值统计单元scu对反向传播过程中的梯度信息进行统计计算,提取梯度传播所需的全局参数;随后仿射变换单元atu利用统计结果对输入梯度进行组合运算,生成最终的反向传播结果;

33、层归一化的反向传播需要根据损失函数l对输出y的梯度计算对输入的梯度,具体包括:

34、步骤1,计算对归一化特征的梯度:

35、,

36、其中表示偏微分;

37、步骤2,计算对方差的梯度和对均值的梯度:

38、,

39、,

40、其中,表示第j个归一化特征,表示第j个中间参数;

41、步骤3,合成对输入的最终梯度:

42、,

43、,

44、,

45、其中,表示第j个层归一化输出特征;

46、具体硬件实现过程包括:

47、步骤b1,反向传播阶段输入梯度首先进入状态值统计单元scu;状态值统计单元scu利用两条并行数据通路分别计算梯度传播过程中所需的统计量和;

48、步骤b2,输入梯度首先进入第一乘法器m1,并与可训练参数相乘,生成中间结果;

49、步骤b3,中间结果经第二加法器a2进行累加运算,实现所有特征维度结果的求和,累加结果进一步送入第二乘法器m2,并与常数因子1/m相乘,从而得到统计量;

50、步骤b4,输入梯度同时进入第三乘法器m3,并与中间变量相乘,生成统计量计算所需的乘积结果;

51、步骤b5,第三乘法器m3的输出结果经第三加法器a3进行累加运算,实现所有特征维度结果的求和,随后累加结果送入第四乘法器m4,并与常数因子1/m相乘,从而得到统计量;

52、步骤b6,状态值统计单元scu完成统计量和的计算后,将计算结果发送至仿射变换单元atu,同时归一化因子由前向传播阶段保存,并输入仿射变换单元atu;

53、步骤b7,在仿射变换单元atu中,中间结果首先进入第四加法器a4,并与统计量进行组合运算,实现梯度均值项的消除;

54、步骤b8,统计量输入第六乘法器m6,并与归一化特征相乘,生成反向传播中的梯度修正项;

55、步骤b9,第四加法器a4输出的梯度中间结果和第六乘法器m6输出的梯度修正项共同输入第五加法器a5,由第五加法器a5完成两部分结果的组合运算,得到缩放前的输入梯度中间结果;

56、步骤b10,第五加法器a5的输出结果进一步送入第五乘法器m5,并与归一化因子相乘,最终得到层归一化反向传播输出梯度;

57、步骤b11,在整个计算过程中,状态值统计单元scu负责生成反向传播所需的统计量和,仿射变换单元atu负责完成梯度修正和缩放计算。

58、当统一硬件架构执行adamw参数更新任务时,输入数据包括当前梯度信息和历史优化状态信息;状态值统计单元scu首先完成梯度统计和历史状态更新,并生成后续参数更新所需的中间结果;在获得统计结果后,仿射变换单元atu执行参数缩放、权重衰减以及参数修正操作,从而得到新的模型参数;

59、在第t次迭代时,已知相对于参数的梯度,矩估计量和的更新公式如下:

60、,

61、,

62、其中与为固定衰减系数,为第t次迭代时的一阶矩估计量,为第t次迭代时的二阶矩估计量;

63、修正后的估计值计算公式为

64、;

65、其中,为偏置修正后的一阶矩估计量,为偏置修正后的二阶矩估计量,表示固定衰减系数在第t次迭代时的t次幂,表示固定衰减系数在第t次迭代时的t次幂;

66、adamw算法将权重衰减与基于梯度的参数更新分离开,直接对参数施加比例惩罚:

67、,

68、其中为权重衰减系数;、为训练过程中预先设定的固定超参数;

69、具体硬件实现过程包括:

70、步骤c1,当前训练梯度进入状态值统计单元scu;

71、步骤c2,梯度项与历史一阶矩状态值共同输入第二加法器a2,由第二加法器a2完成加法运算,生成当前时刻的一阶矩估计值;

72、步骤c3,一阶矩估计值进一步输入第二乘法器m2,并与偏置修正系数相乘,从而得到偏置修正后的一阶矩结果;

73、步骤c4,梯度项与当前梯度共同输入第三乘法器m3,生成梯度平方项;

74、步骤c5,梯度平方项与历史二阶矩状态值共同输入第三加法器a3,由第三加法器a3完成加法运算,得到当前时刻的二阶矩估计值;

75、步骤c6,二阶矩估计值输入第四乘法器m4,并与偏置修正系数相乘,从而得到偏置修正后的二阶矩结果;

76、步骤c7,权重参数同时进入第一乘法器m1,并与权重衰减系数相乘,第一乘法器m1输出结果与原始权重参数共同输入第一加法器a1,生成权重衰减后的参数;

77、步骤c8,偏置修正后的二阶矩结果输入平方根倒数计算模块,生成自适应缩放因子;

78、步骤c9,在仿射变换单元atu中,偏置修正后的一阶矩结果与常数0输入第四加法器a4,第四加法器a4输出参数更新所需的梯度项;

79、步骤c10,第四加法器a4的输出结果输入第五乘法器m5,并与自适应缩放因子相乘,得到归一化后的梯度更新量;

80、步骤c11,归一化梯度更新量进一步输入第六乘法器m6,并与学习率相乘,得到最终参数修正量;

81、步骤c12,第六乘法器m6输出的参数修正量与权重衰减后的参数共同输入第五加法器a5,由第五加法器a5完成参数更新运算,最终得到更新后的模型参数;

82、步骤c13,在整个计算过程中,状态值统计单元scu负责完成一阶矩、二阶矩以及权重衰减相关状态值的生成,仿射变换单元atu负责完成梯度缩放和参数更新操作。

83、设计动态复用机制,通过模式控制模块产生模式控制信号,对状态值统计单元scu和仿射变换单元atu内部的数据流路径进行动态配置,具体包括:

84、(1)当控制信号ln_or_adamw为0、fp_or_bp为0时,执行层归一化前向传播任务;

85、(2)当控制信号ln_or_adamw为0、fp_or_bp为1时,执行层归一化反向传播任务;

86、(3)当控制信号ln_or_adamw为1时,执行adamw参数更新任务。

87、其中ln_or_adamw为层归一化与adamw任务选择信号,ln_or_adamw为0时表示当前模式为层归一化,为1时表示当前任务为adamw参数更新;fp_or_bp为层归一化前向传播与反向传播任务选择信号,fp_or_bp只有在层归一化与adamw任务选择信号ln_or_adamw为0时才生效,fp_or_bp为0时表示当前任务为层归一化前向传播,fp_or_bp为1时表示当前任务为层归一化反向传播。

88、本发明还提供了一种深度神经网络,包括归一化层,所述归一化层采用所述的用于训练的层归一化与adam优化器的统一硬件架构。

89、本发明还提供了一种用于所述深度神经网络的训练方法,包括:当统一硬件架构执行层归一化前向传播任务时,输入特征首先进入状态值统计单元scu,状态值统计单元scu对输入数据进行统计分析,获得归一化过程所需的统计参数,随后,统计结果被发送至仿射变换单元atu;

90、当统一硬件架构工作于层归一化反向传播模式时,状态值统计单元scu对反向传播过程中的梯度信息进行统计计算,提取梯度传播所需的全局参数;随后仿射变换单元atu利用统计结果对输入梯度进行组合运算,生成最终的反向传播结果;

91、当统一硬件架构执行adamw参数更新任务时,输入数据包括当前梯度信息和历史优化状态信息;状态值统计单元scu首先完成梯度统计和历史状态更新,并生成后续参数更新所需的中间结果;在获得统计结果后,仿射变换单元atu执行参数缩放、权重衰减以及参数修正操作,从而得到新的模型参数。

92、本发明从算法和硬件协同优化的角度出发,对层归一化前向传播、层归一化反向传播以及adamw参数更新过程进行统一分析,发现三者在统计量计算、平方根倒数计算以及仿射变换等方面具有高度一致的计算特征。

93、基于这种计算共性,本发明提出了一种用于训练的层归一化与adam优化器的统一硬件架构,通过构建状态值统计单元scu和仿射变换单元atu,实现层归一化与adamw之间的动态资源共享和时分复用。与现有技术相比,本发明能够在保证训练精度的前提下显著降低硬件资源消耗、芯片面积以及功耗,提高硬件利用率和训练效率,更适用于边缘侧transformer训练与微调场景。

94、有益效果:本发明通过对归一化计算和优化器参数更新过程中的共性运算进行统一设计,使不同训练阶段能够复用同一套计算资源,减少了独立硬件模块带来的重复配置。

95、本发明通过模式控制和数据通路配置实现不同训练任务之间的动态切换,使同一硬件架构能够适配多种训练计算流程,提高了硬件资源利用率和任务执行效率。

96、本发明通过对中间变量进行统一暂存和传输,减少了不同功能模块之间的数据搬移和重复访存,有利于降低硬件实现中的存储开销和功耗开销。

97、本发明能够在保证训练计算功能完整性的基础上,降低逻辑资源占用、硬件面积和功耗,提高训练加速架构的整体能效。

98、本发明适用于包含归一化计算和自适应优化器更新过程的深度神经网络训练场景,具有较好的通用性和可扩展性。