CN112906887A - 稀疏gru神经网络加速的实现方法和装置 - Google Patents

稀疏gru神经网络加速的实现方法和装置 Download PDF

Info

Publication number
CN112906887A
CN112906887A CN202110195253.9A CN202110195253A CN112906887A CN 112906887 A CN112906887 A CN 112906887A CN 202110195253 A CN202110195253 A CN 202110195253A CN 112906887 A CN112906887 A CN 112906887A
Authority
CN
China
Prior art keywords
sparse
module
reset
neural network
calculation
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.)
Granted
Application number
CN202110195253.9A
Other languages
English (en)
Other versions
CN112906887B (zh
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.)
University of Shanghai for Science and Technology
Original Assignee
University of Shanghai for Science and Technology
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 University of Shanghai for Science and Technology filed Critical University of Shanghai for Science and Technology
Priority to CN202110195253.9A priority Critical patent/CN112906887B/zh
Publication of CN112906887A publication Critical patent/CN112906887A/zh
Application granted granted Critical
Publication of CN112906887B publication Critical patent/CN112906887B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

本发明提供了稀疏GRU神经网络加速的实现方法和装置,其中方法包括以下步骤:S1、使用CPU或GPU训练GRU神经网络模型,并对训练后的模型参数进行剪枝和量化;使用三元组方法存储稀疏的参数矩阵,并对模型的输入进行量化;S2、使用buffer将存储模型参数的三元组和量化后的输入传输至FPGA的外部存储器中;S3、在FPGA中实现稀疏GRU神经网络的计算,并将最终结果传输至所述外部存储器中。本稀疏GRU神经网络加速的实现方法和装置能够提高计算效率,减少了输入传输的时间和数据传输的次数,从而降低功耗和延时。

Description

稀疏GRU神经网络加速的实现方法和装置
技术领域
本发明涉及神经网络技术领域,尤其涉及稀疏GRU神经网络加速的实现方法和装置。
背景技术
近年来,深度学习的崛起不断推动着人工智能的发展。而深度神经网络作为深度学习的重要工具,其通过增加模型的层数和更多的训练数据量来保证模型的拟合能力,带来的是模型权重参数和计算量的爆炸式增长。为了提升神经网络的性能,常采用异构计算方案。目前大部分研究者都使用GPU来加速深度神经网络,图形处理器(GPU)被用于计算密集任务,具有高带宽、高并行性的特点,但其具有较高的功耗,一块高性能的GPU芯片的功耗可达300W以上。ASIC也是异构加速器的一种。ASIC是一种为专用目的设计、面向特定用户需求的定制芯片,具有性能更强、体积更小和可靠性更高等优点,广泛用于工业生产。但由于其属于定置电路,因此具有较低的灵活性,并不适合加速不断发展、更新的深度神经网络。FPGA(Field-Programmable Gate Array,现场可编程门阵列)属于专用集成电路中的一种,采用硬件的方式来实现逻辑和算法,可以针对需求设计多种计算部件来同时实现数据并行和流水线并行。
循环神经网络(RNN)是一种深学习应用常用网络。为解决循环神经网络带来的梯度爆炸问题,研究者提出了RNN的变体长短时记忆网络(LSTM)以及从LSTM改进的门控循环单元网络(GRU)。GRU通过简化LSTM循环单元的结构减少了计算所需的参数,从而提高了网络整体性能,被广泛应用于机器翻译、文本分类和文本生成等实际应用中。通常研究者使用GPU来加速GRU神经网络,但由于GRU神经网络具有时序依赖的特性,很难达到高度并行。现有的大多数FPGA神经网络加速器都是针对卷积神经网络或全连接神经网络而设计的,对GRU神经网络支持较少。同时大多数深度神经网络均具有参数多、计算量大的特点,如何利用资源有限的FPGA进行加速仍是难点。
发明内容
有鉴于此,本发明要解决的技术问题是提供稀疏GRU神经网络加速的实现方法和装置,能够基于FPGA实现稀疏GRU神经网络的加速。
本发明的技术方案是这样实现的:
一种稀疏GRU神经网络加速的实现方法,包括以下步骤:
S1、使用CPU或GPU训练GRU神经网络模型,并对训练后的模型参数进行剪枝和量化;使用三元组方法存储稀疏的参数矩阵,并对模型的输入进行量化;
S2、使用buffer将存储模型参数的三元组和量化后的输入传输至FPGA的外部存储器中;
S3、在FPGA中实现稀疏GRU神经网络的计算,并将最终结果传输至所述外部存储器中。
优选的,所述使用三元组方法存储稀疏的参数矩阵具体包括:
将参数矩阵分为n*m块,以块为单位进行排序;在进行稀疏矩阵压缩时,保持分块的顺序,序号靠前的块中的元素存储在序号靠后的块中的元素之前。
优选的,所述在FPGA中实现稀疏GRU神经网络的计算具体包括:
通过加速器实现稀疏GRU神经网络的计算,所述加速器包括输入读取模块、模型参数解码模块、上一时刻状态传递模块、计算模块和输出写回模块。
优选的,所述输入读写模块包括输入读写单元,用于从FPGA的外部存储器中读取GRU神经网络的输入;
所述模型参数解码模块包括重置更新门解码计算单元和候选值解码计算单元,用于将稀疏GRU网络的模型参数即三元组解码并向量化,依次发送给计算模块;
所述上一时刻状态传递模块包括状态传递单元,用于在初始时刻h0生成初始状态值和在ht时刻(t不为0)接收的上一时刻的状态值,对其向量化后发送给计算模块;
所述计算模块,包括当前状态值的计算,并将将最终状态值发送输出写回模块的输出写回单元;
所述输出写回模块,包括所述输出写回单元,用于获取最终时刻的输出并写回FPGA的外部存储器。
优选的,所述重置更新门解码计算单元解码重置门的权重和给更新门的权重,并将其向量化,依次发送给计算模块;在对上述参数进行向量化的过程中,将相同输入计算的重置门权重参数和更新门权重参数放置于同一结构体中;
候选值解码计算单元解码候选值的权重,并将其向量化,依次发送给计算模块。
优选的,所述重置更新门解码计算单元和候选值解码计算单元根据稀疏矩阵后的三元组进行解码;遍历权重矩阵结合当前三元组的行和列判断该非0元素是否存在当前矩阵中,若存在设为三元组的值,否则设为0;分块进行发送。
优选的,所述状态传递单元在初始时刻h0生成全部值均为0的初始状态值,在ht时刻(t不为0)接收由计算模块发送的上一时刻状态值,即ht-1时刻计算出的状态值,对其向量化后发送给计算模块。
优选的,所述计算模块包括重置更新门计算单元、重置状态值计算单元、候选值计算单元和当前时刻计算单元,
所述重置更新门计算单元获取从输入读取模块发送的向量化输入数据、从模型参数解码模块发送来的重置更新门结构体数据和从上一时刻状态模块发送来的状态值,以流水线的方式进行重置门和更新门的计算,并通过激活函数非线性化,将重置门计算值和更新门计算值分别发送给重置状态值计算单元和当前时刻计算单元;
所述重置状态值计算单元获取重置门计算单元的重置门计算值和来自于上一时刻状态传递模块的上一时刻状态值,以流水线的方式依次进行计算重置后的上一时刻状态,并依次发送给候选值计算单元;
所述候选值计算单元获取从输入读取模块发送的向量化输入数据、从模型参数解码模块发送来的重置更新门结构体数据和从重置状态值计算单元发送的重置后的上一时刻状态值,以流水线的方式依次进行候选值计算和激活函数计算,得到候选值发送给当前时刻计算单元;
所述当前时刻计算单元获取更新门计算单元的更新值、重置状态值计算单元的重置状态值和候选值计算单元的候选值,进行当前时刻计算以得到当前状态值;如果当前时间不为最终时刻,将当前状态值通过channel发送给上一时刻状态传递模块的状态传递单元,启动下一时刻的计算;否则将最终状态值发送输出写回模块的输出写回单元。
本发明实施例还提出了一种稀疏GRU神经网络加速的实现装置,包括:
训练子装置,用于使用CPU或GPU训练GRU神经网络模型,并对训练后的模型参数进行剪枝和量化;使用三元组方法存储稀疏的参数矩阵,并对模型的输入进行量化;
传输子装置,用于使用buffer将存储模型参数的三元组和量化后的输入传输至FPGA的外部存储器中;
计算子装置,用于在FPGA中实现稀疏GRU神经网络的计算,并将最终结果传输至所述外部存储器中。
本发明提出的稀疏GRU神经网络加速的实现方法和装置,对GRU神经网络的权重进行剪枝和量化,对于量化和剪枝后的稀疏权重矩阵通过三元组的方法进行压缩存储。压缩GRU神经网络能减少权重参数所占用的内存,避免FPGA片上内存不足的情况出现。量化将权重参数从浮点数转换为定点小数,不仅减少了FPGA的内存消耗也减少了DSP的消耗;将神经网络模型参数存储于FPGA的存储器中,能够有效的减少主机端(CPU)和设备端(FPGA)数据传输的次数,从而减少延时,实现稀疏GRU神经网络的加速。
附图说明
图1为本发明实施例提出的稀疏GRU神经网络加速的实现方法流程图;
图2为本发明实施例提出的稀疏GRU神经网络加速的实现方法中三元组稀疏矩阵压缩示意图;
图3为本发明实施例提出的稀疏GRU神经网络加速的实现方法中矩阵方块以及序号图;
图4为本发明实施例提出的稀疏GRU神经网络加速的实现方法中GRU神经网络加速器架构图
图5为本发明实施例提出的稀疏GRU神经网络加速的实现装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提出了一种稀疏GRU神经网络加速的实现方法,包括以下步骤:
S1、使用CPU或GPU训练GRU神经网络模型,并对训练后的模型参数进行剪枝和量化;使用三元组方法存储稀疏的参数矩阵,并对模型的输入进行量化;
S2、使用buffer将存储模型参数的三元组和量化后的输入传输至FPGA的外部存储器中;
S3、在FPGA中实现稀疏GRU神经网络的计算,并将最终结果传输至所述外部存储器中。
可见,本发明提出的稀疏GRU神经网络加速的实现方法,对GRU神经网络的权重进行剪枝和量化,对于量化和剪枝后的稀疏权重矩阵通过三元组的方法进行压缩存储。压缩GRU神经网络能减少权重参数所占用的内存,避免FPGA片上内存不足的情况出现。量化将权重参数从浮点数转换为定点小数,不仅减少了FPGA的内存消耗也减少了DSP的消耗;将神经网络模型参数存储于FPGA的存储器中,能够有效的减少主机端(CPU)和设备端(FPGA)数据传输的次数,从而减少延时,实现稀疏GRU神经网络的加速。
在本发明的一个优选实施例中,使用三元组方法存储稀疏的参数矩阵具体包括:
将参数矩阵分为n*m块,以块为单位进行排序;在进行稀疏矩阵压缩时,保持分块的顺序,序号靠前的块中的元素存储在序号靠后的块中的元素之前。
如图2所示,三元组方法存储稀疏的参数矩阵,即使用三个数组分别存储模型参数的行、列和值,最后对模型的输入进行量化。
由于在FPGA上计算是通过分块的方式计算。分块示意如图3所示,一个矩阵被分为n*m块,以块为单位进行排序。在进行稀疏矩阵压缩的时候,需要保持分块的顺序,即序号靠前的块中的元素一定存储在序号靠后的块中的元素之前。可减少在FPGA上进行解码时的延时。
在本发明的一个优选实施例中,所述在FPGA中实现稀疏GRU神经网络的计算具体包括:
通过加速器实现稀疏GRU神经网络的计算,所述加速器包括输入读取模块、模型参数解码模块、上一时刻状态传递模块、计算模块和输出写回模块。
在FPGA上实现稀疏GRU神经网络的推理过程,设计多个模块,通过kernel设计每个模块的一个或多个计算单元,各个计算单元并行启动,根据时序性依赖进行计算。通过channel实现kernel之间的数据传输,最后结果写回FPGA的外部存储器中。
设计加速器模块如图4所示,共有五个模块,分别是输入读取模块、模型参数解码模块、上一时刻状态传递模块、计算模块和输出写回模块。每个模块具有不同的功能。
在本发明的一个优选实施例中,所述输入读写模块包括输入读写单元,用于从FPGA的外部存储器中读取GRU神经网络的输入。
所述模型参数解码模块包括重置更新门解码计算单元和候选值解码计算单元,用于将稀疏GRU网络的模型参数即三元组解码并向量化,依次发送给计算模块;
模型参数解码模块的功能是将稀疏GRU网络的模型参数即三元组解码并向量化,依次发送给下一计算单元。其包括两个计算单元:重置更新门解码计算单元和候选值解码计算单元。重置更新门解码计算单元解码重置门的权重和给更新门的权重,并将其向量化,依次发送给计算模块。在对上述参数进行向量化的过程中,将相同输入计算的重置门权重参数和更新门权重参数放置于同一结构体中。候选值解码计算单元解码候选值的权重,并将其向量化,依次发送给计算模块。
根据稀疏矩阵后的三元组进行解码。如图3所示的分块进行传输权重矩阵的时候,每个块在矩阵中有它的左上、左下、右上和右下四个顶点坐标,遍历权重矩阵结合当前三元组的行和列即可判断该非0元素是否存在当前矩阵中,若存在设为三元组的值,否则设为0。分块进行发送。
所述上一时刻状态传递模块包括状态传递单元,用于在初始时刻h0生成初始状态值和在ht时刻(t不为0)接收的上一时刻的状态值,对其向量化后发送给计算模块;
上一时刻状态传递模块的主要功能是在在初始时刻h0生成初始状态值和在ht时刻(t不为0)接收的上一时刻的状态值。上一时刻状态传递模块包括状态传递单元,其在初始时刻h0生成全部值均为0的初始状态值,在ht时刻(t不为0)接收由计算模块发送的上一时刻状态值,即ht-1时刻计算出的状态值,对其向量化后发送给计算模块。
计算模块,包括当前状态值的计算,并将将最终状态值发送输出写回模块的输出写回单元;
计算模块包括多个计算单元:重置更新门计算单元、重置状态值计算单元、候选值计算单元和当前时刻计算单元。重置更新门计算单元获取从输入读取模块发送的向量化输入数据、从模型参数解码模块发送来的重置更新门结构体数据和从上一时刻状态模块发送来的状态值,以流水线的方式进行重置门和更新门的计算,并通过激活函数非线性化,将重置门计算值和更新门计算值分别发送给重置状态值计算单元和当前时刻计算单元。
重置状态值计算单元获取重置门计算单元的重置门计算值和来自于上一时刻状态传递模块的上一时刻状态值,以流水线的方式依次进行计算重置后的上一时刻状态,并依次发送给候选值计算单元。
候选值计算单元获取从输入读取模块发送的向量化输入数据、从模型参数解码模块发送来的重置更新门结构体数据和从重置状态值计算单元发送的重置后的上一时刻状态值,以流水线的方式依次进行候选值计算和激活函数计算,得到候选值发送给当前时刻计算单元;
当前时刻计算单元来自于更新门计算单元的更新值、重置状态值计算单元的重置状态值和候选值计算单元的候选值,进行当前时刻计算以得到当前状态值;如果当前时间不为最终时刻,将当前状态值通过channel发送给上一时刻状态传递模块的状态传递单元,启动下一时刻的计算。否则将最终状态值发送输出写回模块的输出写回单元。
所述输出写回模块,包括所述输出写回单元,用于获取最终时刻的输出并写回FPGA的外部存储器。
输出写回模块的功能是获取最终时刻的输出并写回FPGA的外部存储器。输出写回模块包括最终输出单元,其获取当前时刻计算单元状态值,即最终时刻输出,并将其存储于FPGA的外部存储器中。
将最终输出从FPGA的外部存储器传输至主机端。
GRU计算过程如下:
rt=σ(Wr·[ht-1,xt]+br)
zt=σ(Wz·[ht-1,xt]+bz)
Figure BDA0002945298530000091
Figure BDA0002945298530000092
支持多种机器学习平台的输入,如tensorflow、pytorch和caffe等。此方法实现了GRU神经网络的计算过程。
如图5所示,本发明实施例还提出了一种稀疏GRU神经网络加速的实现装置,包括:
训练子装置11,用于使用CPU或GPU训练GRU神经网络模型,并对训练后的模型参数进行剪枝和量化;使用三元组方法存储稀疏的参数矩阵,并对模型的输入进行量化;
传输子装置12,用于使用buffer将存储模型参数的三元组和量化后的输入传输至FPGA的外部存储器中;
计算子装置13,用于在FPGA中实现稀疏GRU神经网络的计算,并将最终结果传输至所述外部存储器中,并将最终结果从所述外部存储器传输至所述主机端。
本发明提出的稀疏GRU神经网络加速的实现方法和装置,由于FPGA资源(内存、DSP和逻辑单元等)有限,对GRU神经网络的权重进行剪枝和量化,对于量化和剪枝后的稀疏权重矩阵通过三元组的方法进行压缩存储。压缩GRU神经网络能减少权重参数所占用的内存,避免FPGA片上内存不足的情况出现。量化将权重参数从浮点数转换为定点小数,不仅减少了FPGA的内存消耗也减少了DSP的消耗。
将神经网络模型参数存储于FPGA的存储器中,能够有效的减少主机端(CPU)和设备端(FPGA)数据传输的次数,从而减少数据传输的延时;GRU神经网络大部分的时间都消耗于矩阵相乘、加法操作和数据传输,可通过循环展开和权重合并等操作提高并行程度,从而提高计算效率;通过将重置门和重置门的权重参数保存在同一结构体,只需要获得一次输入,减少了输入传输的时间,降低了延时;通过channel可将各计算单元的计算结果保存在FPGA内部,无需与外部存储器通信,通过减少数据传输的次数从而降低功耗和延时。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (9)

