CN107229967B - 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 - Google Patents

一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 Download PDF

Info

Publication number
CN107229967B
CN107229967B CN201611105597.1A CN201611105597A CN107229967B CN 107229967 B CN107229967 B CN 107229967B CN 201611105597 A CN201611105597 A CN 201611105597A CN 107229967 B CN107229967 B CN 107229967B
Authority
CN
China
Prior art keywords
unit
matrix
data
vector
result
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
Application number
CN201611105597.1A
Other languages
English (en)
Other versions
CN107229967A (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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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
Priority claimed from US15/242,624 external-priority patent/US20180046903A1/en
Priority claimed from US15/242,622 external-priority patent/US10621486B2/en
Priority claimed from US15/242,625 external-priority patent/US20180046895A1/en
Application filed by Xilinx Inc filed Critical Xilinx Inc
Priority to US15/390,744 priority Critical patent/US10810484B2/en
Publication of CN107229967A publication Critical patent/CN107229967A/zh
Application granted granted Critical
Publication of CN107229967B publication Critical patent/CN107229967B/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/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提出一种用于实现稀疏化GRU神经网络的装置,包括:输入接收单元,用于接收多个输入向量,并将多个输入向量分配到多个计算单元;多个计算单元,从所述输入接受单元获取输入向量,读取神经网络权值矩阵数据,将其解码后与输入向量进行矩阵运算,并将矩阵运算结果输出至隐含层状态计算模块;隐含层状态计算模块,从所述计算单元PE获取矩阵运算结果,计算出隐含层状态;控制单元,用于进行全局控制。另一方面,本发明提出一种通过迭代实现稀疏GRU神经网络的方法。

Description

一种基于FPGA实现稀疏化GRU神经网络的硬件加速器及方法
本申请要求于2016年8月22日提交的美国专利申请No.15/242,622、于2016年8月22日提交的美国专利申请No.15/242,624、于2016年8月22日提交的美国专利申请15/242,625的优先权。其全部内容在此参考并入。
发明领域
本发明涉人工智能领域,特别地,本发明涉及一种基于FPGA实现稀疏化GRU神经网络的硬件加速器及方法。
背景技术
RNN简介
循环神经网络(RNN)是一类人工神经网络,其中单元之间的连接形成有向循环。这创建了网络的内部状态,其允许其展现动态的时间行为。RNN可以通过具有循环隐藏状态来处理可变长度序列,其中每个时刻的激活依赖于先前时刻的激活。
传统地,标准RNN以如下方式计算下一步骤的隐藏层:
ht=f(W(hh)ht-1+W(hx)xt)
其中f是平滑的有界函数,例如逻辑S形函数(logistic sigmoid function)或双曲正切函数。W(hh)是状态到状态的循环权重矩阵,W(hx)是输入到隐藏权重矩阵。
输入序列是x=(x1,...,xT)。我们可以将任意长度的序列的概率分解为:
p(x1,...,xT)=p(x1)p(x2|x1)p(x3|x1,x2)…p(xT|x1,...,xT-1)
然后,如图1所示,我们可以训练RNN来对该概率分布建立模型,给定隐藏状态ht,使其预测下一个符号xt+1的概率。其中ht是所有先前符号x1,x2,...xt的函数:
p(xt+1|x1,…,xt)=f(ht)
隐藏层激活通过从t=1到T和从n=2到N重复以下等式来计算:
Figure BDA0001171347300000011
Figure BDA0001171347300000012
其中W项表示权重矩阵(例如Wih n是将输入连接到第n个隐藏层的权重矩阵,Wh 1 h 1是第一隐藏层的循环连接,等等),b项表示偏置向量(例如by是输出偏置向量),H是隐藏层函数。
Figure BDA0001171347300000021
Figure BDA0001171347300000022
给定隐藏序列,输出序列的计算如下:
其中Y是输出层函数。因此,完整网络定义了这样一个函数,由权重矩阵作为参数,从输入历史序列x(1:t)到输出向量yt
图2示出了RNN的基本网络框架,其中上一次隐藏层的输出作为这一次隐藏层的输入,即当前层的输出仅和上一层的隐藏层、当前层的输入有关。
GRU简介
门控循环单元(Gated recurrent unit,GRU)是RNN的一种。GRU可以根据输入信号来记忆或者忘记状态。
GRU的结构如图3所示。
rt=σ(W(r)xt+U(r)ht-1)
其中,重置门rt的计算如下:
更新门的计算与重置门相似,如下:
zt=σ(W(z)xt+U(z)ht-1)
候选激励值
Figure BDA0001171347300000023
的计算和传统RRN相似,如下:
Figure BDA0001171347300000024
如果重置门是一个全部元素都为零的向量,那么丢掉以前的记忆,只保留新信息。
Figure BDA0001171347300000025
GRU在时间t时的激励值是在先激励值和候选激励值之间的线性插值。
神经网络的压缩
近年来,神经网络的规模不断增长,公开的比较先进的神经网络都有数亿个连接,属于计算和访存密集型应用。现有方案这些算法通常是在通用处理器(CPU)或者图形处理器(GPU)上实现。随着晶体管电路逐渐接近极限,摩尔定律也受到了极大的挑战。在神经网络逐渐变大的情况下,模型压缩就变得极为重要。模型压缩将稠密神经网络变成稀疏神经网络,可以有效减少计算量、降低访存量。
稀疏化矩阵的编码:CRS和CCS
如前所述,对于稀疏矩阵的处理,为了减少内存,往往需要对矩阵进行压缩存储,比较经典的存储方法包括:行压缩(Compressed Row Storage CRS)和列压缩存储(Compressed Column Storage CCS)。
为了利用激励函数的稀疏性,可以将编码稀疏权重矩阵W存入压缩列存储(CCS)格式的变量中。
对于W矩阵每列Wj,我们存储一个包含非零权重的向量v,以及等长向量z,向量z用于编码v的相应条目之前零的个数,v和z各自由一个四位数值表示。如果超过15个零出现在一个非零的条目,在向量v中添加一个零。例如,以下列被编码为:
[0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3]
v=[1,2,0,3],z=[2,0,15,2]。
所有列的v和z的都存储在一对大阵列中,其中指针向量p指向每个列的向量的开始。p指针向量中的最后一项指向超过最后一个向量元素,这样pj+1-pj给出了第j列中的非零数(包括填补的零)。
通过压缩列存储格式(CCS format)中列存储稀疏矩阵,使得利用激励函数的稀疏性变得容易。只需要用每个非零激励与其相应列中的所有非零元素相乘。
美国专利US Patent 9317482“UNIVERSAL FPGA/ASIC MATRIX-VECTORMULTIPLICATION ARCHITECTURE”中更详细地披露了如何使用Compressed Sparse Row(CSR)在基于CPU和GPU的方案中,其中也采用Compressed Variable Length Bit Vector(CVBV)format。
稀疏神经网络存储需要编码,计算之前需要解码。但是,现有通用处理器(例如GPU或CPU)并不能从稀疏化技术中获得较好的收益。已公开实验表明模型压缩率较低时,现有通用处理器的加速比有限。
因此,希望专有定制电路(例如FPGA)可以解决上述问题,以使得处理器在较低压缩率下获得更好的加速比。
本发明的目的之一是采用高并发流水线设计来设计GRU专有定制电路,从而能够有效处理稀疏GRU神经网络,从而获得更好的计算效率,更低的处理延时。
发明内容
本发明提供了一种用于实现稀疏化GRU神经网络的装置,包括:输入接收单元,用于接收多个输入向量,并将多个输入向量分配到多个计算单元;多个计算单元,从所述输入接受单元获取输入向量,读取神经网络权值矩阵数据,将其解码后与输入向量进行矩阵运算,并将矩阵运算结果输出至隐含层状态计算模块;隐含层状态计算模块,从所述计算单元PE获取矩阵运算结果,计算出隐含层状态;控制单元,用于进行全局控制。
此外,所述每个计算单元进一步包括:稀疏矩阵读取单元,用于读取所述神经网络的权重矩阵W,其中所述权重矩阵W被用于表示所述神经网络中的权重;运算单元,用于执行所述神经网络的乘法运算和加法运算;运算缓存单元,用于存储从所述运算单元中输出的矩阵运算的中间结果以及最终计算结果,并将矩阵运算中间结果输出至运算单元,并且将矩阵运算最终计算结果输出至数据组合单元。
此外,所述隐含层状态计算模块进一步包括:数据组合单元,用于接收从各个计算单元中的缓存单元输出的矩阵运算的结果,并将其组合成一个完整的运算结果输出至加法器;选择器,从数据组合单元模块和从点乘器接收数据,选择其中之一输入到加法器;Wx缓存单元,接收并存储从数据组合单元中输出的矩阵运算计算结果,再根据控制单元的指令将相应运算结果输出至加法器进行计算;加法器,针对分配到所述多个计算单元的各个输入向量,完成GRU神经网络算法中的向量累加操作;函数单元,与所述加法器连接,用于实现激活函数;点乘器,从数据组合单元和函数单元接收数据,进行点乘运算,并将运算结果输出至选择器。
本发明还提供了一种实现稀疏GRU神经网络的方法,所述GRU神经网络的矩阵包括:Wz,Wz是更新门作用于输入数据的权值矩阵,Wr,Wr是重置门作用于输入数据的权值矩阵,W,W是输入数据变换矩阵,Wx,Wx是Wz、Wr和W合并后的结果Uz,Uz是更新门作用于隐含层的权重矩阵,Ur,Ur是重置门作用于隐含层的权值矩阵,U,U是隐含层变换矩阵,以及Uh,Uh是Uz、Ur和U合并后的结果,输入序列是x=(x1,...,xT),所述方法包括:初始化步骤,完成数据的初始化,包括:将计算WxXt所需所有的数据读入FPGA片上内存,包括输入向量x,和输入向量x对应的权值矩阵Wx的所有信息;步骤1,计算单元(PEs)开始计算Wxx,同时将计算Uhht-1所需的数据读入FPGA片上内存,其中ht-1是隐含层对上一个输入向量的激励值;步骤2,计算单元(PEs)计算Uhht-1,同时将计算下一个Wxx所需数据读入FPGA片上内存。;迭代重复执行上述步骤1和步骤2。
本发明还提供了一种基于FPGA实现压缩后RNN神经网络的方法,包括以下步骤:接收数据,从外部存储器将计算权值矩阵运算所需要的数据加载到FPGA片上存储器,所述数据包括输入向量,以及压缩后的权值矩阵数据;解压数据,根据上述接收数据步骤读取的数据以及权值矩阵的压缩方法,利用FPGA片上处理器解压出权值矩阵原始数据,并存储至FPGA片上存储器;矩阵运算,使用FPGA片上乘法器和加法器进行权值矩阵和向量的乘加运算,并把结果向量存储至FPGA片上存储器,所述向量包括输入向量以及隐含层的激励值向量;向量加法运算,使用FPGA片上加法器进行向量加法运算,并将结果存储在FPGA片上存储器,所述向量包括上述矩阵运算的结果向量和偏置向量;激活函数运算,对上述向量加法运算的结果进行激活函数运算,并将结果存储在FPGA片上存储器;迭代上述接收数据、解压数据、矩阵运算、向量加法运算、激活函数运算步骤,算出RNN网络的激励值序列,再根据激励值序列利用FPGA片上乘法器和加法器进行矩阵运算和向量加法运算计算出GRU输出序列。
附图说明
图1显示了包含隐藏状态的神经网络的模型的例子。
图2显示了包含隐藏状态的RNN神经网络的模型例子。
图3显示了包含隐藏状态的GRU神经网络的模型例子。
图4显示了一种用于实现压缩神经网络的高效的硬件设计。
图5进一步显示了基于图3所示的硬件设计方案来把工作任务分配到多个计算单元。
图6显示了对应图4的某个计算单元(PE0)的矩阵压缩(例如CCS)格式。
图7显示了图3的硬件设计方案中的解码器(weight decoder)部分,用于对编码的矩阵进行解码。
图8显示了根据本发明实施例的在一个信道的多个计算单元(PE)的布置。
图9显示了根据本发明的实施例的状态机的状态转移。
图10a,10b,10c,10d显示了根据本发明的实施例计算输出ht的过程。
图11显示了矩阵稀疏性不平衡对计算资源利用的影响。
图12显示了根据本发明一个实施例的特定硬件设计来实施神经网络运算的例子。
具体实施方法
发明人之前的研究成果:采用EIE并行处理压缩神经网络
本发明的发明人之一曾经提出了一种高效的推理引擎(EIE)。为了更好的理解本发明,在此简要介绍EIE的方案。
图4显示了一种高效的推理引擎(EIE),适用于用于机器学习应用的压缩深度神经网络模型,尤其是采用上述CCS或CRS格式存储的压缩DNN。
中央控制单元(CCU)控制PEs的阵列,每个PEs计算压缩网络中的一片(slice)。CCU从分布式前置零检测网络接收非零输入激励,并把它们广播给PEs。
上述方案中,几乎所有EIE中的计算对于PEs是局部的,除了向所有PEs广播的非零输入激励的集合。然而,激励集合和广播的时间并不是关键的,因多数PEs需要多种周期来完成每个输入激励的计算。
激励队列和负载平衡
输入激励向量aj的非零元素和相应的指标索引j被CCU广播到每个PE中的激励队列。如果任何一个PE有一个完整的队列,广播失效。在任何时间,每个PE处理在其队列头部的激励。
激励队列:允许每个PE建立一个工作队列,以消除可能出现的过载不平衡。因为在一个给定列j中的非零的数量可能对于不同PE会有所不同。
指针读取单元:在激励队列头部的条目的索引j被用来查找开始和结束的指针Pj和Pj+1,对应于第j列的v和x阵列。为了允许在一个周期中读取两个指针且使用单口SRAM阵列,在两SRAM内存库中存储指针,使用地址的LSB在内存库之间进行选择。pj,pj+1总会在不同的内存库中。EIE指针的长度是16位。
稀疏矩阵读取单元:稀疏矩阵读取单元使用指针的pj,pj+1从稀疏矩阵SRAM读Ij列的该PE片(slice)的非零元素(如果有的话)。SRAM中的每个条目是8位长度,包含v的4位数据和x的4位数据。
为了效率,编码的稀疏矩阵I的PE的片(slice)被存储在64位宽的SRAM中。因此,每次从SRAM读取8条。当前指针p的高13位用于选择SRAM行,低3位选择该行中的八条之一。单个(v,x)条被提供给每个周期的算术单元。
运算单元:算术单元从稀疏矩阵读取单元接收(v,x)条,执行乘法累加操作bx=bx+v×aj。索引x是用来索引一个累加器阵列(目的地激励寄存器),而v乘以在激励队列头部的激励值。因为v以4位编码形式存储,它首先通过查表(codebook)扩展成16位定点数。如果在两个相邻的周期上选择相同的累加器,则提供旁路通路,将加法器的输出导向其输入。
激励读/写:激励读/写单元包含两个激励寄存器文件,分别容纳一轮FC层计算期间的源激励值和目的地激励值。在下一层,源和目标寄存器文件交换它们的角色。因此,不需要额外的数据传输来支持多层前馈计算。
每个激励寄存器文件拥有64个16位激励。这足以容纳64PEs的4K激励向量。更长的激励向量可容纳在2KB的激励SRAM中。当激励向量大于4K长度时,M×V将分批次(batch)完成,其中每个批次的长度是4K或更少。所有本地减法是在寄存器完成,SRAM只在批次的开始时被读取、在结束时被写入。
分布式前置非零检测:输入激励分层次地分布于各个PE。为了利用输入向量稀疏性,我们使用前置非零检测逻辑来选择第一个正向(positive)的结果。每一组4PEs进行输入激励的局部前置非零检测。结果被发送到前置非零检测节点(lnzd节点),如图4所示。4个lnzd节点找到下一个非零激励,并发送结果给lnzd节点树。这样的布线不会因为添加PEs而增加。在根lnzd节点,正向激励是通过放置在H树的单独导线被广播给所有PEs。
中央控制单元:中央控制单元(CCU)是根lnzd节点。它与主控器,如CPU通讯,通过设置控制寄存器来监控每个PE的状态。中央单元有两种模式:I/O和计算。
在I/O模式,所有的PEs闲置,每个PE的激励和权重可以通过与中央单元连接的DMA访问。
在计算模式,CCU会持续地从源激励存储库顺序收集和发送数值,直到输入长度溢出。通过设置指针阵列的输入长度和起始地址,EIE将被指示执行不同的层。
图5显示了如何使用多个处理单元(PEs),交织计算矩阵W的各个行,分配矩阵W和并行化矩阵向量计算。
对于N个PEs,PEk拥有所有列Wi,输出激励bi和输入激励ai,因子i(mod N)=k。PEk中的列Wj的部分被存储为CCS格式,但计数的零仅指这个PE的列的子集的零。每个PE有自己的v,x和p阵列,v,x和p阵列用于编码其所计算的稀疏矩阵的一部分。
图5中,显示了矩阵W和向量a和b在4PEs交错。相同颜色的元素都存储在相同的PE里。
图5中,将输入激励向量a(长度为8)乘以一个16×8权重矩阵W产生一个输出激励向量b(长度为16)在n=4的PEs上。a,b和W的元素根据他们的PE配置情况进行颜色编码。每一个PE拥有W的4行,a的2个元素,和b的4个元素。
通过扫描向量a以找到它的下一个非零值aj,依据索引j向所有PEs广播aj,进行稀疏矩阵×稀疏向量运算。每个PE再将aj乘以在列Wj部分的非零元素,在累加器中累加各个部分和,以输出激励向量b中的每个元素。在CCS表示中,这些非零权重被连续存储,每个PE只需沿着其v阵列从位置pj到pj+1-1加载权重。为了寻址输出累加器,通过保持x阵列条目的运行总和,产生对应于每个权重Wij的行数i。
在图5的例子中,第一个非零是PE2上的a2。a2的值和其列索引2向所有PEs广播。每个PE将a2乘以其列2部分中的每个非零值。PE0将a2乘以W0,2和W12,2;PE1在列2中全为零,故不执行乘法;PE2将a2乘以W2,2和W14,2,等等。将每个点积的结果相加到相应的行累加器。例如,PE0计算b0=b0+W0,2a2和b12=b12+W12,2a2。在每层的计算前,累加器被初始化为零。
交错(interleaved)CCS表示法有助于利用激励向量a的动态稀疏性,权重矩阵W的静态稀疏性。
通过仅广播输入激励a的非零元素,利用了输入激励的稀疏性。a中对应于零的列被完全跳过。交错(interleaved)CCS表示法允许每个PE迅速在每列找到非零并乘以aj。这种组织方式也保持了所有的计算在本地PE,除了广播输入激励以外。
图5中的矩阵的交错CCS表示法如图6所示。
图6显示了对应图5的PE0的相对索引的存储器布局、间接加权和交错的CCS格式。
相对行索引(relative row index):当前非零权值与前一个非零权值之间的零元素的个数;
列位置(column pointer):当前“列位置”与前一个“列位置”之差=本列的非零权值的个数。
基于图6的编码方式来读取非零权值方式:
(1)读取2个连续的“列位置”,求差,该差值=本列的非零权重的个数
(2)利用相对行索引,获得该列的非零权重的行位置,从而获得非零权重的行、列位置信息。
此外,图6所示的权重值是被进一步压缩后得到的虚拟权重(virtual weight)。
图7示出了根据EIE的硬件结构中的解码器(weight decoder)部分。
如图7所示,权重查找表(weight look-up)和索引(index Accum)对应于图3的权重解码器(weight decoder)。通过权重查找表和索引,解码器把虚拟权重(例如,4bit)解码为真实权重(例如,16bit)。
这是因为压缩DNN模型具有稀疏性,以索引方式存储和编码。在对输入数据进行处理时,压缩DNN的编码权重被解码,通过权重查找表被转换为真实权重,再进行计算。
本发明提出的改进
现有技术方案中GRU算法通常是采用通用处理器(CPU)或者图形处理器(GPU)来实现的,稠密GRU网络需要较大IO带宽、较多存储和计算资源。近年来晶体管电路逐渐接近极限,摩尔定律快走到尽头,同时神经网络的规模还在不断增大,这都给现有处理器带来了挑战。为了适应算法需求,模型压缩技术变得越来越流行。模型压缩后的稀疏神经网络存储需要编码,计算需要解码。当前通用处理器或图形处理器没有硬编解码电路,无法充分享受网络稀疏化带来的好处。
因此,本发明的目的在于提供一种稀疏GRU网络加速器的实现装置和方法,以便达到提高计算性能、降低响应延时的目的。
为此,本发明设计了一种专用电路,支持稀疏化GRU网络,采用ping-pong缓存并行化流水线设计,有效平衡IO带宽和计算效率,从而获得较好的性能功耗比。
图8示出了根据本发明实施例的多个计算单元(PE)的布置.
如图8所示,主要包括如下模块:
输入接收单元110:该模块用于接收并存储稀疏神经网络的输入向量,并把输入向量发送至运算单元140。
该模块还包含多个先进先出缓存单元(FIFO),每个计算单元PE对应一个FIFO,从而在相同输入向量的情况下能够有效平衡多个计算单元之间计算量的差异。多个计算单元PE可以共享输入向量。
FIFO深度的设置可以选取经验值,FIFO深度过大会造成浪费资源,过小又不能有效地平衡不同PE之间的计算差异。
如图8所示,每个计算单元PE还进一步包括如下子模块。
位置单元120:该模块用于读取并存储压缩后的稀疏神经网络的指针信息,并将指针信息输出至解码单元130。
例如,如果稀疏矩阵采用CCS存储格式,那么位置单元120存储列指针向量(即图6中的第3行)。其中,在输入接收单元110头部的条目的索引j被用来查找开始和结束的列指针Pj和Pj+1。向量中的Pj+1-Pj值表示第j列中非零元素的个数。
在本发明的一个实施例中,位置单元120包括一对乒乓结构缓存(ping-pongbuffer)。
解码单元130:该模块用于存储压缩后的稀疏神经网络的权重信息,并将其输出至运算单元140。
在本发明的一个实施例中,权重信息包括相对索引值和权重值等(即图6中的前两行)。
在本发明的一个实施例中,信息的读取和处理也由一对乒乓结构缓存(ping-pongbuffer)并行处理。
此外,该模块基于位置单元120输出的Pj+1和Pj值读取权重矩阵中对应的权重值,系统从指针Pj移动至Pj+1-1即可加载j列的权重值。
运算单元140:该模块用于实现乘累加计算,其根据输入接收单元110输出的向量和解码单元130输出的相对索引值以及权重值进行矩阵运算,并把运算结果输出至运算单元缓存150。
该运算单元140主要进行以下两步计算:第一步,读取神经元的输入向量和权重值以进行对应的乘法计算;第二步,根据相对索引值读取运算单元缓存150中对应位置历史累加结果,再与第一步结果进行加法运算。
运算单元缓存150:该模块用于存储从运算单元140中输出的矩阵运算的中间结果以及最终计算结果,并将矩阵运算中间结果输出至运算单元140,并且将矩阵运算最终计算结果输出至数据组合单元160。
在本发明的实施例中,为提高下一级的计算效率,运算单元缓存140也采用一堆乒乓结构缓存(ping-pong buffer)设计,进行流水线操作。
此外,图8所示的如下模块由所述多个计算单元PE所共用。
数据组合单元160:该模块用于接收从各个PE中运算缓存单元150输出的矩阵运算的结果,然后将其组合成一个完整的运算结果,再根据矩阵运算的类型,将结果输出至选择器170,Wx缓存180或点乘器210中。
由于本发明的并行设计,每个PE都将矩阵中的部分行与输入向量进行乘累加运算,得到结果向量的一部分。数据组合单元160将这些部分组合成一个完整的结果向量。
选择器170:该模块从数据组合单元160和从点乘器210接受数据,并从中选择一组数据输入到加法器190中。
Wx缓存单元180:该模块接收状态1阶段从数据组合单元160中输出的计算结果WxXt(合并后更新门、重置门权重矩阵以及变换矩阵与输入向量相乘的结果即W(z)Xt、W(r)Xt和WXt合并后的结果),并在下一个状态1阶段时将W(z)Xt、W(r)Xt和WXt分别输出至加法器190计算出重置信号rt,更新信号zt或新的记忆
Figure BDA0001171347300000091
加法器190:该模块从选择器170和Wx缓存180接收数据,进行加法运算后,讲结果输出至激活函数模块200。
函数单元200:该模块用于实现算法中的sigmoid/tanh激活函数运算。当加法器190完成了各组权重与向量的叠加运算后,经该激活函数后可获得最终的计算结果。
点乘器210:该模块从数据组合单元160和函数单元200接受数据,进行点乘运算,并将运算结果输出至选择器。
Figure BDA0001171347300000092
缓存单元220:该模块接收并存储函数单元200输出的
Figure BDA0001171347300000093
结果,并将其输出至点乘加单元240,用于计算隐含层状态ht.
Zt缓存单元230:该模块接收并存储函数单元200输出的Zt结果,并将其输出至点乘加单元240,用于计算隐含层状态ht.
点乘加单元240:该模块从
Figure BDA0001171347300000094
缓存单元220,Zt缓存单元230以及向量缓存单元260读取
Figure BDA0001171347300000095
Zt以及ht-1进行点乘及加法运算,计算出隐含层状态ht
向量缓存单元250:该模块用于存储各个隐含层的计算结果ht
控制单元260:该模块负责全局控制。
本发明设计GRU状态机,通过状态机的状态转移,实现GRU网络操作的高速流水运行。
状态机的控制包括,控制指针向量的读取、控制输入向量与权值矩阵的信号同步、控制内部乒乓结构缓存(ping-pong buffer)的切换、控制运算单元140的计算,控制PE外部各个运算单元及缓存。
在根据本发明的一个实施例中,对于含有相同向量的矩阵运算,采用合并的方式计算。具体而言,在下面的公式中,W(z)、W(r)和W都要与Xt相乘,U(z)、U(r)和U都要与ht-1相乘。本发明在矩阵运算阶段,将W(z)、W(r)和W合并为一个矩阵Wx与Xt相乘,将U(z)、U(r)和U合并为一个矩阵Uh与ht-1相乘。
rt=σ(W(r)xt+U(r)ht-1)
zt=σ(W(z)xt+U(z)ht-1)
Figure BDA0001171347300000101
在这个实施例中,只需要加载一次向量Xt和ht-1即可完成矩阵运算,提高了计算效率。
本发明的实施例中,定制电路的并行化流水线设计体现在对状态机的控制上,流水线设计可以有效地平衡IO带宽与计算性能。
已知,在数据加载时间小于计算时间的情况下,计算单元PE效率可以最大化。
如下公式所示,左侧是每个计算单元PE需要完成的计算复杂度,右侧是所需的IO带宽。其中data_size为权值矩阵的大小,通常是MxN维度,compress_ratio是GRU网络压缩率,PE_num是计算矩阵乘向量的计算单元并发度,freq_PE是计算单元运行的时钟频率,data_bit是权值矩阵量化后的定点位宽,ddr_width是计算单元与内存控制模块的数据位宽,freq_ddr是计算单元与内存控制模块数据的时钟频率。
Figure BDA0001171347300000102
如上公式所示,左侧大于右侧IO是瓶颈,左侧小于右侧计算是瓶颈。通过上述公式可以推算不同IO带宽下需要计算单元的个数。
图9示出了根据本发明的实施例的状态机的状态转移。
具体而言,在每个状态中包括数据读取和计算。
前三行操作是获取权重、指针、输入向量,以准备下一次计算。
第四行中的操作是矩阵向量乘法,包括合并W(z)、W(r)和W与输入向量Xt的操作,合并U(z)、U(r)和U与上一帧隐层ht-1的操作。
第五行中的操作是涉及求和以及激活函数等的计算。
水平方向上的操作必须被顺序执行,垂直方向上的操作同时执行。
在本发明的一个实施例中,状态机包括三个状态。
在初始化状态,完成数据的初始化,准备计算WhxXt所需的数据。其中,Xt为输入向量,Wx(W(z)、W(r)和W合并后的结果)包含向量对应权重矩阵的所有信息,例如,在采用CCS压缩时,包含指针信息、相对索引值和权重值等数据;
状态1,计算单元PEs开始计算WxXt,同时从内存读取Uh(U(z)、U(r)和U合并后的结果)。在下一个状态1时依次计算zt,rt,(rt。Uht-1),
Figure BDA0001171347300000103
和ht
状态2,计算单元PEs计算Uhh(t-1),IO读取下一帧或者下一层的Wx(W(z)、W(r)和W)、指针以及输入向量。
如图9所示,状态1和状态2交替进行,当一层对应的稀疏矩阵与向量的运算完成后,在计算下一层的矩阵运算(图9中第4行)的同时,进行加法树和激活函数等运算(图9中第5行),从而达到高效流水的目的。Xt的准备由输入接收单元110完成,Wx的准备由位置单元120和解码单元130完成。
在本发明的一个实施例中,使用上述模块实现稀疏GRU网络加速器过程如下:
步骤1:初始化依据全局控制信息读取GRU权值矩阵的位置信息。
步骤2:根据步骤1的位置信息读取稀疏神经网络的位置索引、权重值。
步骤3:根据全局控制信息,输入接收单元110把输入向量广播给多个计算单元PE。
步骤4:运算单元140把解码单元130发送来的权重值与输入接收单元110送来的输入向量对应元素做乘法计算,得到矩阵运算的中间结果,存储至运算缓存单元150中。
步骤5:运算单元140根据步骤2的位置索引值读取运算缓存单元150中相应位置的中间结果,然后将其与步骤4的乘法结果做加法计算。
步骤6:根据步骤2的索引值把步骤5的加法结果写入运算缓存单元150中。
步骤7:重复步骤1-6,依次计算WxXt和Uht-1,计算完WxXt后先缓存到Wx缓存单元180中,如图10a所示,计算完Uhht-1后的下一个状态读取Wx缓存单元180中的W(z)Xt与U(z)ht-1结果计算Zt并存储在Zt缓存单元230中。
步骤8:如图10b所示,从Wx缓存单元180读取W(r)Xt与运算缓存单元150中的U(r)ht-1计算rt,如图10c所示,然后rt再与运算缓存单元150中Uht-1做点乘操作。
步骤9:如图10d所示,步骤8中的点乘结果和Wx缓存单元180中的WXt计算求得
Figure BDA0001171347300000111
并存储在
Figure BDA0001171347300000112
缓存单元230中
步骤10:如图10d所示,从Zt缓存单元230读取Zt,从
Figure BDA0001171347300000113
缓存单元230读取
Figure BDA0001171347300000114
并将它们输出至点乘加单元240进行点乘和加法计算,最终得到ht
具体实施例
例1
接下来,以2个计算单元(Process Element,简称PE)PE0和PE1计算一个矩阵向量乘,采用列存储(ccs)为例,简要说明基于本发明的硬件进行相应运算的基本思路。
压缩后GRU中矩阵稀疏度并不平衡,这导致计算资源的利用率降低。
如图11所示,假设输入向量a包含6个元素{a0,a1,a2,a3,a4,a5},权值矩阵包含8×6个元素。2个PE(PE0和PE1)负责计算a3×w[3],这里a3是输入向量第4个元素,w[3]是权值矩阵的第4列。
从图11中可见,PE0和PE1的工作负载并不相同,PE0进行3次乘法运算,PE1只进行一次。
在现有技术中,系统会使PE1完成a3的运算后处于等待状态,直至PE0完成3次加法运算后,再开始进行a4的运算。
本发明在输入接收单元110加入先入先出缓存单元(FIFO),将输入向量a的一部分加载到FIFO中。在本发明实施例中,PE1完成a3的运算后,会从FIFO中读取a4继续计算。这样的设计提高了计算资源的利用率。
参见图12,假设权值矩阵W和输入向量X如图12所示,奇数行元素由PE0完成,偶数行元素由PE1完成,输出向量的奇数元素由PEO计算所得,输出向量的偶数元素由PE1计算所得。输入向量X会被广播给两个计算单元PE0,PE1。
针对PE0中的操作如下:
表1为PE0对应的权重,相对索引位置和列位置信息。
权值 W00 W20 W41 W62 W43 W04 W24 W45 W26
相对行索引 0 0 4 4 2 1 0 4 2
列位置 0 2 3 4 5 7 8 9 9
表1
位置单元120:存储奇数行非零元素的列位置信息,其中P(j+1)-P(j)为第j列中非零元素的个数。
解码单元130:存储奇数行非零元素的权值和相对行索引。
输入接收单元110:存储输入向量xt,该模块把输入向量广播给两个计算单元PEO和PE1,为了平衡计算单元间元素稀疏度的差异,每个计算单元的入口都添加先进先出缓存(FIFO)来提高计算效率。
解码单元130读取矩阵元素,例如W00,将其输出至运算单元140,计算出W00·X00的结果存储在运算缓存单元150中。待本行计算完毕后,运算缓存单元150将中间结果(W00·X00和W04·X04)输出至运算单元140,计算出矩阵运算最终结果Y0并输出。
数据组合单元160将PEO输出的Y0,Y2,Y4,Y6和PE1输出的Y1,Y3,Y5,Y7组合成完整的输出向量Y。
例2
通过本实施例,旨在阐释本发明的IO带宽与计算单元平衡。
如果内存控制器用户接口是512bit,时钟为250Mhz,那么需要的PE并发度为512*250Mhz=(PE_num*freq_PE*data_bit),如果定点成8bit权值,PE计算模块时钟频率为200Mhz,需要PE数量为80个。
针对2048*1024输入为1024的网络,在不同稀疏度下,计算耗时最大的依然是矩阵乘向量。对稀疏GRU网络zt,rt,以及对ht的计算可以被矩阵向量乘Wxt和Uht-1的计算所掩盖。由于后续的点乘和加法操作是串行流水线设计,所以需要的资源也相对较少。综上本发明充分结合稀疏矩阵向量乘,IO和计算平衡,串行流水线设计,可高效提供稀疏GRU网络的算法加速。
技术效果
基于上述技术方案可知,根据本发明的稀疏GRU网络加速器的实现装置和方法,通过采用定制电路,流水线设计,有效地平衡了IO带宽与计算,从而提高了计算性能、降低了响应延时。

Claims (13)

1.一种用于实现稀疏化GRU神经网络的装置,包括:
输入接收单元,用于接收多个输入向量,并将多个输入向量分配到多个计算单元;
多个计算单元,从所述输入接收单元获取输入向量,读取神经网络权值矩阵数据,将其解码后与输入向量进行矩阵运算,并将矩阵运算结果输出至隐含层状态计算模块;
隐含层状态计算模块,从所述计算单元PE获取矩阵运算结果,计算出隐含层状态;
控制单元,用于进行全局控制,
其中,所述隐含层状态计算模块进一步包括:
数据组合单元,用于接收从各个计算单元中的缓存单元输出的矩阵运算的结果,并将其组合成一个完整的运算结果输出至加法器;
选择器,从数据组合单元模块和从点乘器接收数据,选择其中之一输入到加法器;
Wx缓存单元,接收并存储从数据组合单元中输出的矩阵运算计算结果,再根据控制单元的指令将相应运算结果输出至加法器进行计算;
加法器,针对分配到所述多个计算单元的各个输入向量,完成GRU神经网络算法中的向量累加操作;
函数单元,与所述加法器连接,用于实现激活函数;
点乘器,从数据组合单元和函数单元接收数据,进行点乘运算,并将运算结果输出至选择器。
2.根据权利要求1所述的装置,所述每个计算单元进一步包括:
稀疏矩阵读取单元,用于读取所述神经网络的权重矩阵W,其中所述权重矩阵W被用于表示所述神经网络中的权重;
运算单元,用于执行所述神经网络的乘法运算和加法运算;
运算缓存单元,用于存储从所述运算单元中输出的矩阵运算的中间结果以及最终计算结果,并将矩阵运算中间结果输出至运算单元,并且将矩阵运算最终计算结果输出至数据组合单元。
3.根据权利要求1或2所述的装置,输入接收单元还包括:
多个先进先出缓存单元,各个先进先出缓存单元与各个计算单元相对应。
4.根据权利要求2所述的装置,其中所述稀疏矩阵读取单元包括:
位置单元,用于读取存储稀疏权重矩阵W中的各个非零权重值的位置信息;
解码单元,用于编码权重矩阵进行解码,以获得稀疏矩阵中的非零权重值。
5.根据权利要求2所述的装置,其中所述运算单元包括:
乘法器,其中所述乘法器读取输入向量和权重值以进行对应的乘法计算;
加法器,对所述乘法运算的结果进行加法计算。
6.根据权利要求2所述的装置,所述运算缓存单元还包括:
第一输出缓冲器和第二输出缓冲器,所述第一、第二输出缓冲器交替地接收并输出各个计算结果,其中在一个输出缓冲器接收当前计算结果时,另一个输出缓冲器输出前一个计算结果。
7.根据权利要求1或2所述的装置,还包括:
Figure FDA0002972845860000021
缓存单元,接收并存储函数单元输出的结果,并将其输出至点乘加单元,用于计算隐含层状态;
Zt缓存单元,接收并存储函数单元输出的结果,并将其输出至点乘加单元,用于计算隐含层状态;
点乘加单元,从
Figure FDA0002972845860000022
缓存单元,Zt缓存单元以及向量缓存单元读取向量进行点乘及加法运算,计算出隐含层状态;
向量缓存单元,用于存储各个隐含层状态的计算结果。
8.一种实现稀疏GRU神经网络的方法,所述GRU神经网络的矩阵包括:
Wz,Wz是更新门作用于输入数据的权值矩阵,
Wr,Wr是重置门作用于输入数据的权值矩阵,
W,W是输入数据变换矩阵,
Wx,Wx是Wz、Wr和W合并后的结果,
Uz,Uz是更新门作用于隐含层的权重矩阵,
Ur,Ur是重置门作用于隐含层的权值矩阵,
U,U是隐含层变换矩阵,以及
Uh,Uh是Uz、Ur和U合并后的结果,
输入序列是x=(x1,...,xT),
所述方法包括:
初始化步骤,完成数据的初始化,包括:将计算WxXt所需所有的数据读入FPGA片上内存,包括输入向量x,和输入向量x对应的权值矩阵Wx的所有信息;
步骤1,计算单元开始计算Wxx,同时将计算Uhht-1所需的数据读入FPGA片上内存,其中ht-1是隐含层对上一个输入向量的激励值;
步骤2,计算单元计算Uhht-1,同时将计算下一个Wxx所需数据读入FPGA片上内存;
迭代重复执行上述步骤1和步骤2。
9.根据权利要求8所述的方法,进一步包括:
在计算当前输入向量的矩阵向量乘法的同时,计算GRU网路对上一个输入向量的更新信号,重置信号,候选激励值以及隐含层状态。
10.根据权利要求9所述的方法,进一步包括:
所述初始化步骤、步骤1、步骤2是按照时钟顺序执行;
所述步骤1和步骤2被周期性地执行。
11.一种基于FPGA实现压缩后GRU神经网络的方法,包括以下步骤:
接收数据,从外部存储器将计算权值矩阵运算所需要的数据加载到FPGA片上存储器,所述数据包括输入向量,以及压缩后的权值矩阵数据;
解压数据,根据上述接收数据步骤读取的数据以及权值矩阵的压缩方法,利用FPGA片上处理器解压出权值矩阵原始数据,并存储至FPGA片上存储器;
矩阵运算,使用FPGA片上乘法器和加法器进行权值矩阵和向量的乘加运算,并把结果向量存储至FPGA片上存储器,所述向量包括输入向量以及隐含层的激励值向量;
向量加法运算,使用FPGA片上加法器进行向量加法运算,并将结果存储在FPGA片上存储器,所述向量包括上述矩阵运算的结果向量和偏置向量;
激活函数运算,对上述向量加法运算的结果进行激活函数运算,并将结果存储在FPGA片上存储器;
迭代上述接收数据、解压数据、矩阵运算、向量加法运算、激活函数运算步骤,算出GRU网络的激励值序列,再根据激励值序列利用FPGA片上乘法器和加法器进行矩阵运算和向量加法运算计算出GRU输出序列。
12.根据权利要求11所述的方法,还包括:
在接收数据之后,将接收到权值矩阵数据分配给多个并行的矩阵运算单元进行计算,
矩阵运算结束后,将各个矩阵运算单元的结果组合成完整的结果向量。
13.根据权利要求11所述的方法,所述接收数据、解压数据、矩阵运算步骤的至少一个是通过片上存储器的一对乒乓结构的缓存来实现。
CN201611105597.1A 2016-08-12 2016-12-05 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 Active CN107229967B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/390,744 US10810484B2 (en) 2016-08-12 2016-12-27 Hardware accelerator for compressed GRU on FPGA

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US15/242,625 2016-08-22
US15/242,624 US20180046903A1 (en) 2016-08-12 2016-08-22 Deep processing unit (dpu) for implementing an artificial neural network (ann)
US15/242,622 US10621486B2 (en) 2016-08-12 2016-08-22 Method for optimizing an artificial neural network (ANN)
US15/242,622 2016-08-22
US15/242,624 2016-08-22
US15/242,625 US20180046895A1 (en) 2016-08-12 2016-08-22 Device and method for implementing a sparse neural network

Publications (2)

Publication Number Publication Date
CN107229967A CN107229967A (zh) 2017-10-03
CN107229967B true CN107229967B (zh) 2021-06-15

Family

ID=59932331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611105597.1A Active CN107229967B (zh) 2016-08-12 2016-12-05 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法

Country Status (1)

Country Link
CN (1) CN107229967B (zh)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366322B2 (en) 2017-10-06 2019-07-30 DeepCube LTD. System and method for compact and efficient sparse neural networks
CN107807971A (zh) * 2017-10-18 2018-03-16 北京信息科技大学 一种自动图像语义描述方法
WO2019078885A1 (en) 2017-10-20 2019-04-25 Google Llc PARALLEL EXECUTION OF OPERATIONS OF ACTIVATION UNITS WITH RELEASE
DE102017218889A1 (de) * 2017-10-23 2019-04-25 Robert Bosch Gmbh Unscharf parametriertes KI-Modul sowie Verfahren zum Betreiben
CN107944555B (zh) * 2017-12-07 2021-09-17 广州方硅信息技术有限公司 神经网络压缩和加速的方法、存储设备和终端
CN107992940A (zh) * 2017-12-12 2018-05-04 郑州云海信息技术有限公司 一种卷积神经网络在fpga上的实现方法及装置
WO2019114842A1 (zh) 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN109961136B (zh) * 2017-12-14 2020-05-19 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN111126588B (zh) * 2017-12-14 2023-05-23 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN108153190B (zh) * 2017-12-20 2020-05-05 新大陆数字技术股份有限公司 一种人工智能微处理器
EP3789871B1 (en) 2017-12-27 2023-06-07 Cambricon Technologies Corporation Limited Integrated circuit chip device
CN109978152B (zh) * 2017-12-27 2020-05-22 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109978154A (zh) * 2017-12-28 2019-07-05 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN109978153B (zh) * 2017-12-27 2020-10-09 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109978158B (zh) * 2017-12-28 2020-05-12 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109978131B (zh) * 2017-12-28 2020-05-22 中科寒武纪科技股份有限公司 集成电路芯片装置、方法及相关产品
CN108196882A (zh) * 2017-12-29 2018-06-22 普强信息技术(北京)有限公司 一种针对神经网络计算的加速方法及装置
CN109993292B (zh) 2017-12-30 2020-08-04 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
EP3624019A4 (en) * 2017-12-30 2021-03-24 Cambricon Technologies Corporation Limited CHIP DEVICE WITH INTEGRATED CIRCUIT AND ASSOCIATED PRODUCT
CN109993289B (zh) 2017-12-30 2021-09-21 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109993290B (zh) 2017-12-30 2021-08-06 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN108280514B (zh) * 2018-01-05 2020-10-16 中国科学技术大学 基于fpga的稀疏神经网络加速系统和设计方法
CN108133270B (zh) * 2018-01-12 2020-08-04 清华大学 卷积神经网络加速方法及装置
WO2019136764A1 (zh) * 2018-01-15 2019-07-18 深圳鲲云信息科技有限公司 卷积器及其所应用的人工智能处理装置
CN108320051B (zh) * 2018-01-17 2021-11-23 哈尔滨工程大学 一种基于gru网络模型的移动机器人动态避碰规划方法
CN110163349B (zh) * 2018-02-12 2021-03-23 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110147249B (zh) * 2018-02-12 2021-02-09 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110197262B (zh) * 2018-02-24 2021-07-30 赛灵思电子科技(北京)有限公司 用于lstm网络的硬件加速器
US20190266482A1 (en) * 2018-02-26 2019-08-29 Gsi Technology Inc. Distance based deep learning
CN108376285A (zh) * 2018-03-23 2018-08-07 中国科学院计算技术研究所 一种面向多变异体lstm神经网络加速器及数据处理方法
CN108734270B (zh) * 2018-03-23 2020-11-10 中国科学院计算技术研究所 一种兼容型神经网络加速器及数据处理方法
CN108446761B (zh) * 2018-03-23 2021-07-20 中国科学院计算技术研究所 一种神经网络加速器及数据处理方法
CN108647774B (zh) * 2018-04-23 2020-11-20 瑞芯微电子股份有限公司 一种优化稀疏性矩阵运算的神经网络方法和电路
CN108710505A (zh) * 2018-05-18 2018-10-26 南京大学 一种基于fpga的可扩展稀疏矩阵向量乘处理器
CN109102064B (zh) * 2018-06-26 2020-11-13 杭州雄迈集成电路技术股份有限公司 一种高精度的神经网络量化压缩方法
CN109086879B (zh) * 2018-07-05 2020-06-16 东南大学 一种基于fpga的稠密连接神经网络的实现方法
CN109255429B (zh) * 2018-07-27 2020-11-20 中国人民解放军国防科技大学 一种用于稀疏神经网络模型的参数解压方法
EP3690679A4 (en) 2018-08-06 2021-02-17 Huawei Technologies Co., Ltd. MATRIX PROCESSING PROCESS AND APPARATUS, AND LOGIC CIRCUIT
CN109376853B (zh) * 2018-10-26 2021-09-24 电子科技大学 回声状态神经网络输出轴突电路
CN109472350B (zh) * 2018-10-30 2021-11-16 南京大学 一种基于块循环稀疏矩阵的神经网络加速系统
CN109245773B (zh) * 2018-10-30 2021-09-28 南京大学 一种基于块循环稀疏矩阵神经网络的编解码方法
CN109492761A (zh) * 2018-10-30 2019-03-19 深圳灵图慧视科技有限公司 实现神经网络的fpga加速装置、方法和系统
WO2020118555A1 (zh) * 2018-12-12 2020-06-18 深圳鲲云信息科技有限公司 一种网络模型数据存取方法、装置及电子设备
CN109657782B (zh) * 2018-12-14 2020-10-27 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109711540B (zh) * 2018-12-20 2021-09-21 中科寒武纪科技股份有限公司 一种计算装置及板卡
CN109685208B (zh) * 2018-12-24 2023-03-24 合肥君正科技有限公司 一种用于神经网络处理器数据稀梳化加速的方法及装置
WO2020133492A1 (zh) * 2018-12-29 2020-07-02 华为技术有限公司 一种神经网络压缩方法及装置
CN109740748B (zh) * 2019-01-08 2021-01-08 西安邮电大学 一种基于fpga的卷积神经网络加速器
CN109784484A (zh) * 2019-01-31 2019-05-21 深兰科技(上海)有限公司 神经网络加速方法、装置、神经网络加速芯片及存储介质
CN109919826B (zh) * 2019-02-02 2023-02-17 西安邮电大学 一种用于图计算加速器的图数据压缩方法及图计算加速器
CN109993297A (zh) * 2019-04-02 2019-07-09 南京吉相传感成像技术研究院有限公司 一种负载均衡的稀疏卷积神经网络加速器及其加速方法
CN110020721B (zh) * 2019-04-09 2020-12-18 武汉大学 一种基于参数压缩的目标检测深度学习网络优化方法
CN110062233B (zh) * 2019-04-25 2020-04-28 西安交通大学 卷积神经网络全连接层稀疏的权值矩阵的压缩方法及系统
CN110442321B (zh) * 2019-07-19 2021-05-11 南京芯驰半导体科技有限公司 一种预取fifo电路及方法
CN110516801B (zh) * 2019-08-05 2022-04-22 西安交通大学 一种高吞吐率的动态可重构卷积神经网络加速器
CN112749782A (zh) * 2019-10-31 2021-05-04 上海商汤智能科技有限公司 数据处理方法及相关产品
CN110889259B (zh) * 2019-11-06 2021-07-09 北京中科胜芯科技有限公司 针对排列的块对角权重矩阵的稀疏矩阵向量乘法计算单元
CN111008698B (zh) * 2019-11-23 2023-05-02 复旦大学 用于混合压缩循环神经网络的稀疏矩阵乘法加速器
CN110991631A (zh) * 2019-11-28 2020-04-10 福州大学 一种基于fpga的神经网络加速系统
CN111126569B (zh) * 2019-12-18 2022-11-11 中国电子科技集团公司第五十二研究所 一种支持剪枝稀疏化压缩的卷积神经网络装置和计算方法
CN111178519B (zh) * 2019-12-27 2022-08-02 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速系统及方法
CN111277564B (zh) * 2020-01-08 2022-06-28 山东浪潮科学研究院有限公司 一种基于动态存储网络的企业网络异常检测方法及系统
CN111368974B (zh) * 2020-02-25 2023-11-21 北京声智科技有限公司 一种fsmn数据处理方法、装置、介质和设备
CN111445013B (zh) * 2020-04-28 2023-04-25 南京大学 一种针对卷积神经网络的非零探测器及其方法
CN112214326B (zh) * 2020-10-22 2022-10-21 南京博芯电子技术有限公司 一种面向稀疏递归神经网络的均衡运算加速方法与系统
CN112309405A (zh) * 2020-10-29 2021-02-02 平安科技(深圳)有限公司 多种声音事件的检测方法、装置、计算机设备及存储介质
CN114692843A (zh) * 2020-12-25 2022-07-01 中科寒武纪科技股份有限公司 计算神经网络的装置、板卡、方法及可读存储介质
CN112906887B (zh) * 2021-02-20 2023-03-24 上海大学 稀疏gru神经网络加速的实现方法和装置
US11631210B2 (en) * 2021-03-03 2023-04-18 Nvidia Corporation Fully-fused neural network execution
CN113269316B (zh) * 2021-03-26 2022-10-11 复旦大学 支持稀疏神经网络计算加速器的稀疏数据选择逻辑模块
CN115828044B (zh) * 2023-02-17 2023-05-19 绍兴埃瓦科技有限公司 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置
CN116187408B (zh) * 2023-04-23 2023-07-21 成都甄识科技有限公司 稀疏加速单元、计算方法及稀疏神经网络硬件加速系统
CN116882468B (zh) * 2023-09-05 2024-01-16 苏州浪潮智能科技有限公司 一种硬件加速器、硬件加速方法和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN205139973U (zh) * 2015-10-26 2016-04-06 中国人民解放军军械工程学院 基于fpga器件构建的bp神经网络
CN105681628A (zh) * 2016-01-05 2016-06-15 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209080B2 (en) * 2009-04-27 2012-06-26 Toyota Motor Engineering & Manufacturing North America, Inc. System for determining most probable cause of a problem in a plant
CN103632138B (zh) * 2013-11-20 2016-09-28 南京信息工程大学 一种低秩分块稀疏表示的人脸识别方法
CN105512680B (zh) * 2015-12-02 2019-01-08 北京航空航天大学 一种基于深度神经网络的多视sar图像目标识别方法
CN105513591B (zh) * 2015-12-21 2019-09-03 百度在线网络技术(北京)有限公司 用lstm循环神经网络模型进行语音识别的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN205139973U (zh) * 2015-10-26 2016-04-06 中国人民解放军军械工程学院 基于fpga器件构建的bp神经网络
CN105681628A (zh) * 2016-01-05 2016-06-15 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
EIE: Efficient Inference Engine on Compressed Deep Neural Network;Song Han等;《https://arxiv.org/pdf/1602.01528v2.pdf》;20160503;第1-12页 *
ESE: Efficient Speech Recognition Engine with Compressed LSTM on FPGA;Song Han等;《https://arxiv.org/pdf/1612.00694v1.pdf》;20161201;第3-4节,图5 *
Gated Feedback Recurrent Neural Networks;Junyoung Chung等;《Proceedings of the 32 nd International Conference on Machine Learning》;20150711;第37卷;摘要,第2节 *
Recurrent Neural Network Hardware Implementation on FPGA;Ander Xian Ming Chang等;《https://arxiv.gg363.site/pdf/151.05552.pdf》;20160304;第1-7页 *
Song Han等.ESE: Efficient Speech Recognition Engine with Compressed LSTM on FPGA.《https://arxiv.org/pdf/1612.00694v1.pdf》.2016,第1-6页. *

Also Published As

Publication number Publication date
CN107229967A (zh) 2017-10-03

Similar Documents

Publication Publication Date Title
CN107229967B (zh) 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法
CN107704916B (zh) 一种基于fpga实现rnn神经网络的硬件加速器及方法
US10698657B2 (en) Hardware accelerator for compressed RNN on FPGA
US10810484B2 (en) Hardware accelerator for compressed GRU on FPGA
CN107689948B (zh) 应用于神经网络硬件加速系统的高效数据访存管理装置
JP6905573B2 (ja) 計算装置と計算方法
CN110163353B (zh) 一种计算装置及方法
CN110321997B (zh) 高并行度计算平台、系统及计算实现方法
JP3228927B2 (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
CN110674927A (zh) 一种用于脉动阵列结构的数据重组方法
US11983616B2 (en) Methods and apparatus for constructing digital circuits for performing matrix operations
CN111626413A (zh) 一种计算装置及方法
Hsiao et al. Design of a sparsity-aware reconfigurable deep learning accelerator supporting various types of operations
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
CN111178492B (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
CN110716751B (zh) 高并行度计算平台、系统及计算实现方法
Wang et al. FPAP: a folded architecture for efficient computing of convolutional neural networks
CN115700605A (zh) 一种应用于卷积神经网络训练的可重构硬件加速器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20180115

Address after: 100083 Beijing city Haidian District Wangzhuang Road No. 1 Building No. 4 hospital 8 floor No. 807

Applicant after: Beijing insight Technology Co., Ltd.

Address before: 100084 Beijing city Haidian District Wangzhuang Road No. 1 Building No. 4 hospital 17 floor No. 1706

Applicant before: Beijing deep Intelligent Technology Co., Ltd.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20180531

Address after: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant after: Beijing deep Intelligent Technology Co., Ltd.

Address before: 100083, 8 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: Beijing insight Technology Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190930

Address after: 2100 San Jose Rojack Avenue, California, USA

Applicant after: XILINX INC

Address before: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: Beijing Shenjian Intelligent Technology Co., Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant