基于FPGA的LSTM递归神经网络硬件加速器的设计方法技术

技术编号:18084736 阅读:56 留言:0更新日期:2018-05-31 13:02
本发明专利技术公开了一种FPGA平台上加速LSTM神经网络算法的方法,FPGA即现场可编程门阵列平台,其包括通用处理器、现场可编程门阵列以及存储模块,包括以下步骤:使用Tensorflow对构建LSTM神经网络,并训练神经网络的参数;采用压缩手段将LSTM网络参数进行压缩处理,解决FPGA存储资源不足的问题;根据压缩后的LSTM网络的预测过程,确定适用于现场可编程门阵列平台上运行的计算部分;根据确认的计算部分,确定软硬件协同计算方式;根据FPGA的计算逻辑资源、带宽情况,确定IP核固化的数量和种类,利用硬件运算单元,在现场可编程门阵列平台上进行加速。能够根据硬件资源快速设计出针对LSTM神经网络加速的硬件处理单元,处理单元相对于通用处理器有高性能、低功耗特点。

【技术实现步骤摘要】
基于FPGA的LSTM递归神经网络硬件加速器的设计方法
本专利技术涉及计算机硬件加速领域,具体地涉及一种基于FPGA的LSTM递归神经网络硬件加速器的设计方法。
技术介绍
LSTM(LongShort-TermMemory)神经网络是一种对递归神经网络(RNN),被广泛应用于序列处理类型的应用中,其通过将普通RNN网络中的神经元替换为LSTM组件,解决了传统RNN网络训练时的长时间依赖问题。而由于代表一个神经元LSTM组件中包含四个门,每个门都要与输入节点相连,并且每个门接收的值也要通过一系列的运算得到该LSTM组件的输出值,因此当神经网络中的隐藏层包含的LSTM组件数量较多时,神经网络内部的计算任务量以及产生的功耗将会非常大。所以高性能低能耗地加速LSTM神经网络是当前的一个研究热点。通常计算任务从表现方式上分两种:在通用处理器上,任务通常以软件代码的形式呈现,称为软件任务;在专用硬件电路上,充分发挥硬件固有的快速特性来代替软件任务,称为硬件任务。常见的硬件加速技术有专用集成电路ASIC(ApplicationSpecificIntegratedCircuit)、现场可编程逻辑门阵列FPGA(FieldProgrammableGateArray)和图形处理器GPU(GraphicsProcessingUnit)。ASIC是为特定用途设计开发的集成电路芯片,其具有高性能、低功耗、面积小等特点。虽然相对于FPGA,ASIC运行更快、功耗更低,而且量化生产时也更便宜。但FPGA简化了逻辑任务设计,设计周期比ASIC更短,并且FPGA拥有可重构的特点,灵活性好,方便用户动态重构功能模块。此外,生产ASIC的掩膜成本很高,随着线宽的减小,掩膜成本成指数增长。FPGA作为适用不同功能的可编程标准器件,没有如此高额的研发成本。GPU适用于大量数据的并行计算,具有高带宽、高主频、高并行性特点,而且CUDA(ComputeUnifiedDeviceArchitecture)通用并行计算框架的提出,使开发者更方便、快捷地设计出高性能解决方案。但GPU的的高能耗对其应用造成了一定的限制。而相比于GPU,FPGA在功耗方面具有很大的优势。
技术实现思路
有鉴于此,本专利技术目的是:提供了一种基于FPGA的LSTM递归神经网络硬件加速器的设计方法,通过FPGA硬件处理单元加速LSTM神经网络预测过程中的计算密集部分,硬件处理单元相对于通用处理器具有高性能和低功耗的特点。本专利技术的技术方案是:一种基于FPGA的LSTM递归神经网络硬件加速器的设计的方法,其特征在于,包括以下步骤:S01:使用Tensorflow对构建LSTM神经网络,并训练神经网络的参数;S02:采用压缩手段将LSTM网络参数进行压缩处理,解决FPGA存储资源不足的问题;S03:根据压缩后的LSTM网络的预测过程,确定预测运算的关键代码;S04:设计加速器的加速框架并生成IP核;S05:在操作系统下将硬件比特流式文件烧写到开发板中并编写IP核和硬件设备的驱动;优选技术方案中,包括控制模块,前向计算模块,参数配置模块。优选技术方案中,所述步骤S02包括以下步骤:对训练好的神经网络采用剪枝处理,精简参数数量,并对剪枝后的神经网络进行重训练,以保持剪枝前的预测精度;反复迭代剪枝-重训练过程,最终精简大部分神经网络参数;精简后的权值矩阵中大部分元素为0值,可采用稀疏矩阵的存储方式,降低存储空间;将神经网络参数的数据类型转换为字节数更低的格式,以进一步降低存储空间。优选技术方案中,所述步骤S04涉及到了稀疏矩阵与向量的乘法计算。由于稀疏矩阵的存储格式以及乘法计算过程与常规的2维稠密矩阵不同,因此硬件加速模块要专门针对稀疏矩阵进行设计;而由于稀疏矩阵的乘法计算中,每一列参与计算的参数数量不一定,因此在硬件并行的过程中使用控制器进行合理的计算任务分配,使每一个并行单元获得均匀的计算量,提高流水并行的加速效率。优选技术方案中,所述前向计算模块采用分片设计,将节点矩阵每一行内部按分片大小进行分片,权值参数矩阵每一列按照分片大小进行分片,按行将节点矩阵的每分片大小个数据与权值参数矩阵每一列对应的分片大小个数值进行点积运算,每一行计算完毕后将临时值累加得到最终结果。优选技术方案中,所述分片大小为2的n次方,与运算单元的并行粒度保持一致。本专利技术还公开了基于FPGA的LSTM递归神经网络硬件加速器,包括:CPU端,是整个系统的控制端,包含处理器Processor和内存Memory;处理器运行软件端的代码,并将加速任务加载到FPGA上工作;FPGA端,为整个系统的硬件加速部件FPGA芯片,通过FPGA上固话的IP核实现对LSTM神经网络算法的加速;数据总线,负责整个系统CPU端和FPGA端的数据传输;控制总线,负责整个系统CPU端和FPGA端控制信号的传输;内存,用于存储LSTM神经网络参数以及原始输入数据;直接内存存取DMA,负责加速器和内存间的数据传输;控制互联,负责控制信号线路的互联;PE,为加速器的计算单元,内部固化了前向计算模块的各种功能单元;PE内部的运算单元包括:1)矩阵向量相乘单元,用于将输入向量和权值矩阵对应位置的元素相乘得到中间值;2)累加单元,将矩阵向量相乘单元计算得到的中间值累加得到LSTM的各个门向量值;3)激励函数单元,将累加单元得到门向量值进行激励函数处理;4)向量计算单元,对LSTM的各个门向量以及LSTM的CELL向量进行计算,最终得到新的CELL向量以及输出向量;5)CellBuffer,用于存储CELL向量值;权值存储单元,以压缩的形式保存神经网络的权值参数。一种用于加速LSTM神经网络的FPGA结构,包括:控制模块,用于调度执行其他运算模块,并控制数据的传输;分片处理结构,将前向计算模块的节点数据矩阵和权值参数矩阵进行分片,分时复用硬件逻辑;参数配置模块,用于配置处理单元的参数;前向计算模块,用于LSTM神经网络的前向计算包含以下计算功能:包括权值矩阵和输入向量对应元素的乘法计算;中间值的累加运算;LSTM组件门向量值的激活函数运算;LSTM组件门向量之间的乘法和加法运算,并且进行流水线优化至最大吞吐率。优选技术方案中,所述参数配置模块通过DMA传输配置参数数据对处理单元进行配置,包括:前向计算模块的工作模式配置和数据规模配置,数据规模配置包括节点数据规模配置、输入神经元规模配置和输出神经元规模配置;权值更新模块数据规模配置、工作模式配置和计算参数配置。优选技术方案中,其特征在于,前向计算硬件结构包括:DMA,负责数据读取、写回;双寄存器缓冲区,交替读取数据或进行并行计算;BRAM组,缓存并保证数据并行读取;同分片大小相等的浮点乘法器;同分片大小相等输入的二叉加法树;循环累加器,累加临时值保存至片上BRAM上;激励函数计算模块,采用分段线性近似实现激励函数,计算系数缓存在片上BRAM;CELL存储器,负责保存LSTM组件中的CELL值;向量乘/加器,负责将经过激励函数处理后的LSTM门的向量以及存储的CELL值向量进行乘法以及加法操作,将更新后的CELL值写回CELL存储器,并将输出计算结果向量。与现有技术相比,本专利技术的优点是:本专利技术可以有效的加速本文档来自技高网
...
基于FPGA的LSTM递归神经网络硬件加速器的设计方法