1.一种稀疏GRU神经网络加速的实现方法,其特征在于,包括以下步骤:
S1、使用CPU或GPU训练GRU神经网络模型,并对训练后的模型参数进行剪枝和量化;使用三元组方法存储稀疏的参数矩阵,并对模型的输入进行量化;
S2、使用buffer将存储模型参数的三元组和量化后的输入传输至FPGA的外部存储器中;
S3、在FPGA中实现稀疏GRU神经网络的计算,并将最终结果传输至所述外部存储器中。
2.如权利要求1所述的稀疏GRU神经网络加速的实现方法,其特征在于,所述使用三元组方法存储稀疏的参数矩阵具体包括:
将参数矩阵分为n*m块,以块为单位进行排序;在进行稀疏矩阵压缩时,保持分块的顺序,序号靠前的块中的元素存储在序号靠后的块中的元素之前。
3.如权利要求1所述的稀疏GRU神经网络加速的实现方法,其特征在于,
所述在FPGA中实现稀疏GRU神经网络的计算具体包括:
通过加速器实现稀疏GRU神经网络的计算,所述加速器包括输入读取模块、模型参数解码模块、上一时刻状态传递模块、计算模块和输出写回模块。
4.如权利要求3所述的稀疏GRU神经网络加速的实现方法,其特征在于,所述输入读写模块包括输入读写单元,用于从FPGA的外部存储器中读取GRU神经网络的输入;
所述模型参数解码模块包括重置更新门解码计算单元和候选值解码计算单元,用于将稀疏GRU网络的模型参数即三元组解码并向量化,依次发送给计算模块;
所述上一时刻状态传递模块包括状态传递单元,用于在初始时刻h0生成初始状态值和在ht时刻(t不为0)接收的上一时刻的状态值,对其向量化后发送给计算模块;
所述计算模块,包括当前状态值的计算,并将将最终状态值发送输出写回模块的输出写回单元;
所述输出写回模块,包括所述输出写回单元,用于获取最终时刻的输出并写回FPGA的外部存储器。
5.如权利要求4所述的稀疏GRU神经网络加速的实现方法,其特征在于,所述重置更新门解码计算单元解码重置门的权重和给更新门的权重,并将其向量化,依次发送给计算模块;在对上述参数进行向量化的过程中,将相同输入计算的重置门权重参数和更新门权重参数放置于同一结构体中;
候选值解码计算单元解码候选值的权重,并将其向量化,依次发送给计算模块。
6.如权利要求5所述的稀疏GRU神经网络加速的实现方法,其特征在于,所述重置更新门解码计算单元和候选值解码计算单元根据稀疏矩阵后的三元组进行解码;遍历权重矩阵结合当前三元组的行和列判断该非0元素是否存在当前矩阵中,若存在设为三元组的值,否则设为0;分块进行发送。
7.如权利要求4所述的稀疏GRU神经网络加速的实现方法,其特征在于,所述状态传递单元在初始时刻h0生成全部值均为0的初始状态值,在ht时刻(t不为0)接收由计算模块发送的上一时刻状态值,即ht-1时刻计算出的状态值,对其向量化后发送给计算模块。
8.如权利要求4所述的稀疏GRU神经网络加速的实现方法,其特征在于,所述计算模块包括重置更新门计算单元、重置状态值计算单元、候选值计算单元和当前时刻计算单元,
所述重置更新门计算单元获取从输入读取模块发送的向量化输入数据、从模型参数解码模块发送来的重置更新门结构体数据和从上一时刻状态模块发送来的状态值,以流水线的方式进行重置门和更新门的计算,并通过激活函数非线性化,将重置门计算值和更新门计算值分别发送给重置状态值计算单元和当前时刻计算单元;
所述重置状态值计算单元获取重置门计算单元的重置门计算值和来自于上一时刻状态传递模块的上一时刻状态值,以流水线的方式依次进行计算重置后的上一时刻状态,并依次发送给候选值计算单元;
所述候选值计算单元获取从输入读取模块发送的向量化输入数据、从模型参数解码模块发送来的重置更新门结构体数据和从重置状态值计算单元发送的重置后的上一时刻状态值,以流水线的方式依次进行候选值计算和激活函数计算,得到候选值发送给当前时刻计算单元;
所述当前时刻计算单元获取更新门计算单元的更新值、重置状态值计算单元的重置状态值和候选值计算单元的候选值,进行当前时刻计算以得到当前状态值;如果当前时间不为最终时刻,将当前状态值通过channel发送给上一时刻状态传递模块的状态传递单元,启动下一时刻的计算;否则将最终状态值发送输出写回模块的输出写回单元。
9.一种稀疏GRU神经网络加速的实现装置,其特征在于,包括:
训练子装置,用于使用CPU或GPU训练GRU神经网络模型,并对训练后的模型参数进行剪枝和量化;使用三元组方法存储稀疏的参数矩阵,并对模型的输入进行量化;
传输子装置,用于使用buffer将存储模型参数的三元组和量化后的输入传输至FPGA的外部存储器中;
计算子装置,用于在FPGA中实现稀疏GRU神经网络的计算,并将最终结果传输至所述外部存储器中。
CN202110195253.9A 2021-02-20 2021-02-20 稀疏gru神经网络加速的实现方法和装置 Active CN112906887B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110195253.9A CN112906887B (zh) 2021-02-20 2021-02-20 稀疏gru神经网络加速的实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110195253.9A CN112906887B (zh) 2021-02-20 2021-02-20 稀疏gru神经网络加速的实现方法和装置

