CN110826710B - 基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法 - Google Patents

基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法 Download PDF

Info

Publication number
CN110826710B
CN110826710B CN201910996386.9A CN201910996386A CN110826710B CN 110826710 B CN110826710 B CN 110826710B CN 201910996386 A CN201910996386 A CN 201910996386A CN 110826710 B CN110826710 B CN 110826710B
Authority
CN
China
Prior art keywords
hidden layer
calculation
data
rnn
vector
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
CN201910996386.9A
Other languages
English (en)
Other versions
CN110826710A (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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN201910996386.9A priority Critical patent/CN110826710B/zh
Publication of CN110826710A publication Critical patent/CN110826710A/zh
Application granted granted Critical
Publication of CN110826710B publication Critical patent/CN110826710B/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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • 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
    • 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

Abstract

本发明公开了基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统及方法,首先配置网络参数,对数据进行初始化后,基于横向脉动阵列,计算中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,经过矩阵乘向量和向量求和运算和激活函数运算,计算得到隐藏层神经元,随后根据获得的隐藏层神经元,经过矩阵乘向量、向量求和运算和激活函数运算,产生RNN输出层结果,最终依据时间序列长度配置信息,产生RNN网络所需的输出结果,本方法隐藏层和输出层多维度并行,提高了计算的流水性,同时RNN网络中权重矩阵参数共享的特点,采用分块设计,进一步提高计算的并行度,灵活度高、可扩展性强、存储资源利用率高,加速比高,大大降低了计算。

Description

基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法
技术领域
本发明属于人工智能硬件加速的技术领域,具体涉及一种基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统及方法。
背景技术
在人工智能的时代,神经网络算法已经广泛运用于图像识别等不同领域,如卷积神经网络(Convolutional Neural Networks, CNN)、深度神经网络(Deep NeuralNetworks, DNN),在如此广泛而频繁的使用中,神经网络算法也暴露出了一些问题:传统的神经网络只能单独处理一个输入,前后时刻的输入完全没有关系。例如,当我们预测句子的下一个单词时,句子中的前后单词并不独立,CNN或DNN对此就无能为力了,而循环神经网络(Recurrent Neural Network, RNN)引入了定向循环,能够处理那些输入之间前后关联的问题,因此常运用于文本生成、机器翻译、语音识别、图像描述生成等领域。
RNN的输入层、隐藏层以及输出层之间均是全连接计算模式,包含大量的乘累加运算,属于计算密集型算法,通常需要采用硬件加速方法实现,但是传统的CPU逻辑运算单元较少,无法满足日益庞大的计算网络,GPU虽然计算能力较强,可其无法灵活配置硬件结构,ASIC作为专用处理芯片,针对特定的需求,功耗低、面积小、性能高的同时灵活性差且不可配置。综上,如何实现RNN前向传播计算的硬件加速并且使神经网络性能更好、功耗更低、灵活性更好成为了当前人工智能的研究热点之一。
发明内容
本发明正是针对现有问题,提供了基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统及方法,包括初始化步骤、隐藏层神经元计算步骤和输出层神经元计算步骤,配置网络参数,对数据进行初始化后,基于横向脉动阵列,计算中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,经过矩阵乘向量和向量求和运算和激活函数运算,计算得到隐藏层神经元,随后根据获得的隐藏层神经元,经过矩阵乘向量、向量求和运算和激活函数运算,产生RNN输出层结果,最终依据时间序列长度配置信息,产生RNN网络所需的输出结果,本方法隐藏层和输出层多维度并行,提高了计算的流水性,同时RNN网络中权重矩阵参数共享的特点,采用分块设计,进一步提高计算的并行度,灵活度高、可扩展性强、存储资源利用率高,加速比高,大大降低了计算。
为了实现上述目的,本发明采用的技术方案是:基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,包括如下步骤:
S1,初始化步骤:配置网络参数,所述参数至少包括输入层、隐藏层、输出层结点数目,时间序列长度和待处理批次;
S2,隐藏层神经元计算步骤:将数据传入横向脉动阵列,基于横向脉动阵列,计算得到隐藏层神经元;所述计算中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,计算
Figure 100002_DEST_PATH_IMAGE001
,其中
Figure 100002_DEST_PATH_IMAGE002
为当前时刻输入向量,
Figure 100002_DEST_PATH_IMAGE003
为隐藏层对上一时刻输入向量
Figure 100002_DEST_PATH_IMAGE004
的激励值,经过矩阵乘向量和向量求和运算和激活函数运算,生成RNN网络隐藏层神经元;
S3,输出层神经元计算步骤:根据步骤S2中获得的隐藏层神经元,经过矩阵乘向量、向量求和运算和激活函数运算,产生RNN输出层结果
Figure 100002_DEST_PATH_IMAGE005
S4,依据时间序列长度配置信息,重复步骤S2和步骤S3,依据softmax的配置信息,产生RNN网络所需的输出结果,生成最终结果数据。
作为本发明的一种改进,所述步骤S2中横向脉动阵列数据传输方式为列间脉动、行间广播,操作数以行为单位同时传输到一列中的每个计算单元,权重和偏置以列为单位依次进入一列中的每个计算单元,操作数和权重多次反复使用;所述每个计算过程中多个乘累加运算并行展开。
作为本发明的另一种改进,所述步骤S2中分块设计具体为:隐藏层计算的权重矩阵包括U、W:
U为输入层至隐藏层的权重矩阵,
Figure 100002_DEST_PATH_IMAGE006
W为隐藏层之间的权重矩阵,
Figure 100002_DEST_PATH_IMAGE007
两个矩阵合并为
Figure 100002_DEST_PATH_IMAGE008
输入神经元由
Figure 100002_DEST_PATH_IMAGE009
组成,矩阵[U|W]按行分块,分为
Figure 100002_DEST_PATH_IMAGE010
Figure 100002_DEST_PATH_IMAGE011
Figure 100002_DEST_PATH_IMAGE012
子权重。
作为本发明的另一种改进,所述步骤S2中对隐藏层输出结果采用缓存交替接收和输出,即存在两个存储子单元,其中当第一个子存储单元接收当前隐藏层计算结果时,第二个子存储单元输出前一时刻的隐藏层计算结果神经元,作为当前时刻神经元部分源数据,参与RNN网络计算,实现输出与RNN网络模型间的反馈设计。
作为本发明的更进一步改进,所述步骤S4中依据时间序列长度配置信息,重复步骤S2和步骤S3获得的结果数据,按照是否经过softmax,分为“不经过”和“经过”两类数据分别存放,同一批次的计算结果以地址递增的方式存入存储器中,数据不随时间序列进行覆盖。
为了实现上述目的,本发明还采用的技术方案是:基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统,包括数据控制单元、前向传播计算单元和数据缓存单元,
所述数据控制单元用于接收和产生控制信号,同时控制数据在各模块之间的传输与计算;
所述前向传播计算单元用于将数据传入横向脉动阵列,依次计算出隐藏层神经元和输出层神经元,完成RNN前向模型运算;
所述数据缓存单元用于为参与计算和获得的计算结果提供存储空间,所述数据均为16位定点数;
所述前向传播计算单元中,基于横向脉动阵列,计算中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,经过矩阵乘向量和向量求和运算和激活函数运算,计算得到隐藏层神经元,随后根据获得的隐藏层神经元,经过矩阵乘向量、向量求和运算和激活函数运算,产生RNN输出层结果,最终依据时间序列长度配置信息,产生RNN网络所需的输出结果。
作为本发明的一种改进,所述前向传播计算单元向横向脉动阵列传入的数据至少包括输入向量
Figure 100002_DEST_PATH_IMAGE013
、权重矩阵
Figure 100002_DEST_PATH_IMAGE014
和偏置向量
Figure 100002_DEST_PATH_IMAGE015
,阵列中每个独立计算单元包括16位定点乘法器、加法器、除法器、线性激活函数计算单元以及支持sigmoid函数和tanh函数计算的非线性激活函数计算单元,实现乘累加和神经网络激活函数的计算,最高支持32批次数据的处理。
在进一步的实施例中,提供一种基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,基于硬件加速实现系统,
所述硬件加速实现系统包括:
数据控制单元:接收和产生控制信号,控制数据在各模块之间传输、计算;
前向传播计算单元:将输入向量
Figure 150173DEST_PATH_IMAGE013
、权重矩阵
Figure 100002_DEST_PATH_IMAGE016
和偏置向量
Figure 4997DEST_PATH_IMAGE015
,传入横向脉动阵列,依次计算隐藏层神经元
Figure 100002_DEST_PATH_IMAGE017
和输出层神经元
Figure 100002_DEST_PATH_IMAGE018
,完成RNN前向模型运算;
数据缓存单元:为参与计算的输入向量
Figure 456838DEST_PATH_IMAGE013
、权重矩阵
Figure 524151DEST_PATH_IMAGE016
和偏置向量
Figure 869682DEST_PATH_IMAGE015
和隐藏层神经元
Figure DEST_PATH_IMAGE019
、输出层神经元
Figure 827230DEST_PATH_IMAGE018
,提供片上存储空间,数据均为16位定点数;
所述前向传播计算单元中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,与输入向量、隐藏层输出结果进行乘累加运算,得到隐藏层神经元,每次计算过程中多个乘累加运算并行展开;
所述分块设计具体为:
隐藏层计算的权重矩阵包括U、W:U为输入层至隐藏层的权重矩阵,
Figure DEST_PATH_IMAGE020
,W为隐藏层之间的权重矩阵,
Figure DEST_PATH_IMAGE021
,两个矩阵合并为
Figure DEST_PATH_IMAGE022
输入神经元由
Figure 235209DEST_PATH_IMAGE009
组成,矩阵[U|W]按行分块,分为
Figure 965268DEST_PATH_IMAGE010
Figure 40671DEST_PATH_IMAGE011
Figure DEST_PATH_IMAGE023
子权重;
前向脉动阵列共32行、32列,一批输入神经元
Figure 971718DEST_PATH_IMAGE009
传入一行横向脉动阵列,数据依次进入32个计算单元;子权重同时广播至32行脉动阵列,
Figure DEST_PATH_IMAGE024
数据依次进入每个计算单元,不同子权重依次传入32列脉动阵列里的计算单元中;随时钟信号,
Figure 991627DEST_PATH_IMAGE009
依次与不同子权重
Figure 135163DEST_PATH_IMAGE010
Figure 189707DEST_PATH_IMAGE011
Figure DEST_PATH_IMAGE025
等进行相乘和累加,再与偏置向量
Figure 822813DEST_PATH_IMAGE015
相加后经过激活函数
Figure DEST_PATH_IMAGE026
,计算出隐藏层神经元输出结果
Figure 2122DEST_PATH_IMAGE017
前向传播计算单元对隐藏层输出结果
Figure 683770DEST_PATH_IMAGE017
采用缓存交替接收和输出,即存在两个存储子单元,其中当第一个子存储单元接收当前隐藏层计算结果
Figure 858400DEST_PATH_IMAGE017
时,第二个子存储单元输出前一时刻的隐藏层计算结果神经元
Figure 927987DEST_PATH_IMAGE003
,作为当前时刻神经元
Figure 63433DEST_PATH_IMAGE009
部分源数据,参与RNN网络计算,实现输出与RNN网络模型间的反馈设计;
前向传播计算单元基于横向脉动阵列,多维度并行,多批次输入神经元并行输入:多批次的输入神经元
Figure 673406DEST_PATH_IMAGE009
可同时传入横向脉动阵列参与计算,最大可并行输入32批次神经元;隐藏层神经元并行计算:不同批次输入神经元
Figure DEST_PATH_IMAGE027
与不同子权重
Figure DEST_PATH_IMAGE028
进行数据相乘和累加计算,最大化程度下可实现32×32路并行乘累加;多批输出并行输出:同一个时钟信号下,横向阵列可实现最大32路并行神经元
Figure 781170DEST_PATH_IMAGE018
的输出;
所述方法包括如下步骤:
步骤一:初始化步骤,配置网络参数,包括输入层、隐藏层、输出层结点数目,时间序列长度和待处理批次;
步骤二:数据控制单元将数据缓存单元中的数据传入横向脉动阵列,前向传播计算单元开始计算
Figure 83976DEST_PATH_IMAGE001
,其中
Figure 441139DEST_PATH_IMAGE002
为当前时刻输入向量,
Figure 854803DEST_PATH_IMAGE003
为隐藏层对上一时刻输入向量
Figure 941707DEST_PATH_IMAGE004
的激励值,经过矩阵乘向量和向量求和运算和激活函数运算,生成RNN网络隐藏层神经元;
步骤三:前向传播计算单元依据隐藏层神经元,再一次经过矩阵乘向量和向量求和运算和激活函数运算
Figure 290780DEST_PATH_IMAGE005
,产生RNN输出层结果;
步骤四:依据时间序列长度配置信息,重复步骤二和步骤三,生成最终结果数据。
与现有技术相比,本发明公开了基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统及方法,采用横向脉动阵列,提高了计算速率;采用分块设计,进一步提高计算的并行度;隐藏层和输出层多维度并行,提高了计算的流水性;网络各层结点数以及时间序列长度可灵活配置,灵活度更高;存储资源利用效率高,可扩展性强;经过本方法的改进后,加速比大大高,很大程度的降低了计算。
附图说明
图1为本发明基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统的硬件系统架构示意图;
图2为本发明实施例1中基于横向脉动阵列的RNN前向传播模型的网络模型结构示意图;
图3为本发明实施例1中基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统中数据存储的示意图;
图4为本发明实施例2步骤S2中的分块设计示意图。
具体实施方式
以下将结合附图和实施例,对本发明进行较为详细的说明。
实施例1
基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统,如图1所示,包括数据控制单元、前向传播计算单元和数据缓存单元,所述数据控制单元用于接收和产生控制信号,同时控制数据在各模块之间的传输与计算;所述前向传播计算单元用于将数据传入横向脉动阵列,依次计算出隐藏层神经元和输出层神经元,完成RNN前向模型运算;所述数据缓存单元用于为参与计算和获得的计算结果提供存储空间,所述数据均为16位定点数。
所述前向传播计算单元向横向脉动阵列传入的数据至少包括输入向量
Figure 259873DEST_PATH_IMAGE013
、权重矩阵
Figure 87015DEST_PATH_IMAGE014
和偏置向量
Figure 356322DEST_PATH_IMAGE015
,阵列中每个独立计算单元包括16位定点乘法器、加法器、除法器、线性激活函数计算单元以及支持sigmoid函数和tanh函数计算的非线性激活函数计算单元,实现乘累加和神经网络激活函数的计算,最高支持32批次数据的处理。
如图2所示,本实施例的基于横向脉动阵列的RNN前向传播模型,输入层与隐藏层、隐藏层与输出层之间连接方式均为全连接,网络会将前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的结点存在连接,隐藏层的输入不仅包括输入层的数据还包括上一时刻隐藏层的输出结果;RNN网络中,每一层各自都共享参数U、W、V。
数据控制单元在接收到开始信号后,先后控制数据输入输出、存储地址生成和前向传播计算单元开始计算工作,所述前向传播计算单元中,基于横向脉动阵列,计算中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,经过矩阵乘向量和向量求和运算和激活函数运算,计算得到隐藏层神经元,随后根据获得的隐藏层神经元,经过矩阵乘向量、向量求和运算和激活函数运算,产生RNN输出层结果,最后信号控制模块控制数据输入输出模块将结果存入片外DDR中,依据时间序列配置信息,循环产生RNN网络结果数据并产生结束信号。
该系统的工作流程如下:
步骤1)数据控制单元接收到系统算法开始信号,控制数据输入输出,将源数据、权重、偏置数据从DDR存储器按照一定的顺序传输到SRAM存储器中,如图3所示;
步骤2)数据控制单元控制存储地址生成,产生操作数地址,根据地址将SRAM存储器中的数据传入前向传播计算单元,包括当前时刻的输入数据和前一时刻的隐藏层输出结果数据,若无前一个时刻,则隐藏层输出结果数据为0;
步骤3)前向传播计算单元计算过程:对于每一行,同批次输入数据从左至右广播到阵列的每个计算单元中;对于每一列,不同神经元对应权重、偏置从上到下流动指每个计算单元中,计算过程在每个计算单元中完成;
步骤4)前向传播计算单元产生输出数据有效信号,数据控制单元接收信号,产生隐藏层结果数据地址,将其结果传入SRAM存储器中;
步骤5)重复步骤2)和步骤3),输入数据为当前时刻隐藏层输出数据和其对应的权重、偏置,产生输出层结果数据,数据控制单元接收信号,产生输出层结果数据地址,将其结果传入SRAM存储器中;
步骤6)依据配置时间序列长度,重复步骤2)、3)、4)、5),完成多次计算,依据softmax配置信息,产生RNN网络所需的输出结果;
步骤7)数据控制单元控制数据输入输出,将步骤6)的结果数据从片内SRAM存储器中写入片外DDR存储器中,产生结束信号,完成一次完整的RNN的前向计算。
实施例2
基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,包括如下步骤:
S1,初始化步骤:配置网络参数,所述参数至少包括输入层、隐藏层、输出层结点数目,时间序列长度和待处理批次。
S2,隐藏层神经元计算步骤:将数据传入横向脉动阵列,基于横向脉动阵列,计算得到隐藏层神经元;所述计算中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,计算
Figure 876296DEST_PATH_IMAGE001
,其中
Figure 332686DEST_PATH_IMAGE002
为当前时刻输入向量,
Figure 291414DEST_PATH_IMAGE003
为隐藏层对上一时刻输入向量
Figure 753576DEST_PATH_IMAGE004
的激励值,经过矩阵乘向量和向量求和运算和激活函数运算,生成RNN网络隐藏层神经元。
横向脉动阵列数据传输方式为列间脉动、行间广播,操作数以行为单位同时传输到一列中的每个计算单元,权重和偏置以列为单位依次进入一列中的每个计算单元,操作数和权重多次反复使用;所述每个计算过程中多个乘累加运算并行展开。
如图4所示,其中分块设计的思路为:隐藏层计算的权重矩阵包括U、W:U为输入层至隐藏层的权重矩阵,
Figure 569086DEST_PATH_IMAGE006
,W为隐藏层之间的权重矩阵,
Figure 653716DEST_PATH_IMAGE007
,两个矩阵合并为
Figure 212874DEST_PATH_IMAGE008
;输入神经元由
Figure 800981DEST_PATH_IMAGE009
组成,矩阵[U|W]按行分块,分为
Figure 725075DEST_PATH_IMAGE010
Figure 156056DEST_PATH_IMAGE011
Figure 128691DEST_PATH_IMAGE012
子权重。
本实施例中,横向脉动阵列共32行、32列,一批输入神经元
Figure 227097DEST_PATH_IMAGE009
传入一行横向脉动阵列,数据依次进入32个计算单元;子权重同时广播至32行脉动阵列,
Figure 994196DEST_PATH_IMAGE024
数据依次进入每个计算单元,不同子权重依次传入32列脉动阵列里的计算单元中;随时钟信号,
Figure 912473DEST_PATH_IMAGE009
依次与不同子权重
Figure 688800DEST_PATH_IMAGE010
Figure 313816DEST_PATH_IMAGE011
Figure 642029DEST_PATH_IMAGE025
等进行相乘和累加,再与偏置向量
Figure 657390DEST_PATH_IMAGE015
相加后经过激活函数
Figure DEST_PATH_IMAGE029
,计算出隐藏层神经元输出结果
Figure 34144DEST_PATH_IMAGE017
。前向传播计算单元基于横向脉动阵列,多维度并行,多批次输入神经元并行输入:多批次的输入神经元
Figure 575984DEST_PATH_IMAGE009
可同时传入横向脉动阵列参与计算,最大可并行输入32批次神经元;隐藏层神经元并行计算:不同批次输入神经元
Figure 278361DEST_PATH_IMAGE027
与不同子权重
Figure 781018DEST_PATH_IMAGE028
进行数据相乘和累加计算,最大化程度下可实现32×32路并行乘累加;多批输出并行输出:同一个时钟信号下,横向阵列可实现最大32路并行神经元
Figure 23780DEST_PATH_IMAGE018
的输出。
前向传播计算单元对隐藏层输出结果
Figure 295493DEST_PATH_IMAGE017
采用缓存交替接收和输出,即存在两个存储子单元,其中当第一个子存储单元接收当前隐藏层计算结果
Figure 965508DEST_PATH_IMAGE017
时,第二个子存储单元输出前一时刻的隐藏层计算结果神经元
Figure 221040DEST_PATH_IMAGE003
,作为当前时刻神经元
Figure 1915DEST_PATH_IMAGE009
部分源数据,参与RNN网络计算,实现输出与RNN网络模型间的反馈设计。
存储资源统一编址,其中数据存储器由120个8k深度的bank子模块构成,网络输出结果由16个1k深度的bank子模块构成,网络隐藏层输出结果占据的存储位置可覆盖;源数据存储方式为:输入向量
Figure 393713DEST_PATH_IMAGE013
存入bank0-31中,每个bank存放一个批次的输入向量;神经元权重存入bank32-95,其中bank32-63存入隐藏层神经元权重U 、W,每个分块子权重
Figure DEST_PATH_IMAGE030
存入一个bank中, bank64-95存入输出层神经元权重V,权重按照神经元进行存放,同一个神经元的权重存放在同一个bank中;偏置存入bank96-103,隐藏层神经元偏置存入低地址位空间,输出层神经元偏置存入高地址位空间。计算得到的隐藏层输出结果数据存放方式:依据t的奇偶性存入bank104-119,t为偶数时存入bank104-111,t为奇数时存入bank112-119,一个存储单元存放四个批次的数据,数据存储会随t进行覆盖。
S3,输出层神经元计算步骤:根据步骤S2中获得的隐藏层神经元,经过矩阵乘向量、向量求和运算和激活函数运算,产生RNN输出层结果
Figure 641154DEST_PATH_IMAGE005
S4,依据时间序列长度配置信息,重复步骤S2和步骤S3,依据softmax的配置信息,产生RNN网络所需的输出结果,生成最终结果数据。
输出层输出结果按照是否经过softmax,分为两类数据分别存放在factor bank0-7和factor bank8-15,前者为不经过softmax,同一批次的计算结果以地址递增的方式存入存储器中,一个存储单元存放四个批次的结果数据,数据不随时间序列进行覆盖。
本方法采用横向脉动阵列,提高了计算速率;采用分块设计,进一步提高计算的并行度;隐藏层和输出层多维度并行,提高了计算的流水性;网络各层结点数以及时间序列长度可灵活配置,灵活度更高;存储资源利用效率高,可扩展性强;经过本方法的改进后,加速比大大高,很大程度的降低了计算。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实例的限制,上述实例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等同物界定。

Claims (8)

1.基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,其特征在于,包括如下步骤:
S1,初始化步骤:配置网络参数,所述参数至少包括输入层、隐藏层、输出层结点数目,时间序列长度和待处理批次;
S2,隐藏层神经元计算步骤:将数据传入横向脉动阵列,基于横向脉动阵列,计算得到隐藏层神经元;所述计算中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,计算
Figure DEST_PATH_IMAGE001
,其中
Figure DEST_PATH_IMAGE002
为当前时刻输入向量;
Figure DEST_PATH_IMAGE003
为隐藏层对上一时刻输入向量
Figure DEST_PATH_IMAGE004
的激励值;U为输入层至隐藏层的权重矩阵;W为隐藏层之间的权重矩阵;b代表偏置;Φ代表激活函数,经过矩阵乘向量和向量求和运算和激活函数运算,生成RNN网络隐藏层神经元;
S3,输出层神经元计算步骤:根据步骤S2中获得的隐藏层神经元,经过矩阵乘向量、向量求和运算和激活函数运算,产生RNN输出层结果
Figure DEST_PATH_IMAGE005
,其中V表示输出层神经元权重;b代表偏置;Φ代表激活函数;
S4,依据时间序列长度配置信息,重复步骤S2和步骤S3,依据softmax的配置信息,产生RNN网络所需的输出结果,生成最终结果数据。
2.如权利要求1所述的基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,其特征在于所述步骤S2中横向脉动阵列数据传输方式为列间脉动、行间广播,操作数以行为单位同时传输到一列中的每个计算单元,权重和偏置以列为单位依次进入一列中的每个计算单元,操作数和权重多次反复使用;所述每个计算过程中多个乘累加运算并行展开。
3.如权利要求1或2所述的基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,其特征在于所述步骤S2中分块设计具体为:隐藏层计算的权重矩阵包括U、W:
U为输入层至隐藏层的权重矩阵,
Figure DEST_PATH_IMAGE006
W为隐藏层之间的权重矩阵,
Figure DEST_PATH_IMAGE007
两个矩阵合并为
Figure DEST_PATH_IMAGE008
输入神经元由
Figure DEST_PATH_IMAGE009
组成,矩阵[U|W]按行分块,分为
Figure DEST_PATH_IMAGE010
Figure DEST_PATH_IMAGE011
Figure DEST_PATH_IMAGE012
子权重。
4.如权利要求3所述的基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,其特征在于所述步骤S2中对隐藏层输出结果采用缓存交替接收和输出,即存在两个存储子单元,其中当第一个子存储单元接收当前隐藏层计算结果时,第二个子存储单元输出前一时刻的隐藏层计算结果神经元,作为当前时刻神经元部分源数据,参与RNN网络计算,实现输出与RNN网络模型间的反馈设计。
5.如权利要求1或4所述的基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,其特征在于:所述步骤S4中依据时间序列长度配置信息,重复步骤S2和步骤S3获得的结果数据,按照是否经过softmax,分为“不经过”和“经过”两类数据分别存放,同一批次的计算结果以地址递增的方式存入存储器中,数据不随时间序列进行覆盖。
6.基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统,其特征在于包括数据控制单元、前向传播计算单元和数据缓存单元,
所述数据控制单元用于接收和产生控制信号,同时控制数据在各模块之间的传输与计算;
所述前向传播计算单元用于将数据传入横向脉动阵列,依次计算出隐藏层神经元和输出层神经元,完成RNN前向模型运算;
所述数据缓存单元用于为参与计算和获得的计算结果提供存储空间,所述数据均为16位定点数;
所述前向传播计算单元中,基于横向脉动阵列,计算中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,经过矩阵乘向量和向量求和运算和激活函数运算,计算得到隐藏层神经元,随后根据获得的隐藏层神经元,经过矩阵乘向量、向量求和运算和激活函数运算,产生RNN输出层结果,最终依据时间序列长度配置信息,产生RNN网络所需的输出结果。
7.如权利要求6所述的基于横向脉动阵列的RNN前向传播模型的硬件加速实现系统,其特征在于所述前向传播计算单元向横向脉动阵列传入的数据至少包括输入向量
Figure DEST_PATH_IMAGE013
、权重矩阵
Figure DEST_PATH_IMAGE014
和偏置向量
Figure DEST_PATH_IMAGE015
,阵列中每个独立计算单元包括16位定点乘法器、加法器、除法器、线性激活函数计算单元以及支持sigmoid函数和tanh函数计算的非线性激活函数计算单元,实现乘累加和神经网络激活函数的计算,最高支持32批次数据的处理。
8.基于横向脉动阵列的RNN前向传播模型的硬件加速实现方法,其特征在于,基于硬件加速实现系统,
所述硬件加速实现系统包括:
数据控制单元:接收和产生控制信号,控制数据在各模块之间传输、计算;
前向传播计算单元:将输入向量
Figure 410793DEST_PATH_IMAGE013
、权重矩阵
Figure 265617DEST_PATH_IMAGE014
和偏置向量
Figure 45354DEST_PATH_IMAGE015
,传入横向脉动阵列,依次计算隐藏层神经元
Figure DEST_PATH_IMAGE016
和输出层神经元
Figure DEST_PATH_IMAGE017
,完成RNN前向模型运算;
数据缓存单元:为参与计算的输入向量
Figure 876782DEST_PATH_IMAGE013
、权重矩阵
Figure 628837DEST_PATH_IMAGE014
和偏置向量
Figure 451300DEST_PATH_IMAGE015
和隐藏层神经元
Figure DEST_PATH_IMAGE018
、输出层神经元
Figure 656016DEST_PATH_IMAGE017
,提供片上存储空间,数据均为16位定点数;
所述方法包括如下步骤:
步骤一:初始化步骤,配置网络参数,包括输入层、隐藏层、输出层结点数目,时间序列长度和待处理批次;
步骤二:数据控制单元将数据缓存单元中的数据传入横向脉动阵列,前向传播计算单元开始计算
Figure 854916DEST_PATH_IMAGE001
,其中
Figure 461478DEST_PATH_IMAGE002
为当前时刻输入向量,
Figure 454842DEST_PATH_IMAGE003
为隐藏层对上一时刻输入向量
Figure 645389DEST_PATH_IMAGE004
的激励值,经过矩阵乘向量和向量求和运算和激活函数运算,生成RNN网络隐藏层神经元;
步骤三:前向传播计算单元依据隐藏层神经元,再一次经过矩阵乘向量和向量求和运算和激活函数运算
Figure 382401DEST_PATH_IMAGE005
,产生RNN输出层结果;
步骤四:依据时间序列长度配置信息,重复步骤二和步骤三,生成最终结果数据;
所述前向传播计算单元中权重采用分块设计,隐藏层计算的权重矩阵按行进行分块,与输入向量、隐藏层输出结果进行乘累加运算,得到隐藏层神经元,每次计算过程中多个乘累加运算并行展开。
CN201910996386.9A 2019-10-18 2019-10-18 基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法 Active CN110826710B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910996386.9A CN110826710B (zh) 2019-10-18 2019-10-18 基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910996386.9A CN110826710B (zh) 2019-10-18 2019-10-18 基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法

Publications (2)

Publication Number Publication Date
CN110826710A CN110826710A (zh) 2020-02-21
CN110826710B true CN110826710B (zh) 2021-04-23

Family

ID=69549875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910996386.9A Active CN110826710B (zh) 2019-10-18 2019-10-18 基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法

Country Status (1)

Country Link
CN (1) CN110826710B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111460738B (zh) * 2020-04-16 2023-06-16 中南大学 磁悬浮系统的rnn-arx建模方法、rnn-arx模型
CN111723906A (zh) * 2020-05-29 2020-09-29 浪潮电子信息产业股份有限公司 一种循环神经网络的加速计算方法、系统及相关装置
CN111985626B (zh) 2020-09-25 2022-06-07 苏州浪潮智能科技有限公司 一种加速rnn网络的系统、方法及存储介质
CN113592066B (zh) * 2021-07-08 2024-01-05 深圳市易成自动驾驶技术有限公司 硬件加速方法、装置、设备及存储介质

Family Cites Families (6)

* 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)
KR102487535B1 (ko) * 2018-02-20 2023-01-12 삼성전자주식회사 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치
US10445638B1 (en) * 2018-02-28 2019-10-15 Amazon Technologies, Inc. Restructuring a multi-dimensional array
CN109887006A (zh) * 2019-01-29 2019-06-14 杭州国芯科技股份有限公司 一种基于帧差法加速神经网络运算的方法
CN110135556A (zh) * 2019-04-04 2019-08-16 平安科技(深圳)有限公司 基于脉动阵列的神经网络加速方法、装置、计算机设备及存储介质
CN110110851B (zh) * 2019-04-30 2023-03-24 南京大学 一种lstm神经网络的fpga加速器及其加速方法

