CN111985626B - 一种加速rnn网络的系统、方法及存储介质 - Google Patents

一种加速rnn网络的系统、方法及存储介质 Download PDF

Info

Publication number
CN111985626B
CN111985626B CN202011023267.4A CN202011023267A CN111985626B CN 111985626 B CN111985626 B CN 111985626B CN 202011023267 A CN202011023267 A CN 202011023267A CN 111985626 B CN111985626 B CN 111985626B
Authority
CN
China
Prior art keywords
state
output
data
circuit
gate
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
CN202011023267.4A
Other languages
English (en)
Other versions
CN111985626A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
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 Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202011023267.4A priority Critical patent/CN111985626B/zh
Publication of CN111985626A publication Critical patent/CN111985626A/zh
Priority to PCT/CN2021/089936 priority patent/WO2022062391A1/zh
Priority to US18/012,938 priority patent/US11775803B2/en
Application granted granted Critical
Publication of CN111985626B publication Critical patent/CN111985626B/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/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • 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
    • 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
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Neurology (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种加速RNN网络的系统,包括:第一缓存,用于通过循环切换的方式分N路并行输出Wx1至WxN,或者Wh1至WhN,且并行度均为k;第二缓存,用于通过循环切换的方式输出xt或者ht‑1;向量乘法电路,用于利用N组乘法阵列分别计算Wx1xt至WxNxt,或者分别计算Wh1ht‑1至WhNht‑1;加法电路,用于实现Wx1xt+Wh1ht‑1+b1至WxNxt+WhNht‑1+bN的计算;激活电路用于根据加法电路的输出进行激活操作;状态更新电路,用于获取ct‑1并进行ct及ht的计算,并更新ct‑1且发送ht至第二缓存;偏置数据缓存;向量缓存;cell状态缓存。应用本申请的方案有效地实现了RNN网络的加速,并具有很强的灵活性和扩展性,本申请还提供了一种加速RNN网络的方法及存储介质,具有相应效果。

Description

一种加速RNN网络的系统、方法及存储介质
技术领域
本发明涉及神经网络技术领域,特别是涉及一种加速RNN网络的系统、方法及存储介质。
背景技术
RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的神经网络,是目前深度学习中最有前景的工具之一,广泛应用于语音识别、机器翻译、文本生成等领域。它解决了传统的神经网络不能从数据中共享位置特征的问题。在传统的CNN、DNN等神经网络模型中,从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。这种普通的神经网络对于很多问题无能无力。例如,需要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN被称为循环神经网路,是因为一个序列当前的输出与前面的输出也有关联。具体的表现形式是网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再是无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括前面时刻隐藏层的输出。
图1是一个标准的RNN结构图,每个箭头代表做一次变换,也即箭头连接带有权值。左侧是折叠起来的样子,右侧是展开的样子,左侧中h旁边的箭头代表此结构中的“循环”。x是输入,h是隐层单元,o为输出,L为损失函数,y为训练集的标签。这些元素右上角带的t代表t时刻的状态。可以看出,因策单元h在t时刻的表现不仅由此刻的输入决定,还受t时刻之前的时刻的影响。V、W、U是权值,同一类型的权连接权值相同。RNN的关键点之一就是可以用来连接先前的信息到当前的任务上。
GRU和LSTM是较为常用的RNN网络。LSTM(Long Short-Term Memory networks,长短期记忆网络)可以解决长依赖问题,适合处理和预测时间序列中的间隔和延迟非常长的重要事件。
图2是LSTM结构以及计算公式示意图,LSTM通过“门”结构来去除或者增加“细胞状态”的信息,实现了对重要内容的保留和对不重要内容的去除。通过sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过,0表示“不允许任务变量通过”,1表示“允许所有变量通过”。其中包含的门结构有遗忘门,输入门it,遗忘门ft,输出门ot以及cell门
Figure BDA0002701347270000021
随着RNN在语音识别、机器翻译、语言建模、情感分析和文本预测等领域应用地越来越广泛,对于RNN网络的要求也越来越高。因此面对越来越复杂、模型参数越来越庞大的网络,采用合适的方式对RNN网络加速显得十分重要。
综上所述,如何有效地加速RNN网络,降低耗时,提高运行效率,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种加速RNN网络的系统、方法及存储介质,以有效地加速RNN网络,降低耗时,提高运行效率。
为解决上述技术问题,本发明提供如下技术方案:
一种加速RNN网络的系统,包括:
第一缓存,用于在第一状态和第二状态之间循环切换,且在第一状态时,分N路并行输出Wx1至WxN,且并行度均为k,在第二状态时,分N路并行输出Wh1至WhN,且并行度均为k;N为≥2的正整数;
第二缓存,用于在第一状态和第二状态之间循环切换,且在第一状态时输出xt,在第二状态时输出ht-1
向量乘法电路,用于当接收到所述第一缓存输出的Wx1至WxN时,利用N组乘法阵列分别计算Wx1xt至WxNxt,当接收到所述第一缓存输出的Wh1至WhN时,利用N组乘法阵列分别计算Wh1ht-1至WhNht-1;其中,所述向量乘法电路包括N组乘法阵列,每组乘法阵列包括k个乘法单元;
加法电路,用于接收偏置数据缓存发送的b1至bN,并且利用向量缓存实现Wx1xt+Wh1ht-1+b1至WxNxt+WhNht-1+bN的计算;
激活电路,用于根据所述加法电路的输出进行激活操作;
状态更新电路,用于从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
所述偏置数据缓存;所述向量缓存;所述cell状态缓存;
其中,Wx1至WxN依次表示第一门至第N门的权重数据矩阵;Wh1至WhN依次表示第一门至第N门的隐状态权重数据矩阵;b1至bN依次表示第一门至第N门的偏置数据;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态。
优选的,RNN网络具体为LSTM网络,N=4,包括:
第一缓存,具体用于:在第一状态和第二状态之间循环切换,且在第一状态时,分4路并行输出Wxi,Wxf,Wxo以及Wxc,且并行度均为k,在第二状态时,分4路并行输出Whi,Whf,Who以及Whc,且并行度均为k;
第二缓存,具体用于:在第一状态和第二状态之间循环切换,且在第一状态时,输出xt,在第二状态时,输出ht-1
向量乘法电路,具体用于:当接收到所述第一缓存输出的Wxi,Wxf,Wxo以及Wxc时,利用4组乘法阵列分别计算Wxixt,Wxfxt,Wxoxt以及Wxcxt,当接收到所述第一缓存输出的Whi,Whf,Who以及Whc时,利用4组乘法阵列分别计算Whiht-1,Whfht-1,Whoht-1以及Whcht-1;其中,所述向量乘法电路包括4组乘法阵列,每组乘法阵列包括k个乘法单元;
加法电路,具体用于:接收偏置数据缓存发送的bi,bf,bo以及bc,并且利用向量缓存实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算;
激活电路,具体用于:根据所述加法电路的输出进行激活操作,并输出it,ft,ot以及
Figure BDA0002701347270000031
状态更新电路,具体用于:从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
其中,Wxi,Wxf,Wxo以及Wxc依次表示输入门权重数据矩阵,遗忘门权重数据矩阵,输出门权重数据矩阵以及cell门权重数据矩阵;Whi,Whf,Who以及Whc依次表示输入门隐状态权重数据矩阵,遗忘门隐状态权重数据矩阵,输出门隐状态权重数据矩阵以及cell门隐状态权重数据矩阵;bi,bf,bo以及bc依次表示输入门偏置数据,遗忘门偏置数据,输出门偏置数据以及cell门偏置数据;it,ft,ot以及
Figure BDA0002701347270000041
依次表示输入门,遗忘门,输出门以及cell门;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态。
优选的,所述向量乘法电路处于第一流水线中,所述加法电路处于第二流水线中,所述激活电路和所述状态更新电路处于第三流水线中,并且所述第一流水线,所述第二流水线以及所述第三流水线并行运行。
优选的,所述第一缓存包括:
第一存储单元,用于从片外存储中获取目标数量的Wxi,目标数量的Wxf,目标数量的Wxo以及目标数量的Wxc
第二存储单元,用于从片外存储中获取目标数量的Whi,目标数量的Whf,目标数量的Who以及目标数量的Whc
分别与所述第一存储单元以及所述第二存储单元连接的第一多路选择器,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择所述第一存储单元进行数据输出,在第二状态下选择所述第二存储单元进行数据输出;
第一存储器,第二存储器,第三存储器以及第四存储器均通过数据分类器与所述第一多路选择器连接,并且在所述第一多路选择器为第一状态时,依次用于并行输出Wxi,Wxf,Wxo以及Wxc,且并行度均为k,在所述第一多路选择器为第二状态时,依次用于并行输出Whi,Whf,Who以及Whc,且并行度均为k;
所述数据分类器;
其中,所述目标数量大于k。
优选的,所述第一存储单元与所述第二存储单元均采用第一时钟,所述第一存储器,所述第二存储器,所述第三存储器以及所述第四存储器均采用第二时钟,且所述第一时钟与所述第二时钟相互独立,以使得所述第一存储器、所述第二存储器、所述第三存储器以及所述第四存储器中的任一存储器的输出速率低于输入速率时,将未发送的数据缓存在该存储器中。
优选的,所述第二缓存,包括:
第三存储单元,用于从片外存储中获取奇数时刻的xt
第四存储单元,用于从片外存储中获取偶数时刻的xt
分别与所述第三存储单元以及所述第四存储单元连接的第二多路选择器,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择所述第三存储单元进行数据输出,在第二状态下选择所述第四存储单元进行数据输出;
第三多路选择器,用于从片外存储中获取h0并接收状态更新电路发送的ht,并且仅在首次选择时选择h0;h0表示t=1时刻的隐状态数据;
第五存储单元,用于通过所述第三多路选择器获取偶数时刻的ht以及h0
第六存储单元,用于通过所述第三多路选择器获取奇数时刻的ht
第四多路选择器,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择所述第五存储单元进行数据输出,在第二状态下选择所述第六存储单元进行数据输出;
第五多路选择器,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择所述第二多路选择器进行数据输出,在第二状态下选择所述第四多路选择器进行数据输出。
优选的,所述加法电路,包括:
4组log2k级的加法器电路,每组加法器电路用于进行输入的k个数据的求和;
与4组加法器电路的输出均连接的向量加法电路,用于接收偏置数据缓存发送的bi,bf,bo以及bc,根据每组所述加法器电路的输出,并且利用向量缓存实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算。
优选的,所述激活电路,具体用于:
根据所述加法电路的输出进行sigmoid激活操作以及tanh激活操作,并输出it,ft,ot以及
Figure BDA0002701347270000051
优选的,所述状态更新电路,具体用于:
从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算的,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
Figure BDA0002701347270000052
ht=ot⊙tanh(ct);⊙表示点乘。
一种加速RNN网络的方法,应用于上述任一项所述的加速RNN网络的系统中,包括:
第一缓存在第一状态和第二状态之间循环切换,且在第一状态时,分N路并行输出Wx1至WxN,且并行度均为k,在第二状态时,分N路并行输出Wh1至WhN,且并行度均为k;N为≥2的正整数;
第二缓存在第一状态和第二状态之间循环切换,且在第一状态时输出xt,在第二状态时输出ht-1
向量乘法电路当接收到所述第一缓存输出的Wx1至WxN时,利用N组乘法阵列分别计算Wx1xt至WxNxt,当接收到所述第一缓存输出的Wh1至WhN,利用N组乘法阵列分别计算Wh1ht-1至WhNht-1;其中,所述向量乘法电路包括N组乘法阵列,每组乘法阵列包括k个乘法单元;
加法电路接收偏置数据缓存发送的b1至bN,并且利用向量缓存实现Wx1xt+Wh1ht-1+b1至WxNxt+WhNht-1+bN的计算;
激活电路根据所述加法电路的输出进行激活操作;
状态更新电路从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
其中,Wx1至WxN依次表示第一门至第N门的权重数据矩阵;Wh1至WhN依次表示第一门至第N门的隐状态权重数据矩阵;b1至bN依次第一至第N门的偏置数据;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述加速RNN网络的方法的步骤。
应用本发明实施例所提供的技术方案,具体的,考虑到门结构的计算占据了整个RNN网络的计算的绝大部分,其中主要是矩阵和向量相乘的计算,本申请设置了包括N组乘法阵列的向量乘法电路,每组乘法阵列包括k个乘法单元,有利于提高计算速度。并且考虑到传统的方案中,Wxxt的计算和Whht-1是合并在一起计算的,当xt或者ht-1的维度较大时,就会导致计算速度很慢。因此,本申请的方案中,将Wxxt和Whht-1进行分时、分段地计算,即不需要等到Wxxt和Whht-1的全部值产生才进行累加,有利于进一步地提高方案的加速效果。具体的,第一缓存,用于在第一状态和第二状态之间循环切换,且在第一状态时,分N路并行输出Wx1至WxN,且并行度均为k,在第二状态时,分N路并行输出Wh1至WhN,且并行度均为k;N为≥2的正整数;第二缓存,用于在第一状态和第二状态之间循环切换,且在第一状态时输出xt,在第二状态时输出ht-1。向量乘法电路则会在接收到第一缓存输出的Wx1至WxN时,利用N组乘法阵列分别计算Wx1xt至WxNxt,当接收到第一缓存输出的Wh1至WhN时,利用N组乘法阵列分别计算Wh1ht-1至WhNht-1。加法电路便可以接收偏置数据缓存发送的b1至bN,并且利用向量缓存实现Wx1xt+Wh1ht-1+b1至WxNxt+WhNht-1+bN的计算。此外,本申请的方案中,每组乘法阵列包括k个乘法单元,通过对k的数值的设定和调整,使得本申请的方案可以适应不同尺寸的RNN网络,即使得本申请的方案具有很强的灵活性和扩展性。综上所述,本申请的方案有效地实现了对于RNN网络的加速,并且具有很强的灵活性和扩展性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个标准的RNN结构图;
图2为LSTM结构以及计算公式示意图;
图3为本发明中一种加速RNN网络的系统的结构示意图;
图4为本发明中第一缓存的一种结构示意图;
图5为本发明中第二缓存的一种结构示意图;
图6为本发明中一组乘法阵列的结构示意图;
图7为本发明中加法电路的一种结构示意图;
图8为本发明一种具体实施方式中的流水线式工作示意图。
具体实施方式
本发明的核心是提供一种加速RNN网络的系统,有效地实现了对于RNN网络的加速,并且具有很强的灵活性和扩展性。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图3,图3为本发明中一种加速RNN网络的系统的结构示意图,该加速RNN网络的系统,可以应用于FPGA,ASIC以及可重构芯片等硬件中,FPGA具有灵活性强、可配置以及低功耗的优点,因此后文便以FPGA为例进行说明。
该加速RNN网络的系统可以包括:
第一缓存10,用于在第一状态和第二状态之间循环切换,且在第一状态时,分N路并行输出Wx1至WxN,且并行度均为k,在第二状态时,分N路并行输出Wh1至WhN,且并行度均为k;N为≥2的正整数;
第二缓存20,用于在第一状态和第二状态之间循环切换,且在第一状态时输出xt,在第二状态时输出ht-1
向量乘法电路30,用于当接收到第一缓存10输出的Wx1至WxN时,利用N组乘法阵列分别计算Wx1xt至WxNxt,当接收到第一缓存10输出的Wh1至WhN时,利用N组乘法阵列分别计算Wh1ht-1至WhNht-1;其中,向量乘法电路30包括N组乘法阵列,每组乘法阵列包括k个乘法单元;
加法电路40,用于接收偏置数据缓存发送的b1至bN,并且利用向量缓存实现Wx1xt+Wh1ht-1+b1至WxNxt+WhNht-1+bN的计算;
激活电路50,用于根据加法电路的输出进行激活操作;
状态更新电路60,用于从cell状态缓存中获取ct-1,并根据激活电路50的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
偏置数据缓存70;向量缓存80;cell状态缓存90;
其中,Wx1至WxN依次表示第一门至第N门的权重数据矩阵;Wh1至WhN依次表示第一门至第N门的隐状态权重数据矩阵;b1至bN依次表示第一门至第N门的偏置数据;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态。
N的取值可以根据实际情况进行设定,例如GRU和LSTM是较为常用的RNN网络,对于GRU而言,具有2个门结构,即N=2,而对于LSTM网络而言,具有4个门结构,因此N=4。
RNN网络可以应用在语音识别、文字识别,文本翻译、语言建模、情感分析和文本预测等领域。特别是LSTM网络,由于其优良的特性,得到了越来越广泛的应用。
本申请的后文中,便具体以LSTM网络进行说明。
通过RNN网络,可以对输入数据进行运算,最终得到输出结果。例如具体为LSTM网络,且LSTM网络为应用于语音识别的LSTM网络时,t时刻的输入数据xt具体便为t时刻的待识别的语音输入数据,通过LSTM网络的识别,可以输出语音识别结果。LSTM网络为应用于文字识别的LSTM网络时,t时刻的输入数据xt具体便为t时刻的携带待识别文字的图像输入数据,通过LSTM网络的识别,可以输出文字识别结果。LSTM网络为应用于文本翻译的LSTM网络时,t时刻的输入数据xt具体便为t时刻的待翻译的文本输入数据,通过LSTM网络的识别,可以输出翻译结果。LSTM网络为应用于情感分析的LSTM网络时,t时刻的输入数据xt具体便为t时刻的待分析情感的输入数据,可以是语音输入数据,也可以是文本输入数据,通过LSTM网络的识别,可以输出分析结果。
本申请的图3的实施方式中,是以LSTM网络进行说明,即图3的加速RNN网络的系统具体为加速LSTM网络的系统,N=4,该加速LSTM网络的系统可以包括:
第一缓存10,具体用于:在第一状态和第二状态之间循环切换,且在第一状态时,分4路并行输出Wxi,Wxf,Wxo以及Wxc,且并行度均为k,在第二状态时,分4路并行输出Whi,Whf,Who以及Whc,且并行度均为k;
第二缓存20,具体用于:在第一状态和第二状态之间循环切换,且在第一状态时,输出xt,在第二状态时,输出ht-1
向量乘法电路30,具体用于:当接收到第一缓存10输出的Wxi,Wxf,Wxo以及Wxc时,利用4组乘法阵列分别计算Wxixt,Wxfxt,Wxoxt以及Wxcxt,当接收到第一缓存10输出的Whi,Whf,Who以及Whc时,利用4组乘法阵列分别计算Whiht-1,Whfht-1,Whoht-1以及Whcht-1;其中,向量乘法电路30包括4组乘法阵列,每组乘法阵列包括k个乘法单元;
加法电路40,具体用于:接收偏置数据缓存70发送的bi,bf,bo以及bc,并且利用向量缓存80实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算;
激活电路50,具体用于:根据加法电路40的输出进行激活操作,并输出it,ft,ot以及
Figure BDA0002701347270000101
状态更新电路60,具体用于:从Cell状态缓存90中获取ct-1,并根据激活电路50的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新Cell状态缓存90中的ct-1,并将ht发送至第二缓存20;
偏置数据缓存70;向量缓存80;Cell状态缓存90;
其中,Wxi,Wxf,Wxo以及Wxc依次表示输入门权重数据矩阵,遗忘门权重数据矩阵,输出门权重数据矩阵以及cell门权重数据矩阵;Whi,Whf,Who以及Whc依次表示输入门隐状态权重数据矩阵,遗忘门隐状态权重数据矩阵,输出门隐状态权重数据矩阵以及cell门隐状态权重数据矩阵;bi,bf,bo以及bc依次表示输入门偏置数据,遗忘门偏置数据,输出门偏置数据以及cell门偏置数据;it,ft,ot以及
Figure BDA0002701347270000102
依次表示输入门,遗忘门,输出门以及cell门;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态。
需要说明的是,前文中,描述了Wx1至WxN依次表示第一门至第N门的权重数据矩阵,而本申请具体以LSTM网络进行说明,即N=4,也就意味着具有Wx1,Wx2,Wx3以及Wx4,依次表示第一门的权重数据矩阵,第二门的权重数据矩阵,第三门的权重数据矩阵以及第四门的权重数据矩阵。在LSTM网络中,技术人员通常将四个门结构称为输入门,遗忘门,输出门以及cell门,因此,本申请的方案中,Wx1,Wx2,Wx3以及Wx4,依次用Wxi,Wxf,Wxo以及Wxc表示,如上文的描述,Wxi,Wxf,Wxo以及Wxc依次表示输入门权重数据矩阵,遗忘门权重数据矩阵,输出门权重数据矩阵以及cell门权重数据矩阵。
同理,上文中描述的b1至bN依次表示第一至第N门的偏置数据,具体到LSTM中,依次用bi,bf,bo以及bc,依次指代b1至b4。同理,上文描述的Wh1至WhN依次表示第一门至第N门的隐状态权重数据矩阵,具体到LSTM中,用Whi,Whf,Who以及Whc,依次指代Wh1,Wh2,Wh3以及Wh4
具体的,在本申请的方案中,对于LSTM网络,通过第一缓存10进行Wx以及Wh的输出。对于LSTM网络而言,本申请的Wx即表示Wxi,Wxf,Wxo以及Wxc,Wh即表示Whi,Whf,Who以及Whc,后文中也是如此。第一缓存10通过在第一状态和第二状态之间循环切换,且每次输出的并行度均为k,使得本申请的方案并不需要将Wxxt和Whht-1合并在一起计算,而是可以进行分时、分段地计算,有利于使得加速LSTM网络的系统中的各个部分不会产生停顿,从而有利于提高效率。
第一缓存10的具体结构可以根据实际需要进行设定和调整,例如在本发明的一种具体实施方式中,可参阅图4,第一缓存10包括:
第一存储单元101,用于从片外存储中获取目标数量的Wxi,目标数量的Wxf,目标数量的Wxo以及目标数量的Wxc
第二存储单元102,用于从片外存储中获取目标数量的Whi,目标数量的Whf,目标数量的Who以及目标数量的Whc
分别与第一存储单元101以及第二存储单元102连接的第一多路选择器103,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择第一存储单元101进行数据输出,在第二状态下选择第二存储单元102进行数据输出;
第一存储器105,第二存储器106,第三存储器107以及第四存储器108均通过数据分类器104与第一多路选择器103连接,并且在第一多路选择器103为第一状态时,依次用于并行输出Wxi,Wxf,Wxo以及Wxc,且并行度均为k,在第一多路选择器103为第二状态时,依次用于并行输出Whi,Whf,Who以及Whc,且并行度均为k;
数据分类器104;
其中,目标数量大于k。
该种实施方式中,第一存储单元101可以从片外存储中获取目标数量的Wx,第二存储单元102可以从片外存储中获取目标数量的Wh,目标数量大于k。是考虑到一次性连续读取大量数据到FPGA片上,可以减少FPGA与片外存储的通信次数。可以理解的是,第一存储单元101和第二存储单元102可以设置成较大的容量。当然,在容量允许的情况下,例如Wx的全部数据一共占据2M大小,可以一次性地将这2M数据存储在第一存储单元101中,即目标数量便为2M,之后便不再需要从片外存储中获取Wx。在更多的情况下,FPGA的容量有限,例如Wx一共占据2M大小,但第一存储单元101的容量只有1M,则目标数量例如可以设置为1M,然后循环读取,即一次读取2M中的前1M,下一次是读取2M中的后1M,以此循环。
并且,本申请利用第一存储单元101存储Wx,利用第二存储单元102存储Wh,二者构成了乒乓结构,这样可以保证数据的高速连续的输出。
本申请通过第一多路选择器103实现Wx和Wh的切换,具体的,第一多路选择器103为第一状态时,选择第一存储单元101进行数据输出,即输出Wx。第一多路选择器103为第二状态时,选择第二存储单元102进行数据输出,即输出Wh。并且在输出Wx以及输出Wh时,并行度均为k,即并不是将第一存储单元101以及第二存储单元102中全部的Wx和Wh进行输出。例如,将Wx的维度表示为Nh×Nx,将Wh的维度表示为Nh×Nh,xt的维度表示为Nx×1,偏置数据B的维度表示为Nh×1。例如一种具体场景中,Wx的维度为100×500,并行度k为10,Wh的维度为100×100,并行度k为10。则该种场景中,例如第一多路选择器103首先选取的是Wx的第一行的前10个数据,然后第一多路选择器103选取的是Wh的第一行的前10个数据,再然后第一多路选择器103选取的是Wx的第一行的第11至第20个数据,再然后第一多路选择器103选取的是Wh的第一行的第11至第20个数据,以此类推,当Wx的全部数据都被读取之后,再从头开始Wx的读取,Wh与此同理。本申请描述的偏置数据B即表示bi,bf,bo以及bc
本申请的Wx包括了Wxi,Wxf,Wxo以及Wxc,而向量乘法电路30中包括了4组乘法阵列,因此,需要通过数据分类器104进行分类,即,需要将第一多路选择器103输出的Wxi,Wxf,Wxo以及Wxc传输到不同的乘法阵列中。Wh与此同理。并且在图4的实施方式中,第一存储器105,第二存储器106,第三存储器107以及第四存储器108均为FIFO存储器,图4中的FIFO-Wi105即表示第一存储器105,用于输出Wxi和Whi,相应的,图4中的FIFO-Wf106,FIFO-Wo107,FIFO-Wc108依次表示第二存储器106,第三存储器107以及第四存储器108,依次用于输出Wxf和Whf,Wxo和Who,Wxc和Whc
LSTM的计算可以用下述6个公式表示,即:
输入门it=σ(Wxixt+Whiht-1+bi)
遗忘门ft=σ(Wxfxt+Whfht-1+bf)
输出门ot=σ(Wxoxt+Whoht-1+bo)
Cell门
Figure BDA0002701347270000131
Cell状态
Figure BDA0002701347270000132
隐状态ht=ot⊙tanh(ct)
可以看出,在进行前4个公式的计算时,本申请由第一缓存10分时提供Wx和Wh,由第二缓存20分时提供xt和ht-1
进一步的,在本发明的一种具体实施方式中,第一存储单元101与第二存储单元102均采用第一时钟,第一存储器105,第二存储器106,第三存储器107以及第四存储器108均采用第二时钟,且第一时钟与第二时钟相互独立。因此,可以使得第一存储器105,第二存储器106,第三存储器107以及第四存储器108中的任一存储器的输出速率低于输入速率时,将未发送的数据缓存在该存储器中。即,使得第一存储器105,第二存储器106,第三存储器107以及第四存储器108起到了缓存数据的作用。相较于统一设定一个第一时钟,如果第一存储器105,第二存储器106,第三存储器107以及第四存储器108中的任一存储器出现短暂的数据输出不及时的情况,本申请的该种实施方式,也不会影响第一存储单元101和第二存储单元102进行数据的连续输出,也就有利于进一步地保障本申请方案的加速效果。
在本发明的一种具体实施方式中,可参阅图5,第二缓存20可以具体包括:
第三存储单元201,用于从片外存储中获取奇数时刻的xt
第四存储单元202,用于从片外存储中获取偶数时刻的xt
分别与第三存储单元201以及第四存储单元202连接的第二多路选择器205,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择第三存储单元201进行数据输出,在第二状态下选择第四存储单元202进行数据输出;
第三多路选择器206,用于从片外存储中获取h0并接收状态更新电路60发送的ht,并且仅在首次选择时选择h0;h0表示t=1时刻的隐状态数据;
第五存储单元203,用于通过第三多路选择器206获取偶数时刻的ht以及h0
第六存储单元204,用于通过第三多路选择器206获取奇数时刻的ht
第四多路选择器207,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择第五存储单元203进行数据输出,在第二状态下选择第六存储单元204进行数据输出;
第五多路选择器208,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择第二多路选择器205进行数据输出,在第二状态下选择第四多路选择器207进行数据输出。
需要说明的是,在图4和图5的实施方式中,存储单元均采用的是BRAM存储单元,即图4和图5中,第一存储单元101,第二存储单元102,第三存储单元201,第四存储单元202,第五存储单元203以及第六存储单元204,依次表示为第一BRAM101,第二BRAM102,第三BRAM201,第四BRAM202,第五BRAM203以及第六BRAM204。
图5的实施方式中,利用第三存储单元201从片外存储中获取奇数时刻的xt,利用第四存储单元202从片外存储中获取偶数时刻的xt,是考虑到单个存储单元不能实现xt的同时的读写操作,不利于进行数据的高速连续的输出,因此,通过第三存储单元201和第四存储单元202构成乒乓结构,有利于实现数据的高速连续的输出。第五存储单元203和第六存储单元204与此同理,也是构成乒乓结构,有利于实现数据的高速连续的输出。
第三多路选择器206只会在首次选择时选择h0,h0表示t=1时刻的隐状态数据,即第一个时间步的隐状态数据h0来自片外存储,其余时间步的隐状态数据均来自状态更新电路60。
此外,需要指出的是,该种实施方式中,通过奇数时刻以及偶数时刻进行xt的划分,从而置入第三存储单元201或者第四存储单元202中,其他实施方式中,也可以设置为其他的划分方式,并不会影响本发明的实施。例如一种具体场景中,第一个,第二个以及第三个时刻的xt均置入第三存储单元201中,之后的三个时刻的xt均置入第四存储单元202,再然后的三个时刻的xt均置入第三存储单元201中,以此循环。
例如一种具体场景中,第一多路选择器103首先选取的是Wx的第一行的前10个数据,同时,第五多路选择器208为第一状态,即第五多路选择器208选择的是第二多路选择器205进行数据输出。此时的第二多路选择器205则为第一状态,即此时的第二多路选择器205选择第三存储单元201进行数据输出,该种具体场景中,则是选择第一时刻的xt的前10个数据,即x1的前10个数据。也就是说,此时的向量乘法电路30计算的是Wx的第一行的前10个数据与x1的前10个数据的乘法。
然后,第一多路选择器103选取的是Wh的第一行的前10个数据,同时,第五多路选择器208为第二状态,即第五多路选择器208选择的是第四多路选择器207进行数据输出。此时的第四多路选择器207为第一状态,即此时的第四多路选择器207选择第五存储单元203进行数据输出,该种具体场景中,则是选择h0的前10个数据。也就是说,此时的向量乘法电路30计算的是Wh的第一行的前10个数据与h0的前10个数据的乘法。
在之后,第一多路选择器103选取的是Wx的第一行的第11到第20个数据,同时,第五多路选择器208为第一状态,即第五多路选择器208选择的是第二多路选择器205进行数据输出。此时的第二多路选择器205仍然是第一状态,即此时的第二多路选择器205选择第三存储单元201进行数据输出,该种具体场景中,则是选择第一时刻的xt的第11到第20个数据,即x1的第11到第20个数据。也就是说,此时的向量乘法电路30计算的是Wx的第一行的第11到第20个数据与x1的第11到第20个数据的乘法。
后续的过程与此类似,直到实现整个Wxxt的计算以及实现整个Whht-1的计算,此处便不再赘述。
本申请的向量乘法电路30包括4组完全相同的乘法阵列,每组乘法阵列包括k个乘法单元,可参阅图6,图6中的每个PE即为一个乘法单元,图6示出了一组乘法阵列的结构示意图,每个PE完成一个乘法操作。例如前述实施方式中,k的取值为10时,则每组乘法阵列便包括10个PE。
并且需要说明的是,将Wx的维度表示为Nh×Nx,将Wh的维度表示为Nh×Nh,xt的维度表示为Nx×1,偏置数据B的维度表示为Nh×1。在计算Wxxt时,权重数据Wx需要遍历
Figure BDA0002701347270000161
次,
Figure BDA0002701347270000162
表示向上取整,xt则需要遍历
Figure BDA0002701347270000163
次。即可以理解的是,xt需要重复使用,重复次数为
Figure BDA0002701347270000164
用一个简单的例子表述,例如Wx为3行5列的矩阵,xt则为5行1列的向量,例如k取值为5,则xt重复使用3次,第一次将xt与Wx的第一行相乘,第二次将xt与Wx的第二行相乘,最后一次是将xt与Wx的第三行相乘,从而得到一个3行1列的向量Vx,也即整个Wxxt的计算结果。
相应的,Whht-1的过程与此同理,不再赘述。
此外,可以看出,本申请的向量乘法电路30结构十分简单,可以根据LSTM网络的尺寸结构,即当Nh和Nx的数值变化时,本申请只需要改变k的取值,便可以很好地适应不同尺寸结构的LSTM网络。
本申请的加法电路40,用于接收偏置数据缓存70发送的bi,bf,bo以及bc,并且利用向量缓存80实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算。
加法电路40需要利用向量缓存80,是因为本申请的向量乘法电路30的每一组乘法阵列,输出的是k个结果,而不是Wxxt或者Whht-1的全部结果。即加法电路40每次得到的是矩阵向量乘的部分和。此外,加法电路40还需要完成输入门it=σ(Wxixt+Whiht-1+bi),遗忘门ft=σ(Wxfxt+Whfht-1+bf),输出门ot=σ(Wxoxt+Whoht-1+bo),Cell门
Figure BDA0002701347270000165
这四个公式中的括号内的加法运算。
在本发明的一种具体实施方式中,可参阅图7,加法电路40可以包括:
4组log2k级的加法器电路,每组加法器电路用于进行输入的k个数据的求和;
与4组加法器电路的输出均连接的向量加法电路401,用于接收偏置数据缓存70发送的bi,bf,bo以及bc,根据每组加法器电路的输出,并且利用向量缓存80实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算。
图7中仅仅示出了与向量加法电路401连接的一组log2k级的加法器电路。此外需要说明的是,前述实施方式中进行举例时,k的取值为10,而在实际应用中,k的取值通常会设置为2的整数倍,以避免k的取值不为2的整数倍时,加法器电路中的部分加法器存在闲置的情况。当然,k的取值不为2的整数倍并不会导致方案不能实施。
对于Wxxt而言,例如具体以Wxixt为例,将乘法阵列输出的每k个数据的求和称为一次累加,则经过
Figure BDA0002701347270000171
次累加之后,可以得到最终的输出向量Wxixt中的一个数。而经过
Figure BDA0002701347270000172
次之后,可以得到维度为Nh的向量Wxixt,即得到整个Wxixt的计算结果Vxi。Whiht-1的计算与此同理,得到了Wxixt以及Whiht-1之后,再将Wxixt,Whiht-1以及bi进行求和,也即实现了Wxixt+Whiht-1+bi的计算。
激活电路50通常可以同时完成4种门结构的激活操作,即在本发明的一种具体实施方式中,激活电路50具体用于:根据加法电路40的输出进行sigmoid激活操作以及tanh激活操作,并输出it,ft,ot以及
Figure BDA0002701347270000173
sigmoid激活操作也即前述的LSTM的计算的6个公式中的σ符号,tanh激活操作则表示前述的LSTM的计算的6个公式中的tanh符号。
状态更新电路60可以完成
Figure BDA0002701347270000174
以及ht=ot⊙tanh(ct)的计算。需要说明的是,在计算
Figure BDA0002701347270000175
时,ct-1可以从Cell状态缓存90中获取,即在本发明的一种具体实施方式中,状态更新电路60,具体用于:
从Cell状态缓存90中获取ct-1,并根据激活电路50的输出进行ct以及ht的计算的,并在计算出ct之后利用ct更新Cell状态缓存90中的ct-1,并将ht发送至第二缓存20。且
Figure BDA0002701347270000176
ht=ot⊙tanh(ct);⊙表示点乘。
在计算出ct之后,状态更新电路60利用ct更新Cell状态缓存90中的ct-1,用于进行下一个时间步的ct的计算。并且需要指出的是,第一个时间步的cell状态可以来自片外存储,即c0可以来自片外存储。
在本发明的一种具体实施方式中,向量乘法电路30处于第一流水线中,加法电路40处于第二流水线中,激活电路和状态更新电路60处于第三流水线中,并且第一流水线,第二流水线以及第三流水线并行运行。
由LSTM的计算的6个公式可以看出,ct的更新依赖于ct-1,ht的计算依赖于ct,而计算it,ft,ot以及
Figure BDA0002701347270000181
时依赖于ht-1,虽然通过高并行度的计算,能够加速矩阵向量相乘的操作,但由于这样的依赖关系的存在,使得部分数据只能串行处理,从而导致业务停顿,不利于提高效率。该种实施方式中,通过流水线的调度,进一步地提高了方案的加速效果。
该种实施方式中,考虑到不同时间步的输入数据xt并不存在依赖关系,而且,本申请的方案中,是将Wxxt和Whht-1进行分时、分段地计算,因此,将向量乘法电路30设置在第一流水线中,加法电路40设置在第二流水线中,激活电路50以及状态更新电路60设置在第三流水线中,并且第一流水线,第二流水线以及第三流水线均并行运行。这样就不需要Whht-1的结果全部得到,就可以开始后续的加法操作,激活电路50以及状态更新电路60在运行时,乘法电路30已经开始了下一个时间步的乘法操作,并且加法电路40也随即进行部分和的求和,使得本申请的系统的各部分不需要停顿,即,使得前述提到的依赖被流水线的设计所消除,LSTM网络运行效率进一步地提高。
便于理解可参阅图8,计算Wxx1时,并不需要得到全部结果,就可以同时进行部分数据的累加,同时,Whh0进行计算,并且也是边计算边累加,即图8中示出的流水线式累加,使得乘法电路30与加法电路40同时在运行。而加法电路40中进行的向量的加法,激活,cell状态更新和隐状态数据生成这些操作需要的计算时间较长,在此过程中,向量乘法电路30又开始了下一时间步的运行,即开始了Wxx2的运算,紧接着进行Whh1的运算,以此往复,直至所有时间步计算完毕,即各个时刻的xt被计算完成,LSTM网络完成了业务进程。
应用本发明实施例所提供的技术方案,具体的,考虑到门结构的计算占据了整个RNN网络的计算的绝大部分,其中主要是矩阵和向量相乘的计算,本申请设置了包括N组乘法阵列的向量乘法电路,每组乘法阵列包括k个乘法单元,有利于提高计算速度。并且考虑到传统的方案中,Wxxt的计算和Whht-1是合并在一起计算的,当xt或者ht-1的维度较大时,就会导致计算速度很慢。因此,本申请的方案中,将Wxxt和Whht-1进行分时、分段地计算,即不需要等到Wxxt和Whht-1的全部值产生才进行累加,有利于进一步地提高方案的加速效果。具体的,第一缓存,用于在第一状态和第二状态之间循环切换,且在第一状态时,分N路并行输出Wx1至WxN,且并行度均为k,在第二状态时,分N路并行输出Wh1至WhN,且并行度均为k;N为≥2的正整数;第二缓存,用于在第一状态和第二状态之间循环切换,且在第一状态时输出xt,在第二状态时输出ht-1。向量乘法电路则会在接收到第一缓存输出的Wx1至WxN时,利用N组乘法阵列分别计算Wx1xt至WxNxt,当接收到第一缓存输出的Wh1至WhN时,利用N组乘法阵列分别计算Wh1ht-1至WhNht-1。加法电路便可以接收偏置数据缓存发送的b1至bN,并且利用向量缓存实现Wx1xt+Wh1ht-1+b1至WxNxt+WhNht-1+bN的计算。此外,本申请的方案中,每组乘法阵列包括k个乘法单元,通过对k的数值的设定和调整,使得本申请的方案可以适应不同尺寸的RNN网络,即使得本申请的方案具有很强的灵活性和扩展性。综上所述,本申请的方案有效地实现了对于RNN网络的加速,并且具有很强的灵活性和扩展性。
相应于上面的系统实施例,本发明实施例还提供了一种加速RNN网络的方法,可与上文相互对应参照。
该加速RNN网络的方法可以应用于上述任一实施例中的加速RNN网络的系统中,包括:
步骤一:第一缓存在第一状态和第二状态之间循环切换,且在第一状态时,分N路并行输出Wx1至WxN,且并行度均为k,在第二状态时,分N路并行输出Wh1至WhN,且并行度均为k;N为≥2的正整数;
步骤二:第二缓存在第一状态和第二状态之间循环切换,且在第一状态时输出xt,在第二状态时输出ht-1
步骤三:向量乘法电路当接收到所述第一缓存输出的Wx1至WxN时,利用N组乘法阵列分别计算Wx1xt至WxNxt,当接收到所述第一缓存输出的Wh1至WhN,利用N组乘法阵列分别计算Wh1ht-1至WhNht-1;其中,所述向量乘法电路包括N组乘法阵列,每组乘法阵列包括k个乘法单元;
步骤四:加法电路接收偏置数据缓存发送的b1至bN,并且利用向量缓存实现Wx1xt+Wh1ht-1+b1至WxNxt+WhNht-1+bN的计算;
步骤五:激活电路根据所述加法电路的输出进行激活操作;
步骤六:状态更新电路从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
其中,Wx1至WxN依次表示第一门至第N门的权重数据矩阵;Wh1至WhN依次表示第一门至第N门的隐状态权重数据矩阵;b1至bN依次第一至第N门的偏置数据;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态。
进一步的,在本发明的一种具体实施方式中,RNN网络具体为LSTM网络,N=4。
则上述步骤一具体为:第一缓存在第一状态和第二状态之间循环切换,且在第一状态时,分4路并行输出Wxi,Wxf,Wxo以及Wxc,且并行度均为k,在第二状态时,分4路并行输出Whi,Whf,Who以及Whc,且并行度均为k;
步骤二具体为:第二缓存在第一状态和第二状态之间循环切换,且在第一状态时,输出xt,在第二状态时,输出ht-1
步骤三具体为:向量乘法电路当接收到第一缓存输出的Wxi,Wxf,Wxo以及Wxc时,利用4组乘法阵列分别计算Wxixt,Wxfxt,Wxoxt以及Wxcxt,当接收到第一缓存输出的Whi,Whf,Who以及Whc时,利用4组乘法阵列分别计算Whiht-1,Whfht-1,Whoht-1以及Whcht-1;其中,向量乘法电路包括4组乘法阵列,每组乘法阵列包括k个乘法单元;
步骤四具体为:加法电路接收偏置数据缓存发送的bi,bf,bo以及bc,并且利用向量缓存实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算;
步骤五具体为:激活电路根据加法电路的输出进行激活操作,并输出it,ft,ot以及
Figure BDA0002701347270000201
步骤六具体为:状态更新电路从cell状态缓存中获取ct-1,并根据激活电路的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
其中,Wxi,Wxf,Wxo以及Wxc依次表示输入门权重数据矩阵,遗忘门权重数据矩阵,输出门权重数据矩阵以及cell门权重数据矩阵;Whi,Whf,Who以及Whc依次表示输入门隐状态权重数据矩阵,遗忘门隐状态权重数据矩阵,输出门隐状态权重数据矩阵以及cell门隐状态权重数据矩阵;bi,bf,bo以及bc依次表示输入门偏置数据,遗忘门偏置数据,输出门偏置数据以及cell门偏置数据;it,ft,ot以及
Figure BDA0002701347270000211
依次表示输入门,遗忘门,输出门以及cell门;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态。
在本发明的一种具体实施方式中,向量乘法电路处于第一流水线中,加法电路处于第二流水线中,激活电路和状态更新电路处于第三流水线中,并且第一流水线,第二流水线以及第三流水线并行运行。
在本发明的一种具体实施方式中,步骤一包括:
第一存储单元从片外存储中获取目标数量的Wxi,目标数量的Wxf,目标数量的Wxo以及目标数量的Wxc
第二存储单元从片外存储中获取目标数量的Whi,目标数量的Whf,目标数量的Who以及目标数量的Whc
分别与第一存储单元以及第二存储单元连接的第一多路选择器,实现第一状态和第二状态的循环切换,并且在第一状态下选择第一存储单元进行数据输出,在第二状态下选择第二存储单元进行数据输出;
第一存储器,第二存储器,第三存储器以及第四存储器均通过数据分类器与第一多路选择器连接,并且在第一多路选择器为第一状态时,依次并行输出Wxi,Wxf,Wxo以及Wxc,且并行度均为k,在第一多路选择器为第二状态时,依次并行输出Whi,Whf,Who以及Whc,且并行度均为k;
其中,目标数量大于k。
在本发明的一种具体实施方式中,所述第一存储单元与所述第二存储单元均采用第一时钟,所述第一存储器,所述第二存储器,所述第三存储器以及所述第四存储器均采用第二时钟,且所述第一时钟与所述第二时钟相互独立,以使得所述第一存储器、所述第二存储器、所述第三存储器以及所述第四存储器中的任一存储器的输出速率低于输入速率时,将未发送的数据缓存在该存储器中。
在本发明的一种具体实施方式中,步骤二包括:
第三存储单元从片外存储中获取奇数时刻的xt
第四存储单元从片外存储中获取偶数时刻的xt
分别与第三存储单元以及第四存储单元连接的第二多路选择器,实现第一状态和第二状态的循环切换,并且在第一状态下选择第三存储单元进行数据输出,在第二状态下选择第四存储单元进行数据输出;
第三多路选择器从片外存储中获取h0并接收状态更新电路发送的ht,并且仅在首次选择时选择h0;h0表示t=1时刻的隐状态数据;
第五存储单元通过第三多路选择器获取偶数时刻的ht以及h0
第六存储单元通过第三多路选择器获取奇数时刻的ht
第四多路选择器实现第一状态和第二状态的循环切换,并且在第一状态下选择第五存储单元进行数据输出,在第二状态下选择第六存储单元进行数据输出;
第五多路选择器实现第一状态和第二状态的循环切换,并且在第一状态下选择第二多路选择器进行数据输出,在第二状态下选择第四多路选择器进行数据输出。
在本发明的一种具体实施方式中,步骤四包括:
4组log2k级的加法器电路,每组加法器电路进行输入的k个数据的求和;
与4组加法器电路的输出均连接的向量加法电路,接收偏置数据缓存发送的bi,bf,bo以及bc,根据每组加法器电路的输出,并且利用向量缓存实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算。
在本发明的一种具体实施方式中,步骤五包括:
激活电路根据加法电路的输出进行sigmoid激活操作以及tanh激活操作,并输出it,ft,ot以及
Figure BDA0002701347270000221
在本发明的一种具体实施方式中,步骤六包括:
状态更新电路从cell状态缓存中获取ct-1,并根据激活电路的输出进行ct以及ht的计算的,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
Figure BDA0002701347270000231
ht=ot⊙tanh(ct);⊙表示点乘。
相应于上面的方法和系统实施例,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例中的加速LSTM网络的方法的步骤,可与上文相互对应参照。这里所说的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (9)

1.一种加速RNN网络的系统,其特征在于,包括:
第一缓存,用于在第一状态和第二状态之间循环切换,且在第一状态时,分N路并行输出Wx1至WxN,且并行度均为k,在第二状态时,分N路并行输出Wh1至WhN,且并行度均为k;N为≥2的正整数;
第二缓存,用于在第一状态和第二状态之间循环切换,且在第一状态时输出xt,在第二状态时输出ht-1
向量乘法电路,用于当接收到所述第一缓存输出的Wx1至WxN时,利用N组乘法阵列分别计算Wx1xt至WxNxt,当接收到所述第一缓存输出的Wh1至WhN时,利用N组乘法阵列分别计算Wh1ht-1至WhNht-1;其中,所述向量乘法电路包括N组乘法阵列,每组乘法阵列包括k个乘法单元;
加法电路,用于接收偏置数据缓存发送的b1至bN,并且利用向量缓存实现Wx1xt+Wh1ht-1+b1至WxNxt+WhNht-1+bN的计算;
激活电路,用于根据所述加法电路的输出进行激活操作;
状态更新电路,用于从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
所述偏置数据缓存;所述向量缓存;所述cell状态缓存;
其中,Wx1至WxN依次表示第一门至第N门的权重数据矩阵;Wh1至WhN依次表示第一门至第N门的隐状态权重数据矩阵;b1至bN依次表示第一门至第N门的偏置数据;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态;
RNN网络具体为LSTM网络,N=4,包括:
第一缓存,具体用于:在第一状态和第二状态之间循环切换,且在第一状态时,分4路并行输出Wxi,Wxf,Wxo以及Wxc,且并行度均为k,在第二状态时,分4路并行输出Whi,Whf,Who以及Whc,且并行度均为k;
第二缓存,具体用于:在第一状态和第二状态之间循环切换,且在第一状态时,输出xt,在第二状态时,输出ht-1
向量乘法电路,具体用于:当接收到所述第一缓存输出的Wxi,Wxf,Wxo以及Wxc时,利用4组乘法阵列分别计算Wxixt,Wxfxt,Wxoxt以及Wxcxt,当接收到所述第一缓存输出的Whi,Whf,Who以及Whc时,利用4组乘法阵列分别计算Whiht-1,Whfht-1,Whoht-1以及Whcht-1;其中,所述向量乘法电路包括4组乘法阵列,每组乘法阵列包括k个乘法单元;
加法电路,具体用于:接收偏置数据缓存发送的bi,bf,bo以及bc,并且利用向量缓存实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算;
激活电路,具体用于:根据所述加法电路的输出进行激活操作,并输出it,ft,ot以及
Figure FDA0003619509780000021
状态更新电路,具体用于:从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
其中,Wxi,Wxf,Wxo以及Wxc依次表示输入门权重数据矩阵,遗忘门权重数据矩阵,输出门权重数据矩阵以及cell门权重数据矩阵;Whi,Whf,Who以及Whc依次表示输入门隐状态权重数据矩阵,遗忘门隐状态权重数据矩阵,输出门隐状态权重数据矩阵以及cell门隐状态权重数据矩阵;bi,bf,bo以及bc依次表示输入门偏置数据,遗忘门偏置数据,输出门偏置数据以及cell门偏置数据;it,ft,ot以及
Figure FDA0003619509780000022
依次表示输入门,遗忘门,输出门以及cell门;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态;
所述第一缓存包括:
第一存储单元,用于从片外存储中获取目标数量的Wxi,目标数量的Wxf,目标数量的Wxo以及目标数量的Wxc
第二存储单元,用于从片外存储中获取目标数量的Whi,目标数量的Whf,目标数量的Who以及目标数量的Whc
分别与所述第一存储单元以及所述第二存储单元连接的第一多路选择器,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择所述第一存储单元进行数据输出,在第二状态下选择所述第二存储单元进行数据输出;
第一存储器,第二存储器,第三存储器以及第四存储器均通过数据分类器与所述第一多路选择器连接,并且在所述第一多路选择器为第一状态时,依次用于并行输出Wxi,Wxf,Wxo以及Wxc,且并行度均为k,在所述第一多路选择器为第二状态时,依次用于并行输出Whi,Whf,Who以及Whc,且并行度均为k;
所述数据分类器;
其中,所述目标数量大于k。
2.根据权利要求1所述的加速RNN网络的系统,其特征在于,所述向量乘法电路处于第一流水线中,所述加法电路处于第二流水线中,所述激活电路和所述状态更新电路处于第三流水线中,并且所述第一流水线,所述第二流水线以及所述第三流水线并行运行。
3.根据权利要求1所述的加速RNN网络的系统,其特征在于,所述第一存储单元与所述第二存储单元均采用第一时钟,所述第一存储器,所述第二存储器,所述第三存储器以及所述第四存储器均采用第二时钟,且所述第一时钟与所述第二时钟相互独立,以使得所述第一存储器、所述第二存储器、所述第三存储器以及所述第四存储器中的任一存储器的输出速率低于输入速率时,将未发送的数据缓存在该存储器中。
4.根据权利要求1所述的加速RNN网络的系统,其特征在于,所述第二缓存,包括:
第三存储单元,用于从片外存储中获取奇数时刻的xt
第四存储单元,用于从片外存储中获取偶数时刻的xt
分别与所述第三存储单元以及所述第四存储单元连接的第二多路选择器,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择所述第三存储单元进行数据输出,在第二状态下选择所述第四存储单元进行数据输出;
第三多路选择器,用于从片外存储中获取h0并接收状态更新电路发送的ht,并且仅在首次选择时选择h0;h0表示t=1时刻的隐状态数据;
第五存储单元,用于通过所述第三多路选择器获取偶数时刻的ht以及h0
第六存储单元,用于通过所述第三多路选择器获取奇数时刻的ht
第四多路选择器,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择所述第五存储单元进行数据输出,在第二状态下选择所述第六存储单元进行数据输出;
第五多路选择器,用于实现第一状态和第二状态的循环切换,并且在第一状态下选择所述第二多路选择器进行数据输出,在第二状态下选择所述第四多路选择器进行数据输出。
5.根据权利要求1所述的加速RNN网络的系统,其特征在于,所述加法电路,包括:
4组log2k级的加法器电路,每组加法器电路用于进行输入的k个数据的求和;
与4组加法器电路的输出均连接的向量加法电路,用于接收偏置数据缓存发送的bi,bf,bo以及bc,根据每组所述加法器电路的输出,并且利用向量缓存实现Wxixt+Whiht-1+bi,Wxfxt+Whfht-1+bf,Wxoxt+Whoht-1+bo,以及Wxcxt+Whcht-1+bc的计算。
6.根据权利要求1所述的加速RNN网络的系统,其特征在于,所述激活电路,具体用于:
根据所述加法电路的输出进行sigmoid激活操作以及tanh激活操作,并输出it,ft,ot以及
Figure FDA0003619509780000041
7.根据权利要求1所述的加速RNN网络的系统,其特征在于,所述状态更新电路,具体用于:
从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算的,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
Figure FDA0003619509780000042
ht=ot⊙tanh(ct);⊙表示点乘。
8.一种加速RNN网络的方法,其特征在于,应用于如权利要求1至7任一项所述的加速RNN网络的系统中,包括:
第一缓存在第一状态和第二状态之间循环切换,且在第一状态时,分N路并行输出Wx1至WxN,且并行度均为k,在第二状态时,分N路并行输出Wh1至WhN,且并行度均为k;N为≥2的正整数;
第二缓存在第一状态和第二状态之间循环切换,且在第一状态时输出xt,在第二状态时输出ht-1
向量乘法电路当接收到所述第一缓存输出的Wx1至WxN时,利用N组乘法阵列分别计算Wx1xt至WxNxt,当接收到所述第一缓存输出的Wh1至WhN,利用N组乘法阵列分别计算Wh1ht-1至WhNht-1;其中,所述向量乘法电路包括N组乘法阵列,每组乘法阵列包括k个乘法单元;
加法电路接收偏置数据缓存发送的b1至bN,并且利用向量缓存实现Wx1xt+Wh1ht-1+b1至WxNxt+WhNht-1+bN的计算;
激活电路根据所述加法电路的输出进行激活操作;
状态更新电路从cell状态缓存中获取ct-1,并根据所述激活电路的输出进行ct以及ht的计算,并在计算出ct之后利用ct更新cell状态缓存中的ct-1,并将ht发送至第二缓存;
其中,Wx1至WxN依次表示第一门至第N门的权重数据矩阵;Wh1至WhN依次表示第一门至第N门的隐状态权重数据矩阵;b1至bN依次第一至第N门的偏置数据;xt表示t时刻的输入数据,ht-1表示t-1时刻的隐状态数据,ht表示t时刻的隐状态数据,ct表示t时刻的cell状态,ct-1表示t-1时刻的cell状态。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求8所述的加速RNN网络的方法的步骤。
CN202011023267.4A 2020-09-25 2020-09-25 一种加速rnn网络的系统、方法及存储介质 Active CN111985626B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202011023267.4A CN111985626B (zh) 2020-09-25 2020-09-25 一种加速rnn网络的系统、方法及存储介质
PCT/CN2021/089936 WO2022062391A1 (zh) 2020-09-25 2021-04-26 一种加速rnn网络的系统、方法及存储介质
US18/012,938 US11775803B2 (en) 2020-09-25 2021-04-26 System and method for accelerating RNN network, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011023267.4A CN111985626B (zh) 2020-09-25 2020-09-25 一种加速rnn网络的系统、方法及存储介质

Publications (2)

Publication Number Publication Date
CN111985626A CN111985626A (zh) 2020-11-24
CN111985626B true CN111985626B (zh) 2022-06-07

Family

ID=73450291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011023267.4A Active CN111985626B (zh) 2020-09-25 2020-09-25 一种加速rnn网络的系统、方法及存储介质

Country Status (3)

Country Link
US (1) US11775803B2 (zh)
CN (1) CN111985626B (zh)
WO (1) WO2022062391A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111985626B (zh) * 2020-09-25 2022-06-07 苏州浪潮智能科技有限公司 一种加速rnn网络的系统、方法及存储介质
CN112732638B (zh) * 2021-01-22 2022-05-06 上海交通大学 基于ctpn网络的异构加速系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180173437A1 (en) * 2016-12-19 2018-06-21 Intel Corporation Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication
CN108376285A (zh) * 2018-03-23 2018-08-07 中国科学院计算技术研究所 一种面向多变异体lstm神经网络加速器及数据处理方法
CN110110851A (zh) * 2019-04-30 2019-08-09 南京大学 一种lstm神经网络的fpga加速器及其加速方法
CN110826710A (zh) * 2019-10-18 2020-02-21 南京大学 基于横向脉动阵列的rnn前向传播模型的硬件加速实现系统及方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621486B2 (en) 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US11216722B2 (en) * 2016-12-31 2022-01-04 Intel Corporation Hardware accelerator template and design framework for implementing recurrent neural networks
US10445451B2 (en) * 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
CN108446761B (zh) * 2018-03-23 2021-07-20 中国科学院计算技术研究所 一种神经网络加速器及数据处理方法
US11307873B2 (en) * 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US11200186B2 (en) * 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US11042797B2 (en) 2019-01-08 2021-06-22 SimpleMachines Inc. Accelerating parallel processing of data in a recurrent neural network
US10915471B2 (en) * 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) * 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029958B1 (en) * 2019-12-28 2021-06-08 Intel Corporation Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator
CN111985626B (zh) 2020-09-25 2022-06-07 苏州浪潮智能科技有限公司 一种加速rnn网络的系统、方法及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180173437A1 (en) * 2016-12-19 2018-06-21 Intel Corporation Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication
CN108376285A (zh) * 2018-03-23 2018-08-07 中国科学院计算技术研究所 一种面向多变异体lstm神经网络加速器及数据处理方法
CN110110851A (zh) * 2019-04-30 2019-08-09 南京大学 一种lstm神经网络的fpga加速器及其加速方法
CN110826710A (zh) * 2019-10-18 2020-02-21 南京大学 基于横向脉动阵列的rnn前向传播模型的硬件加速实现系统及方法

Also Published As

Publication number Publication date
US20230196068A1 (en) 2023-06-22
WO2022062391A1 (zh) 2022-03-31
CN111985626A (zh) 2020-11-24
US11775803B2 (en) 2023-10-03

Similar Documents

Publication Publication Date Title
EP3761235B1 (en) Transposing neural network matrices in hardware
Peng et al. Accelerating transformer-based deep learning models on fpgas using column balanced block pruning
EP0570359B1 (en) Heuristic processor
CN109783412B (zh) 一种深度强化学习加速训练的方法
CN111985626B (zh) 一种加速rnn网络的系统、方法及存储介质
US11663444B2 (en) Pipelined neural network processing with continuous and asynchronous updates
US11983616B2 (en) Methods and apparatus for constructing digital circuits for performing matrix operations
KR102396447B1 (ko) 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
CN115423081A (zh) 一种基于fpga的cnn_lstm算法的神经网络加速器
CN114675805A (zh) 存储器中计算累加器
CN114519425A (zh) 一种规模可扩展的卷积神经网络加速系统
Liu et al. Algorithm and hardware co-design co-optimization framework for LSTM accelerator using quantized fully decomposed tensor train
Domingos et al. An efficient and scalable architecture for neural networks with backpropagation learning
Anis FPGA implementation of parallel particle swarm optimization algorithm and compared with genetic algorithm
US12020141B2 (en) Deep learning apparatus for ANN having pipeline architecture
CN112836793B (zh) 浮点可分离卷积计算加速装置、系统以及图像处理方法
JPH076146A (ja) 並列データ処理システム
Ago et al. The parallel FDFM processor core approach for neural networks
Kim et al. An Asynchronous Inter-Processor Communication Based, Input Recycling Parallel Architecture for Large Scale Neural Network Simulation
Khandelwal et al. Efficient Real-Time Inference in Temporal Convolution Networks
AbdulQader et al. Enabling incremental training with forward pass for edge devices
Chen et al. How to obtain and run light and efficient deep learning networks
CN114003196B (zh) 矩阵运算装置与矩阵运算方法
US12003255B2 (en) Method and device for binary coding of signals in order to implement digital MAC operations with dynamic precision
US20240152327A1 (en) Computing circuit, computing method, and decoder

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