CN108763159A - 一种基于fpga的lstm前向运算加速器 - Google Patents

一种基于fpga的lstm前向运算加速器 Download PDF

Info

Publication number
CN108763159A
CN108763159A CN201810494213.2A CN201810494213A CN108763159A CN 108763159 A CN108763159 A CN 108763159A CN 201810494213 A CN201810494213 A CN 201810494213A CN 108763159 A CN108763159 A CN 108763159A
Authority
CN
China
Prior art keywords
lstm
fpga
accelerator
hardware
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810494213.2A
Other languages
English (en)
Inventor
李曦
周学海
王超
张奕玮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Institute for Advanced Study USTC
Original Assignee
Suzhou Institute for Advanced Study USTC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Institute for Advanced Study USTC filed Critical Suzhou Institute for Advanced Study USTC
Priority to CN201810494213.2A priority Critical patent/CN108763159A/zh
Publication of CN108763159A publication Critical patent/CN108763159A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only

Abstract

本发明公开了一种基于FPGA的LSTM前向运算加速器,采用软硬件协同模式工作。硬件部分包含了三种加速器设计:单DMA模式LSTM神经网络前向算法加速器,双DMA模式LSTM神经网络前向算法加速器以及稀疏LSTM网络前向算法加速器。所述加速器用于长短期记忆(LSTM:Long short‑term memory)网络前向计算部分的加速,其中包含了矩阵‑向量乘法模块、Element‑wise运算模块以及激活函数模块。其中单DMA模式加速器在性能、能效比方面均有良好的运算效果;而双DMA模式加速器和稀疏网络加速器在能效比方面效果较好,并且更加节省FPGA的片上存储资源。

Description

一种基于FPGA的LSTM前向运算加速器
技术领域
[0001] 本发明涉及计算机硬件加速领域,具体地涉及一种基于FPGA的LSTM前向运算加速 器及其设计方法。
背景技术
[0002] 长短期记忆(LSTM)网络是目前最为主流的递归神经网络(RNNs)变种,其解决了传 统递归神经网络算法在实际任务所面临的长期依赖问题。基于LSTM网络的特点,其被广泛 应用于语音识别、机器翻译以及图像处理等等领域。由于LSTM神经网络中包含大量的参数, 运算过程属于计算密集型操作,采用CPU这类通用类型的硬件平台执行LSTM算法,在运算性 能和能耗方面的表现均不理想。因此采用专用硬件加速器提升LSTM网络的运算性能是当前 研究的热点。目前常用的硬件加速手段包括GPU,ASIC以及FPGA。
[0003] GPU最初作为专用的图形处理器而出现,基于其应用需求,GPU被设计为擅长执行 矩阵和向量运算的硬件平台。随着GPU性能的提升,其在纯计算性能方面已经远远高于CPU, 因此亦被广泛应用于其他涉及大量矩阵向量计算的应用任务中,其中最典型的就是神经网 络。并且随着NVIDIA提出CUDA等通用并行计算框架,使得GPU编程开发的难度大大降低。但 GHJ的缺点是其功耗过高,不适用于对功耗有严格限制的应用场景。
[0004] ASIC是根据专用需求所设计的集成电路芯片。相较于其他硬件平台,ASIC拥有高 计算性能、低功耗、体积小以及大规模生产成本低等优势。但ASIC同样也有缺点:编程开发 周期长,并且在其电路逻辑设计制造完成后便无法修改,而如果要修改逻辑则必须重新设 计。如今关于神经网络算法的研究在不断地推陈出新,因此ASIC较差的设计灵活性限制了 其在科研领域的推广。
[0005] FPGA是一种高性能低功耗的硬件,其在芯片内部集成了大量数字电路、存储器和 逻辑单元。开发者可以通过烧入配置文件以自定义逻辑单元和存储器之间的连线,从而实 现自定义运算逻辑。FPGA的逻辑配置并非是一次性的,开发者可以通过烧入新的配置文件 来修改芯片内部的电路逻辑。因此FPGA比ASIC有更高的硬件编程灵活性,并且近年来随着 高层综合工具的出现,大大简化了 FPGA的设计流程,缩短了编程开发周期。而在同样的计算 性能下,FPGA的功耗往往比GPU低数倍,因此从能耗角度,FPGA远远优于GPU。
发明内容
[0006] 有鉴于此,本发明目的是:提供一种基于FPGA的高能效比LSTM网络前向运算加速 器,采用软硬件协同模式。根据不同数据传输方式以及神经网络结构,硬件加速器采用了三 种设计,分别为单DMA模式硬件加速器、双DMA模式硬件加速器以及稀疏LSTM网络硬件加速 器。通过采用流水线、并行计算以及优化策略,提升硬件加速器的运算效率,在能效比性能 上远远高于CPU平台。
[0007] 本发明的技术方案是: 一种基于FPGA的LSTM前向运算加速器,包括硬件端部分和软件端部分,所述软件端部 分包括由外部存储保存的输入数据和LSTM参数,由CPU运行软件端的程序,将LSTM前 向运算的任务上传到硬件端部分运行,CPU通过控制总线对硬件端部分进行控制,通过数据 总线上传LSTM参数和输入数据,然后将硬件端部分的执行结果传回到软件端部分;所述硬 件端部份采用FPGA加速器。
[0008] 优选的,所述FPGA加速器内部实现三个计算模块:矩阵-向量乘法模块、Elementwise 计算模块以及激活函数模块。
[0009] 优选的,所述FPGA加速器中还包括片上缓存,用来保存神经网络参数、LSTM细胞状 态值以及当前的输出值。
[0010] 优选的,所述FPGA加速器采用三种实现方式,分别为:单DMA模式硬件加速器,双 DM模式硬件加速器和稀疏网络硬件加速器。
[0011]优选的,所述矩阵-向量乘法模块,计算步骤为: 50 1:将当前时刻的输入向量和上一时刻的输出向量合并为一个长向量;将LSTM网络中 不同入口的权值矩阵合并为一个大矩阵; S02:将合并后的向量和矩阵进行乘法运算,并加上偏置得到结果向量; S03:将结果向量分割成四个等长向量,得到输入端和三个门对应的结果向量。
[0012] 优选的,所述Element-wise计算模块,需要计算得到细胞状态值以及当前的输出 值,运算步骤如下: 51 1:将LSTM的细胞状态值和遗忘门的值相乘,从而有选择性地将细胞单元中部分信息 有选择地遗忘掉; S12:将输入端传进来的值和输入门的值相乘,从而对输入信息也进行过滤; S13:将遗忘处理后的细胞状态值与过滤后的输入信息相加,得到当前时刻新的细胞状 态值; S14:将更新后的细胞状态值通过激活函数处理,并和输出门的值相乘过滤出要输出的 信息。
[0013] 优选的,所述激活函数计算模块,采用线性近似方式实现激活函数功能;将LSTM网 络中的激活函数sigmoid和tanh等分为有限个区间,在每个区间分别用一个线性函数y=a*x +b进行近似,在FPGA上存储存储每一个分段区间的系数值a和b;采用线性近似进行激活函 数计算的步骤如下: S21:判断输入值X所在的区间; S22:选取对应区间的系数值a和b,通过公式a*x+b计算得到结果。
[0014] 优选的,所述单DM模式硬件加速器,只用一个DM端口传输数据,在运算过程中首 先将LSTM神经网络的全部参数通过DMA传输到FPGA的片上缓存中,之后再传输输入数据并 与神经网络的参数进行计算,所述加速器需要FPGA的片上缓存资源足够存储全部的LSTM神 经网络参数。
[0015] 优选的,所述双DM模式硬件加速器,使用两个DM端口进行并行数据传输,其中一 个端口负责传输输入数据,另一个端口负责传输当前运算所需的部分LSTM网络参数,之后 使用两个端口传输的数据进行计算。
[0016] 优选的,所述稀疏网络硬件加速器,当原有的LSTM神经网络参数规模超出了FPGA 的存储资源限制时,采用剪枝手段对神经网络参数进行压缩,将原先的稠密LSTM网络精简 为稀疏LSTM网络,使之对存储资源的需求大为降低,并在软件端采用稀疏网络的存储方式 存储剪枝后的神经网络。所述稀疏网络硬件加速器同样采用单DMA进行数据传输,首先传输 稀疏LSTM网络参数,之后传输输入数据并执行运算操作。
[0017] 优选的,所述LSTM前向运算加速器的硬件逻辑设计,采用流水线方式和并行运算 方法方法提升运算性能,为了提升并行效率,采用并行读取、分片复用、并行累加以及双缓 冲区的优化手段。
[0018] 优选的,所述并行读取的方法,在FPGA的片上缓存中,将权值参数矩阵按照一定形 式进行分割,将不同的分割部分存储在不同的BRAM中;通过矩阵分割方式,保证运算操作中 的一个始终周期内,每个BRAM只读取一个权值参数,从而保证了每个时钟周期内对多个 BRAM并行读取数据。
[0019] 优选的,所述分片复用的方法,在矩阵向量的乘法运算中,将向量和矩阵按照一定 的大小进行分片,对每个分片先进行并行计算,之后将分片的计算结果相加得到最终结果。
[0020] 优选的,所述并行累加的方法,使用加法树方法对多个乘法中间值实现并行累加 操作,累加树的规模取决于FPGA上乘法器和加法器的数量。
[0021] 优选的,所述双缓冲区的方法,采用两个缓冲区交替读取分片数据或者参与运算, 将数据读取和运算部分重叠起来。
[0022] 与现有技术相比,本发明的优点是: 本发明方案通过采用FPGA设计高能效比的LSTM网络前向运算加速器,采用流水线、并 行读取、分片复用、加法树和双缓冲区等优化手段提升加速器的运算性能。并针对较大规模 的LSTM神经网络存储资源消耗的瓶颈问题,分别设计了单DMA模式硬件加速器,双DMA模式 硬件加速器和稀疏网络硬件加速器,其中双DMA模式硬件加速器和稀疏网络硬件加速器对 FPGA存储资源的需求大为降低。通过实验发现,相比于CPU平台,本文的单DMA模式LSTM网络 硬件加速器的能效比提升了 66倍,双DMA模式LSTM网络硬件加速器的能效比提升了 2.78倍, 稀疏LSTM网络硬件加速器的能效比提升了4.85倍。
附图说明
[0023] 下面结合附图及实施例对本发明作进一步描述: 图1是基于FPGA的LSTM神经网络前向运算加速器系统结构框架示意图; 图2是硬件加速器设计的架构示意图; 图3是单DM模式LSTM前向运算加速器中的矩阵向量乘法运算模块设计示意图; 图4是单DMA模式硬件加速器中LSTM神经网络权值矩阵在FPGA片上的存储形式示意图; 图5是双DM模式LSTM前向运算加速器中的矩阵向量乘法运算模块设计示意图; 图6是LSTM前向运算加速器中的Element-wise运算模块设计示意图; 图7是LSTM前向运算加速器中的激活函数模块设计示意图; 图8是基于FPGA的LSTM前向计算加速器与CPU平台的能效比数据对比图; 图9是单DM模式硬件加速器和双DM模式硬件加速器所消耗的存储资源对比图。
具体实施方式
[0024] 以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明 本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做 进一步调整,未注明的实施条件通常为常规实验中的条件。
[0025] 实施例: 图1是基于FPGA的LSTM神经网络前向运算加速器系统工作示意图,分为软件端和硬件 端,在软件端执行的具体应用任务中,当需要用LSTM神经网络进行前向运算时,将运算任务 上传到FPGA硬件加速器上完成,并将硬件的运算结果传回软件端执行后续的操作。根据 LSTM网络的参数规模,采用不同的硬件加速器:当FPGA的片上存储资源足够缓存全部LSTM 参数时,采用单DMA模式的硬件加速器,并一次性将全部参数缓存到片上;当LSTM参数规模 超出了 FPGA的片上存储能力时,采用双DMA模式硬件加速器,并且每次运算值传输所需的部 分参数;当LSTM网络的拓扑结构为稀疏网络并且满足FPGA的存储限制时,则一次性将全部 参数上传到片上缓存中并使用专用的稀疏网络硬件加速器执行前向运算任务。
[0026] 如图2所示,LSTM前向计算加速器内部分为三个主要的计算模块:矩阵-向量乘法 模块,Element-wise计算模块以及激活函数模块,同时还需要存储资源用于缓存神经网络 参数、输入值、细胞状态值以及输出值。硬件运算模块可以通过使用高层次综合工具进行逻 辑设计并生成IP核形式的逻辑模块,IP核可以移植到其他半导体上实现复用。在软件端通 过CPU运行软件代码,将LSTM前向运算任务上传到FPGA硬件上运行,并通过控制总线对硬件 部分的IP核进行控制,通过数据总线上传运算所需数据以及将硬件计算结果传输回软件 端。
[0027] 图3是单DMA模式的LSTM神经网络前向运算加速器中的矩阵向量乘法运算模块设 计。由于在单DMA模式加速器中,已经事先将全部的神经网络参数传输到片上缓存中,因此 运算过程中只需要传输输入向量即可。这一部分运算可以通过分片复用、加法树以及双缓 冲区等方式进行优化,以提升吞吐率。
[0028] 单DM模式的矩阵-向量运算步骤如下: (a) 当前时刻的输入向量通过DM传输到硬件平台; (b) 将缓存中所保存的上一时刻的输出向量和当前时刻的输入向量合并为一个完整的 长向量; (c) 将合并后的长向量按照固定的大小进行分片,并采用双缓冲区交替进行读取和运 算操作,即:当缓冲区a中的分片数据在参与计算的同时,缓冲区b负责读取下次计算所需的 分片;而缓冲区a中的分片数据计算完毕后,此时缓冲区b亦读取完所需数据,因此可以即刻 参与下一轮的运算,并且于此同时,缓冲区a继续读取之后一轮计算所需的数据分片,以此 类推; (d) 将当前参与运算的向量分片与权值矩阵中对应位置的参数分片进行运算,运算方 式是对应位置的元素进行并行的乘法运算,从而得到对应位置的乘法中间值; (e) 使用加法树操作将乘法中间值累加,得到该分片的中间值; (f) 通过重复(c) (d) (e)步骤,直至全部的向量分片和对应位置的权值矩阵分片计算完 成。之后将每列对应的分片中间值累加,便可得到向量形式的计算结果。将结果向量分割为 四部分,分别通过激活函数的处理,从而得到LSTM网络中输入端和三个门结构各自对应的 向量结果。
[0029] 稀疏LSTM网络硬件加速器的运算模式和单DMA模式LSTM硬件加速器基本一致,只 是前者读取并计算的是稀疏权值矩阵。
[0030] 图4是单DMA模式的硬件加速器中LSTM神经网络的权值矩阵在FPGA片上的存储方 式。通过将权值矩阵按照一定形式分割并分别存储在不同的BRAM块上,从而保证在计算一 个分片的乘法运算中,每个BRAM块只需读取一个元素数据。从而保证了整个权值矩阵分片 可以在一个时钟周期内并行读取完毕,并与向量分片实现对应位置元素的并行乘法运算。 通过合理划分分片的大小,可以充分利用FPGA上的BRAM资源,提高数据读取和运算的并行 度。
[0031] 图5是双DMA模式的LSTM神经网络前向运算加速器中的矩阵向量乘法运算模块设 计。在双DMA模式加速器中,片上缓存不再存储全部的神经网络参数,因此需要两个DM端口 分别并行读取所需的输入向量值和参与计算的部分权值参数。双DMA模式的矩阵-向量运算 步骤如下: (a) 当前时刻的输入向量通过DM传输到硬件平台; (b) 将缓存中所保存的上一时刻的输出向量和当前时刻的输入向量合并为一个完整的 长向量; (c) 将合并后的长向量按照固定的大小进行分片,并采用双缓冲区交替进行分片的读 取和运算操作; (d) 在传输输入向量的同时,使用另一个DMA传输当前运算所需的权值矩阵数据分片。 同样采用双缓冲区的方式交替进行数据读取和参数运算; (e) 将当前参与运算的向量分片和读取的权值分片进行并行乘法运算以及加法树的累 加。于此同时,另一个未参与当前计算的缓冲区读取下次计算所需的权值分片; (f) 通过重复(c) (d) (e)步骤,直至全部的向量分片和对应位置的权值矩阵分片计算完 成。之后通过分片中间值累加、结果向量的分割以及激活函数的处理,从而得到LSTM网络中 输入端和三个门结构各自对应的向量结果。
[0032] 图6是LSTM硬件加速器的Element-wise运算模块,对于单DMA模式和双DMA模式加 速器是通用的。该模块运算步骤如下: (a) 将遗忘门向量烬和细胞状态值向量cVi对应位置的元素相乘。与此同时,输入门向 量I和输入端向量对应位置的元素相乘; (b) 将步骤(a)中的两个相乘计算结果相加得到当前时刻新的细胞状态值向量&,并更 新细胞状态值缓存; (c) 将更新后的细胞状态值向量4通过tanh激活函数处理,之后于输出门向量%对应 位置元素相乘,从而得到输出向量择6:;。
[0033] 如图7是LSTM硬件加速器中的激活函数运算模块的逻辑设计示意图,采用分段线 性近似的方法在硬件逻辑上实现非线性的激活函数。LSTM神经网络算法中使用的激活函数 包括sigmoid和tanh函数。当X e [-00,-8]时sigmoid (X) =0 ;当Xe [8,00]时sigmoid (X) =1; 在[-8, 8]这个有限区间内可以分割为有限个区间,每个分段区间采用a*x+b形式的线性 函数进行近似。同理,当XG [-00,-6]和xe [6,°°]时,tanh (X)分别恒等于-1和1,而[-6,6] 区间可以分割为有限个分段区间并采用线性函数近似。通过细分区间可以提高分段线性近 似的精度。并且sigmoid和tanh函数的图像均是中心对称,因此可以通过sigmoid (-X) =1-sigmoid (X)和tanh (X) =_tanh (X)等式变换,将分段线性系数的存储量减少一半。
[0034] 基于FPGA的LSTM网络加速器相比于CPU平台,在执行LSTM前向计算任务时的能效 比对比见图8,其中能效比的定义为:执行的总运算量/能耗,等同于吞吐率/功耗。由图可以 看出:单DMA模式LSTM网络加速器的能效比是CPU的66倍;双DMA模式LSTM网络加速器的能 效比是CPU的2.775倍;双DMA模式LSTM网络加速器的能效比是CPU的2.775倍;稀疏LSTM网络 加速器的能效比为CPU的4.85倍。单DMA模式加速器的能效比性能最好,这是因为其一次性 将所有参数缓存在片上,不需要反复传输大量的参数数据,并且其所针对的稠密LSTM网络 也比稀疏LSTM网络算法更容易提升运算的并行度,因此同等功耗下,单DM模式的硬件加速 器吞吐率最尚。
[0035] 单DMA模式LSTM网络硬件加速器和双DMA模式LSTM网络硬件加速器所消耗的存储 资源对比见图9。如图可以看出,双DM模式加速器所消耗的存储资源仅仅为单DMA模式加速 器的3%,这是因为双DM模式加速器每次运算只缓存当前时刻所需的LSTM网络参数。稀疏网 络硬件加速器所消耗的存储资源量取决于稀疏网络本身的稀疏度。
[0036] 综上所述,基于FPGA的LSTM前向计算加速器相比于CPU在能效比方面有较大的提 升。其中单DMA模式加速器性能最好,适合于FPGA片上存储资源足够的情形。双DMA模式加速 器和稀疏网络加速器适合对较大规模的LSTM网络实现硬件加速。
[0037] 上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是 能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精 神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。

