CN112789627B - 一种神经网络处理器、数据处理方法及相关设备 - Google Patents
一种神经网络处理器、数据处理方法及相关设备 Download PDFInfo
- Publication number
- CN112789627B CN112789627B CN201880098253.3A CN201880098253A CN112789627B CN 112789627 B CN112789627 B CN 112789627B CN 201880098253 A CN201880098253 A CN 201880098253A CN 112789627 B CN112789627 B CN 112789627B
- Authority
- CN
- China
- Prior art keywords
- input
- cores
- matrix
- core
- global
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 50
- 238000003672 processing method Methods 0.000 title claims description 16
- 239000011159 matrix material Substances 0.000 claims abstract description 145
- 238000012549 training Methods 0.000 claims abstract description 109
- 238000009825 accumulation Methods 0.000 claims abstract description 65
- 238000000034 method Methods 0.000 claims abstract description 59
- 238000010606 normalization Methods 0.000 claims description 82
- 238000004364 calculation method Methods 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 44
- 238000013519 translation Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 4
- 239000010410 layer Substances 0.000 description 122
- 238000013527 convolutional neural network Methods 0.000 description 52
- 230000015654 memory Effects 0.000 description 38
- 238000011176 pooling Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 27
- 239000013598 vector Substances 0.000 description 27
- 238000009826 distribution Methods 0.000 description 12
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 7
- 238000013473 artificial intelligence Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000004913 activation Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000002346 layers by function Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- -1 i.e. Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明实施例公开了一种神经网络处理器、方法及相关设备,其中的神经网络处理器,包括:n个计算核Core、原子操作累加单元和片上共享缓存;每一个Core用于根据输入矩阵计算输入矩阵的核内均值μ,并将μ写入到原子操作累加单元;根据输入矩阵计算m个x2的均值v,并将v写入到原子操作累加单元;原子操作累加单元,用于对n个Core写入的n个μ进行累加得到S1,并将S1写入片上共享缓存;对n个Core写入的n个v的进行累加得到S2,并将S2写入片上共享缓存;每一个Core还用于:从片上共享缓存获取S1和S2,并根据S1和S2计算n个Core的n个输入矩阵的全局方差。采用本申请,可以提升神经网络的训练速度。
Description
技术领域
本申请涉及人工智能领域的数据计算技术领域,尤其涉及一种神经网络处理器、数据处理方法及相关设备。
背景技术
卷积神经网络(Convolutional Neural Network,CNN)从AlexNet的几层,到VGG和GoogleNet的十几层,甚至到ResNet的上百层,网络模型层数不断加深,取得的效果也越来越好,然而,网络越深往往就越难以训练。
CNN网络在训练的过程中,前一层的参数变化影响着后面层的变化,而且这种影响会随着网络深度的增加而不断放大。传统的神经网络,只是对输入层中所输入的训练数据进行标准化处理(减均值,除标准差),以降低训练样本间的差异性。而批量归一化(BatchNormalization,BN)也称梯度归一化处理方法,则是通过对CNN中的某几个卷积层或者每一个卷积层之后,加入归一化层,进行归一化处理后,再进入下一层网络,作为下一层的网络的输入,即通过引入BN算法来规范这些层输入矩阵的均值与方差,从而解决了以下问题:
1、提升网络模型训练收敛速度。对于深度网络的训练,上一层网络发生的数据变化,可能会积累,导致下一层网络需要适应不同的数据分布,影响收敛速度。使用BN可以减弱不同分布之间的差异,提高收敛速度。
2、提升网络泛化能力。训练数据和测试数据分布差异较大时,网络泛化能力会较差。
3、消除权重带来的梯度弥散(vanishing gradient problem)或梯度***(gradient explore)问题。
然而,由于上述BN处理方法,需要在CNN中的某些层或者每一层的输入之前都进行归一化处理(包括均值和方差的计算),且CNN的网络模型层数越深,进行归一化处理次数越多,若每一次归一化处理的时间较长,则可能会影响CNN的整体训练速度。因此,如何在利用BN处理方法保证CNN网络性能的情况下,进一步提升BN处理的速度是亟待解决的问题。
发明内容
本发明实施例提供一种神经网络处理器、数据处理方法及相关设备,以提升神经网络的训练速度。
第一方面,本发明实施例提供了一种神经网络处理器,可包括:n个计算核Core、原子操作累加单元和片上共享缓存,所述n个Core和所述片上共享缓存分别耦合于所述原子操作累加单元,其中,n为大于1的整数;所述n个Core中的每一个Core,用于:根据输入矩阵计算所述输入矩阵的核内均值μ,并将μ写入到所述原子操作累加单元,所述输入矩阵包括m个训练样本,所述核内均值μ为所述m个训练样本x的平均值,其中,m为大于或者等于1的整数;根据所述输入矩阵计算m个x2的均值v,并将v写入到所述原子操作累加单元;所述原子操作累加单元,用于对所述n个Core写入的n个μ进行累加得到S1,并将所述S1写入所述片上共享缓存;对所述n个Core写入的n个v的进行累加得到S2,并将所述S2写入所述片上共享缓存;所述n个Core中的每一个Core,还用于:从所述片上共享缓存获取S1和S2,并根据所述S1和S2计算所述n个Core的n个输入矩阵的全局方差。
本发明实施例,通过在Batch Normalization过程中,神经网络处理器计算Batch的全局方差时,不再依赖于先计算出全局均值(每个计算核先计算核内均值再全局求和再平均)再计算全局方差(每个计算核先计算核内方差再全局求和再平均),而是每个计算核计算出核内训练样本x的核内均值μ以及x2的核内均值v,再分别送入原子操作累加单元进行累加并将累加结果存入片上网络缓存中,最终,n个计算核从片上网络缓存中一次性获取n个μ以及n个v的累加结果,并基于该累加结果计算,计算出全局均值和全局方差。即不同于现有技术中神经网络处理器中的每个计算核需要先获取到全局均值(即对所有计算核的核内均值进行求和再求均值)之后,才可以计算全局方差,而在此过程中,所有计算核从原子操作累加单元(也可以是n个计算核中的某个计算核)中同步全局均值,需要一定的时长,且计算核越多同步的时间可能越长,从而影响之后每个计算核计算核内方差,进而影响原子操作累加单元累加全局方差的时间。因此,本发明实施例在计算核Batch Normalization过程中,n个计算核只需要做一次同步(即一次性获取计算全局均值和全局方差的计算元素),减少了一次同步过程,便大大的减少了同步的开销和时间,提升整个神经网路的训练速度。
在一种可能的实现方式中,所述n个Core中的每一个Core,还用于从所述片上共享缓存获取S1和S2,并根据所述S1和S2计算所述n个Core的n个输入矩阵的全局方差,包括:从所述片上共享缓存获取S1和S2,并根据计算公式:计算所述n个Core的n个输入矩阵的全局方差。
本发明实施例,所述n个Core中的每一个Core从片上共享缓存获取S1和S2后,依据S1和S2并依据δ2的计算公式计算出n个Core的n个输入矩阵的全局方差,且可以同步得到出全局均值。
在一种可能的实现方式中,所述n个Core中的每一个Core,还用于:根据公式分别对所述输入矩阵中的m个训练样本x进行归一化处理,其中,/>为所述n个Core的n个输入矩阵的全局均值,δ2为所述n个Core的n个输入矩阵的全局方差,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,∈为大于0的值。
本发明实施例,n个Core中的每一个Core可以根据自身计算出的全局均值和全局方差进行Batch Normalization的归一化处理。
在一种可能的实现方式中,所述n个Core中的每一个Core,还用于:根据公式对进行归一化处理后的m个训练样本x进行缩放、平移处理;其中,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,yi为xi经过批归一化BN处理后得到的输出结果,α为缩放参数,β为平移参数。
本发明实施例,n个Core中的每一个Core可以根据自身计算出的全局均值和全局方差进行Batch Normalization的平移和缩放处理。
在一种可能的实现方式中,所述n个Core中的每一个Core,用于获取特征图矩阵和权重矩阵,并根据所述特征图矩阵和所述权重矩阵计算得到所述输入矩阵。
本发明实施例,通过在Batch Normalization层的前一层获得的特征图矩阵以及权重矩阵进行运算后,得到Batch Normalization层的输入矩阵,并最终在经过BatchNormalization处理之后,作为下一层的输入。
第二方面,本发明实施例提供了一种数据处理方法,可包括:针对n个输入矩阵中的每个输入矩阵作如下处理:根据输入矩阵计算所述输入矩阵的核内均值μ,并将μ写入到所述原子操作累加单元,所述输入矩阵包括m个训练样本,所述核内均值μ为所述m个训练样本x的平均值,其中,m为大于或者等于1的整数;根据所述输入矩阵计算m个x2的均值v,并将v写入到所述原子操作累加单元;针对根据n个所述输入矩阵计算出的n个μ,以及n个v作如下处理:对n个μ进行累加得到S1;对n个v进行累加得到S2;针对S1和S2作如下处理:根据所述S1和S2计算所述n个输入矩阵的全局方差。
在一种可能的实现方式中,所述根据所述S1和S2计算所述n个输入矩阵的全局方差,包括:根据计算公式:计算所述n个输入矩阵的全局方差。
在一种可能的实现方式中,所述方法,还包括:根据公式分别对所述输入矩阵中的m个训练样本x进行归一化处理,其中,/>为所述n个输入矩阵的全局均值,δ2为所述n个输入矩阵的方差,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,∈为大于0的值。
在一种可能的实现方式中,所述方法,还包括:根据公式对进行归一化处理后的m个训练样本x进行缩放、平移处理;其中,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,yi为xi经过批归一化BN处理后得到的输出结果,α为缩放参数,β为平移参数。
在一种可能的实现方式中,所述方法,还包括:获取特征图矩阵和权重矩阵,并根据所述特征图矩阵和所述权重矩阵计算得到所述n个输入矩阵中的任意一个输入矩阵。
第三方面,本申请提供一种运算加速器,所述运算加速器为上述第一方面中任意一项所述的神经网络处理器中的计算核Core,所述运算加速器用于执行上述第一方面中任意一项所述的神经网络处理器中所述的n个计算核Core中任意一个Core所执行的功能。
第四方面,本申请提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第二方面中任意一项所述的数据处理方法流程。
第五方面,本发明实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第二方面中任意一项所述的数据处理方法流程。
第六方面,本申请提供了一种芯片***,该芯片***包括处理器,用于实现上述第二方面中任意一项所述的数据处理方法流程所涉及的功能。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存数据处理必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其它分立器件。
附图说明
图1是本发明实施例提供的一种卷积神经网络示意图;
图2是本发明实施例提供的另一种卷积神经网络示意图;
图3是本发明实施例提供的一种Batch Normalization前向流程图;
图4是本发明实施例提供的一种神经网络处理器的硬件结构示意图;
图5是本发明实施例提供的一种NPU细化的硬件结构示意图;
图6是本发明实施例提供的另一种Batch Normalization前向流程图;
图7是本发明实施例提供的一种数据处理方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“***”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地***、分布式***和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它***交互的互联网)的信号通过本地和/或远程进程来通信。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)人工智能(Artificial Intelligence,AI),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
(2)卷积神经网络(Convolutional Neural Network,CNN)是一种多层的神经网络,每层有多个二维平面组成,而每个平面由多个独立神经元组成,每个平面的多个神经元共享权重,通过权重共享可以降低神经网络中的参数数目。目前,在卷积神经网络中,处理器进行卷积操作通常是将输入信号特征与权重的卷积,转换为信号矩阵与权重矩阵之间的矩阵乘运算。在具体矩阵乘运算时,对信号矩阵和权重矩阵进行分块处理,得到多个分形(Fractional)信号矩阵和分形权重矩阵,然后对多个分形信号矩阵和分形权重矩阵进行矩阵乘和累加运算。
(3)卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(4)卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。
(5)卷积就是卷积核跟图像矩阵(卷积层的输入矩阵)的运算。通常输入矩阵(input matrix)是卷积时根据卷积核的步长(stride)从图像矩阵提取出来的矩阵。卷积核是一个小窗口,记录的是权重。卷积核在图像矩阵上按步长滑动,每次滑动卷积核对应图像矩阵的一个子矩阵,将卷积核中的权值和该子矩阵包含的值相乘再相加,赋给卷积核当前在输出特征图(输出矩阵)对应的一个元素。
(6)卷积核沿图像矩阵的高度方向移动一次的步长为卷积核高度滑动的步长,卷积核沿图像矩阵的宽度方向移动一次的步长为卷积核宽度滑动的步长。卷积核的滑动步长用参数stride表示。通常输入矩阵是卷积时根据卷积核的步长(stride)从图像矩阵(即输入数据)提取出来的。举例来说,stride=[s1,s2],s1表示卷积核高度滑动的步长,s2表示卷积核宽度滑动的步长。
(7)卷积运算是卷积神经网络中最重要的一个算子。例如,X表示输入特征图(卷积层的输入矩阵),X’表示采用im2col操作处理X后得到的矩阵,W表示权重矩阵,b表示偏置,Y0表示X’和W矩阵乘积的结果,Y表示输出特征图(卷积层的输出矩阵)。可选的,经过可选的Activation操作,计算输出Y中每个元素的激活值,得到最后的结果。
需要说明的是,由于本申请中所涉及的批量归一化(Batch Normalization,BN)是通过对卷积神经网络CNN中某几个卷积层或者每一个卷积层之后,加入归一化层,进行归一化处理后,再进入下一层网络。因此,以下对卷积神经网络CNN的结构进行示例性介绍:
卷积神经网络CNN是一种带有卷积结构的深度神经网络,是一种深度学习(deeplearning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元对输入其中的图像中的重叠区域作出响应。
如图1所示,图1为本发明实施例提供的一种卷积神经网络示意图,卷积神经网络(CNN)100可以包括输入层110,卷积层/池化层120,以及神经网络层130,其中池化层为可选的。
卷积层/池化层120:
如图1所示卷积层/池化层120可以包括如示例121-126层,在一种实现中,121层为卷积层,122层为池化层,123层为卷积层,124层为池化层,125为卷积层,126为池化层;在另一种实现方式中,121、122为卷积层,123为池化层,124、125为卷积层,126为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
卷积层:
以卷积层121为例,卷积层121可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……,这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depthdimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用维度相同的多个权重矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化……该多个权重矩阵维度相同,经过该多个维度相同的权重矩阵提取后的特征图维度也相同,再将提取到的多个维度相同的特征图合并形成卷积运算的输出。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以从输入图像中提取信息,从而帮助卷积神经网络100进行正确的预测。
当卷积神经网络100有多个卷积层的时候,初始的卷积层(例如121)往往提取较多的一般特征,该一般特征也可以被称为低级别的特征;随着卷积神经网络100深度的加深,越往后的卷积层(例如126)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,即如图1中120所示例的121-126各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像大小相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
神经网络层130:
在经过卷积层/池化层120的处理后,卷积神经网络100还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层120只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或别的相关信息),卷积神经网络100需要利用神经网络层130来生成一个或者一组所需要的类的输出。因此,在神经网络层130中可以包括多层隐含层(如图1所示的131、132至13n)以及输出层140,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等……
在神经网络层130中的多层隐含层之后,也就是整个卷积神经网络100的最后层为输出层140,该输出层140具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络100的前向传播(图1中由110至140的传播为前向传播)完成,反向传播(图1中由140至110的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络100的损失及卷积神经网络100通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图1所示的卷积神经网络100仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在,例如,如图2所示,图2为本发明实施例提供的另一种卷积神经网络示意图,多个卷积层/池化层并行,将分别提取的特征均输入给全神经网络层130进行处理。
本申请中的归一化层,作为CNN的功能层,原则上可以在上述CNN中的任何一层之后,或者任何一层之前进行,并以上一层输出的特征矩阵作为输入,其输出也可以作为CNN中任何一层功能层的输入。但在实际CNN应用中,归一化层一般在卷积层之后进行,并以前面卷积层输出的特征矩阵作为输入矩阵。
为了便于理解本发明实施例,以下具体分析本发明实施例所需要解决的技术问题以及对应的应用场景。
在利用Batch Normalization进行CNN训练的实际运算过程中,绝大多数都采用mini-batch进行训练,例如,Batch为神经网络的整个训练集中的其中一部分(也可以是全部),进一步地,将Batch拆分成多个mini-batch,每个mini-batch则为Batch对应的训练集的一个子集。BatchNormalization计算每个mini-batch对应子集的均值和方差,并基于所有mini-batch对应子集的全局均值和全局方差对每个子集进行归一化操作,从而得到每个mini-batch对应的归一化后的子集即输出结果。避免了当训练集较大时,每次迭代都要计算整个训练集而导致一次迭代计算时间过长的问题;并且由于多个mini-batch可以同步运算,因此,大大的提高了计算效率。另外,通过增加了缩放和平移(scale and shift)步骤,以保留原有训练集中的数据分布信息,避免使得网络的表达能力下降,同时便于自适应学习。
假设,Batch对应的训练集有Z个训练样本,将Batch分为的n个mini-batch,每个mini-batch是Batch对应的训练集的一个子集,每个mini-batch有m个训练样本,则训练的Batch Size为m,m<=Z,且n*m>=Z;其中mini-batch是按随机或者其他某种分布从Batch对应的训练集的Z个样本中挑选m个样本构成的一个子集,本申请对此不作具体限定。用B表示其中的任意一个mini-batch,以下示出BatchNormalization的前向计算方式:
输入:Mini-batchB={x1,...xm};其中,B有m个训练样本分别为x1,...xm;需要说明的是,该输入是归一化层的输入,也可以理解为归一化上一层的输出。
输出:{yi=BNαβ(xi)};其中,yi则为Mini-batchB中的第i个训练样本xi在经过归一化处理后并通过缩放和平移(涉及参数γ和参数β)得到的输出结果。即Mini-batchB的集合为{x1,...xm},于是其对应的BN Layer的输出集合则为{yi=BNαβ(xi)}。需要说明的是,该输出是归一化层的输出,也可以理解为归一化下一层的输入。
(1)求Mini-batchB的均值:
其中,μB表示输入到归一化层的Mini-batchB的均值,对Mini-batchB中的m个训练样本x1,...xm求和之后除以m,便得到Mini-batch的均值μR;xi为Mini-batch的m个样本中的第i个训练样本。
(2)求Mini-batch B的方差:
其中,表示输入到归一化层的Mini-batch B的方差,关于方差公式不再赘述。
(3)归一化:
其中,为第i个训练样本xi归一化后的结果,/>应当服从均值μ=0,方差σ=1的正态分布也即是标准正态分布;∈是为了避免分母为0而加进去的接近于0的很小值。
(4)缩放和平移,对经过上面归一化处理得到的结果进行重构:
其中,yi为mini-batch B中的第i个训练样本xi经过BN处理后得到的输出结果。而缩放参数α和平移参数β,则是为解决由于归一化后使得网络的表达能力下降问题(因为基本会被限制在正态分布下)所引入的两个参数。且α和数β是在训练时网络自己学习得到的,便于CNN的自适应学习。
若从Batch对应的训练集的全局角度来看,当整个训练集(Batch)包含n个mini-batch,且n大于1时,则所有n个mini-batch均需要进行上述BN处理。并且,最终,上述公式(3)中归一化所使用的μB则为n个mini-batch对应的全局均值(即n个mini-batch的内部均值累加之后再求均值),而所使用的则为n个mini-batch对应的全局方差(即n个mini-batch的内部方差累加之后再求均值)。
假设,每个mini-batch都对应一个计算核Core,那么n个mini-batch对应n个Core,记n个mini-batch中的第j个mini-batch对应的Core为Corej,j的取值为1、……n。请参见图3,图3为本发明实施例提供的一种Batch Normalization前向流程图。具体计算过程如下:
(1)第j个计算核Corej计算Feature Map矩阵和Weight矩阵相乘结果为Xj,而该Xj即为n个mini-batch中的第j个mini-batch的输入B={x1,…xm}。需要说明的是,Xj为矩阵,而x1,…xm则可以为改矩阵中的m个列向量,即矩阵Xj中的第i个列向量为对应的mini-batch中的训练样本xi。
(2)Corej计算Corej对应的mini-batch上的核内均值j的取值为1、……n;
(3)由n个Core中的某个目标Core计算Batch的全局均值,即需要n个Core中的其他Core(除目标Core以外的Core)将计算得到的均值μB都发送到该目标Core上来,该目标Core最终计算得到全局均值μB′,然后各个Core读取该目标Core上的全局均值μB′或者由该目标Core广播给各个Core。可以理解的是,目标Core也可以将全局均值μB′存储到相关的计算单元中,以便于后续进行全局输出结果的计算。
(4)Corej计算各mini-batch的核内方差j的取值为1、2……n;
(5)由某个核(例如仍为上述目标Core)计算全局方差,即需要n个Core中的其他Core(除目标Core以外的Core)将计算得到的方差均发送到该目标Core上来,该目标Core最终计算得到全局方差/>然后各个Core读取该目标Core上的全局方差/>或者由该目标Core广播给各个Core。各个Core根据该全局方差进行归一化和缩放、平移操作,ReLU以后,将各自计算出的/>存放到相关计算单元中,以便于结合上述全局均值μB′和全局方差/>并根据归一化公式,求得Batch全局的输出结果Y,用于后续的反向过程。
上述实现过程,按照图3所示,需要在Batch Normalization过程中做两次同步:第一次同步:n个mini-batch之间同步全局均值μB′;第二次同步,n个mini-batch之间同步全局方差向量然而同步两次开销比较大。假如每一个网络层之后都有一层BatchNormalization,则同步的开销过大会极大的影响整个网路的训练速度。
因此,针对上述技术问题,本申请主要解决的问题为如何减少BatchNormalization过程中的两次同步时间,以减小Batch Normalization过程中的同步开销,提升整个网路的训练速度。可以理解的是,上述应用场景的只是本发明实施例中示例性的实施方式,本发明实施例中的应用场景包括但不仅限于以上应用场景。
基于上述,下面结合本发明实施例提供的神经网络处理器以及相关设备进行描述。请参见图4,图4是本发明实施例提供的一种神经网络处理器的硬件结构示意图,该神经网络处理器NPU 20作为协处理器挂载到CPU 30(如Host CPU)上,由Host CPU 30分配任务。该NPU 20中可包括N个计算核201(NPU Core)简称Core,该N个Core 201之间可以通过片上网络202(on-chip interconnection network)互相连接并通信。进一步可选的,N个Core201通过片上互连网络202耦合于原子操作累加单元203、片上共享缓存204和外部存储器40。其中,原子操作累加单元203和片上共享缓存204可以集成在一起;外部存储器40可以是双倍速率同步动态随机存储器(Double Data Rate,DDR)、高带宽存储器(High BandwidthMemory,HBM)等。
下面以n个计算核201中的任意一个计算核的一种可能的硬件结构进行描述,请参见图5,图5是本发明实施例提供的一种NPU细化的硬件结构示意图,Core201的核心部分为运算电路2013,通过直接内存访问控制器DMAC 2017控制运算电路1203提取存储器(包括输入存储器2011和权重存储器2012等)中的矩阵数据进行乘法运算;进一步地,DMAC1204还控制运算电路2013中的运算结果或者统一存储器2016中的矩阵数据进入到累加器2015和/或向量计算单元2014中进行进一步的运算。其中,
运算电路2013,也可以称之为矩阵运算单元(Cube Unit),用于完成矩阵*矩阵的操作。运算电路2013可以包括多个处理单元(Process Engine,PE)。在一种可能的实现方式中,运算电路2013是二维脉动阵列。可选的,运算电路2013还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1203是通用的矩阵处理器。
向量计算单元(Vector Unit)2014,用于对运算电路2013的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/FC层网络计算,如池化(Pooling)、批归一化(Batch Normalization)、局部响应归一化(LocalResponse Normalization)等。在一些实现中,向量计算单元2014能将经处理的输出的向量存储到统一存储器2016。例如,向量计算单元2014可以将非线性函数应用到运算电路2013的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元2014生成归一化的值或合并值,或者,所述向量计算单元2014生成归一化的值和合并值。在一些实现中,处理过的输出的向量能够用作运算电路2013的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器2016,也可以称之为片上存储器(On-chip buffer),用于存放输入数据以及输出数据。权重数据(权重矩阵)通过DMAC2017被搬运到权重存储器2012中。输入矩阵(输入矩阵)也通过DMAC被搬运到统一存储器2016或输入存储器2011中。
输入存储器2011,也可以称之为特征图存储器(Feature map buffer),用于存储Feature map矩阵。
权重存储器(Weight Buffer)2012,用于存放权重矩阵。权重矩阵的格式包括四个维度:卷积核高度、卷积核宽度、输入通道数(卷积核深度)、输出通道数(卷积核个数)。在卷积层仅使用一个卷积核进行卷积时,权重矩阵就是卷积核。在卷积层使用两个或两个以上卷积核进行卷积时,权重矩阵可以是卷积层进行卷积所使用的各卷积核组成的矩阵。
直接内存访问控制器(Direct Memory Access Controller,DMAC)2017,用于将外部存储器40如DDR/HBM中的输入数据或输入矩阵搬运到各类存储器Buffer中,或者从统一存储器2016将输出数据搬运到DDR/HBM中。可选的,一个完整的DMA传输过程需要经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。
控制单元(Flow control)2018,芯片控制单元/流水,控制数据读取方式,用于控制处理流程以及控制数据读取方式。
片上互连网络(on-chip interconnection network),是片上***(system-on-chip,SoC)的一种通信方式,它是多核技术的主要组成部分,用于多个计算核Core 201之间的交互,以及与多个计算核Core 201与外部存储器40和内部存储器208之间的交互。
原子操作累加单元(atomic accumulator unit)203,用于存储并累加多个计算核Core 201所得到的输出结果。
片上共享缓存(shared on chip buffer)204,用于缓存原子操作累加单元写入的数据,如全局均值和全局方差,也用于在DMAC2017的控制下,将全局均值和全局方差同步给n个Core201。可选的片上共享缓存204可以和原子操作累加单元203集成在一起。
需要说明的是,统一存储器2016,输入存储器2011,权重存储器2012均为On-Chip存储器。外部存储器即DDR/HBM可以私有于该CNN 20的硬件架构,也可以在服务该CNN 20的情况下还服务于其它处理器。可以理解的是,主CPU30还用于运行通用操作***软件,并在通用操作***软件的作用下控制神经网络处理器20进行神经网络训练。
可选的,上述神经网络处理器20也可以作为主CPU 30中的一部分集成在主CPU 30中;也可以为耦合于上述主CPU30,且能实现相关功能的其它功能芯片。同理,主CPU 30所执行的功能也可以分布在多个不同的功能芯片上执行,本发明实施例对此不作具体限定。
基于上述结构,举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路2013从权重存储器2012中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路2013从输入存储器2011中取矩阵A数据与矩阵B进行矩阵运算,然后在累加器2015中进行加法操作,得到的矩阵的部分结果或最终结果,保存在统一存储器2016中。
可以理解的是,上述CNN的硬件结构只是本发明实施例所提供的其中一种示例性硬件结构,本发明实施例中的CNN的硬件结构,包括但不仅限于以上结构和连接关系。
下面,基于上述CNN的硬件结构,以下对本申请中的计算过程进行分析:
已知,B={x1,…xm},可知均值μB与方差的计算公式如下:
所以
由上述公式分析可以获知,mini-batch的内部方差的计算不依赖于mini-batch的内部均值,所以内部均值与内部方差可以同步。
结合本发明实施例提供的上述图4或图5中的神经网络处理器的硬件架构,以及上述分析推导流程,对本发明实施例提供的一种神经网络处理器的相关功能进行描述。如图4所示,该神经网络处理器20包括n个计算核Core 201、原子操作累加单元203和片上共享缓存204,所述n个Core 201和所述片上共享缓存204分别耦合于所述原子操作累加单元203,其中,n为大于1的整数。进一步可选的,n个Core 201中的每一个Core 201还包括多个功能模块,如向量计算单元2014、DMAC 2017等,请参见图4和图5中的相关描述,在此不再赘述。
其中
所述n个Core中的每一个Core 201,根据输入矩阵利用向量计算单元2014计算所述输入矩阵的核内均值μ,并在DMAC 2017的控制下将μ写入到原子操作累加单元2014,所述输入矩阵包括m个训练样本,所述核内均值μ为所述m个训练样本x的平均值,其中,m为大于或者等于1的整数;根据所述输入矩阵利用向量计算单元2014计算m个x2的均值v,并在DMAC2017的控制下将v写入到原子操作累加单元203;
原子操作累加单元203,对所述n个Core写入的n个μ进行累加得到S1,并将所述S1写入片上共享缓存204;对所述n个Core写入的n个v的进行累加得到S2,并将所述S2写入所述片上共享缓存204;
所述n个Core中的每一个Core 201,还进一步的从片上共享缓存204获取S1和S2,并根据所述S1和S2计算所述n个Core 201的n个输入矩阵的全局方差。
本发明实施例,通过在Batch Normalization过程中,神经网络处理器计算Batch的全局方差时,不再依赖于先计算出全局均值(每个计算核先计算核内均值再全局求和再平均)再计算全局方差(每个计算核先计算核内方差再全局求和再平均),而是每个计算核计算出核内训练样本x的核内均值μ以及x2的核内均值v,再分别送入原子操作累加单元进行累加并将累加结果存入片上网络缓存中,最终,n个计算核从片上网络缓存中一次性获取n个μ以及n个v的累加结果,并基于该累加结果计算,计算出全局均值和全局方差。减少了一次同步过程,便大大的减少了同步的开销和时间,提升整个神经网路的训练速度。
并且,由于在神经网络处理器的片上网络NoC上增加原子操作累加单元,不同的计算核在往同一个地址(即原子操作累加单元)写数据的过程中即完成累加操作,一方面不占用计算核的计算资源,而是每个计算核算完写数据的过程即完成累加,将累加过程分散开来,节约总的时间;避免了把所有数据发给某一个计算核完成累加操作,导致做累加的时候其他的计算核在空等,效率低。
可选的,本发明实施例中,对上述每一个Core 201中的向量计算单元2014在计算μ和v时的先后顺序不作具体限定,即可以先计算μ也可以先计算v,并且,每个计算核201在计算出自身的μ或v之后,则可以立即发送至原子操作累加单元203进行累加,以同步进行累加,节省时间。
可以理解的是,本发明实施例中,上述每一个Core 201在通过向量计算单元2014计算出μ或v之后,也可以统一发送给n个Core 201中的某一个指定的Core 201进行累加计算,即处理器20中也可以不具有上述原子操作累加单元203和片上共享缓存204,而是其中一个Core201来代替上述原子操作累加单元203和片上共享缓存204的功能。
在一种可能的实现方式中,所述n个Core中的每一个Core 201,还在DMAC的控制下从片上共享缓存204获取S1和S2,并利用向量计算单元2014根据所述S1和S2计算所述n个Core 201的n个输入矩阵的全局方差,具体包括:从所述片上共享缓存获取S1和S2,并根据计算公式:计算所述n个Core的n个输入矩阵的全局方差。可选的,当所有Core 201将自身的μ或v写入至原子操作累加单元中时,都可以给DMAC2017一个反馈,当每个DMAC 2017均接收到两次反馈时,则可以获知原子操作累加单元203已经完成S1和S2的计算,因此DMAC2017可以控制所在的Core从片上共享缓存中去获取S1和S2。
在一种可能的实现方式中,所述n个Core中的每一个Core 201,还通过向量计算单元2014,根据公式分别对所述输入矩阵中的m个训练样本x进行归一化处理,其中,/>为所述n个Core的n个输入矩阵的全局均值,δ2为所述n个Core的n个输入矩阵的全局方差,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,∈为大于0的值。
在一种可能的实现方式中,所述n个Core中的每一个Core 201,通过向量计算单元2014根据公式对进行归一化处理后的m个训练样本x进行缩放、平移处理;其中,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,yi为xi经过批归一化BN处理后得到的输出结果,α为缩放参数,β为平移参数。
在一种可能的实现方式中,所述n个Core中的每一个Core 201,用于从DDR/HBM 40中获取特征图矩阵和权重矩阵,并将获取的特征图矩阵和权重矩阵分别读入到对应的输入存储器2011和权重存储器2012,并利用运算电路2013和累加器2015对所述特征图矩阵和所述权重矩阵进行乘法运算和加法运算,得到所述输入矩阵。
下面,基于上述图4、图5提供的神经网络处理器20的硬件结构,本发明实施例结合实际应用场景,提供以下Batch Normalization的处理过程,神经网络处理器的具体计算过程可以如下:
Batch对应的训练集有Z个训练样本,将Batch分为的n个mini-batch,每个mini-batch是Batch对应的训练集的一个子集,每个mini-batch有m个训练样本,则训练的BatchSize为m,m<=Z,且n*m>=Z;其中mini-batch是按随机或者其他某种分布从Batch对应的训练集的Z个样本中挑选m个样本构成的一个子集,本申请对此不作具体限定。用B表示其中的任意一个mini-batch,那么对于一个mini-batch,假设对应的x的集合为{x1,...xm},于是其对应的BN Layer的输出集合{yi=BNαβ(xi)}可以通过以下方式计算。
输入:Mini-batch B={x1,...xm};其中,B有m个训练样本分别为x1,...xm;需要说明的是,该输入是归一化层的输入,也可以理解为归一化上一层的输出。
输出:{yi=BNαβ(xi)};其中,yi则为Mini-batch B中的第i个训练样本xi在经过归一化处理后并通过缩放和平移(涉及参数α和参数β)得到的输出结果。需要说明的是,该输出是归一化层的输出,也可以理解为归一化下一层的输入。
上述Batch Normalization处理过程,为针对Batch中的某一个mini-batch进行的BN处理过程,若从Batch的全局角度来看,整个Batch中的所有n个mini-batch均需要进行上述BN处理,并且最终针对n个mini-batch的输出结果,进行Batch Normalization,才能计算得到Batch的均值和标准差,从而得到整个Batch的输出结果。假设每个mini-batch都对应一个计算核Core,那么n个mini-batch对应n个Core,记n个mini-batch中的第j个mini-batch对应的Core为Corej,j的取值为1、2……n。请参见图6,图6为本发明实施例提供的另一种BatchNormalization前向流程图。具体计算过程如下:
1、DMAC2017通过片上互连网络202控制从HBM/DDR40中读取n个Mini-batch对应的Feature Map矩阵和weight系数矩阵分别到各个Core对应的输入存储器2011(如Featuremap buf)和权重存储器2012(如Weight buf)中。例如,将第1个mini-batch对应的Feature Map矩阵和weight读取到Core1中对应的Feature map buf和Weight buf中,将第2个mini-batch对应的Feature Map矩阵和weight读取到Core2中对应的Feature map buf和Weightbuf中,以此类推,将第n个mini-batch对应的Feature Map矩阵和weight读取到Coren中对应的Featuremap buf和Weight buf中,后续不再赘述。可以理解的是,不同mini-batch对应的weight系数矩阵是相同的。
2、第j个Core即Corej上的运算电路2013和累加器2015计算Feature Map矩阵和Weight矩阵相乘结果记为Xj,暂时存放到统一存储器2016中,j的取值为1、……n。其中输入矩阵Xj为第j个mini-batch所对应的B,B={x1,...xm}。可理解的是,不同的mini-batch所对应的B中的{x1,...xm}不同,本申请对此不作具体限定。
3、n个Core201中的每个Core201分别计算自身计算核内的均值,例如,Corej上的向量计算单元2014计算出其对应的第j个mini-batch B的均值为其中,μB表示输入至归一化层的Mini-batchB的核内均值,对Mini-batch B中的m个训练样本x1,...xm求和之后除以m,便得到μB(即每个Core201的输入矩阵的核内均值),xi为m个样本中的第i个训练样本;i的取值为1、2、……n;j的取值为1、2、……n。
4、DMAC 2017通过片上互连网络202控制n个Core 201中的每个Core 201,分别将自身计算的核内均值μB通过片上互连网络202写入到原子操作累加单元203中,原子操作累加单元203读取原有地址的值与当前写入值进行累加得到其中μj表示n个Core中的第j个Core计算的对应的mini-batch的核内均值μ也即是μB。
5、DMAC2017通过片上互连网络202控制n个Core 201中的每个Core 201,分别计算m个x2的均值v,例如,第j个Corej的向量计算单元2014计算m个的和再求均值,得到i的取值为1、……n;j的取值为1、……n。
6、DMAC2017通过片上互连网络202控制所有Core201分别将计算出的v写到原子操作累加单元203中,原子操作累加单元203读取原有地址的值与当前写入值进行累加,得到所有Mini-batch对应的其中vj表示n个Core中的第j个Corej对应的mini-batch中计算出的m个x2的均值v。
6、原子操作累加单元203将累加得到的S1写入到片上共享缓存204中,以及将累加得到的S2写入到片上共享缓存204中。
7、DMAC2017通过片上互连网络202控制n个Core201中的每个Core201分别去片上共享缓存204获取S1和S2,例如,第j个Corej通过片上互连网络获取存储在片上共享缓存204中的S1和S2,并依据S1和S2各自计算全局均值和全局方差i的取值为1、……n;j的取值为1、……n。至此,每个Core201都计算得到了全局均值和全局方差,因此每个Core201可以结合归一化计算公式以及缩放、平移操作计算各自的/>激活ReLU以后通过片上互连网络202存放到HBM/DDR中,用于后续的反向过程。/>
其中,为每个计算Core对应的mini-batch中的第i个训练样本xi归一化后的结果,/>应当服从均值μ=0,方差σ=1的正态分布也即是标准正态分布;∈是为了避免分母为0而加进去的接近于0的很小值。yi为mini-batch B中的第i个训练样本xi经过BN处理后得到的输出结果。而缩放参数α和平移参数β,则是为解决由于归一化后使得网络的表达能力下降问题(因为/>基本会被限制在正态分布下)所引入的两个参数。且α和数β是在训练时网络自己学习得到的,便于CNN的自适应学习。
可以理解的是,在本申请中,上述每个计算核在计算核内均值μ以及上述x2的均值时,也可以是先在核内计算总和,即只计算m个训练样本x的总和,以及m个训练样本x2的总和,写入到原子操作累加单元之后,得到的值则为m*S1以及m*S2,因此在后续计算核分别计算全局均值和全局方差时,则需要多进行一次m的除运算,从而最终得到全局均值和全局方差,其它部分的实现方式与上述发明实施例原理类似,在此不再赘述。
上述实现过程,按照图6所示,由于在计算全局方差时,不再依赖于全局均值的结果,因此,在Batch Normalization过程中,n个mini-batch之间只需要做一次同步,即将计算出的全局均值向量μB′和全局方差向量一次性同步到n个mini-batch对应的Core中,大大的减少了同步的时间。假如神经网络中的每一个网络层之后都有一层BatchNormalization,那么同步的开销将会极大的减小,极大的提升整个网路的训练速度。
请参见图7,图7是本发明实施例提供的一种数据处理方法流程示意图,可以应用于上述图4或图5对应的神经网络处理器。该方法可以包括以下步骤S701-步骤S703,可选的,还可以包括步骤S700、步骤S704和步骤S705。
步骤S700:获取特征图矩阵和权重矩阵,并根据所述特征图矩阵和所述权重矩阵计算得到所述n个输入矩阵中的任意一个输入矩阵。
步骤S701:针对n个输入矩阵中的每个输入矩阵作如下处理:根据输入矩阵计算所述输入矩阵的核内均值μ,并将μ写入到所述原子操作累加单元,所述输入矩阵包括m个训练样本,所述核内均值μ为所述m个训练样本x的平均值,其中,m为大于或者等于1的整数;根据所述输入矩阵计算m个x2的均值v,并将v写入到所述原子操作累加单元。
步骤S702:针对根据n个所述输入矩阵计算出的n个μ,以及n个v作如下处理:对n个μ进行累加得到S1;对n个v进行累加得到S2。
步骤S703:针对S1和S2作如下处理:根据所述S1和S2计算所述n个输入矩阵的全局方差。
在一种可能的实现方式中,所述根据所述S1和S2计算所述n个输入矩阵的全局方差,包括:根据计算公式:计算所述n个输入矩阵的全局方差。
步骤S704:根据公式分别对所述输入矩阵中的m个训练样本x进行归一化处理,其中,/>为所述n个输入矩阵的全局均值,δ2为所述n个输入矩阵的全局方差,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,∈为大于0的值。
步骤S705:根据公式对进行归一化处理后的m个训练样本x进行缩放、平移处理;其中,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,yi为xi经过批归一化BN处理后得到的输出结果,α为缩放参数,β为平移参数。/>
需要说明的是,本发明实施例中所描述的数据处理方法中的具体流程,可参见上述图1-图6中所述的发明实施例中的相关描述,此处不再赘述。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任意一种的部分或全部步骤。
本发明实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行任意一种数据处理方法的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器(Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种神经网络处理器,其特征在于,包括:n个计算核Core、原子操作累加单元和片上共享缓存,所述n个Core和所述片上共享缓存分别耦合于所述原子操作累加单元,其中,n为大于1的整数;
所述n个Core中的每一个Core,用于:
根据输入矩阵计算所述输入矩阵的核内均值μ,并将μ写入到所述原子操作累加单元,所述输入矩阵包括m个训练样本,所述核内均值μ为所述m个训练样本x的平均值,其中,m为大于或者等于1的整数;
根据所述输入矩阵计算m个x2的均值v,并将v写入到所述原子操作累加单元;
所述原子操作累加单元,用于对所述n个Core写入的n个μ进行累加得到S1,并将所述S1写入所述片上共享缓存;对所述n个Core写入的n个v的进行累加得到S2,并将所述S2写入所述片上共享缓存;
所述n个Core中的每一个Core,还用于:
从所述片上共享缓存获取S1和S2,并根据所述S1和S2计算所述n个Core的n个输入矩阵的全局方差。
2.根据权利要求1所述的处理器,其特征在于,所述n个Core中的每一个Core,还用于从所述片上共享缓存获取S1和S2,并根据所述S1和S2计算所述n个Core的n个输入矩阵的全局方差,包括:
从所述片上共享缓存获取S1和S2,并根据计算公式:计算所述n个Core的n个输入矩阵的全局方差。
3.根据权利要求2所述的处理器,其特征在于,所述n个Core中的每一个Core,还用于:
根据公式分别对所述输入矩阵中的m个训练样本x进行归一化处理,其中,为所述n个Core的n个输入矩阵的全局均值,δ2为所述n个Core的n个输入矩阵的全局方差,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,∈为大于0的值。
4.根据权利要求3所述的处理器,其特征在于,所述n个Core中的每一个Core,还用于:根据公式对进行归一化处理后的m个训练样本x进行缩放、平移处理;其中,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,yi为xi经过批归一化BN处理后得到的输出结果,α为缩放参数,β为平移参数。
5.根据权利要求1-4任意一项所述的处理器,其特征在于,所述n个Core中的每一个Core,用于获取特征图矩阵和权重矩阵,并根据所述特征图矩阵和所述权重矩阵计算得到所述输入矩阵。
6.一种数据处理方法,应用于神经网络,其特征在于,包括:
针对n个输入矩阵中的每个输入矩阵作如下处理:
根据输入矩阵计算所述输入矩阵的核内均值μ,并将μ写入到原子操作累加单元,所述输入矩阵包括m个训练样本,所述核内均值μ为所述m个训练样本x的平均值,其中,m为大于或者等于1的整数;
根据所述输入矩阵计算m个x2的均值v,并将v写入到所述原子操作累加单元;
针对根据n个所述输入矩阵计算出的n个μ,以及n个v作如下处理:
对n个μ进行累加得到S1;对n个v进行累加得到S2;
针对S1和S2作如下处理:
根据所述S1和S2计算所述n个输入矩阵的全局方差。
7.根据权利要求6所述的方法,其特征在于,所述根据所述S1和S2计算所述n个输入矩阵的全局方差,包括:
根据计算公式:计算所述n个输入矩阵的全局方差。
8.根据权利要求7所述的方法,其特征在于,所述方法,还包括:
根据公式分别对所述输入矩阵中的m个训练样本x进行归一化处理,其中,为所述n个输入矩阵的全局均值,δ2为所述n个输入矩阵的全局方差,/>为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,∈为大于0的值。
9.根据权利要求8所述的方法,其特征在于,所述方法,还包括:
根据公式对进行归一化处理后的m个训练样本x进行缩放、平移处理;其中,为所述m个训练样本中的第i个训练样本xi归一化处理后的结果,yi为xi经过批归一化BN处理后得到的输出结果,α为缩放参数,β为平移参数。
10.根据权利要求6-9任意一项所述的方法,其特征在于,所述方法,还包括:
获取特征图矩阵和权重矩阵,并根据所述特征图矩阵和所述权重矩阵计算得到所述n个输入矩阵中的任意一个输入矩阵。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求6-10任意一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/109208 WO2020062299A1 (zh) | 2018-09-30 | 2018-09-30 | 一种神经网络处理器、数据处理方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112789627A CN112789627A (zh) | 2021-05-11 |
CN112789627B true CN112789627B (zh) | 2023-08-22 |
Family
ID=69949555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880098253.3A Active CN112789627B (zh) | 2018-09-30 | 2018-09-30 | 一种神经网络处理器、数据处理方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112789627B (zh) |
WO (1) | WO2020062299A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111881880A (zh) * | 2020-08-10 | 2020-11-03 | 晶璞(上海)人工智能科技有限公司 | 一种基于新型网络的票据文本识别方法 |
CN112308762A (zh) * | 2020-10-23 | 2021-02-02 | 北京三快在线科技有限公司 | 一种数据处理方法及装置 |
CN115278360B (zh) * | 2022-07-18 | 2023-11-07 | 天翼云科技有限公司 | 一种视频数据处理方法及电子设备 |
CN117852573B (zh) * | 2024-03-07 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 算力执行***、算子计算流管理方法、装置、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
WO2017185335A1 (zh) * | 2016-04-29 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行batch normalization运算的装置和方法 |
CN107454965A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 神经网络处理器中的批处理 |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116468070A (zh) * | 2015-11-12 | 2023-07-21 | 渊慧科技有限公司 | 使用规范化的目标输出训练神经网络 |
US10831444B2 (en) * | 2016-04-04 | 2020-11-10 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
CN106022468B (zh) * | 2016-05-17 | 2018-06-01 | 成都启英泰伦科技有限公司 | 人工神经网络处理器集成电路及该集成电路的设计方法 |
CN106056211B (zh) * | 2016-05-25 | 2018-11-23 | 清华大学 | 神经元计算单元、神经元计算模块及人工神经网络计算核 |
CN106844294B (zh) * | 2016-12-29 | 2019-05-03 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
KR102592721B1 (ko) * | 2017-01-11 | 2023-10-25 | 한국전자통신연구원 | 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 |
CN108256638B (zh) * | 2018-01-05 | 2021-06-22 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
-
2018
- 2018-09-30 WO PCT/CN2018/109208 patent/WO2020062299A1/zh active Application Filing
- 2018-09-30 CN CN201880098253.3A patent/CN112789627B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454965A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 神经网络处理器中的批处理 |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
WO2017185335A1 (zh) * | 2016-04-29 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行batch normalization运算的装置和方法 |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
Non-Patent Citations (1)
Title |
---|
Facial point detection based on a convolutional neural network with optimal mini-batch procedure;M. Kimura等;《2015 IEEE International Conference on Image Processing (ICIP)》;2860-2864 * |
Also Published As
Publication number | Publication date |
---|---|
CN112789627A (zh) | 2021-05-11 |
WO2020062299A1 (zh) | 2020-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11734006B2 (en) | Deep vision processor | |
US20210224125A1 (en) | Operation Accelerator, Processing Method, and Related Device | |
JP6946572B2 (ja) | 加速された量子化積和演算 | |
CN112789627B (zh) | 一种神经网络处理器、数据处理方法及相关设备 | |
US10459876B2 (en) | Performing concurrent operations in a processing element | |
US20180260709A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
US11775430B1 (en) | Memory access for multiple circuit components | |
US20170097884A1 (en) | Pipelined convolutional operations for processing clusters | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
Mittal | A survey of accelerator architectures for 3D convolution neural networks | |
JP6891626B2 (ja) | 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 | |
CN112703511B (zh) | 运算加速器和数据处理方法 | |
EP4379607A1 (en) | Neural network accelerator, and data processing method for neural network accelerator | |
WO2019128248A1 (zh) | 一种信号处理方法及装置 | |
US20210312278A1 (en) | Method and apparatus with incremental learning moddel | |
US10990525B2 (en) | Caching data in artificial neural network computations | |
WO2020042771A9 (zh) | 图像识别处理方法和装置 | |
WO2022227024A1 (zh) | 神经网络模型的运算方法、训练方法及装置 | |
Al Maashri et al. | Hardware acceleration for neuromorphic vision algorithms | |
US20220180187A1 (en) | Method and apparatus for performing deep learning operations | |
Rodriguez-Borbon et al. | Heterogeneous acceleration of HAR applications | |
EP3926543A1 (en) | Method, accelerator, and electronic device with tensor processing | |
CN117063182A (zh) | 一种数据处理方法和装置 | |
WO2021120036A1 (zh) | 数据处理装置和数据处理方法 | |
EP3895024A1 (en) | Caching data in artificial neural network computations |
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 |