【技术保护点】
基于FPGA的LSTM递归神经网络硬件加速器的设计方法,其特征在于,包括以下步骤:S01:使用Tensorflow构建LSTM神经网络,并训练LSTM神经网络的参数;S02:采用压缩手段将训练好的LSTM神经网络进行压缩处理,解决FPGA存储资源不足的问题;S03:根据压缩后的LSTM网络的预测过程,确定预测运算的关键代码;S04:设计加速器的加速框架并生成IP核;S05:在操作系统下将硬件比特流式文件烧写到开发板中并编写IP核和硬件设备的驱动;S06:编写用户层调用算法加速的接口。

【技术特征摘要】
1.基于FPGA的LSTM递归神经网络硬件加速器的设计方法,其特征在于,包括以下步骤:S01:使用Tensorflow构建LSTM神经网络,并训练LSTM神经网络的参数;S02:采用压缩手段将训练好的LSTM神经网络进行压缩处理,解决FPGA存储资源不足的问题;S03:根据压缩后的LSTM网络的预测过程,确定预测运算的关键代码;S04:设计加速器的加速框架并生成IP核;S05:在操作系统下将硬件比特流式文件烧写到开发板中并编写IP核和硬件设备的驱动;S06:编写用户层调用算法加速的接口。2.根据权利要求1所述的基于FPGA的LSTM递归神经网络硬件加速器的设计方法,其特征在于,所述FPGA包括控制模块,前向计算模块,参数配置模块。3.根据权利要求1所述的基于FPGA的LSTM递归神经网络硬件加速器的设计方法,其特征在于,所述步骤S02包括以下步骤:对训练好的神经网络采用剪枝处理,精简参数数量,并对剪枝后的神经网络进行重训练,以保持剪枝前的预测精度;反复迭代剪枝-重训练过程,最终精简大部分神经网络参数;精简后的权值矩阵中大部分元素为0值,采用稀疏矩阵的存储方式,降低存储空间;将神经网络参数的数据类型转换为字节数更低的格式,以进一步降低存储空间。4.根据权利要求1所述的基于FPGA的LSTM递归神经网络硬件加速器的设计方法,其特征在于,所述步骤S04涉及到了稀疏矩阵与向量的乘法计算。由于稀疏矩阵的存储格式以及乘法计算过程与常规的2维稠密矩阵不同,因此硬件加速模块要专门针对稀疏矩阵进行设计;而由于稀疏矩阵的乘法计算中,每一列参与计算的参数数量不一定,因此在硬件并行的过程中使用控制器进行合理的计算任务分配,使每一个并行单元获得均匀的计算量,提高流水并行的加速效率。5.根据权利要求2所述的基于FPGA的LSTM递归神经网络硬件加速器的设计方法,其特征在于,所述前向计算模块采用分片设计,将节点矩阵每一行内部按分片大小进行分片,权值参数矩阵每一列按照分片大小进行分片,按行将节点矩阵的每分片大小个数据与权值参数矩阵每一列对应的分片大小个数值进行点积运算,每一行计算完毕后将临时值累加得到最终结果。6.基于FPGA的LSTM递归神经网络硬件加速器,其特征在于,包括:CPU端,是整个系统的控制端,包含处理器Processor和内存Memory;处理器运行软件端的代码,并将加速任务加载到FPGA上工作;FPGA端,...

【专利技术属性】
技术研发人员:李曦周学海王超陈香兰
申请(专利权)人:中国科学技术大学苏州研究院
类型:发明
国别省市:江苏,32

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

1