System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于分布式计算脉动阵列的轻量化LSTM硬件加速器及加速方法技术_技高网

基于分布式计算脉动阵列的轻量化LSTM硬件加速器及加速方法技术

技术编号:43229311 阅读:0 留言:0更新日期:2024-11-05 17:18
本发明专利技术涉及一种基于分布式计算脉动阵列的轻量化LSTM硬件加速器及加速方法,属于循环神经网络加速器领域。该加速器包括控制模块、重构模块、激活模块和多个脉动阵列,控制模块负责全局调配,尤其是实现在脉动阵列中将权重数据与输入数据耦合相乘;重构模块通过将输入的单个数据缓存并维度重构,使其符合脉动阵列的输入维度;脉动阵列负责实现4个门和全连接层的运算,其中通过脉动的方式传递并计算数据,以减少计算单元的空置率并提高计算效率;本发明专利技术在对LSTM网络进行训练时,采用分层分模块轻量化重训练,在使权重参数规模减少的同时保持准确率,本发明专利技术提出的LSTM加速器相对于通用处理器具有高能效、高算力的特点。

【技术实现步骤摘要】

本专利技术属于循环神经网络加速器领域,涉及一种基于分布式计算脉动阵列的轻量化lstm硬件加速器及加速方法。


技术介绍

1、近年来,循环神经网络(recurrentneuralnetwork,rnn)因其优异的性能在自然语言处理、语音转换为文本和视频分析处理等应用场景中取得了显著成功。但由于rnn本身的结构特点,在进行大模型训练中存在长程依赖问题,导致难以处理长序列任务。长短时记忆(long short-termmemory,lstm)神经网络作为rnn最流行的变体之一,通过引入门控机制来控制信息的积累速度,能处理更加复杂的长序列任务场景,但同时也带了更大的计算量,所以如何对lstm进行硬件加速引起了众多学者的研究。

2、lstm在边缘端的应用场景通常对硬件的计算速度和功耗有着较高的要求。中央处理器(centralprocessingunit,cpu)作为指令流处理器,并行计算效率低,而图形处理器(graphics processingunit,gpu)的运行功耗较高,两者均难以满足边缘应用场景的要求。现场可编程门阵列(fieldprogrammablegatearray,fpga)由于其可编程、低功耗等特点,在lstm硬件加速领域得到了人们的广泛关注。

3、目前基于fpga的lstm加速器研究可以分为两个方向。一是利用lstm模型的数据稀疏性,通过算法减少其权重参数,以降低模型的计算量和功耗。但是,这种方法引入了剪枝等新的操作,势必导致电路的运行时间增加,尤其是在模型规模庞大时,增加的时间甚至可能超过计算本身所需的时间,因此,这种方法主要适用于小规模模型。另一研究方向是针对lstm模型的计算特性,设计特殊计算架构以提高加速器的计算效率。有研究者使用列式矩阵向量乘法代替行式操作,消除了rnn推理时的数据依赖,从而提高系统的吞吐量,但是在将行式操作映射到列式矩阵操作的过程中高度依赖于详细的层形状,这使得当需要计算的数据量过大的时候将耗费过多的数据排列时间;也有研究者提出了一种利用收缩阵列结构和并行数据处理单元加速矩阵向量乘法的硬件架构,采用分裂矩阵方法,将较大的矩阵分解为较小的矩阵,从而降低了并行计算的硬件复杂度,但是在对数据进行并行处理时,需要考虑数据缓存占用,当模型数据过大时,这将对硬件资源有更大的要求。


技术实现思路

1、有鉴于此,为了避免在利用数据稀疏性减少数据量所带来的索引延迟问题,同时也为了减轻矩阵式计算架构中存在的数据缓存压力,本专利技术的目的在于提供一种基于分布式计算脉动阵列的轻量化lstm硬件加速器及加速方法,该加速器包括控制模块、重构模块、激活模块和多个脉动阵列,控制模块负责全局调配,尤其是实现在脉动阵列中将权重数据与输入数据耦合相乘;重构模块通过将输入的单个数据缓存并维度重构,使其符合脉动阵列的输入维度;脉动阵列负责实现4个门和全连接层的运算,其中通过脉动的方式传递并计算数据,以减少计算单元的空置率并提高计算效率。

2、为达到上述目的,本专利技术提供如下技术方案:

3、一种基于分布式计算脉动阵列的轻量化lstm硬件加速器,包括控制模块、重构模块、激活模块和多个脉动阵列;所述控制模块,主体由状态机构成,控制加速器的运行状态转换,以及实时调配数据的输入与输出;所述重构模块,主体由寄存器构成,实现将输入的单个数据缓存并进行维度重构,使其符合脉动阵列的输入数据维度再进行输出;所述激活模块,通过分段线性拟合的方式实现sigmoid函数和tanh函数,通过数据类比的方式实现softmax函数;所述脉动阵列,主体由多个计算单元pe组成,通过脉动的方式传递并计算数据,以减少计算单元的空置率并提高计算效率。

4、所述控制模块,包括以下状态:状态s0:初始状态,此状态只有在系统清零复位信号后才会出现,用于系统清零并拉高w_en一个周期,跳转至状态s1;状态s1:基于w_en信号控制外部dram输入权重参数,并且在存满后拉高in_en一个周期,跳转至状态s2;状态s2:基于in_en信号,控制外部dram输入一个时间步的数据x,输入完成后跳转至状态s3;状态s3:对一个时间步的数据x进行lstm层计算,在计算完成后回到状态s2,等待下一个时间步的计算,直到所有时间步计算完成后,跳转至状态s4;状态s4:接收来自lstm计算的结果,进行fc层计算,计算完成后跳转至状态s5;状态s5:接收来自fc计算的结果,进行softmax激活,输出分类结果及概率的同时,条状至状态s2,开始接收下一次的输入数据x。

5、进一步,所述状态s3:具体状态为:状态d0:接收到1个时间步的数据x,跳转至状态d1;状态d1:基于脉动阵列,并行计算lstm中4个门,计算完成后跳转至状态d2;状态d2:接收4个门计算结果,对输入门、遗忘门和输出门的计算结果进行sigmoid激活,对更新门的计算结果进行tanh激活,在激活完成后将更新门与输入门的激活结果进行乘加生成ct并跳转到状态d3进行缓存,在计算完所有时间步跳转至状态d4输出ht。

6、所述重构模块包括对输入数据x的重构和对lstm计算输出的短期记忆h的重构,具体为:每周期输入1个数据,共输入n次,将x*y的二维矩阵寄存器按行方向存入,在输入结束后,按列方向每周期输出x个数据,共输出y个周期,全部输出完,实现对单个数据维度重构为列向量数据以匹配脉动阵列的输入维度。

7、所述激活模块包括sigmoid激活函数、tanh激活函数和softmax激活函数,具体实现过程为:sigmoid激活函数和tanh激活函数均采用分段线性拟合的方式,并且斜率k设定为2的负次幂,在计算中以移位方式实现,减少乘法器的使用;softmax函数中使用x的平方代替e的x次幂计算,并设计定点除法器,实现概率的输出。

8、所述脉动阵列包括:x*y个pe单元组成的pe阵列、计算y列的加法数模块和分布式存储模块,其中输入数据x/y提前存入到每一个相对应pe单元中,计算开始后分布式存储模块wh0-wh(y-1)中wx/y按顺序输入到pe单元中与输入数据x/y进行耦合相乘,同时固定输入数据x/y的基础上滚动权重参数wx/y,并将输出脉动的传递到下一级的pe单元中,最后输送到加法树模块,以流水线相加的方式输出脉动阵列的计算结果。

9、进一步,所述pe单元包括控制模块、reg寄存器和裁切部分,具体计算为:控制模块通过输出x_en控制,接收输入数据x并存储在reg寄存器中,通过输出ma_en控制,接收累加数据d和权重参数w,一个周期进行乘累加操作x×d+w,并在下一周期输出乘累加结果,其中x、d均是16bit数据,在计算过程是补码表示的定点数,1bit符号位,4bit整数位以及11bit的小数位;而w是8bit数据,1bit符号位和7bit小数位,所以在送入下一个pe前需要对其末位补0至12bit数;而接收乘累加结果需要32bit位宽,为了控制运算过程的位宽统一,使用裁切模块裁切至16bit数。

10、进一步,所述脉动阵本文档来自技高网...

【技术保护点】

1.基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于:包括控制模块、重构模块、激活模块和多个脉动阵列;

2.根据权利要求1所述的基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于:所述控制模块包括以下状态:

3.根据权利要求2所述的基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于:所述状态S3:具体状态为:

4.根据权利要求1所述的基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于:所述重构模块包括对输入数据x的重构和对LSTM计算输出的短期记忆h的重构,具体为:每周期输入1个数据,共输入N次,将X*Y的二维矩阵寄存器按行方向存入,在输入结束后,按列方向每周期输出X个数据,共输出Y个周期,全部输出完,实现对单个数据维度重构为列向量数据以匹配脉动阵列的输入维度。

5.根据权利要求1所述的基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于:所述激活模块包括Sigmoid激活函数、Tanh激活函数和Softmax激活函数,具体实现过程为:Sigmoid激活函数和Tanh激活函数均采用分段线性拟合的方式,并且斜率k设定为2的负次幂,在计算中以移位方式实现,减少乘法器的使用;Softmax函数中使用x的平方代替e的x次幂计算,并设计定点除法器,实现概率的输出。