Also Published As

Publication number Publication date
CN110826710A (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
CN110826710B (zh) 基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法
US5617512A (en) Triangular scalable neural array processor
CN107578098B (zh) 基于脉动阵列的神经网络处理器
CN107301456B (zh) 基于向量处理器的深度神经网络多核加速实现方法
EP0421639B1 (en) Parallel data processing system
US5274832A (en) Systolic array for multidimensional matrix computations
Chang et al. Recurrent neural networks hardware implementation on FPGA
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
CN109034373B (zh) 卷积神经网络的并行处理器及处理方法
US5506998A (en) Parallel data processing system using a plurality of processing elements to process data and a plurality of trays connected to some of the processing elements to store and transfer data
JP2020077298A (ja) プロセッサおよびプロセッサの制御方法
US5146543A (en) Scalable neural array processor
US11494623B2 (en) Processing element and operating method thereof in neural network
US5148515A (en) Scalable neural array processor and method
US5065339A (en) Orthogonal row-column neural processor
CN108960414B (zh) 一种基于深度学习加速器实现单广播多运算的方法
CN110689123B (zh) 基于脉动阵列的长短期记忆神经网络前向加速系统及方法
CN114781632A (zh) 基于动态可重构脉动张量运算引擎的深度神经网络加速器
CN116710912A (zh) 一种矩阵乘法器及矩阵乘法器的控制方法
CN110232441B (zh) 一种基于单向脉动阵列的堆栈式自编码系统及方法
CN107368459B (zh) 基于任意维数矩阵乘法的可重构计算结构的调度方法
US5146420A (en) Communicating adder tree system for neural array processor
CN114724595B (zh) 一种卷积运算加速器及卷积运算方法
CN110673824A (zh) 矩阵向量乘电路以及循环神经网络硬件加速器
US11526305B2 (en) Memory for an artificial neural network 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