Publications (2)

Publication Number Publication Date
CN112906887A true CN112906887A (zh) 2021-06-04
CN112906887B CN112906887B (zh) 2023-03-24

Family

ID=76124265

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110195253.9A Active CN112906887B (zh) 2021-02-20 2021-02-20 稀疏gru神经网络加速的实现方法和装置

Country Status (1)

Country Link
CN (1) CN112906887B (zh)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229967A (zh) * 2016-08-22 2017-10-03 北京深鉴智能科技有限公司 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法
US20180046901A1 (en) * 2016-08-12 2018-02-15 Beijing Deephi Intelligence Technology Co., Ltd. Hardware accelerator for compressed gru on fpga
CN107704916A (zh) * 2016-08-12 2018-02-16 北京深鉴科技有限公司 一种基于fpga实现rnn神经网络的硬件加速器及方法
CN108280514A (zh) * 2018-01-05 2018-07-13 中国科学技术大学 基于fpga的稀疏神经网络加速系统和设计方法
CN108376285A (zh) * 2018-03-23 2018-08-07 中国科学院计算技术研究所 一种面向多变异体lstm神经网络加速器及数据处理方法
CN108621159A (zh) * 2018-04-28 2018-10-09 首都师范大学 一种基于深度学习的机器人动力学建模方法
CN108932548A (zh) * 2018-05-22 2018-12-04 中国科学技术大学苏州研究院 一种基于fpga的稀疏度神经网络加速系统
CN109711540A (zh) * 2018-12-20 2019-05-03 北京中科寒武纪科技有限公司 一种计算装置及板卡
CN110110851A (zh) * 2019-04-30 2019-08-09 南京大学 一种lstm神经网络的fpga加速器及其加速方法
CN110352434A (zh) * 2017-02-28 2019-10-18 微软技术许可有限责任公司 利用模型固定的神经网络处理
US20190325296A1 (en) * 2018-04-21 2019-10-24 Microsoft Technology Licensing, Llc Neural network processor based on application specific synthesis specialization parameters
US20190340492A1 (en) * 2018-05-04 2019-11-07 Microsoft Technology Licensing, Llc Design flow for quantized neural networks
CN111105341A (zh) * 2019-12-16 2020-05-05 上海大学 一种低功耗高运算性能求解计算流体动力学的框架方法
CN111191772A (zh) * 2020-01-02 2020-05-22 中国航空工业集团公司西安航空计算技术研究所 一种面向嵌入式环境的智能计算通用加速系统及其构建方法
CN111933123A (zh) * 2020-09-15 2020-11-13 成都启英泰伦科技有限公司 一种基于门控循环单元的声学建模方法
CN112348174A (zh) * 2020-11-26 2021-02-09 中国人民解放军国防科技大学 一种可容错的循环神经网络架构搜索方法及系统

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180046901A1 (en) * 2016-08-12 2018-02-15 Beijing Deephi Intelligence Technology Co., Ltd. Hardware accelerator for compressed gru on fpga
CN107704916A (zh) * 2016-08-12 2018-02-16 北京深鉴科技有限公司 一种基于fpga实现rnn神经网络的硬件加速器及方法
CN107229967A (zh) * 2016-08-22 2017-10-03 北京深鉴智能科技有限公司 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法
CN110352434A (zh) * 2017-02-28 2019-10-18 微软技术许可有限责任公司 利用模型固定的神经网络处理
CN108280514A (zh) * 2018-01-05 2018-07-13 中国科学技术大学 基于fpga的稀疏神经网络加速系统和设计方法
CN108376285A (zh) * 2018-03-23 2018-08-07 中国科学院计算技术研究所 一种面向多变异体lstm神经网络加速器及数据处理方法
US20190325296A1 (en) * 2018-04-21 2019-10-24 Microsoft Technology Licensing, Llc Neural network processor based on application specific synthesis specialization parameters
CN108621159A (zh) * 2018-04-28 2018-10-09 首都师范大学 一种基于深度学习的机器人动力学建模方法
US20190340492A1 (en) * 2018-05-04 2019-11-07 Microsoft Technology Licensing, Llc Design flow for quantized neural networks
CN108932548A (zh) * 2018-05-22 2018-12-04 中国科学技术大学苏州研究院 一种基于fpga的稀疏度神经网络加速系统
CN109711540A (zh) * 2018-12-20 2019-05-03 北京中科寒武纪科技有限公司 一种计算装置及板卡
CN110110851A (zh) * 2019-04-30 2019-08-09 南京大学 一种lstm神经网络的fpga加速器及其加速方法
CN111105341A (zh) * 2019-12-16 2020-05-05 上海大学 一种低功耗高运算性能求解计算流体动力学的框架方法
CN111191772A (zh) * 2020-01-02 2020-05-22 中国航空工业集团公司西安航空计算技术研究所 一种面向嵌入式环境的智能计算通用加速系统及其构建方法
CN111933123A (zh) * 2020-09-15 2020-11-13 成都启英泰伦科技有限公司 一种基于门控循环单元的声学建模方法
CN112348174A (zh) * 2020-11-26 2021-02-09 中国人民解放军国防科技大学 一种可容错的循环神经网络架构搜索方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHANG GAO 等: "DeltaRNN: A Power-effcient Re current Neural Network Accelerator", 《PROCEEDINGS OF THE 2018 ACM/SIGDA INTERNATIONAL SYMPOSIUM ON FIELD-PROGRAMMABLE GATE ARRAYS》 *
WEIAN YAN 等: "FPGAN: An FPGA Accelerator for Graph Attention Networks With Software and Hardware Co-Optimization", 《IEEE ACCESS》 *
高琛 等: "基于 FPGA 的递归神经网络加速器的研究进展", 《网络与信息安全学报》 *

