CN110110851B - 一种lstm神经网络的fpga加速器及其加速方法 - Google Patents
一种lstm神经网络的fpga加速器及其加速方法 Download PDFInfo
- Publication number
- CN110110851B CN110110851B CN201910359395.7A CN201910359395A CN110110851B CN 110110851 B CN110110851 B CN 110110851B CN 201910359395 A CN201910359395 A CN 201910359395A CN 110110851 B CN110110851 B CN 110110851B
- Authority
- CN
- China
- Prior art keywords
- value
- neural network
- module
- unit
- weight
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种LSTM神经网络的FPGA加速器及其加速方法。加速器包括数据分发单元、运算单元、控制单元和存储单元;运算单元包括稀疏矩阵向量乘模块、非线性激活函数模块和按元素乘加计算模块;控制单元发出控制信号给数据分发单元,数据分发单元从存储单元中读取输入激励值和神经网络权重参数,并输入到运算单元进行运算。本发明按非零权重值的个数均匀地分配给每个运算单元,这样不会造成运算资源的闲置,从而提高整个网络的运算性能。同时,采用稀疏网络的形式存储剪枝后的神经网络,每一列的权重值存储在同一个地址空间,并根据行索引对其进行编码,在保证精度的情况下,提高了运算性能和数据吞吐率。
Description
技术领域
本发明涉及计算机硬件加速领域,具体地涉及一种面向LSTM神经网络的FPGA加速器及其加速方法。
背景技术
RNN神经网络(Recurrent Neural Network)通常用于序列信号数据的处理。由于其对于历史数据的记忆性,RNN网络可以用于机器翻译、语音识别、用户行为学习等领域。而RNN网络的变体LSTM网络的发展,得以解决了RNN网络训练中的梯度爆炸和梯度消失的问题。因为LSTM网络展示了比RNN网络更高的精确度,学术界针对LSTM网络的加速器的研究呈井喷状。
基于LSTM网络的特点,其运算过程属于计算密集型操作,采用CPU这类通用类型的硬件平台执行LSTM算法,在运算性能和能耗方面的表现均不理想。因此,采用专用硬件加速器提升LSTM网络的运算性能是当今研究的热点,目前常用的硬件加速手段包括GPU,ASIC以及FPGA。
由于稀疏的神经网络可能带来权值矩阵的每一列的非零值个数不相等,从而造成了运算单元的负载不均衡问题,即:部分运算单元由于处理的操作数更少而运算更快,但由于所有的运算单元共用同一个激励数值,这部分运算单元则处于闲置状态,以等待处理数据较多的运算单元结束运算,从而导致整体运算系统的运算效率不高。
发明内容
为了解决稀疏神经网络运算中负载不均衡的技术问题,本发明提出了一种LSTM神经网络的FPGA加速器及其加速方法。
本发明采用的技术方案为:
一种LSTM神经网络的FPGA加速器,包括数据分发单元、运算单元、控制单元和存储单元;所述运算单元包括:稀疏矩阵向量乘模块,用于权重与激励向量的点乘运算;非线性激活函数模块,用于获得最终的输入门、侯选门、遗忘门和输出门;以及按元素乘加计算模块,用于计算t时刻的状态和t时刻的隐藏层的值;所述存储单元用于缓存输入激励值、神经网络权重参数值、LSTM神经网络当前时刻状态值以及当前时刻的输出值;所述控制单元发出控制信号给数据分发单元,所述数据分发单元从存储单元中读取输入激励值和神经网络权重参数,并输入到运算单元进行运算。
进一步地,稀疏矩阵向量乘模块包括非零检测模块和多个计算单元,每一个计算单元包括激励值存储模块、权重解码模块和运算模块;所述非零检测模块用于检索激励数据的非零激励值和相对索引值;所述激励值存储模块用于存储非零激励值和相对索引值;所述权重解压缩模块用于根据激励数据的相对索引值进行权重的寻址,找出相对应的整列权重值;所述运算模块用于对非零激励值和整列权重值进行乘加运算。
一种LSTM神经网络的FPGA加速器的加速方法,具体步骤如下:
采用剪枝量化的方式对LSTM神经网络模型进行压缩,使得神经网络模型的权重矩阵稀疏化;对压缩后的稀疏矩阵按行进行重排,由上至下,每一行的非零权重个数逐渐递减;将重排后的矩阵内的非零元素值进行编码,即对每一个非零元素值标出其数值以及行索引值;将所有的非零权重的数值按列进行存储,即每一列的非零值的数值存到一个地址空间,用标识符将其间隔开来,并标明其行索引指针。
本发明主要着力于对剪枝后的稀疏神经网络运算实现硬件加速。为了提高并行和运算单元的运算均衡性,本发明按非零权重值的个数均匀地分配给每个运算单元,保证每个运算单元处理的非零权重数量尽可能地相等,这样不会造成运算资源的闲置,从而提高整个网络的运算性能。同时,采用稀疏网络的形式存储剪枝后的神经网络,每一列的权重值存储在同一个地址空间,并根据行索引对其进行编码。在保证精度的情况下,提高了运算性能和数据吞吐率。
附图说明
图1为本发明的系统架构图。
图2为本发明FPGA加速器的硬件架构图。
图3为本发明稀疏矩阵向量乘模块的运算架构图。
具体实施方式
以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于本发明的范围。
图1是基于FPGA的用于优化系统运算性能的LSTM神经网络加速器的系统架构图。当原有的LSTM神经网络参数规模超过了FPGA的存储资源限制时,采用剪枝量化等手段,对模型参数进行压缩。压缩后的神经网络模型变得更加稀疏,其权重矩阵变成了稀疏矩阵,为了提高并行和运算单元的运算均衡性,对压缩后的稀疏矩阵按行进行重排,由上至下,每一行的非零权重个数逐渐递减。按非零权重值的个数均匀地分配给每个运算单元,保证每个运算单元处理的非零权重数量尽可能地相等;将重排后的矩阵内的非零元素值进行编码(每一个数标出它的值以及行索引值),将所有的非零权重值按列进行存储,即每一列的非零值存到一个地址空间,用特殊标识符将其间隔开来,并标明其行索引指针。当需要用LSTM神经网络进行前向运算的时候,将运算任务(相关数据量和参数量)通过千兆网络从上位机传到FPGA的硬件端完成。
上位机用过千兆网络将数据和配置信息传输给FPGA,FPGA的网络交互界面模块将数据和配置信息通过存储控制器存入片外存储器DDR上。数据传输完成后,主控制器读取配置信息,进行重构控制。重构配置完成之后,从DDR读取输入数据和参数,传输给运算单元处理。运算单元处理完成后,将结果通过存储控制器传输给片外DDR,上位机再通过千兆网络从DDR中读取处理结果,通过上位机完成系统功能的演示。
如图2所示,LSTM的硬件加速器架构图。当数据经过上位机传输到片上DDR后,软件部分的RISC处理器可以对片上的主控制器进行配置,而主控制器又可以根据不同规模大小的网络模型,对运算单元进行可重构配置和调度。在控制器的指示下,从片外的DDR存储器中读取上位机上传输过来的待运算的数据,送入运算单元进行运算,并在累加器中与先前的部分和进行累加,最终的运算结果在控制器的指示下存入片外DDR中。
根据LSTM的算法流程,可以总结出,其运算单元主要包括三个计算模块:稀疏矩阵向量乘模块(用于权重与激励向量的点乘运算),非线性激活函数模块(得出最终的四个门:输入门、侯选门、遗忘门和输出门)以及按元素相乘计算模块(计算t时刻的状态和t时刻的隐藏层的值)。
如图3所示,为稀疏矩阵向量乘模块的运算架构图。稀疏矩阵向量乘模块由一个非零检测模块和多个计算单元(即PE0、PE1...PEk...PEn)组成,其中每一个计算单元包括激励值存储模块FIFO、权重解码模块、运算模块。输入激励的数据流先经过非零检测模块,检索出非零的激励值和它们的相对索引值,存入到激励存储模块FIFO中,由激励的相对索引值作为权重解压缩模块的输入,从而解锁出需要与该激励值相乘的所有权重值(即权重矩阵的一整列权值),送入到运算模块进行乘加操作。其中运算模块可以通过乘法树和加法树等方式进行优化,提高并行度和吞吐率。稀疏矩阵向量乘模块的运算步骤如下:
(1)LSTM控制器从DDR中读取所需要激励,将其输入到非零检测模块,对激励值进行判定,如果其不等于0的且有效信号为高则写使能信号拉高,否则为低。对有效信号进行计数,获得的是激励信号在原始向量中的索引值。当写使能拉高时,将非零激励值以及其对应的索引值一起写入到相应的FIFO中。
(2)将非零检测模块检测到的非零值的地址索引输入到权重解码模块,读取该索引对应下的整列权重值。其中的编码权重包含了两个部分(权值和权重在该列中的行索引)。输出的有效值(O_valid)和读使能信号(rd_en)有关。
(3)运算模块将激励值与对应索引下的一整列的每一个权重值通过乘法树分别进行相乘,根据权重的行索引,从对应地址下的BRAM中,读取部分和,与之前的乘法结果进行累加,将结果存放至BRAM中的同一个地址内。
Claims (3)
1.一种LSTM神经网络的FPGA加速器,其特征在于,包括数据分发单元、运算单元、控制单元和存储单元;
所述运算单元包括:稀疏矩阵向量乘模块,用于权重与激励向量的点乘运算;非线性激活函数模块,用于获得最终的输入门、侯选门、遗忘门和输出门;以及按元素乘加计算模块,用于计算t时刻的状态和t时刻的隐藏层的值;
所述存储单元用于缓存输入激励值、神经网络权重参数值、LSTM神经网络当前时刻状态值以及当前时刻的输出值;
所述控制单元发出控制信号给数据分发单元,所述数据分发单元从存储单元中读取输入激励值和神经网络权重参数,并输入到运算单元进行运算。
2.根据权利要求1所述的一种LSTM神经网络的FPGA加速器,其特征在于,稀疏矩阵向量乘模块包括非零检测模块和多个计算单元,每一个计算单元包括激励值存储模块、权重解码模块和运算模块;所述非零检测模块用于检索激励数据的非零激励值和相对索引值;所述激励值存储模块用于存储非零激励值和相对索引值;所述权重解码模块用于根据激励数据的相对索引值进行权重的寻址,找出相对应的整列权重值;所述运算模块用于对非零激励值和整列权重值进行乘加运算。
3.如权利要求1所述一种LSTM神经网络的FPGA加速器的加速方法,其特征在于,具体步骤如下:
采用剪枝量化的方式对LSTM神经网络模型进行压缩,使得神经网络模型的权重矩阵稀疏化;对压缩后的稀疏矩阵按行进行重排,由上至下,每一行的非零权重个数逐渐递减;将重排后的矩阵内的非零元素值进行编码,即对每一个非零元素值标出其数值以及行索引值;将所有的非零权重的数值按列进行存储,即每一列的非零值的数值存到一个地址空间,用标识符将其间隔开来,并标明其行索引指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910359395.7A CN110110851B (zh) | 2019-04-30 | 2019-04-30 | 一种lstm神经网络的fpga加速器及其加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910359395.7A CN110110851B (zh) | 2019-04-30 | 2019-04-30 | 一种lstm神经网络的fpga加速器及其加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110110851A CN110110851A (zh) | 2019-08-09 |
CN110110851B true CN110110851B (zh) | 2023-03-24 |
Family
ID=67487708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910359395.7A Active CN110110851B (zh) | 2019-04-30 | 2019-04-30 | 一种lstm神经网络的fpga加速器及其加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110110851B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598175B (zh) * | 2019-09-17 | 2021-01-01 | 西安邮电大学 | 一种基于图计算加速器的稀疏矩阵列向量比较装置 |
CN110738310B (zh) * | 2019-10-08 | 2022-02-01 | 清华大学 | 一种稀疏神经网络加速器及其实现方法 |
CN110826710B (zh) * | 2019-10-18 | 2021-04-23 | 南京大学 | 基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法 |
CN110889259B (zh) * | 2019-11-06 | 2021-07-09 | 北京中科胜芯科技有限公司 | 针对排列的块对角权重矩阵的稀疏矩阵向量乘法计算单元 |
CN111008698B (zh) * | 2019-11-23 | 2023-05-02 | 复旦大学 | 用于混合压缩循环神经网络的稀疏矩阵乘法加速器 |
CN111062472B (zh) * | 2019-12-11 | 2023-05-12 | 浙江大学 | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 |
CN111445013B (zh) * | 2020-04-28 | 2023-04-25 | 南京大学 | 一种针对卷积神经网络的非零探测器及其方法 |
CN111898752A (zh) * | 2020-08-03 | 2020-11-06 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
CN111985626B (zh) * | 2020-09-25 | 2022-06-07 | 苏州浪潮智能科技有限公司 | 一种加速rnn网络的系统、方法及存储介质 |
CN111931938B (zh) * | 2020-10-19 | 2020-12-22 | 南京风兴科技有限公司 | 基于结构化稀疏的循环神经网络推理运算的加速系统及方法 |
CN112712173A (zh) * | 2020-12-31 | 2021-04-27 | 北京清微智能科技有限公司 | 基于mac乘加阵列的稀疏化运算数据的获取方法及系统 |
CN113313247B (zh) * | 2021-02-05 | 2023-04-07 | 中国科学院计算技术研究所 | 基于数据流架构的稀疏神经网络的运算方法 |
KR20220116656A (ko) * | 2021-02-15 | 2022-08-23 | 삼성전자주식회사 | 뉴럴 네트워크 기반 추론 방법 및 장치 |
CN112906887B (zh) * | 2021-02-20 | 2023-03-24 | 上海大学 | 稀疏gru神经网络加速的实现方法和装置 |
WO2022206193A1 (zh) * | 2021-04-02 | 2022-10-06 | 华为技术有限公司 | 脉冲神经网络电路和基于脉冲神经网络的计算方法 |
CN113112002A (zh) * | 2021-04-06 | 2021-07-13 | 济南大学 | 一种基于fpga轻量级卷积加速器的设计方法 |
CN113191494B (zh) * | 2021-05-24 | 2022-10-04 | 南京航空航天大学 | 一种基于fpga的高效lstm加速器 |
CN113222133B (zh) * | 2021-05-24 | 2023-04-18 | 南京航空航天大学 | 一种基于fpga的压缩lstm加速器及加速方法 |
CN113486298B (zh) * | 2021-06-28 | 2023-10-17 | 南京大学 | 基于Transformer神经网络的模型压缩方法、矩阵乘法模块 |
CN113722668B (zh) * | 2021-07-22 | 2023-10-31 | 平头哥(上海)半导体技术有限公司 | 处理单元、相关装置和张量运算方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691996B2 (en) * | 2016-12-15 | 2020-06-23 | Beijing Deephi Intelligent Technology Co., Ltd. | Hardware accelerator for compressed LSTM |
CN108665063B (zh) * | 2018-05-18 | 2022-03-18 | 南京大学 | 用于bnn硬件加速器的双向并行处理卷积加速系统 |
CN109472350B (zh) * | 2018-10-30 | 2021-11-16 | 南京大学 | 一种基于块循环稀疏矩阵的神经网络加速系统 |
-
2019
- 2019-04-30 CN CN201910359395.7A patent/CN110110851B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110110851A (zh) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110110851B (zh) | 一种lstm神经网络的fpga加速器及其加速方法 | |
Cao et al. | Efficient and effective sparse LSTM on FPGA with bank-balanced sparsity | |
CN109328361B (zh) | 用于深度神经网络的加速器 | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
Park et al. | Weighted-entropy-based quantization for deep neural networks | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
US20180157969A1 (en) | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
WO2019069304A1 (en) | SYSTEM AND METHOD FOR COMPACT AND EFFICIENT PARCIMONIOUS NEURON NETWORKS | |
CN109472350A (zh) | 一种基于块循环稀疏矩阵的神经网络加速系统 | |
CN106502964B (zh) | 一种基于Spark的极限学习机并行化计算方法 | |
CN109783412A (zh) | 一种深度强化学习加速训练的方法 | |
CN114127740A (zh) | 人工智能模型的分布式训练中的数据并行性 | |
CN103229180A (zh) | 利用优化地球模型表示进行计算的系统和方法 | |
CN110928576A (zh) | 一种卷积神经网络的卷积处理方法、装置及存储介质 | |
CN115437795B (zh) | 一种异构gpu集群负载感知的显存重计算优化方法及系统 | |
CN101980182A (zh) | 基于矩阵运算的并行计算方法 | |
EP4128066A1 (en) | Feature reordering based on sparsity for improved memory compression transfers during machine learning jobs | |
CN113537465A (zh) | Lstm模型优化方法、加速器、装置及介质 | |
Hackel et al. | Inference, learning and attention mechanisms that exploit and preserve sparsity in CNNs | |
Li et al. | Using feature entropy to guide filter pruning for efficient convolutional networks | |
JP7160441B2 (ja) | 情報処理装置及び制御方法 | |
CN112905954A (zh) | 一种利用fpga bram的cnn模型卷积运算加速计算方法 | |
CN108664368B (zh) | 处理器性能指标评估方法及设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |