CN110765413B - 矩阵求和结构及神经网络计算平台 - Google Patents
矩阵求和结构及神经网络计算平台 Download PDFInfo
- Publication number
- CN110765413B CN110765413B CN201810830257.8A CN201810830257A CN110765413B CN 110765413 B CN110765413 B CN 110765413B CN 201810830257 A CN201810830257 A CN 201810830257A CN 110765413 B CN110765413 B CN 110765413B
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- parallelism
- module
- computing platform
- 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
- 239000011159 matrix material Substances 0.000 title claims abstract description 156
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 78
- 238000004364 calculation method Methods 0.000 claims abstract description 38
- 241001442055 Vipera berus Species 0.000 claims description 90
- 238000000034 method Methods 0.000 claims description 18
- 238000010586 diagram Methods 0.000 claims description 12
- 238000009825 accumulation Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 claims description 4
- 238000013461 design Methods 0.000 abstract description 8
- 238000013527 convolutional neural network Methods 0.000 description 31
- 230000004913 activation Effects 0.000 description 8
- 238000013135 deep learning Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
公开了一种矩阵求和结构及神经网络计算平台。该矩阵求和结构包括:多个乘法器,所述乘法器的第一和第二输入端接收相乘矩阵的对应元素;多个一级加法器,每个一级加法器具有N个乘法器的输出作为输入,其中,N是大于等于2的整数;多个二级加法器,每个二级加法器具有多个一级加法器的输出作为输入;以及一个三级加法器,所述三级加法器具有所述多个二级加法器的输出作为输入,其中,每个所述加法器具有与其输出相连的累加器,以基于矩阵乘的并行度输出相应级别加法器的输出结果。上述结构尤其适于在并行卷积运算架构中使用,该架构的计算并行度可以在乘法结果的不同层进行动态取结果,由此满足不同矩阵运算的不同最优结果的设计需求。
Description
技术领域
本发明涉及硬件架构领域,尤其涉及一种矩阵求和结构以及应用该结构的神经网络计算平台。
背景技术
近年来,基于人工神经网络(ANN,Artificial Neural Network),尤其是卷积神经网络(CNN,Convolutional Neural Network)的方法在很多应用中都取得了极大的成功。在计算机视觉领域,特别是针对图像分类问题,CNN的引入使得图像分类的精度大幅提高。
虽然基于人工神经网络的方法具有先进的性能,但与传统方法相比需要更多的计算和内存资源。尤其随着神经网络的发展,大型神经网络具有越来越多的层级和数据量,利用传统的CPU平台,已无法满足其实用性需求。因此,利用FPGA、GPU、ASIC等高并行度异构计算平台进行神经网络加速器设计成为新的研究热点。在这其中,FPGA和ASIC以其高定制性、高能效比和低延时等优势而拥有良好的市场前景。
当利用FPGA和ASIC等的高并行度计算平台来执行计算时,如何能够在现有硬件性能的基础上提升计算利用率,成为了高并行度计算平台,尤其是涉及大量卷积层运算的神经网络计算平台所需考虑的重要问题。
因此,仍然需要一种能够进一步优化高并行度计算的相关方案。
发明内容
为了解决上述至少一个问题,本发明提出了一种矩阵求和结构,具体地,由底层乘法器和各级加法器构成树状结构,每个加法器的输出与一个累加器相连,以便提供相应级别的并行输出。上述结构尤其适于在并行卷积运算架构中使用,该架构的计算并行度可以在乘法结果的不同层进行动态取结果,可满足不同矩阵运算的不同最优结果的设计需求。
根据本发明的一个方面,提出了一种矩阵求和结构,包括:多个乘法器,所述乘法器的第一和第二输入端接收相乘矩阵的对应元素;多个一级加法器,每个一级加法器具有N个乘法器的输出作为输入,其中,N是大于等于2的整数;多个二级加法器,每个二级加法器具有多个一级加法器的输出作为输入;以及一个三级加法器,所述三级加法器具有所述多个二级加法器的输出作为输入,其中,每个所述加法器具有与其输出相连的累加器,以基于矩阵乘的并行度输出相应级别加法器的输出结果。
由此,通过分层累加的加法器,能够方便地动态配置各个维度的并行度。
本发明的矩阵求和结构还可以包括:与每个乘法器的输出相连的累加器,用于基于对应的矩阵乘并行度输出乘法器的累加结果。由此,进一步增加可用的并行度范围。
多个所述矩阵求和结构的三级加法器并接至一个输出与累加器相连的四级加法器,以构成更大的矩阵求和结构。优选地,多个更大的矩阵求和结构逐级与更高一级的输出与累加器相连的加法器相连,直至符合预定连接方案。由此满足各种场合的应用需求,以提供适配更为灵活的并行度方案。
在具体构造中,每一级加法器输入连接的前一级加法器的个数可以相等。优选地,每一级加法器输入连接两个前一级加法器的输出。在一个实施例中,N可以等于2或者3。
相应地,被选择用于输出结果的累加器以基于所述矩阵乘的并行度的时钟周期间隔输出其寄存或是累加的结果。
根据本发明的另一个发明,提出了一种神经网络计算平台,包括用于执行高并行度卷积计算的并行计算模块,其中,所述并行计算模块包括如权利要求1-8中任一项所述的矩阵求和结构,并且送入所述乘法器的第一和第二输入是对应相乘的特征图和权重数据。
述并行计算模块的并行度为M,M是远大于2的整数,并且所述并行度M由如下方案实现:单个所述矩阵求和结构,所述矩阵求和结构由多级加法器树状连接实现并且包括M个乘法器;或者多个并接的所述矩阵求和结构,每个矩阵求和结构由级数相同的多级加法器树状连接实现,并且多个并接的所述矩阵求和结构总共包括M个乘法器。
N的取值至少基于所述计算平台的硬件配置、以及所述神经网络计算的并行策略进行确定。优选地,矩阵求和结构的至少部分一级加法器的输入可以连接3个乘法器。所述并行处理模块至少部分由FPGA或ASIC实现。
本发明的神经网络计算平台还可以包括:片上缓存,用于存储特征图和权重数据以及计算结果;数据读取模块,用于以规定的并行度将特征图和权重数据从所述片上缓存读取至所述并行计算模块;以及数据写回模块,用于基于所述并行度,读取所述矩阵求和结构的对应级别加法器的输出结果,并将所述输出结果写回所述片上缓存,优选地,还可以包括:控制模块,用于基于所述并行度,控制所述片上缓存、数据读取模块、并行计算模块和数据写回模块的操作。
根据本发明的又一个方面,提出了一种用于神经网络的计算平台实现方法,包括:使用如上所述的计算平台将特征图数据和权重数据从所述外部存储器中读取到片上缓存中;数据读取模块以规定的并行度读取单次并行计算操作所需的特征图数据和权重数据并送至所述矩阵求和模块的乘法器的第一和第二输出端;以及所述并行计算模块的所述矩阵求和模块执行针对所述输入特征图数据和权重数据的乘加操作。
该方法还可以包括:所述数据写回模块以系统时钟频率从所述矩阵求和模块的对应级别的加法器的输出端读取单次操作中乘加结果,或者所述数据写回模块以预定间隔的系统时钟周期从所述矩阵求和模块的对应级别的加法器的输出端所接的累加器中读取预定次数操作的累加乘加结果。
规定的并行度、读取计算结果的对应加法器级别以及数据写回的频率可以基于神经网络计算各层的优化策略而变化。
根据本发明的另一个方面,提出了一种神经网络计算系统,包括:如上任一项所述的计算平台;位于所述计算平台外部的大容量存储器;以及与所述计算平台和所述存储器相连接的处理器,用于执行如上所述的实现方法。所述系统至少部分由FPGA、GPU或ASIC实现。
本发明的矩阵求和结构实现的电路架构的计算并行度可以在乘法结果的不同层进行动态取结果,由于可动态配置各个维度的并行度,因此能够适配各种特征的卷积层。通过对底数N的合理选取,可以使得每个计算单元的利用率特别高,对于系统整体效率的提升明显。另外,本发明的矩阵求和结果分级可配,布局布线相对简单,能够在FPGA或是ASIC上可以实现很高的工作频率。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了典型CNN的一系列有序运行层。
图2示出了神经网络中一个卷积层的典型操作例。
图3示出了卷积操作的一个例子。
图4示出了根据本发明一个实施例的矩阵求和结构的例子。
图5示出了根据本发明另一个实施例的矩阵求和结构的例子。
图6A-6D示出了在不同并行度下输出计算结果的例子。
图7示出了根据本发明一个实施例的神经网络计算平台的示意图。
图8示出了根据本发明一个实施例的用于神经网络的计算平台实现方法的流程示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
现有的通用处理器(CPU)由于需要高通用性来处理各种不同的数据类型,并且其逻辑判断会引入大量的分支跳转和中断的处理。这些都使得CPU内部结构异常复杂,不适用于类型高度统一且相互无依赖的大规模数据的数据运算。因此,利用FPGA、GPU和ASIC等高并行度异构计算平台进行高并行度计算平台,尤其是神经网络加速器设计成为新的研究热点。其中,相较GPU平台,FPGA和ASIC能够实现更高的计算能效比,同时FPGA和ASIC可以快速迭代、灵活重构或设计的特性也更适应算法高速发展的要求。
神经网络的卷积运算可以认为是特殊的矩阵运算,本发明着重描述在其在卷积神经网络计算上的优势。卷积神经网络的卷积层的计算量非常大,不同层的卷积计算的特征又各种各样,如何提升计算利用率是一个十分严峻的问题。本发明提出一种矩阵求和结构,该结构尤其适用于卷积神经网络灵活配置的高并行卷积运算架构。该架构的计算并行度可以在乘法结果的不同层进行动态取结果,满足不同矩阵运算的不同最优结构的设计需求。该计算平台的并行计算模块或整体优选由FPGA或ASIC实现。
虽然如下将主要结合针对卷积神经网络的并行计算来描述本发明的矩阵求和结构,但本领域技术人员应该理解的是,本发明的计算方案适用于诸如科学计算、工业模拟等各类大规模矩阵计算场景。
CNN基本概念
人工智能近年得到迅速发展,在图像分类、检测、视频和语音处理等领域取得良好的应用效果,并且依然具备极大的发展前景。神经网络是人工智能应用的核心,深度学习神经网络算法是其中最常见的一种神经网络模型。神经网络的工作负载特征是计算和数据密集。神经网络计算所需的乘加操作通常为G数量级,例如目标检测类神经网络SSD的计算量为120G操作次数。而计算所需参数则通常为M至数百M字节数量级,例如分类神经网络VGG的参数为480M字节。
常见的人工神经网络(ANN)包括深度神经网络(DNN)、循环神经网络(RNN)与卷积神经网络(CNN)。以下以CNN为例进行一定程度的背景说明。
如图1所示,典型的CNN由一系列有序运行的层(Layer)组成。
CNN神经网络由输入层、输出层和多个隐藏层串联组成。CNN的第一层读取输入值,例如输入图像,并输出一系列的激活值(也可称为特征图)。下面的层读取由上一层产生的激活值,并输出新的激活值。最后一个分类器(classifier)输出该输入图像可能属于的每一类别的概率。
这些层大致可分为带权重的层(如CONV层、全连接层、批量归一化层等)和不带权重的层(如池化层、ReLU层、Softmax层等)。CONV层(Convolutional layers,卷积层)以一系列特征图作为输入,并以卷积内核卷积获得输出激活值。池化层(Pooling layer)通常与CONV层相连,用于输出每个特征图中的每个分区(sub area)的最大值或平均值,由此通过亚采样降低计算量,同时保持某种程度的位移、尺度和形变不变性。一个CNN中可以包括卷积层和池化层之间的多个交替,由此逐步降低空间分辨率并增加特征映射的数量。CONV层之间也可以不经过池化层直接相连。随后可以连接至至少一个全连接层(FC),通过应用于输入特征向量上的线性变换,得到包括多个特征值的一维向量输出。
总体来说,带权重的层的操作可以表示为:
Y=WX+b,
其中W为权重值,b为偏置,X为输入激活值,Y为输出激活值。
不带权重的层的操作可以表示为:
Y=f(X),
其中f(X)为非线性函数。
在此,“权重”(weights)指代隐藏层中的参数。在CNN网络中,可以将权重认为是针对每一卷积层尺寸可以有所变化,针对每一卷积层的每个通道取值也可以有所变化的卷积核。从广义上理解,权重还可以包括偏置,并且是通过训练过程习得的数值,并且在推理时保持不变。另外,CNN还可以包括用于执行其他操作的参数,例如不带权重的层进行各类操作所需的参数。激活值指代从输入层开始,每一层的输出由输入值和权重值通过运算得到,在各层之间传递的数值,也称为特征值。与参数值不同,激活值的分布会根据输入数据样本而动态变化。
如图所示,在特征值被送入FC层之前,从输入特征图(输入图像)开始的各个层都具有多个通道(channel),用以表征输入图像的不同特征。在输入为彩色图像时,最初的输入特征图通常具有RGB三个通道,同一层内不同通道的特征值与尺寸相同但取值可以不同的卷积核分别进行卷积计算以生成该层的输出特征值,随后该特征值被送入通道数与卷积核大小可以不同的下一CONV层(Layer 1)中进行进一步的特征提取。重复上述过程直至Layer 7的输出被送入FC层。如图所示,在输入特征图中的W、H和C分别指代宽、高和通道三个维度。上述箭头可以指代具体计算顺序或计算并行度(尤其是在高并行度计算平台上进行计算的情况下)。
第一个FC层可以是用于将各个通道的特征提取为一个一维特征向量的全连接层。第二个FC层则可以是用于进行分类的分类器。
卷积层的操作
无论是DNN、RNN还是CNN,典型的神经网络模型,尤其是用于计算机视觉应用的神经网络模型都包括如图1所示的多个CONV层。针对每个CONV层,都会从输入的特征图数据中提取出更高级别的抽象数据,以保留输入数据中重要且唯一的信息。现代的DNN能够通过利用深层级(例如,几百个卷积层)来实现优异的视觉性能。
图2示出了神经网络中一个卷积层的典型操作例。上述操作同样适用于全连接层,例如图1所示的FC层。每个卷积层的三维输入是具有多个通道(C)的二维特征图(W×H)。对进行视觉处理的神经网络而言,其第一次的输入通常是具有RGB三个颜色通道的二维图像。多个三维过滤器(具有R×S×C维度的M个过滤器,过滤器也可被称为卷积核)随后与输入特征图进行卷积,并且每个过滤器可以生成输出的三维特征图(具有M个通道的二维E×F特征图)的一个通道。相同的一组M个过滤器可以应用于具有N个输入特征图的批次(B)。于是,N个输入特征图能够获取N个输出特征图(在此,也可以将批次B看作是输入的第四个维度)。此外,可以对经过滤的结果施加1维的偏置(图2中未示出)。
图3示出了卷积操作的一个例子。该卷积操作可以看作是在某一个通道C上,二维过滤器(R×S)与二维特征图(W×H)的卷积。如图3所示,使用一个3x3(R×S)的卷积核,以步长1对一个5x5(W×H)的特征图进行卷积计算。图的左侧示出了第一次卷积计算,中间示出了第二次卷积计算,依次类推。根据卷积计算的定义可知,每次具体的卷积计算可以分解成多次乘加计算。在经过9次卷积计算后,得到图3右侧的经卷积的3x3特征图。这9次的卷积计算之间不存在依赖关系,因此可以在利用高并行度计算平台进行计算时,在单次操作中完成执行(并行度M通常可以达到数千量级)。图3可以看作是CONV层多个通道中的一个通道C的卷积操作,在完成了所有通道C的卷积操作以及后续的相加操作后才能得到输出三维特征图的M个通道中的一个通道的特征图。更进一步地,上述输出三维特征图(具有M个通道的二维E×F特征图)也只是该批次中N个输出三维特征图之一。
由于CNN计算中涉及大量相互之间无依赖关系的卷积操作,使得尤其适用于在高并行度计算平台上实现。
本发明的矩阵求和结构
为了实现对各维度并行度的动态配置,尤其能够适配各种特征的卷积层,本发明提出了一种矩阵求和结构。图4示出了根据本发明一个实施例的矩阵求和结构的例子。如图4所示,矩阵求和结构400包括由底层乘法器和各级加法器构成的树状结构,每个加法器的输出与一个累加器相连,以便提供相应级别的并行输出。
具体地,矩阵求和结构400包括多个乘法器401,每个乘法器的第一和第二输入端接收相乘矩阵的对应元素;多个一级加法器410,每个一级加法器410具有N个乘法器401的输出作为输入,其中,N是大于等于2的整数;多个二级加法器420,每个二级加法器420具有多个一级加法器410的输出作为输入;以及一个三级加法器430,该三级加法器430具有所述多个二级加法器420的输出作为输入。
每个加法器都具有与其输出相连的累加器,以基于矩阵乘的并行度输出相应级别加法器的输出结果。换句话说,一级加法器410包括与其输出相连的累加器411,二级加法器420包括与其输出相连的累加器421,三级加法器也包括与其输出相连的累加器431。
在一个实施例中,每个乘法器的输出也可以与累加器相连,用于基于对应的矩阵乘并行度输出乘法器的累加结果。例如,图5示出了根据本发明另一个实施例的矩阵求和结构的例子。如图5所示,矩阵求和结构500除了与图4类似包括由底层乘法器501和各级加法器(510、520、530)构成的树状结构且每个加法器的输出与一个累加器(511、521、531)相连之外,还包括与每个乘法器的输出相连的累加器502,由此进一步拓展矩阵求和结构能够应对的并行度范围。
进一步地,图5示出了mode(模式)=1、=2、=4和=8的框。mode=1指代累加器502利用的是一个乘法器的累加结果;mode=2指代累加器512利用的是两个乘法器的乘加输出结果;mode=4指代累加器522利用的是四个乘法器的乘加输出结果;以及mode=8指代累加器532利用的是八个乘法器的乘加输出结果。
为了更为清楚的描述针对不同级别加法器及其累加器的并行度输出,图6A-6D示出了在不同并行度下输出计算结果的例子。
在此,假设图5的矩阵求和结果需要执行矩阵A与矩阵B的相乘,并相应得到结果矩阵C。图6的例子中选取8x8作为矩阵A和B的尺寸,根据矩阵乘原理,所得的结果矩阵也具有8x8的尺寸。深灰色标记为一个周期内读取的数据,且数据标号与图5中乘法器的标号相对应,即,矩阵A和B中标记数字对应的数据分别送入图5中相同标号乘法器的第一和第二输入端。
如图6A所示,当mode=8时,一个时钟周期就能够完成一次完整的矩阵乘加运算并输出结果数据。具体地,在第一系统时钟周期(cycle=1),图5的八个乘法器#1-#8的第一输入端分别读取矩阵A第一行的8个数据,第二输入端分别读取矩阵B第一列的8个数据,完成一次行列计算,得到结果矩阵C第一行第一列的数据并从累加器531获取输出结果。在此,由于在一个周期内已经完成了一次完整计算,因此累加器531仅起到寄存器的作用,并且直接输出该时钟周期内的计算结果作为矩阵C第一行第一列的结果数据。类似地,在第二系统时钟周期(cycle=2),图5的八个乘法器#1-#8的第一输入端分别读取矩阵A第一行的8个数据,第二输入端分别读取矩阵B第二列的8个数据,完成一次行列计算,直接得到结果矩阵C第一行第二列的数据并从累加器531获取输出结果。由此,同样在一个时钟周期内完成一次完整计算。
如图6B所示,当mode=4时,由于累加器组中每个累加器521的输入是四个乘法器,因此一个累加器521需要两个时钟周期才能获取一次完整矩阵乘加运算的结果,但由于两个累加器521同时工作,因此在两个时钟周期内同样能获得两个完整的输出结果。具体地,在第一系统时钟周期(cycle=1),图5的乘法器#1-#4的第一输入端分别读取矩阵A第一行的前4个数据,乘法器#5-#8的第一输入端分别读取矩阵A第二行的前4个数据,第二输入端分别读取矩阵B第一列的前4个数据(乘法器#1-#4和#5-#8复用这4个数据),两个累加器521分别存储矩阵A第一行前4个数据与矩阵B第一列前4个数据的乘加值,以及矩阵A第二行前4个数据与矩阵B第一列前4个数据的乘加值。随后,在第二系统时钟周期(cycle=2),图5的乘法器#1-#4的第一输入端分别读取矩阵A第一行的后4个数据,乘法器#5-#8的第一输入端分别读取矩阵A第二行的后4个数据,第二输入端分别读取矩阵B第一列的后4个数据(乘法器#1-#4和#5-#8复用这4个数据),两个累加器521分别获取矩阵A第一行后4个数据与矩阵B第一列后4个数据的乘加值,以及矩阵A第二行后4个数据与矩阵B第一列后4个数据的乘加值。两个乘加值分别与前一个周期获取的矩阵A第一行前4个数据与矩阵B第一列前4个数据的乘加值,以及矩阵A第二行前4个数据与矩阵B第一列前4个数据的乘加值相累加,由此经过二个时钟周期,两个累加器521分别输出矩阵C第一行第一列和第二行第一列的结果数据。
如图6C所示,当mode=2时,由于累加器组中每个累加器511的输入是两个乘法器,因此一个累加器521需要4个时钟周期才能获取一次完整矩阵乘加运算的结果,但由于4个累加器511同时工作,因此在4个时钟周期内同样能获得4个完整的输出结果。具体地,在第一系统时钟周期(cycle=1),图5的乘法器#1-#2的第一输入端分别读取矩阵A第一行的前2个数据,乘法器#3-#4的第一输入端分别读取矩阵A第二行的前2个数据,乘法器#5-#6的第一输入端分别读取矩阵A第三行的前2个数据,乘法器#7-#8的第一输入端分别读取矩阵A第四行的前2个数据。相应地,乘法器的第二输入端分别读取矩阵B第一列的前2个数据(乘法器#1-#2、#3-#4、#5-#6和#7-#8复用这2个数据),四个累加器511分别存储矩阵A第一行前2个数据与矩阵B第一列前2个数据的乘加值,矩阵A第二行前2个数据与矩阵B第一列前2个数据的乘加值,矩阵A第三行前2个数据与矩阵B第一列前2个数据的乘加值,以及矩阵A第四行前2个数据与矩阵B第一列前2个数据的乘加值。在随后的系统时钟周期中(cycle=2~4),乘法器第一端读取的矩阵A的数据每次右移两列,第二端读取的矩阵B的数据每次下移两行。四个累加器511分别累加上述乘加值,由此经过四个时钟周期,四个累加器511分别输出矩阵C第一行第一列至第四行第一列的结果数据。
如图6D所示,当mode=1时,由于累加器组中每个累加器502的输入是一个乘法器,因此一个累加器502需要8个时钟周期才能获取一次完整矩阵乘加运算的结果,但由于8个累加器502同时工作,因此在8个时钟周期内同样能获得8个完整的输出结果。具体地,在第一系统时钟周期(cycle=1),图5的乘法器#1-#8的第一输入端分别读取矩阵A第一行的8个数据,乘法器的第二输入端则全都复用矩阵B第一列的第一个数据(复用8次),8个累加器502分别存在相应的乘法结果。在随后的系统时钟周期中(cycle=2~8),乘法器第一端读取的矩阵A的数据每次右移一列,第二端读取的矩阵B的数据每次下移一行。8个累加器502分别累加上述乘加值,由此经过八个时钟周期,8个累加器502分别输出矩阵C第一列的8个结果数据。
由上可知,在不同的并行度策略下,选择用于输出结果的累加器以基于所述矩阵乘的并行度的时钟周期间隔输出其寄存(例如,在图6的例子中mode=8)或累加结果(例如,在图6的例子中mode=1,2,4)。换句话说,在不同的并行度策略下,读取数据的累加器级别不同,读取累加结果所需的时间周期不同,数据的复用度不同,但在全部乘法器都投入使用的情况下,每种策略的计算效率是相同的。
在具体应用中,可以根据要执行的矩阵运算、读写逻辑的实现以及缓存效率来合理选择不同的并行度策略,以及相应获取数据的累加器级别。
虽然图4和图5中例示了具有三级加法器,且每级加法器的输入都与两个下级加法器或底层乘法器相连的结构,但应该理解的是,根据具体的应用场合,在本发明的矩阵求和结构中,加法树每个加法器输入的接口数(一级加法器连接乘法器的数量N,上级加法器连接下级加法器的数据)、以及加法树的级数都可以根据需求进行修改。例如,加法树每一级加法器输入的接口数可以相同,也可以不同。各级加法器之间的输入接口数可以相同,也可以不同。
在一个实施例中,可以将加法树以3为底进行排列。在此,以3为底可以是仅取N=3,即,三个乘法器与一个一级加法器相连,各级加法器之间的连接可以取其他值,例如,以2为底。或者,可以完全以3为底,即,加法树中每一层都是以3为底。无论那种排布方式,对大规模并行的例如卷积神经网络计算的整体效率影响不大。将N取值为3,尤其适用于卷积神经网络的第一层的卷积计算。这是由于大多数用于图像处理的神经网络的第一层输入通道数量都是3(分别对应于RGB三通道),由此,可以方便地从mode=3处的累加器获取寄存或累加结果,同时保证对应乘法器的利用率几乎是100%。另外,由于后续各级还有更多的求和模式,因此也能够以极高的利用率适配各种各样的卷积计算层。
在一个实施例中,上述矩阵求和结构的三级加法器可以并接至一个输出与累加器相连的四级加法器,以构成更大的矩阵求和结构。进一步地,多个更大的矩阵求和结构逐级与更高一级的输出与累加器相连的加法器相连,直至符合预定连接方案。例如,在需要高度并行的应用场合,例如要求实现上千甚至上万并行度的情况下,可以使用完全以2为底的加法树,利用十一级的加法器实现2048的并行度。
另外,应该理解的是,虽然本发明的矩阵求和结构可以在设计阶段考虑各种因素而具有灵活的连接结构,但在具体实现后,例如在FPGA和ASIC电路中实现后,其分布位置固定。
本发明的矩阵求和结构适用于各种矩阵相乘的应用场合。由于其具有可动态配置各个维度的并行度的天然属性,因此尤其可以适配各种特征的卷积层。这使得本发明的矩阵求和结构尤其适于在神经网络计算平台的并行计算模块中应用。
由此,在一个实施例中,本发明还可以实现为一种神经网络计算平台,包括用于执行高并行度卷积计算的并行计算模块,其中,所述并行计算模块包括如上所述的矩阵求和结构,并且送入所述乘法器的第一和第二输入是对应相乘的特征图和权重数据。
具体地,并行计算模块的并行度可以为M,M是远大于2的整数。在此,M至少具有几百的取值。优选地,M的取值可达几千或上万。并行度M可由如下方案实现:单个所述矩阵求和结构,所述矩阵求和结构由多级加法器树状连接实现并且包括M个乘法器;或者多个并接的所述矩阵求和结构,每个矩阵求和结构由级数相同的多级加法器树状连接实现,并且多个并接的所述矩阵求和结构总共包括M个乘法器。例如,M=2048的情况下,并行计算模块可由包括经11级加法器树状连接的2048个乘法器的单个矩阵求和结构(底为2)实现。而在另一个实现中,并行计算模块可由各自包括经8级加法器树状连接的256个乘法器的8个矩阵求和结构(底为2)实现。在其他实施例中,可以使用底取值不同的矩阵求和结构并联实现上述并行度。
N的取值至少基于所述计算平台的硬件配置、以及所述神经网络计算的并行策略进行确定。在一个实施例中,矩阵求和结构的至少部分一级加法器的输入连接3个乘法器(即,N=3)。由此,方便对RGB输入特征图的卷积计算。
本发明的计算平台还可以片上缓存,用于存储特征图和权重数据以及计算结果;数据读取模块,用于以规定的并行度将特征图和权重数据从所述片上缓存读取至所述并行计算模块;以及数据写回模块,用于基于所述并行度,读取所述矩阵求和结构的对应级别加法器的输出结果,并将所述输出结果写回所述片上缓存。优选地,该计算平台还可以包括控制模块,用于基于所述并行度,控制所述片上缓存、数据读取模块、并行计算模块和数据写回模块的操作。图7示出了根据本发明一个实施例的神经网络计算平台的示意图。如图所示,神经网络计算平台700包括控制模块710、片上缓存720、数据读取模块730、包括本发明的矩阵求和结构的并行计算模块740和数据写回模块750。控制模块710可以基于并行度,控制片上缓存720与外部存储器之间的特征图和权重数据的存取,并且基于上述存取,使得数据读取模块730向并行计算模块740的各个乘法器输入端喂送特征图和权重数据,并行计算模块740执行相应的乘加操作,并且数据写回模块750在基于上述并行度决定的时钟周期处读取累加的结果,并写回片上缓存720。在一个实施例中,控制模块710可以是指令获取和分发模块,用于按照预定顺序将指令发送给各个功能模块730-750,以使其执行各自的任务。
本发明还可以实现为一种用于神经网络的计算平台实现方法。图8示出了根据本发明一个实施例的用于神经网络的计算平台实现方法的流程示意图。
在步骤S810,使用上述计算平台将特征图数据和权重数据从所述外部存储器中读取到片上缓存中。
在步骤S820,数据读取模块以规定的并行度读取单次并行计算操作所需的特征图数据和权重数据并送至所述矩阵求和模块的乘法器的第一和第二输出端。
在步骤S830,并行计算模块的所述矩阵求和模块执行针对所述输入特征图数据和权重数据的乘加操作。
相应地,在步骤S840,数据写回模块执行数据写回操作。基于不同的实现,数据写回模块可以以系统时钟频率从所述矩阵求和模块的对应级别的累加器读取单次操作中乘加结果,或者以预定间隔的系统时钟周期从所述矩阵求和模块的对应级别的加法器的输出端所接的累加器中读取预定次数操作的累加乘加结果。
规定的并行度、读取计算结果的对应加法器级别以及数据写回的频率基于神经网络计算各层的优化策略而变化。
本发明的神经网络计算平台,或是其包括的并行处理模块至少部分由FPGA或ASIC实现。优选地,上述神经网络计算平台可以是经过深度定制和优化设计实现的AI芯片(即,ASIC芯片)。本发明的矩阵求和结构分级可配,并且布局布线相对简单,因此在FPGA或ASIC上可以实现很高的工作频率。在一个实施例中,可以通过合理设计的数据读取模块送入复用数据并结合数据选择器,使得并行计算模块在系统时钟周期的倍频(可以是P倍,P大于等于2)运行,由此进一步提升系统的计算效率。
本发明的计算平台可以实现为神经网络处理器。与单一计算平台(即只有主机或CPU的计算平台)相比,本发明针对的是为了执行神经网络计算而被专门设计的神经网络专用处理器。本领域技术人员应当理解,本申请中所使用的术语“神经网络专用处理器”,也可简称为“神经网络处理器”或“NN处理器”。由于深度学习是神经网络技术中目前最为流行的一个技术分类,因此神经网络专用处理器可以被实现为深度学习专用处理器或深度学习处理器。但是,本领域技术人员应该明白,神经网络有各种技术分支,例如深度神经网络(DNN,Deep Neutral Network)和CNN,因此神经网络专用处理器也可以被实现为深度神经网络专用处理器(DNN处理器)或卷积神经网络专用处理器(CNN处理器)。也就是说,有关“深度学习处理器”或“深度神经网络处理器”或“卷积神经网络处理器”在异构计算平台中的神经网络计算实现技术也在本发明的范围之内。
DPU(Deep-learning Processing Unit)是一款针对人工智能中神经网络算法的通用加速平台,其利用FPGA高并行度和低功耗的特点,实现基于卷积神经网络(Convolutional Neural Network,以下简称CNN)进行推理。在这里,DPU可以认为是上文“深度学习处理器”或“深度神经网络处理器”或“卷积神经网络处理器”或“神经网络处理器”的一个具体实现。本文的描述主要基于使用CNN结构经由FPGA实现的DPU进行,但本领域技术人员应该理解的是,本发明的原理同样适用于通过诸如GPU的硬件结构针对其他神经网络进行推理的神经网络处理器。
本发明的计算平台可以在一个高并行计算系统中实现,其中用于执行诸如神经网络计算的高并行度计算的部分或全部功能可由数字电路实现。在一个实施例中,本发明的计算系统可以在包括通用处理器、大容量存储器和数字电路的片上系统(SoC)实现。
在一个实施例中,可由SoC上的数字电路部分(例如,FPGA、GPU或ASIC)来实现本系统所需的神经网络计算平台。计算平台或其中是并行计算模块可以是基于FPGA或GPU或ASIC等实现的硬件装置。由于CNN进行的是并行计算,因此通过逻辑硬件,尤其是FPGA来实现卷积神经网络计算功能具有天然的计算优势,并且相比于软件执行,能够实现更低的功耗。
上文中已经参考附图详细描述了根据本发明的矩阵求和结构、神经网络计算平台、系统及计算实现方法。
本发明的矩阵求和结构实现的电路架构的计算并行度可以在乘法结果的不同层进行动态取结果,由于可动态配置各个维度的并行度,因此能够适配各种特征的卷积层。通过对底数N的合理选取,可以使得每个计算单元的利用率特别高,对于系统整体效率的提升明显。另外,本发明的矩阵求和结果分级可配,布局布线相对简单,能够在FPGA或是ASIC上可以实现很高的工作频率。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (20)
1.一种矩阵求和结构,包括:
多个乘法器,所述乘法器的第一和第二输入端接收相乘矩阵的对应元素;
多个一级加法器,每个一级加法器具有N个乘法器的输出作为输入,其中,N是大于等于2的整数;
多个二级加法器,每个二级加法器具有多个一级加法器的输出作为输入;以及
一个三级加法器,所述三级加法器具有所述多个二级加法器的输出作为输入,
其中,每个所述加法器具有与其输出相连的累加器,以基于矩阵乘的并行度输出相应级别加法器的输出结果。
2.如权利要求1所述的结构,还包括:
与每个乘法器的输出相连的累加器,用于基于对应的矩阵乘并行度输出乘法器的累加结果。
3.如权利要求1所述的结构,其中,多个所述矩阵求和结构的三级加法器并接至一个输出与累加器相连的四级加法器,以构成更大的矩阵求和结构。
4.如权利要求3所述的结构,其中,多个更大的矩阵求和结构逐级与更高一级的输出与累加器相连的加法器相连,直至符合预定连接方案。
5.如权利要求1所述的结构,其中,每一级加法器输入连接的前一级加法器的个数相等。
6.如权利要求5所述的结构,其中,每一级加法器输入连接两个前一级加法器的输出。
7.如权利要求1所述的结构,其中,所述N等于2或者3。
8.如权利要求1所述的结构,其中,选择用于输出结果的累加器以基于所述矩阵乘的并行度的时钟周期间隔输出其寄存或是累加的结果。
9.一种神经网络计算平台,包括用于执行高并行度卷积计算的并行计算模块,其中,所述并行计算模块包括如权利要求1-8中任一项所述的矩阵求和结构,并且送入所述乘法器的第一和第二输入是对应相乘的特征图和权重数据。
10.如权利要求9所述的计算平台,其中,所述并行计算模块的并行度为M,M是远大于2的整数,并且所述并行度M由如下方案实现:
单个所述矩阵求和结构,所述矩阵求和结构由多级加法器树状连接实现并且包括M个乘法器;或者
多个并接的所述矩阵求和结构,每个矩阵求和结构由级数相同的多级加法器树状连接实现,并且多个并接的所述矩阵求和结构总共包括M个乘法器。
11.如权利要求10所述的计算平台,其中,所述矩阵求和结构的至少部分一级加法器的输入连接3个乘法器。
12.如权利要求9所述的计算平台,其中,所述并行计算模块至少部分由FPGA或ASIC实现。
13.如权利要求9所述的计算平台,还包括:
片上缓存,用于存储特征图和权重数据以及计算结果;
数据读取模块,用于以规定的并行度将特征图和权重数据从所述片上缓存读取至所述并行计算模块;以及
数据写回模块,用于基于所述并行度,读取所述矩阵求和结构的对应级别加法器的输出结果,并将所述输出结果写回所述片上缓存。
14.如权利要求13所述的计算平台,还包括:
控制模块,用于基于所述并行度,控制所述片上缓存、数据读取模块、并行计算模块和数据写回模块的操作。
15.如权利要求9所述的计算平台,其中,N的取值至少基于所述计算平台的硬件配置、以及所述神经网络计算的并行策略进行确定。
16.一种用于神经网络的计算平台实现方法,包括:
使用如权利要求9-15中任一项所述的计算平台将特征图数据和权重数据从外部存储器中读取到片上缓存中;
数据读取模块以规定的并行度读取单次并行计算操作所需的特征图数据和权重数据并送至所述矩阵求和模块的乘法器的第一和第二输出端;以及
所述并行计算模块的所述矩阵求和模块执行针对所述特征图数据和权重数据的乘加操作。
17.如权利要求16所述的方法,还包括:
数据写回模块以系统时钟频率从所述矩阵求和模块的对应级别的加法器的输出端读取单次操作中乘加结果,或者
所述数据写回模块以预定间隔的系统时钟周期从所述矩阵求和模块的对应级别的加法器的输出端所接的累加器中读取预定次数操作的累加乘加结果。
18.如权利要求17所述的方法,其中,所述规定的并行度、读取计算结果的对应加法器级别以及数据写回的频率基于神经网络计算各层的优化策略而变化。
19.一种神经网络计算系统,包括:
如权利要求9-15中任一项所述的计算平台;
位于所述计算平台外部的大容量存储器;以及
与所述计算平台和所述存储器相连接的处理器,用于执行如权利要求16-18中任一项所述的实现方法。
20.如权利要求19所述的系统,其中,所述系统至少部分由FPGA、GPU或ASIC实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810830257.8A CN110765413B (zh) | 2018-07-25 | 2018-07-25 | 矩阵求和结构及神经网络计算平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810830257.8A CN110765413B (zh) | 2018-07-25 | 2018-07-25 | 矩阵求和结构及神经网络计算平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110765413A CN110765413A (zh) | 2020-02-07 |
CN110765413B true CN110765413B (zh) | 2024-05-07 |
Family
ID=69327310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810830257.8A Active CN110765413B (zh) | 2018-07-25 | 2018-07-25 | 矩阵求和结构及神经网络计算平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110765413B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111814972B (zh) * | 2020-07-08 | 2024-02-02 | 上海雪湖科技有限公司 | 一种基于fpga的神经网络卷积运算加速方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325812A (zh) * | 2015-06-15 | 2017-01-11 | 华为技术有限公司 | 一种针对乘累加运算的处理方法及装置 |
CN106445471A (zh) * | 2016-10-13 | 2017-02-22 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN107797962A (zh) * | 2017-10-17 | 2018-03-13 | 清华大学 | 基于神经网络的计算阵列 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051124B2 (en) * | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
-
2018
- 2018-07-25 CN CN201810830257.8A patent/CN110765413B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325812A (zh) * | 2015-06-15 | 2017-01-11 | 华为技术有限公司 | 一种针对乘累加运算的处理方法及装置 |
CN106445471A (zh) * | 2016-10-13 | 2017-02-22 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN107797962A (zh) * | 2017-10-17 | 2018-03-13 | 清华大学 | 基于神经网络的计算阵列 |
Also Published As
Publication number | Publication date |
---|---|
CN110765413A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10394929B2 (en) | Adaptive execution engine for convolution computing systems | |
CN110050267B (zh) | 用于数据管理的系统和方法 | |
US20180129935A1 (en) | Convolutional neural network system and operation method thereof | |
US11586417B2 (en) | Exploiting activation sparsity in deep neural networks | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
US20210357735A1 (en) | Split accumulator for convolutional neural network accelerator | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
US20230214652A1 (en) | Method and apparatus with bit-serial data processing of a neural network | |
CN111242289A (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
CN107239824A (zh) | 用于实现稀疏卷积神经网络加速器的装置和方法 | |
WO2019136764A1 (zh) | 卷积器及其所应用的人工智能处理装置 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN111210019B (zh) | 一种基于软硬件协同加速的神经网络推断方法 | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
CN110766127A (zh) | 神经网络计算专用电路及其相关计算平台与实现方法 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN110796236A (zh) | 多样本多通道卷积神经网络池化的向量化实现方法 | |
CN110765413B (zh) | 矩阵求和结构及神经网络计算平台 | |
CN110716751B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN115485656A (zh) | 用于卷积运算的存储器内处理方法 | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
Hwang et al. | An efficient FPGA-based architecture for convolutional neural networks | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 |
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 |