6.根据权利要求1所述的基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于:所述脉动阵列包括:X*Y个PE单元组成的PE阵列阵列、计算Y列的加法数模块和分布式存储模块,其中输入数据x/y提前存入到每一个相对应PE单元中,计算开始后分布式存储模块WH0-WH(y-1)中Wx/y按顺序输入到PE单元中与输入数据x/y进行耦合相乘,同时固定输入数据x/y的基础上滚动权重参数Wx/y,并将输出脉动的传递到下一级的PE单元中,最后输送到加法树模块,以流水线相加的方式输出脉动阵列的计算结果。

7.根据权利要求6所述的基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于,所述PE单元包括控制模块、REG寄存器和裁切部分,具体计算为:控制模块通过输出x_en控制,接收输入数据X并存储在REG寄存器中,通过输出MA_en控制,接收累加数据D和权重参数W,一个周期进行乘累加操作X×D+W,并在下一周期输出乘累加结果,其中X、D均是16bit数据,在计算过程是补码表示的定点数,1bit符号位,4bit整数位以及11bit的小数位;W是8bit数据,1bit符号位和7bit小数位,在送入下一个PE前需要对其末位补0至12bit数;接收乘累加结果需要32bit位宽,为控制运算过程的位宽统一,使用裁切模块裁切至16bit数。

8.根据权利要求6所述的基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于,所述脉动阵列组合实现LSTM中4个门计算和FC层计算,其中具体过程为:2个脉动阵列通过分别输入x和h,输出增加2个加法器分别进行脉动阵列的结果与偏置参数的相加实现LSTM中单个门的计算,1个脉动阵列输入LSTM层计算结果h,输出增加1个加法器进行脉动阵列的结果与偏置参数的相加实现FC层计算。

9.根据权利要求8所述的基于分布式计算脉动阵列的轻量化LSTM硬件加速器,其特征在于,所述LSTM单个门计算结构,组合实现LSTM层计算,其中具体过程为:4个门结构的计算结果分别对接相应的激活函数,输入门与更新门的激活结果相乘,遗忘门的激活结果与缓存的长期记忆c相乘后再与上述相乘结果相加,输出长期记忆c并将其缓存作为下一个时间步的输入,输出门的激活结果经过FIFO缓存后,与长期记忆c的激活结果相乘,生成最终的LSTM的输出结果。

10.根据权利要求1所述的基于分布式计算脉动阵列的轻量化LSTM的加速方法,其特征在于:该方法包括以下步骤:

...

【技术特征摘要】

1.基于分布式计算脉动阵列的轻量化lstm硬件加速器,其特征在于:包括控制模块、重构模块、激活模块和多个脉动阵列;

2.根据权利要求1所述的基于分布式计算脉动阵列的轻量化lstm硬件加速器,其特征在于:所述控制模块包括以下状态:

3.根据权利要求2所述的基于分布式计算脉动阵列的轻量化lstm硬件加速器,其特征在于:所述状态s3:具体状态为:

4.根据权利要求1所述的基于分布式计算脉动阵列的轻量化lstm硬件加速器,其特征在于:所述重构模块包括对输入数据x的重构和对lstm计算输出的短期记忆h的重构,具体为:每周期输入1个数据,共输入n次,将x*y的二维矩阵寄存器按行方向存入,在输入结束后,按列方向每周期输出x个数据,共输出y个周期,全部输出完,实现对单个数据维度重构为列向量数据以匹配脉动阵列的输入维度。

5.根据权利要求1所述的基于分布式计算脉动阵列的轻量化lstm硬件加速器,其特征在于:所述激活模块包括sigmoid激活函数、tanh激活函数和softmax激活函数,具体实现过程为:sigmoid激活函数和tanh激活函数均采用分段线性拟合的方式,并且斜率k设定为2的负次幂,在计算中以移位方式实现,减少乘法器的使用;softmax函数中使用x的平方代替e的x次幂计算,并设计定点除法器,实现概率的输出。

6.根据权利要求1所述的基于分布式计算脉动阵列的轻量化lstm硬件加速器,其特征在于:所述脉动阵列包括:x*y个pe单元组成的pe阵列阵列、计算y列的加法数模块和分布式存储模块,其中输入数据x/y提前存入到每一个相对应pe单元中,计算开始后分布式存储模块wh0-wh(y-1)中wx/y按顺序输入到pe单元中与输入数据x/y进行耦合相乘,同时固定输入数据x/y的基础上滚动权重参数wx/y,并将输出脉动的传递到下一级的pe单元中,最后输送到加法树模块,以流水线相...

【专利技术属性】
技术研发人员:张红升成卓立杨虹杜英泉李颖陶国胜
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:

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

1