Claims (15)

1. 一种基于FPGA的LSTM前向运算加速器,其特征在于,包括硬件端部分和软件端部分, 所述软件端部分包括由外部存储保存的输入数据和LSTM参数,由CPU运行软件端的程 序,将LSTM前向运算的任务上传到硬件端部分运行,CPU通过控制总线对硬件端部分进行 控制,通过数据总线上传LSTM参数和输入数据,然后将硬件端部分的执行结果传回到软件 端部分;所述硬件端部份采用FPGA加速器。
2. 根据权利要求1所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述FPGA加速 器内部实现三个计算模块:矩阵-向量乘法模块、Element-wi se计算模块以及激活函数模 块。
3. 根据权利要求2所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述FPGA加速 器中还包括片上缓存,用来保存神经网络参数、LSTM细胞状态值以及当前的输出值。
4. 根据权利要求3所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述FPGA加速 器采用三种实现方式,分别为:单DMA模式硬件加速器,双DM模式硬件加速器和稀疏网络硬 件加速器。
5. 根据权利要求3所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述矩阵-向 量乘法模块,计算步骤为: SOI:将当前时刻的输入向量和上一时刻的输出向量合并为一个长向量;将LSTM网络中 不同入口的权值矩阵合并为一个大矩阵; S02:将合并后的向量和矩阵进行乘法运算,并加上偏置得到结果向量; S03:将结果向量分割成四个等长向量,得到输入端和三个门对应的结果向量。
6. 根据权利要求3所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述Element-wi se 计算模块 ,需要计算得到细胞状态值以及 当前的输出值 ,运算步骤如下: SI 1:将LSTM的细胞状态值和遗忘门的值相乘,从而有选择性地将细胞单元中部分信息 有选择地遗忘掉; S12:将输入端传进来的值和输入门的值相乘,从而对输入信息也进行过滤; S13:将遗忘处理后的细胞状态值与过滤后的输入信息相加,得到当前时刻新的细胞状 态值; S14:将更新后的细胞状态值通过激活函数处理,并和输出门的值相乘过滤出要输出的 信息。
7. 根据权利要求3所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述激活函数 计算模块,采用线性近似方式实现激活函数功能;将LSTM网络中的激活函数Sigmoic^Ptanh 等分为有限个区间,在每个区间分别用一个线性函数y=a*x+b进行近似,在FPGA上存储存储 每一个分段区间的系数值a和b;采用线性近似进行激活函数计算的步骤如下: S21:判断输入值X所在的区间; S22:选取对应区间的系数值a和b,通过公式a*x+b计算得到结果。
8. 根据权利要求3所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述单DMA模 式硬件加速器,只用一个DMA端口传输数据,在运算过程中首先将LSTM神经网络的全部参数 通过DM传输到FPGA的片上缓存中,之后再传输输入数据并与神经网络的参数进行计算,所 述加速器需要FPGA的片上缓存资源足够存储全部的LSTM神经网络参数。
9. 根据权利要求3所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述双DMA模 式硬件加速器,使用两个DMA端口进行并行数据传输,其中一个端口负责传输输入数据,另 一个端口负责传输当前运算所需的部分LSTM网络参数,之后使用两个端口传输的数据进行 计算。
10. 根据权利要求3所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述稀疏网 络硬件加速器,当原有的LSTM神经网络参数规模超出了 FPGA的存储资源限制时,采用剪枝 手段对神经网络参数进行压缩,将原先的稠密LSTM网络精简为稀疏LSTM网络,使之对存储 资源的需求大为降低,并在软件端采用稀疏网络的存储方式存储剪枝后的神经网络; 所述稀疏网络硬件加速器同样采用单DMA进行数据传输,首先传输稀疏LSTM网络参数, 之后传输输入数据并执行运算操作。
11. 根据权利要求3所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述LSTM前 向运算加速器的硬件逻辑设计,采用流水线方式和并行运算方法方法提升运算性能,为了 提升并行效率,采用并行读取、分片复用、并行累加以及双缓冲区的优化手段。
12. 根据权利要求11所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述并行读 取的方法,在FPGA的片上缓存中,将权值参数矩阵按照一定形式进行分割,将不同的分割部 分存储在不同的BRAM中;通过矩阵分割方式,保证运算操作中的一个始终周期内,每个BRAM 只读取一个权值参数,从而保证了每个时钟周期内对多个BRAM并行读取数据。
13. 根据权利要求11所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述分片复 用的方法,在矩阵向量的乘法运算中,将向量和矩阵按照一定的大小进行分片,对每个分片 先进行并行计算,之后将分片的计算结果相加得到最终结果。
14. 根据权利要求11所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述并行累 加的方法,使用加法树方法对多个乘法中间值实现并行累加操作,累加树的规模取决于 FPGA上乘法器和加法器的数量。
15. 根据权利要求11所述的基于FPGA的LSTM前向运算加速器,其特征在于,所述双缓冲 区的方法,采用两个缓冲区交替读取分片数据或者参与运算,将数据读取和运算部分重叠 起来。
CN201810494213.2A 2018-05-22 2018-05-22 一种基于fpga的lstm前向运算加速器 Pending CN108763159A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810494213.2A CN108763159A (zh) 2018-05-22 2018-05-22 一种基于fpga的lstm前向运算加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810494213.2A CN108763159A (zh) 2018-05-22 2018-05-22 一种基于fpga的lstm前向运算加速器

