CN110929861B - 一种多层感知机深度神经网络层间流水的硬件加速器 - Google Patents
一种多层感知机深度神经网络层间流水的硬件加速器 Download PDFInfo
- Publication number
- CN110929861B CN110929861B CN201911120040.9A CN201911120040A CN110929861B CN 110929861 B CN110929861 B CN 110929861B CN 201911120040 A CN201911120040 A CN 201911120040A CN 110929861 B CN110929861 B CN 110929861B
- Authority
- CN
- China
- Prior art keywords
- neuron
- layer
- input
- mlp
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种多层感知机深度神经网络层间流水的硬件加速器,包括:输入寄存器,用于向奇层神经元计算部件提供输入;奇层神经元计算部件,包括一个以上的硬件人工神经元计算部件;交叉开关,用于将奇层神经元计算部件产生的每一个输出广播到偶层神经元计算部件;偶层神经元计算部件,包括多个并行的人工神经元计算单元,用来进行多次乘累加计算并行生成多个输出神经元部分和,并最终完成多个输出神经元;输出寄存器,将偶层神经元计算单元的计算结果输出到存储器中,或者输出到快速通道;快速通道,用于将偶层神经元计算单元的结果直接旁路传输给输入寄存器,作为输入。本发明具备层间调度能力、能够开发层间数据重用、提高MLP加速效率等优点。
Description
技术领域
本发明主要涉及到深度神经网络(Deep Neuron Network,DNN)技术领域,特指一种多层感知机(Multi-Layer Perceptions,MLP)深度神经网络层间流水的硬件加速器。
背景技术
从上个世纪80年代起,MLP就已经是相当流行的机器学习方法。MLP早已经被证明是一种通用的函数近似方法,可以被用来执行预测、函数近似拟合以及模式分类任务,应用范围曾涉及医学、工业勘探、消费电子等多种领域。MLP具备高度的非线性全局作用、良好的容错性、联想记忆功能等优点。随着DNN的推广,MLP在语音、图像以及机器学习等可利用近似拟合方法的领域广泛应用。据报道,Google的数据中心有61%以上的任务负载是MLP类任务。然而MLP的计算量较大,边缘计算通常采用硬件加速的方法提高性能和能耗效率;而数据中心、云端服务器等也由于功耗和开销的原因,通常会部署大量的硬件加速器来专门加速神经网络。
MLP是一种基于全连接(Fully-Connected,FC)前向结构的人工神经网络(Artificial Neural Network,ANN),其包含从十几个到成百上千不等的人工神经元(Artificial Neuron,AN,下文简称神经元)。MLP将神经元组织为多层的结构,层间采用全连接方法,形成逐层连接的多权连接层的ANN,其基本结构如图1所示。一般来讲,MLP包含一个输入层(该层实际不包含运算)、一个或者多个隐层层以及一个输出层。
图1是典型MLP的结构示意图。MLP是一种基于全连接(Fully-Connected,FC)前向结构的人工神经网络(Artificial Neural Network,ANN),其包含从十几个到成百上千不等的人工神经元(Artificial Neuron,AN,下文简称神经元)。MLP将神经元组织为多个层的结构,层间采用FC连接方法,形成多层的ANN。从中可以看出,多个全连接层逐层连接,形成了复杂结构的MLP。一般来讲,MLP包含一个输入层(该层实际不包含运算)、一个或者多个隐层以及一个输出层。
隐层以及一个输出层。
·将MLP各个包含计算的全连接层从1开始进行编号,总层数为L;
·输入层编号设置为0;
·将MLP的全连接层分为奇数层和偶数层两大类;
·i表示MLP的全连接层编号,第i层的神经元个数记为ni,i∈(0,1,…,L);
·Xi为第i层的输入,Yi为第i层的输出,由于上一层的输出是下一层的输入,则有
Xi=Yi-1;
·Wi为第i层的参数矩阵,bi为第i层的偏置向量
·输入层不包含运算,有:X0=Y0=X1;
每一个全连接层的计算公式为:
MLP的前向推导过程是根据FC计算公式,逐层计算神经元,最终得到输出。现有的MLP硬件加速装置采取了很多数据重用和并行计算的方法来优化一个每一层内的计算,然后逐层调度和计算,这被称为逐层顺序调度方法。这种方法是目前所有结构所采取的调度方法。
逐层顺序调度考虑的是层内并行和数据重用,然而根据图1可知,MLP的某一层的输出正好是下一层的输入,这是一种天然存在的层间数据重用关系。而逐层顺序调度方法之所以不能有效开发MLP的这种天然属性,在于其采用的计算模式所带来的数据相关性:每一层的神经元都必须完全计算完成后,才能启动下一层的计算过程,这推迟了下一层的开始时间,增加了整体计算时间;同时,在等待当前层后续神经元计算完成期间,已经完成计算的神经元数据将重新写入到存储器中,使用的时候再重新读取,这增大了读写开销。
因此,MLP加速器必须具备层间调度能力,能够开发层间数据重用,才能更进一步提高MLP加速效率。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种具备层间调度能力、能够开发层间数据重用、提高MLP加速效率的多层感知机深度神经网络层间流水的硬件加速器。
为解决上述技术问题,本发明采用以下技术方案:
一种多层感知机深度神经网络层间流水的硬件加速器,其包括:
输入寄存器,用于向奇层神经元计算部件提供输入;
奇层神经元计算部件,包括一个以上的硬件人工神经元计算部件,利用多个神经元输入,多次计算生成一个、一次计算生成一个或者一次计算生成多个、多次串行计算生成多个输出神经元;
交叉开关,用于将奇层神经元计算部件产生的每一个输出广播到偶层神经元计算部件;
偶层神经元计算部件,包括多个并行的人工神经元计算单元,用来进行多次乘累加计算并行生成多个输出神经元部分和,并最终完成多个输出神经元;
输出寄存器,将偶层神经元计算单元的计算结果输出到存储器中,或者输出到快速通道;
快速通道,用于将偶层神经元计算单元的结果直接旁路传输给输入寄存器,作为奇层神经元计算部件的输入。
作为本发明的进一步改进:所述输入寄存器用来选择输入来源,以及在奇层神经元计算部件运算的多个输出期间保持输入,提供输入复用功能。
作为本发明的进一步改进:所述硬件人工神经元计算部件包含多个乘法器阵列、加法树单元、以及一个非线性激活函数单元;所述乘法器阵列包含多个两输入的乘法器,每个乘法器完成输入及其权值的乘法,即加权过程;所述乘法器阵列的所有乘积结果由加法树单元完成累加;累加的结果通过非线性激活函数计算单元计算得到最终的输出神经元值。
作为本发明的进一步改进:所述人工神经元计算单元包含一个乘累加器MAC,一个本地寄存器和一个非线性激活函数单元NLF;所述乘累加器MAC完成本机寄存器+输入*权值的乘累加过程,计算结果保存在本地寄存器中;当累加完成设定的次数以后,通过非线性激活函数单元NLF计算得到最终的输出神经元值。
作为本发明的进一步改进:所述乘累加器MAC的累加次数由奇层神经元计算部件的输出的神经元个数决定,所述奇层神经元计算部件每输出一个神经元,所述乘累加器MAC就会执行一次运算。
作为本发明的进一步改进:所述偶层神经元计算部件中的所有人工神经元计算单元的输入相同,但权值为不同的输出神经元的权值;所有人工神经元计算单元并行计算多个神经元的部分和以及最后产生最终的神经元值。
作为本发明的进一步改进:所述多层感知机深度神经网络中进行流水线处理包括以下周期:
第1个周期:利用输入X,计算MLP第1层神经元1;
第2个周期:利用输入X,计算MLP第1层神经元2,同时利用MLP第1层神经元1,并行完成并行计算MLP第2层神经元部分和向量的第1次累加;
第3个周期到第n1个周期重复上述过程;到第n1个周期,MLP第1层神经元全部计算完毕;
第n1+1个周期:利用MLP第1层神经元n1,计算MLP第2层神经元部分和向量的第n1次累加并得到最终结果Y;令X=Y;
第n1+2个周期开始,重复第1个周期到第n1+1个周期的计算,直到所有MLP层计算完毕。
与现有技术相比,本发明的优点在于:
本发明的多层感知机深度神经网络层间流水的硬件加速器,具备层间调度能力、能够开发层间数据重用、提高MLP加速效率等优点,本发明在计算资源内部实现MLP层间数据复用,既提早了后续层的计算时间,缩短了整体的运算时间,也降低了不必要的访存开销,所有隐藏层的输入输出均不需要访存,提高了功耗效率。该装置所使用的技术与现有的其他技术属于正交关系,可以合理集成在一起,共同提高MLP的运算性能。
附图说明
图1是典型MLP DNN的结构示意图。
图2是本发明硬件加速器的结构原理示意图。
图3是本发明在具体应用实例中奇层人工神经元计算部件的结构原理示意图。
图4是本发明在具体应用实例中偶层人工神经元计算部件的结构原理示意图。
图5是本发明在具体应用实例中进行流水线处理的示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图2所示,本发明的多层感知机深度神经网络层间流水的硬件加速器,包括:
输入寄存器1,用于向奇层神经元计算部件2提供输入,主要功能在于选择输入来源,以及在奇层神经元计算部件2运算的多个输出期间保持输入,提供输入复用功能;
奇层神经元计算部件2,包括一个或者多个硬件人工神经元计算部件2-1,利用多个神经元输入,多次计算生成一个、一次计算生成一个或者一次计算生成多个、多次串行计算生成多个输出神经元;
交叉开关3,采用广播结构,用于将奇层神经元计算部件2产生的每一个输出广播到偶层神经元计算部件4;
偶层神经元计算部件4,包括多个并行的人工神经元计算单元4-1,可以多次乘累加计算并行生成多个输出神经元部分和,并最终完成多个输出神经元;
输出寄存器5,将偶层神经元计算单元4的计算结果输出到存储器中,或者输出到快速通道6。
快速通道6,将偶层神经元计算单元4的结果直接旁路传输给输入寄存器1,作为奇层神经元计算部件2的输入。
在具体应用实例中,如图3所示,为本发明在具体应用实例中硬件人工神经元计算部件2-1的一种实施例的结构示意图。所述硬件人工神经元计算部件2-1包含多个乘法器阵列,加法树单元,以及一个非线性激活函数单元。乘法器阵列包含多个两输入的乘法器,每个乘法器完成输入及其权值的乘法,即加权过程;乘法器阵列的所有乘积结果由加法树单元完成累加;累加的结果通过非线性激活函数计算单元计算得到最终的输出神经元值。
在具体应用实例中,如图4所示,所述人工神经元计算单元4-1包含一个乘累加器(Multiply Accumulator,MAC),一个本地寄存器和一个非线性激活函数单元(NLF)。MAC完成本机寄存器+输入*权值的乘累加过程,计算结果保存在本地寄存器中。当累加完成设定的次数以后,通过非线性激活函数单元计算得到最终的输出神经元值。其中MAC的累加次数由奇层神经元计算部件2的输出的神经元个数决定,奇层神经元计算部件2每输出一个神经元,MAC单元就会执行一次运算。
在具体应用实例中,所述偶层神经元计算部件4中的所有部分人工神经元计算单元4-1的输入相同,但权值为不同的输出神经元的权值;所有部分人工神经元计算单元4-1并行计算多个神经元的部分和以及最后产生最终的神经元值。
如图5所示,为本发明在一个具体应用实例中于多层感知机深度神经网络中进行流水线处理的示意图,它包括以下周期:
第1个周期:利用输入X,计算MLP第1层神经元1;
第2个周期:利用输入X,计算MLP第1层神经元2,同时利用MLP第1层神经元1,并行完成并行计算MLP第2层神经元部分和向量的第1次累加;
第3个周期到第n1个周期重复上述过程;到第n1个周期,MLP第1层神经元全部计算完毕;
第n1+1个周期:利用MLP第1层神经元n1,计算MLP第2层神经元部分和向量的第n1次累加并得到最终结果Y。令X=Y。
第n1+2个周期开始,重复第1个周期到第n1+1个周期的计算,直到所有MLP层计算完毕。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (7)
1.一种多层感知机深度神经网络层间流水的硬件加速器,其特征在于,包括:
输入寄存器(1),用于向奇层神经元计算部件(2)提供输入;
奇层神经元计算部件(2),包括一个以上的硬件人工神经元计算部件(2-1),利用多个神经元输入,多次计算生成一个输出神经元、一次计算生成一个输出神经元或者一次计算生成多个输出神经元、多次串行计算生成多个输出神经元;
交叉开关(3),用于将奇层神经元计算部件(2)产生的每一个输出广播到偶层神经元计算部件(4);
偶层神经元计算部件(4),包括多个并行的人工神经元计算单元(4-1),用来进行多次乘累加计算并行生成多个输出神经元部分和,并最终完成多个输出神经元;
输出寄存器(5),将偶层神经元计算部件(4)的计算结果输出到存储器中,或者输出到快速通道(6);
快速通道(6),用于将偶层神经元计算部件(4)的结果直接旁路传输给输入寄存器(1),作为奇层神经元计算部件(2)的输入。
2.根据权利要求1所述的多层感知机深度神经网络层间流水的硬件加速器,其特征在于,所述输入寄存器(1)用来选择输入来源,以及在奇层神经元计算部件(2)运算的多个输出期间保持输入,提供输入复用功能。
3.根据权利要求1所述的多层感知机深度神经网络层间流水的硬件加速器,其特征在于,所述硬件人工神经元计算部件(2-1)包含多个乘法器阵列、加法树单元、以及一个非线性激活函数单元;所述乘法器阵列包含多个两输入的乘法器,每个乘法器完成输入及其权值的乘法,即加权过程;所述乘法器阵列的所有乘积结果由加法树单元完成累加;累加的结果通过非线性激活函数计算单元计算得到最终的输出神经元值。
4.根据权利要求1所述的多层感知机深度神经网络层间流水的硬件加速器,其特征在于,所述人工神经元计算单元(4-1)包含一个乘累加器MAC,一个本地寄存器和一个非线性激活函数单元NLF;所述乘累加器MAC完成本机寄存器+输入*权值的乘累加过程,计算结果保存在本地寄存器中;当累加完成设定的次数以后,通过非线性激活函数单元NLF计算得到最终的输出神经元值。
5.根据权利要求4所述的多层感知机深度神经网络层间流水的硬件加速器,其特征在于,所述乘累加器MAC的累加次数由奇层神经元计算部件(2)的输出的神经元个数决定,所述奇层神经元计算部件(2)每输出一个神经元,所述乘累加器MAC就会执行一次运算。
6.根据权利要求1-5中任意一项所述的多层感知机深度神经网络层间流水的硬件加速器,其特征在于,所述偶层神经元计算部件(4)中的所有人工神经元计算单元(4-1)的输入相同,但权值为不同的输出神经元的权值;所有人工神经元计算单元(4-1)并行计算多个神经元的部分和以及最后产生最终的神经元值。
7.根据权利要求1-5中任意一项所述的多层感知机深度神经网络层间流水的硬件加速器,其特征在于,所述多层感知机深度神经网络中进行流水线处理包括以下周期:
第1个周期:利用输入X,计算MLP第1层神经元1;
第2个周期:利用输入X,计算MLP第1层神经元2,同时利用MLP第1层神经元1,并行完成并行计算MLP第2层神经元部分和向量的第1次累加;
第3个周期到第n1个周期重复上述过程;到第n1个周期,MLP第1层神经元全部计算完毕;
第n1+1个周期:利用MLP第1层神经元n1,计算MLP第2层神经元部分和向量的第n1次累加并得到最终结果Y;令X=Y;
第n1+2个周期开始,重复第1个周期到第n1+1个周期的计算,直到所有MLP层计算完毕。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911120040.9A CN110929861B (zh) | 2019-11-15 | 2019-11-15 | 一种多层感知机深度神经网络层间流水的硬件加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911120040.9A CN110929861B (zh) | 2019-11-15 | 2019-11-15 | 一种多层感知机深度神经网络层间流水的硬件加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110929861A CN110929861A (zh) | 2020-03-27 |
CN110929861B true CN110929861B (zh) | 2023-04-18 |
Family
ID=69853191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911120040.9A Active CN110929861B (zh) | 2019-11-15 | 2019-11-15 | 一种多层感知机深度神经网络层间流水的硬件加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110929861B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590535A (zh) * | 2017-09-08 | 2018-01-16 | 西安电子科技大学 | 可编程神经网络处理器 |
CN108537330A (zh) * | 2018-03-09 | 2018-09-14 | 中国科学院自动化研究所 | 应用于神经网络的卷积计算装置及方法 |
CN109543825A (zh) * | 2018-11-30 | 2019-03-29 | 上海寒武纪信息科技有限公司 | 神经网络模型算法编译方法、装置及相关产品 |
CN110263925A (zh) * | 2019-06-04 | 2019-09-20 | 电子科技大学 | 一种基于fpga的卷积神经网络前向预测的硬件加速实现架构 |
CN110447010A (zh) * | 2017-05-17 | 2019-11-12 | 谷歌有限责任公司 | 在硬件中执行矩阵乘法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150134580A1 (en) * | 2013-11-12 | 2015-05-14 | Persyst Development Corporation | Method And System For Training A Neural Network |
US11176487B2 (en) * | 2017-09-28 | 2021-11-16 | Oracle International Corporation | Gradient-based auto-tuning for machine learning and deep learning models |
-
2019
- 2019-11-15 CN CN201911120040.9A patent/CN110929861B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110447010A (zh) * | 2017-05-17 | 2019-11-12 | 谷歌有限责任公司 | 在硬件中执行矩阵乘法 |
CN107590535A (zh) * | 2017-09-08 | 2018-01-16 | 西安电子科技大学 | 可编程神经网络处理器 |
CN108537330A (zh) * | 2018-03-09 | 2018-09-14 | 中国科学院自动化研究所 | 应用于神经网络的卷积计算装置及方法 |
CN109543825A (zh) * | 2018-11-30 | 2019-03-29 | 上海寒武纪信息科技有限公司 | 神经网络模型算法编译方法、装置及相关产品 |
CN110263925A (zh) * | 2019-06-04 | 2019-09-20 | 电子科技大学 | 一种基于fpga的卷积神经网络前向预测的硬件加速实现架构 |
Non-Patent Citations (2)
Title |
---|
A study on the rear-end collision warning system by considering different perception-reaction time using multi-layer perceptron neural network;H. Yeo等;《2015 IEEE Intelligent Vehicles Symposium (IV)》;20150827;第24-30页 * |
面向性能异构的卷积神经网络并行优化研究;肖俊峰;《中国优秀硕士学位论文全文数据库》;20180515;第1-66页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110929861A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11049016B2 (en) | Neural network processor | |
Kim et al. | Dynamic energy-accuracy trade-off using stochastic computing in deep neural networks | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
JPH0713950A (ja) | 人工ニューロンおよびその使用方法 | |
CN108446761A (zh) | 一种神经网络加速器及数据处理方法 | |
KR20170023695A (ko) | 다중 계층 신경망 컴퓨팅 장치 및 방법 | |
CN107967132B (zh) | 一种用于神经网络处理器的加法器和乘法器 | |
CN112698811A (zh) | 神经网络随机数发生器共享电路、共享方法、处理器芯片 | |
WO2021073918A1 (en) | Multi-mode low-precision inner-product computation circuits for massively parallel neural inference engine | |
Domingos et al. | An efficient and scalable architecture for neural networks with backpropagation learning | |
KR102263598B1 (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
CN110929861B (zh) | 一种多层感知机深度神经网络层间流水的硬件加速器 | |
JP7361192B2 (ja) | ハードウェア・アクセラレータとインターフェースするための方法 | |
Guccione et al. | A neural network implementation using reconfigurable architectures | |
Baehr et al. | Low latency neural networks using heterogenous resources on fpga for the belle ii trigger | |
CN112836793A (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
Park et al. | Structure optimizations of neuromorphic computing architectures for deep neural network | |
Ago et al. | The parallel FDFM processor core approach for neural networks | |
CN110929846A (zh) | 一种多层感知机深度神经网络层间流水处理方法 | |
Kim et al. | An Asynchronous Inter-Processor Communication Based, Input Recycling Parallel Architecture for Large Scale Neural Network Simulation | |
Alsultany et al. | Design and Implementation of a Parameterized Elastic Deep Neural Network Accelerator with a 32-Bit Floating-Point Number Using FPGA | |
Chen et al. | A Novel DNN Accelerator for Light-weight Neural Networks: Concept and Design | |
Goel et al. | An efficient hardwired realization of embedded neural controller on system-on-programmable-chip (SOPC) | |
CN116738135A (zh) | 用于Transformer类模型训练的矩阵乘法器 | |
Chaudhary et al. | FPGA-based Pipelined LSTM accelerator with Approximate matrix multiplication technique |
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 |