Also Published As

Publication number Publication date
CN112906887B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
CN110390385B (zh) 一种基于bnrp的可配置并行通用卷积神经网络加速器
US20210357736A1 (en) Deep neural network hardware accelerator based on power exponential quantization
Liang et al. FP-BNN: Binarized neural network on FPGA
US20200264876A1 (en) Adjusting activation compression for neural network training
Peng et al. Accelerating transformer-based deep learning models on fpgas using column balanced block pruning
US10936941B2 (en) Efficient data access control device for neural network hardware acceleration system
CN106991477B (zh) 一种人工神经网络压缩编码装置和方法
US11562247B2 (en) Neural network activation compression with non-uniform mantissas
US11816574B2 (en) Structured pruning for machine learning model
US11763156B2 (en) Neural network compression based on bank-balanced sparsity
CN110321997B (zh) 高并行度计算平台、系统及计算实现方法
CN112329910B (zh) 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法
CN113222133B (zh) 一种基于fpga的压缩lstm加速器及加速方法
Chang et al. A mixed-pruning based framework for embedded convolutional neural network acceleration
CN111105007A (zh) 用于目标检测的深度卷积神经网络的压缩加速方法
Shahshahani et al. Memory optimization techniques for fpga based cnn implementations
Xiyuan et al. A Review of FPGA‐Based Custom Computing Architecture for Convolutional Neural Network Inference
Li et al. High-performance convolutional neural network accelerator based on systolic arrays and quantization
CN113313244B (zh) 面向加法网络的近存储神经网络加速器及其加速方法
CN112906887B (zh) 稀疏gru神经网络加速的实现方法和装置
CN115222028A (zh) 基于fpga的一维cnn-lstm加速平台及实现方法
CN112906886B (zh) 结果复用的可重构bnn硬件加速器及图像处理方法
CN114611656A (zh) 神经网络的梯度稀疏方法和梯度稀疏装置
Zhang et al. Thread: Towards fine-grained precision reconfiguration in variable-precision neural network accelerator
US20240232285A9 (en) Method and apparatus for neural network weight block compression in a compute accelerator

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