Publications (1)

Publication Number Publication Date
CN108763159A true CN108763159A (zh) 2018-11-06

Family

ID=64007511

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810494213.2A Pending CN108763159A (zh) 2018-05-22 2018-05-22 一种基于fpga的lstm前向运算加速器

Country Status (1)

Country Link
CN (1) CN108763159A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109784484A (zh) * 2019-01-31 2019-05-21 深兰科技(上海)有限公司 神经网络加速方法、装置、神经网络加速芯片及存储介质
CN110879697A (zh) * 2019-10-29 2020-03-13 南京大学 一种近似计算tanh函数的装置
CN111431540A (zh) * 2020-04-01 2020-07-17 西安交通大学 一种基于神经网络模型的fpga配置文件算术压缩与解压方法
WO2020224516A1 (zh) * 2019-05-09 2020-11-12 深圳大普微电子科技有限公司 一种神经网络硬件加速器
CN113191488A (zh) * 2021-04-30 2021-07-30 华中科技大学 一种面向lstm网络模型的硬件加速系统
CN113191494A (zh) * 2021-05-24 2021-07-30 南京航空航天大学 一种基于fpga的高效lstm加速器
CN113222133A (zh) * 2021-05-24 2021-08-06 南京航空航天大学 一种基于fpga的压缩lstm加速器及加速方法
WO2021243839A1 (zh) * 2020-06-04 2021-12-09 南京博芯电子技术有限公司 长短时记忆网络的复合粒度近存储近似加速结构和方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140289445A1 (en) * 2013-03-22 2014-09-25 Antony Savich Hardware accelerator system and method
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN106775599A (zh) * 2017-01-09 2017-05-31 南京工业大学 递归神经网络的多计算单元粗粒度可重构系统及方法
CN107402754A (zh) * 2017-06-30 2017-11-28 北京金山安全软件有限公司 信息处理和模型训练方法、装置、电子设备、存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140289445A1 (en) * 2013-03-22 2014-09-25 Antony Savich Hardware accelerator system and method
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN106775599A (zh) * 2017-01-09 2017-05-31 南京工业大学 递归神经网络的多计算单元粗粒度可重构系统及方法
CN107402754A (zh) * 2017-06-30 2017-11-28 北京金山安全软件有限公司 信息处理和模型训练方法、装置、电子设备、存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YIWEI ZHANG等: ""Implementation and Optimization of the Accelerator Based on FPGA Hardware for LSTM Network", 《2017 IEEE INTERNATIONAL SYMPOSIUM ON PARALLEL AND DISTRIBUTED PROCESSING WITH APPLICATIONS AND 2017 IEEE INTERNATIONAL CONFERENCE ON UBIQUITOUS COMPUTING AND COMMUNICATIONS (ISPA/IUCC)》 *
余奇: "基于FPGA的深度学习加速器设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109784484A (zh) * 2019-01-31 2019-05-21 深兰科技(上海)有限公司 神经网络加速方法、装置、神经网络加速芯片及存储介质
WO2020224516A1 (zh) * 2019-05-09 2020-11-12 深圳大普微电子科技有限公司 一种神经网络硬件加速器
CN110879697A (zh) * 2019-10-29 2020-03-13 南京大学 一种近似计算tanh函数的装置
CN110879697B (zh) * 2019-10-29 2021-09-28 南京大学 一种近似计算tanh函数的装置
CN111431540A (zh) * 2020-04-01 2020-07-17 西安交通大学 一种基于神经网络模型的fpga配置文件算术压缩与解压方法
CN111431540B (zh) * 2020-04-01 2021-10-08 西安交通大学 一种基于神经网络模型的fpga配置文件算术压缩与解压方法
WO2021243839A1 (zh) * 2020-06-04 2021-12-09 南京博芯电子技术有限公司 长短时记忆网络的复合粒度近存储近似加速结构和方法
CN113191488A (zh) * 2021-04-30 2021-07-30 华中科技大学 一种面向lstm网络模型的硬件加速系统
CN113191494A (zh) * 2021-05-24 2021-07-30 南京航空航天大学 一种基于fpga的高效lstm加速器
CN113222133A (zh) * 2021-05-24 2021-08-06 南京航空航天大学 一种基于fpga的压缩lstm加速器及加速方法

