System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于循环神经网络加速器领域,涉及一种基于分布式计算脉动阵列的轻量化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模型的数据稀疏性,通过算法减少其权重参数,以降低模型的计算量和功耗。但是,这种方法引入了剪枝等新的操作,势必导致电路的运行时间增加,尤其是在模型规模庞大时,增加的时间甚至可能超过计算
技术实现思路
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激活函数均采用分
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单元中,最后输送到加法树模块,以流水线相...
【专利技术属性】
技术研发人员:张红升,成卓立,杨虹,杜英泉,李颖,陶国胜,
申请(专利权)人:重庆邮电大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。