Similar Documents

Publication Publication Date Title
CN108763159A (zh) 一种基于fpga的lstm前向运算加速器
CN108090560A (zh) 基于fpga的lstm递归神经网络硬件加速器的设计方法
CN106228240B (zh) 基于fpga的深度卷积神经网络实现方法
CN107862374B (zh) 基于流水线的神经网络处理系统和处理方法
CN107844826B (zh) 神经网络处理单元及包含该处理单元的处理系统
CN109902818B (zh) 一种面向深度学习训练任务的分布式加速方法及系统
CN108665059A (zh) 基于现场可编程门阵列的卷积神经网络加速系统
CN108416422A (zh) 一种基于fpga的卷积神经网络实现方法及装置
CN107657263A (zh) 一种用于实现ann的深度处理单元
CN107609641A (zh) 稀疏神经网络架构及其实现方法
CN107480782A (zh) 一种片上学习神经网络处理器
CN109783412A (zh) 一种深度强化学习加速训练的方法
Sun et al. A high-performance accelerator for large-scale convolutional neural networks
CN111414994A (zh) 一种基于FPGA的Yolov3网络计算加速系统及其加速方法
Zhang et al. Implementation and optimization of the accelerator based on FPGA hardware for LSTM network
Zhu et al. Cnnlab: a novel parallel framework for neural networks using gpu and fpga-a practical study with trade-off analysis
Yu et al. Real-time object detection towards high power efficiency
Shimoda et al. All binarized convolutional neural network and its implementation on an FPGA
CN111459877A (zh) 基于FPGA加速的Winograd YOLOv2目标检测模型方法
Li et al. Task assignment strategy for multi-robot based on improved Grey Wolf Optimizer
Santos et al. Artificial neural network acceleration on FPGA using custom instruction
CN108595379A (zh) 一种基于多级缓存的并行化卷积运算方法及系统
Müller et al. Cesar: Emulating cellular networks on fpga
Dias et al. Deep learning in reconfigurable hardware: A survey
Archibald et al. Integrating deep learning in domain sciences at exascale

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination