数据处理的方法、装置和系统与流程

文档序号:14911874发布日期:2018-07-10 23:38阅读:148来源:国知局

本发明涉及卷积神经网络(Convolution Neural Network,CNN),尤其涉及CNN中的数据处理的方法、装置和系统。



背景技术:

卷积神经网络是深度学习中使用最广泛的算法,它广泛应用于图像分类、语音识别、视频理解、人脸检测等多种应用中。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。

当前,卷积神经网络的并行加速成为学术界和工业界的研究热点,常见的方法有在不同层级对多通道卷积运算进行并行化,如batch级并行、通道内并行。现有方法存在的主要问题为:CNN网络中所有的卷积层均采用相同的并行方法,效率低下。



技术实现要素:

有鉴于此,本发明实施例提供了一种数据处理的方法、装置和系统,能够根据不同卷积层的卷积运算特性,自适应选择最佳并行操作,从而提高卷积运算的并行度。

第一方面,提供了一种数据处理的方法,该方法包括:获取输入数据,所述输入数据为以下数据中的至少一种数据:图像数据、视频数据和语音数据;获取第一卷积层的卷积运算特性,所述第一卷积层为神经网络模型中的任一卷积层,所述神经网络模型包括至少一个卷积层,所述卷积运算特性包括以下参数中的至少一种参数:卷积核的尺寸、卷积核的移动步进、输入通道的数目以及处理器的并行粒度;根据所述卷积运算特性,从所述输入数据中获取与所述处理器的并行粒度相等数量的多个数据块,所述多个数据块中的每个数据块用于与卷积核进行卷积处理;将所述多个数据块并行地进行卷积处理,以获取输出数据。

根据卷积运算特性,自适应选择最佳并行方法,从而提高卷积运算并行度。

可选地,该输入数据可以是图像处理、语音识别、视频理解、人脸检测中的任一项数据。

可选地,处理器的并行粒度(Parallelism Size,PS)可以是指共享局部存储器的同类运算单元的数量。

在一种可能的实现方式中,所述卷积运算特性包括所述卷积核的移动步进,所述根据所述卷积运算特性,从所述输入数据中获取与所述处理器的并行粒度相等数量的多个数据块,包括:根据所述移动步进是否等于1,从所述输入数据中获取所述多个数据块。

在一种可能的实现方式中,所述根据所述移动步进是否等于1,从所述输入数据中获取与所述处理器的并行粒度相等数量的多个数据块,包括:在所述移动步进等于1时,从所述第一卷积层的任一输入通道的数据中获取所述多个数据块,所述第一卷积层的任一输入通道的数据属于所述输入数据,所述多个数据块中的第i个数据块与所述多个数据块中的第(i+1)个数据块具有(K-1)个向量重叠,i为正整数,K为所述卷积核的尺寸,K为大于1的正整数;所述将所述多个数据块并行地进行卷积处理,以获取输出数据,包括:将所述多个数据块与所述第一卷积层的任一卷积核并行地进行卷积处理,以获取输出数据。

相邻两个卷积运算的数据块具有重叠,能充分利用数据局部性,减少数据传输。

在一种可能的实现方式中,所述卷积运算特性还包括所述卷积核的尺寸,所述根据所述移动步进是否等于1,从所述输入数据中获取所述多个数据块,包括:在所述移动步进大于1时,根据所述移动步进与所述卷积核的尺寸是否相等,从所述输入数据中获取所述多个数据块。

在一种可能的实现方式中,所述在所述移动步进大于1时,根据所述移动步进与所述卷积核的尺寸是否相等,从所述输入数据中获取所述多个数据块,包括:在所述移动步进大于1且所述移动步进等于所述卷积核的尺寸时,从所述第一卷积层的任一输入通道的数据中获取所述多个数据块,所述第一卷积层的任一输入通道的数据属于所述输入数据,所述X个数据块中的任意两个数据块具有0个向量重叠;将所述多个数据块并行地进行卷积处理,以获取输出数据,包括:将所述多个数据块与所述第一卷积层中任一卷积核并行地进行卷积处理,以获取输出数据。

在一种可能的实现方式中,所述卷积运算特性还包括所述输入通道的数目和所述处理器的并行粒度,所述在所述移动步进大于1时,根据所述移动步进与所述卷积核的尺寸是否相等,从所述输入数据中获取所述多个数据块,包括:在所述移动步进大于1且所述移动步进不等于所述卷积核的尺寸时,根据所述输入通道的数目与所述处理器的并行粒度的大小关系,从所述输入数据中获取所述多个数据块。

在一种可能的实现方式中,在所述移动步进大于1且所述移动步进不等于所述卷积核的尺寸时,根据所述输入通道的数目与所述处理器的并行粒度的大小关系,从所述输入数据中获取所述多个数据块,包括:在所述移动步进大于1且所述移动步进不等于所述卷积核的尺寸以及所述输入通道的数目小于所述处理器并行粒度时,根据所述移动步进,将第一输入通道的数据划分为(m*m)个输入数据子块,所述第一输入通道为所述第一卷积层的任一卷积层,所述第一通道的数据属于所述输入数据,m为(N/S)的ceil函数,N为所述第一输入通道的数据的尺寸,S为所述移动步进;从所述(m*m)个输入数据子块中获取所述多个数据块;所述方法还包括:根据所述移动步进,将所述第一卷积层的任一卷积核划分为(t*t)个卷积核子块,t为(K/S)的ceil函数;将所述多个数据块并行地进行卷积处理,以获取输出数据,包括:将所述多个数据块中的每个数据块与所述(t*t)个卷积核子块中的任一卷积核子块并行地进行卷积处理,以获取输出数据。

在一种可能的实现方式中,该方法还包括:将所述多个数据块中的任一数据块与所述(t*t)个卷积核子块中的每个卷积核子块的卷积结果进行累加处理,以获取输出数据。

将大的输入数据和大的卷积核按照移动步进划分,方便相邻卷积运算之间的数据块管理,在通道内部最大化并行性的前提下,减少数据传输,从而加快卷积运算速度。

在一种可能的实现方式中,在所述移动步进大于1且所述移动步进不等于所述卷积核的尺寸时,根据所述输入通道的数目与所述处理器的并行粒度的大小关系,从所述输入数据中获取所述多个数据块,包括:在所述移动步进大于1且所述移动步进不等于所述卷积核的尺寸以及所述输入通道的数目大于或等于所述处理器的并行粒度时,从所述第一卷积层的多个输入通道的数据中获取所述多个数据块,所述多个输入通道与所述多个数据块一一对应,所述第一卷积层的多个输入通道的数据属于所述输入数据;将所述多个数据块并行地进行卷积处理,以获取输出数据,包括:将所述多个数据块与第一卷积核并行地进行卷积处理,以获取输出数据,所述第一卷积核为所述第一卷积层中的任一卷积核。

在一种可能的实现方式中,在将所述多个数据块与第一卷积核并行地进行卷积处理,以获取输出数据之后,所述方法还包括:将所述多个数据块与第二卷积核并行地进行卷积处理,以获取输出数据,所述第二卷积核为所述第一卷积层中除所述第一卷积核之外的任一卷积核。

多个数据块与所有相关的卷积核充分运算之后才更新,同时增加高效存储操作,减少低效加载操作,从而减少卷积运算输入数据传输。

第二方面,提供了一种装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的单元。

第三方面,提供了一种装置,该装置包括:存储器、处理器和收发器。其中,存储器、处理器和收发器通过内部连接通路互相通信,传递控制和/或数据信号,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,当该指令被执行时,该处理器执行第一方面的方法,并控制收发器接收输入的数据和信息,输出操作结果等数据。

第四方面,提供了一种系统,该系统包括第二方面的装置和存储单元。

第五方面,提供了一种计算机存储介质,用于储存为上述方法所用的计算机软件指令,其包含用于执行上述第一方面所设计的程序。

本发明实施例的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

图1示出了卷积神经网络中的卷积运算过程。

图2示出了Alexnet神经网络体系结构的示意图。

图3示出了本发明实施例的数据处理的方法的示意性框图。

图4示出了本发明实施例的选择卷积层的并行方法的流程图。

图5示出了“通道内-卷积核重叠”并行方法的过程。

图6示出了“通道内-卷积核跳跃”并行方法的过程。

图7示出了“通道内-卷积核划分”并行方法的过程。

图8示出了“通道间”并行方法的过程。

图9示出了本发明实施例的数据处理的装置的示意性框图。

图10示出了本发明实施例的数据处理的系统的示意性框图。

图11示出了本发明实施例的数据处理的装置的另一示意性框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。

为了便于理解,首先结合图1对卷积计算的过程进行简要介绍。卷积运算,其实就是加权求和的过程,例如,使用到的图像区域中的每个元素分别与卷积核中的每个元素对应相乘,所有乘积之和作为区域中心像素的新值。卷积核即一个大小固定、由数值参数构成的矩阵,矩阵的参考点通常位于矩阵的中心,矩阵的大小为核支撑。如图1所示,卷积核矩阵G与输入矩阵R中相同大小的数据块进行点积运算,得到输出矩阵O中的一个的计算结果;然后卷积核以指定的移动步进在输入矩阵中不断移动,遍历所有的数据,得到输出矩阵O。移动步进为每一次卷积运算的输入数据相对于前一次卷积运算的输入数据中更新的向量数,以图1为例,假如第一次进行卷积运算的输入数据为[R1,R2;R4,R5;R7,R8],若移动步进为1,则第二次进行卷积运算的输入数据可以为[R2,R3;R5,R6;R8,R9]。下面具体以图1为例说明卷积运算流程,卷积核尺寸为3*3,卷积核移动步进为1,

G5=R1*G1+R2*G2+R3*G3+R4*G4+R5*G5+R6*G6+R7*G7+R8*G8+R9*G9,如果对一幅图像进行卷积运算,可利用以数组为中心为参考点的3*3卷积核。首先将核的参考点定位于图像的第一个像素点,核的其余元素覆盖图像总其对应的局部像素点。对于每一个核点,我们可以得到这个点的值以及图像中对应图像点的值。将这些值相乘并求和,并将这个结果放在与输入图像参考点所对应的位置。通过在整个图像上扫描卷积核,对图像的每个点重复此操作。最终可以得到图像的卷积图像。

在CNN网络中,卷积占整个运算90%以上的运算量,是整个CNN运算的主要组成部分,例如Alexnet神经网络中前五个网络层均为卷积层。

通常CNN网络中所有的卷积层均采用相同的并行方法,效率低下。事实上,对于CNN网络中不同的网络层,卷积特性差别很大。随着网络层加深,卷积核尺寸减少,通道数目则增多。也就是说,一般与输入靠近的卷积层卷积核尺寸比较大,通道数目比较少;与输出靠近卷积层卷积核尺寸比较小,通道数目较多。图2示出了Alexnet神经网络体系结构的示意图。如图2所示,两个图形处理器(Graphic Processing Unit,GPU)中一个GPU运行图中顶部的层次部分,而另一个GPU运行图中底部的层次部分。两个GPU之间仅在某些层相互通信。第一个卷积层利用48(通道数)×2(并行粒度)个大小为5×5、步长为4的核,来对大小为224×224×3(通道数)的输入图像进行滤波。第二个卷积层需要将第一个卷积层的输出作为自己的输入,且利用128×2个大小为3×3的核对其进行滤波。第三、第四和第五个卷积层彼此相连。第三个卷积层有192×2个大小为3×3的核被连接到第二个卷积层的输出。第四个卷积层拥有192×2个大小为3×3的核。因此,如果针对不同卷积层的卷积运算特性,采用最适合当前卷积层的并行操作,能够充分利用硬件资源,实现最大化并行效果。

图3示出了本发明实施例的数据处理的方法100的示意性框图。如图3所示,该方法100包括:

S110,获取输入数据,该输入数据为以下数据中的至少一种数据:图像数据、视频数据和语音数据;

S120,获取第一卷积层的卷积运算特性,该第一卷积层为神经网络模型中的任一卷积层,该神经网络模型包括至少一个卷积层,该卷积运算特性包括以下参数中的至少一种参数:卷积核的尺寸、卷积核的移动步进、输入通道的数目以及处理器的并行粒度;

S130,根据该卷积运算特性,从该输入数据中获取与该处理器的并行粒度相等数量的多个数据块,该多个数据块中的每个数据块用于与卷积核进行卷积处理;

S140,将该多个数据块并行地进行卷积处理,以获取输出数据。

其中,处理器的并行粒度(Parallelism Size,PS)可以是指共享局部存储器的同类运算单元的数量,例如,单指令多数据流(Single Instruction Multiple Data,SIMD)、向量处理器的算术逻辑单元(Arithmetic Logic Unit,ALU)、图形处理器中的流处理器(Stream Processor,SP)的数量等。

应理解,本发明实施例中的输入数据具体可以包括人脸检测、视频理解、语音识别、图像分类等中的数据,本发明实施例不限于此。

下面将结合图4描述本发明实施例的选择适合当前卷积层的并行方法的流程图。具体地,针对卷积神经网络中的任一卷积层,首先判断卷积核的移动步进S是否等于1,若等于1,则采用“通道内-卷积核重叠”并行方法;若不等于1,则判断卷积核的尺寸K是否等于卷积核移动步进,若相同,采用“通道内-卷积核跳跃”并行方法;若移动步进S不等于1且卷积核K不等于卷积核移动步进,则判断处理器并行粒度X是否大于输入通道数目Din,若大于,则采用“通道内-卷积核划分”并行方法;若不大于,则采用“通道间”并行方法。

应理解,若非特别强调,卷积神经网络中的每个卷积层的卷积运算特性是固定的。例如,第一卷积层中的每个卷积核的尺寸固定为3*3,每个卷积核的移动步进固定为2,输入通道数目固定为48,处理器并行粒度固定为4等。

具体地,自适用并行调度算法如下所示。

下面将详细描述上述各种并行方法。

“通道内-卷积核重叠”并行方法:在该移动步进等于1时,从该第一卷积层的任一输入通道的数据中获取该多个数据块,该第一卷积层的任一输入通道的数据属于该输入数据,该多个数据块中的第i个数据块与该多个数据块中的第(i+1)个数据块具有(K-1)个向量重叠,i为正整数,K为该卷积核的尺寸,K为大于1的正整数;将该多个数据块与该第一卷积层的任一卷积核并行地进行卷积处理,以获取输出数据。

具体地,如图5左部分所示,假定卷积核尺寸为3*3,处理器的并行粒度为4,卷积在列方向上进行并行,即一次性在列方向上产生4个元素的卷积结果。对于第一次和第二次卷积运算的相关数据如图中阴影所示,可以看出两次卷积运算有2列的数据可以重复使用,每次只需要更新一列输入数据。

图5右部分给出了详细的卷积计算过程,把卷积核的每个元素(对于3*3的卷积核一共有9个元素)同时与对应的4个数据块进行乘法运算,然后把卷积核的9个元素中相应的乘法结果进行累加,得到最终的卷积结果。具体地:第一次输入数据的三个列向量分别为[b00,b10,b20,b30,b40,b50],[b01,b11,b21,b31,b41,b51]和[b02,b12,b22,b32,b42,b52],其中,[b00,b01,b02;b10,b11,b12;b20,b21,b02]、[b10,b11,b12;b20,b21,b22;b30,b31,b32]、[b20,b21,b22;b30,b31,b32;b40,b41,b42]以及[b30,b31,b32;b40,b41,b42;b50,b51,b52]分别为4个并行处理器的输入数据块。卷积核中的a00与b00、b10、b20和b30四个元素同时进行乘法运算,卷积核中的a10同时与b10、b20、b30和b40,卷积核中的a20同时与b20、b30、b40和b50,卷积核中的a01同时与b01、b11、b21和b31四个元素同时进行乘法运算,卷积核中的a11同时与b11、b21、b31和b41四个元素同时进行乘法运算,卷积核中的a21同时与b21、b31、b41和b51四个元素同时进行乘法运算,卷积核中的a02同时与b02、b12、b22和b32四个元素同时进行乘法运算,卷积核中的a12同时与b12、b22、b32和b42四个元素同时进行乘法运算,卷积核中的a22同时与b22、b32、b42和b52四个元素同时进行乘法运算;然后将a00*b00、a10*b10、a20*b20、a01*b01、a11*b11、a21*b21、a02*b02、a12*b12和a22*b22累加起来,a00*b10、a10*b20、a20*b30、a01*b11、a11*b21、a21*b31、a02*b12、a12*b22和a22*b32累加起来,a00*b20、a10*b30、a20*b40、a01*b21、a11*b31、a21*b41、a02*b22、a12*b32和a22*b42累加起来,a00*b30、a10*b40、a20*b50、a01*b31、a11*b41、a21*b51、a02*b32、a12*b42和a22*b52累加起来。得到最终的输出数据。

该方法的核心思想是:同一个卷积核对与处理器并行粒度数量相等的多个数据块(本实施例为列方向的多个数据块)进行乘法操作,从而进行卷积运算;由于相邻两个卷积运算的输入元素具有重叠,所以能充分利用数据局部性。即在一个通道内挖掘数据级并行性,相邻两次卷积运算数据可以重用,减少数据传输。

在“通道内-卷积核重叠”并行方法中,主要包括以下步骤:

步骤1.以X为处理器的并行粒度在列方向并行卷积。

1.1:初始化存储区,行方向上第一次卷积。加载(X+k-1)*k输入数据至存储区,进行卷积运算,在列方向上产生X个卷积结果;

1.2:更新存储区,行方向上非第一次卷积。加载(X+k-1)输入数据至存储区,进行卷积运算,在列方向上产生X个卷积结果。

步骤2.当步骤1在行方向上遍历当前的行,在列方向上移动S个元素距离,按照S1方法重新开始新的行方向卷积,直到所有的输入数据全部遍历。

应理解,上述是以列方向并行,行方向移动为例进行描述,也可以是以行方向并行,列方向移动进行卷积运算。还应理解,上述各种参数也仅仅只是示意性说明,对本申请的保护范围并不构成限定。

“通道内-卷积核跳跃”并行方法:在所述移动步进大于1且所述移动步进等于所述卷积核的尺寸时,从所述第一卷积层的任一输入通道的数据中获取所述多个数据块,所述第一卷积层的任一输入通道的数据属于所述输入数据,所述X个数据块中的任意两个数据块具有0个向量重叠;将所述多个数据块与所述第一卷积层中任一卷积核并行地进行卷积处理,以获取输出数据。

具体地,如图6所示,假定卷积核大小为3*3,处理器的并行粒度为4。在列方向上进行并行,即在列方向上的4个卷积运算对应4个输入数据块,分别为d00、d10、d20、d30,对这4个数据块同时进行卷积运算产生4个卷积结果,如右下角所示。数据按照3*3块方式进行存储,加载d00、d10、d20、d30这4个数据块进入存储区,每个卷积核元素值则与对应的列向量进行乘法运算,最后9个乘法结果进行累加运算产生最终的卷积结果。该卷积并行方法对应的算法如下所示。

应理解,“通道内-卷积核跳跃”并行方法与“通道内-卷积核重叠”并行方法的运算过程类似,为了简洁,这里不再赘述。其根本区别是:“通道内-卷积核跳跃”并行方法相邻卷积运算的输入数据没有重叠,这使得不需要设定专门的存储区,同时输入数据按照数据和卷积核大小一样的数据块进行存储。

“通道内-卷积核划分”并行方法:在该移动步进大于1且该移动步进不等于该卷积核的尺寸以及该输入通道的数目小于该处理器并行粒度时,根据该移动步进,将第一输入通道的数据划分为(m*m)个输入数据子块,该第一输入通道为该第一卷积层的任一卷积层,该第一通道的数据属于该输入数据,m为(N/S)的ceil函数,N为该第一输入通道的数据的尺寸,S为该移动步进;从该(m*m)个输入数据子块中获取该多个数据块;根据该移动步进,将该第一卷积层的任一卷积核划分为(t*t)个卷积核子块,t为(K/S)的ceil函数;将该多个数据块中的每个数据块与该(t*t)个卷积核子块中的任一卷积核子块并行地进行卷积处理,以获取输出数据。

具体地,把卷积核和任一输入通道的输入数据按照卷积移动的步进S进行划分,即分割成S*S的子块。对输入数据和卷积核数据的边缘数据,若不够时采用0进行填充。假定输入数据大小为N*N,这样输入数据被划分成m*m个子块(其中m=ceil(N/S),ceil表示向上取整),卷积核被划分成t*t个子块(其中t=ceil(k/S))。按照卷积运算的规律,每个卷积核子块分别与相应的M*M个输入数据子块(其中M=m-t+1)进行卷积运算。每个子块的卷积运算产生一个像素点结果,与M*M个输入数据子块卷积产生M*M大小的结果,t*t个卷积核子块一共产生t*t个M*M大小的卷积中间结果,最后把这t*t个M*M大小中间结果进行累加,产生M*M大小的最终卷积结果。

因为卷积核子块的大小与被划分的输入数据子块的大小相同,且移动步进与卷积核子块的大小相同,即卷积核子块与输入数据子块的并行卷积方法可以采用上述“通道内-卷积核跳跃”并行方法,换句话说,对于并行粒度为X的处理器,每个卷积核子块可以同时与X个输入数据子块进行卷积运算。

举例来说,如图7所示,原始输入数据大小为227*227,卷积核大小为11*11,卷积核的移动步进为4,那么按照4*4大小对输入数据和卷积核进行划分。输入被划分成57*57个块,卷积核被划分成3*3即9个子卷积块。把这9个卷积核子块分别与55*55(55=57-3+1)个相关的输入数据子块进行卷积操作,每个卷积块产生一个像素点结果,这样产生55*55大小的中间结果。最后把9个卷积核子块产生的9个55*55大小的中间结果进行累加,产生55*55大小的最终卷积结果。

其中,在将每个卷积核子块与输入数据子块进行卷积运算的过程中,可以将多个输入数据子块进行卷积并行操作,以提高卷积运算速度。该卷积并行方法对应的算法如下所示。

相邻卷积运算按照S*S粒度进行数据划分,即数据相关发生在S*S子块之间,在S*S子块内部没有数据相关。对于大尺寸卷积核,按照S*S粒度进行划分,方便相邻卷积运算之间的输入数据管理,在通道内部最大化并行性的前提下,减少数据传输,从而加快卷积运算速度。

“通道间”并行方法:在所述移动步进大于1且所述移动步进不等于所述卷积核的尺寸以及所述输入通道的数目大于或等于所述处理器的并行粒度时,从所述第一卷积层的多个输入通道的数据中获取所述多个数据块,所述多个输入通道与所述多个数据块一一对应,所述第一卷积层的多个输入通道的数据属于所述输入数据;将所述多个数据块与第一卷积核并行地进行卷积处理,以获取输出数据,所述第一卷积核为所述第一卷积层中的任一卷积核。

其适用条件是处理器的并行粒度X小于或等于通道数目Din,即输入通道较多,通道区域较少,一般在CNN网络中靠近输出的卷积层。

具体地,如图8所示,使用同一个卷积核元素,对X个输入通道同时进行计算;在X个输入通道内部,分别加载K*K个元素,让X个K*K输入元素分别与全部相关的卷积核运算,图中不同输出矩阵代表着不同卷积核的运算结果。如输出矩阵O1采用的卷积核为K1,1~K1,n,输出矩阵Om采用的卷积核为Km,1~Km,n。当前的X个K*K输入元素与全部相关卷积核充分运算之后,在输入通道内移动卷积核的位置,即在输入通道方向更新输入数据。

举例来说,卷积核尺寸为3*3,输入通道为6个,处理器并行粒度为4,那么可以先选择4个输入通道中相应位置的一个3*3数据块与第一个卷积核同时进行卷积运算,之后,再将同样的数据块与另一个卷积核同时进行卷积运算,直到将该4个3*3数据块与卷积层中的所有卷积核进行卷积运算完成后,再将卷积核的位置沿输入通道内部进行移动,或者也可以将卷积核的位置沿输入通道之间进行移动。例如,在I1~I4同一位置的3*3输入矩阵与所有卷积核运算完成之后,可以对I5~I8同一位置的3*3输入矩阵与每个卷积核进行卷积运算,也可以对I1~I4的另一位置的3*3数据块与每个卷积核进行卷积运算。该卷积并行方法对应的算法如下所示。

在传统通道间并行方法中,X通道内K*K个元素与一个卷积核计算完成之后,立刻在通道内部移动卷积核,或者在输入通道方向更新至新的通道。由于不同的卷积核需要均需要与这些数据进行卷积运算,所以当新的卷积核运算时需要重复加载输入数据。在本发明实施例中,在Din方向上并行,不需要重新加载输入数据,只需要重复加载卷积核,具体地可以减少加载数据操作数目。根据输入通道的数目可以最大化利用处理器的运算资源;同时输入数据与全部相关的卷积核计算完毕之后,才更新输入数据,充分利用输入通道数据,减少数据传输。

应理解,上述各种判断条件只是一种示例,本发明实施例对此不够成限定。

上文中结合图3至图8,详细描述了根据本发明实施例的数据处理的方法,下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

图9示出了根据本发明实施例的数据处理的装置200的示意性框图。如图9所示,该装置200包括:

第一获取模块210,用于获取输入数据,该输入数据为以下数据中的至少一种数据:图像数据、视频数据和语音数据;

第二获取模块220,用于获取第一卷积层的卷积运算特性,该第一卷积层为神经网络模型中的任一卷积层,该神经网络模型包括至少一个卷积层,该卷积运算特性包括以下参数中的至少一种参数:卷积核的尺寸、卷积核的移动步进、输入通道的数目以及处理器的并行粒度;

第三获取模块230,用于根据该第二获取模块获取的该卷积运算特性,从该第一获取模块获取的该输入数据中获取与该处理器的并行粒度相等数量的多个数据块,该多个数据块中的每个数据块用于与卷积核进行卷积处理;

处理模块240,用于将该第三获取模块获取的该多个数据块并行地进行卷积处理,以获取输出数据。

因此,本发明实施例的数据处理的装置,根据卷积运算特性,自适应选择最佳并行方法,从而提高卷积运算并行度。

可选地,在本发明实施例中,该卷积运算特性包括该卷积核的移动步进,该第三获取模块230包括:获取单元231,用于根据该第二获取模块获取的该移动步进是否等于1,从该第一获取模块获取的该输入数据中获取该多个数据块。

可选地,在本发明实施例中,该获取单元231具体用于:在该移动步进等于1时,从该第一卷积层的任一输入通道的数据中获取该多个数据块,该第一卷积层的任一输入通道的数据属于该第一获取模块获取的该输入数据,该多个数据块中的第i个数据块与该多个数据块中的第(i+1)个数据块具有(K-1)个向量重叠,i为正整数,K为该卷积核的尺寸,K为大于1的正整数;该处理模块240包括:第一处理单元241,用于将该获取单元获取的该多个数据块与该第一卷积层的任一卷积核并行地进行卷积处理,以获取输出数据。

相邻两个卷积运算的输入元素具有重叠,能充分利用数据局部性,减少数据传输。

可选地,在本发明实施例中,该获取单元231具体用于:在该移动步进大于1时,根据该移动步进与该卷积核的尺寸是否相等,从该第一获取模块获取的该输入数据中获取该多个数据块。

可选地,在本发明实施例中,该获取单元231在根据该第二获取模块获取的该移动步进是否等于1,从该第一获取模块获取的该输入数据中获取该多个数据块,包括:从该第一卷积层的任一输入通道的数据中获取该多个数据块,该第一卷积层的任一输入通道的数据属于该第一获取模块获取的该输入数据,该X个数据块中的任意两个数据块具有0个向量重叠;该处理模块240包括:第二处理单元242,用于将该获取单元获取的该多个数据块与该第一卷积层的任一卷积核并行地进行卷积处理,以获取输出数据。

可选地,在本发明实施例中,该获取单元231在根据该第二获取模块获取的该移动步进是否等于1,从该第一获取模块获取的该输入数据中获取该多个数据块,包括:在该移动步进大于1且该移动步进不等于该卷积核的尺寸时,根据该输入通道的数目与该处理器并行粒度的大小关系,从该第一获取模块获取的该输入数据中获取该多个数据块。

可选地,在本发明实施例中,该获取单元231在该移动步进大于1且该移动步进不等于该卷积核的尺寸时,根据该输入通道的数目与该处理器并行粒度的大小关系,从该第一获取模块获取的该输入数据中获取该多个数据块,包括:在该移动步进大于1且该移动步进不等于该卷积核的尺寸以及该输入通道的数目小于该处理器并行粒度时,根据该移动步进,将第一输入通道的数据划分为(m*m)个输入数据子块,该第一输入通道为该第一卷积层的任一卷积层,该第一通道的数据属于该第一获取模块获取的该输入数据,m为(N/S)的ceil函数,N为该第一输入通道的数据的尺寸,S为该移动步进;从该(m*m)个输入数据子块中获取该多个数据块;该装置200还包括:划分模块250,用于根据该移动步进,将该第一卷积层的任一卷积核划分为(t*t)个卷积核子块,t为(K/S)的ceil函数;该处理模块240包括:第三处理单元243,用于将该获取单元获取的该多个数据块中的每个数据块与该划分模块划分的该(t*t)个卷积核子块中的任一卷积核子块并行地进行卷积处理,以获取输出数据。

进一步地,在本发明实施例中,该装置200还包括:累加模块260,用于将该获取单元获取的该多个数据块中的任一数据块与该划分模块划分的该(t*t)个卷积核子块中的每个卷积核子块的卷积结果进行累加处理,以获取输出数据。

将大的输入数据和大的卷积核按照移动步进划分,方便相邻卷积运算之间的输入数据管理,在通道内部最大化并行性的前提下,减少数据传输,从而加快卷积运算速度。

可选地,在本发明实施例中,该获取单元231在该移动步进大于1且该移动步进不等于该卷积核的尺寸时,根据该输入通道的数目与该处理器并行粒度的大小关系,从该第一获取模块获取的该输入数据中获取该多个数据块,包括:在该移动步进大于1且该移动步进不等于该卷积核的尺寸以及该输入通道的数目大于或等于该处理器的并行粒度时,从该第一卷积层的多个输入通道的数据中获取该多个数据块,该多个输入通道与该多个数据块一一对应,该第一卷积层的多个输入通道的数据属于该第一获取模块获取的该输入数据;该处理模块240,包括:第四处理单元244,用于将该获取单元获取的该多个数据块与第一卷积核并行地进行卷积处理,以获取输出数据,该第一卷积核为该第一卷积层中的任一卷积核。

进一步地,在本发明实施例中,该处理模块240还包括:第五处理单元245,用于将该获取单元获取的该多个数据块与第二卷积核并行地进行卷积处理,以获取输出数据,该第二卷积核为该第一卷积层中除该第一卷积核之外的任一卷积核。

可选地,在本发明实施例中,该处理器的并行粒度包括单指令多数据流SIMD、向量处理器的算术逻辑单元ALU的数目或图形处理器中的流处理器SP的数量。

输入数据与所有相关的卷积核充分运算之后才更新,同时增加高效存储操作,减少低效加载操作,从而减少卷积运算输入数据传输。

应理解,根据本发明实施例的数据处理的装置200可对应于本发明实施例的数据处理的方法100的执行主体,并且装置200中的各个模块的上述和其它操作和/或功能分别为了实现图3至图8中的各个方法的相应流程,为了简洁,在此不再赘述。

如图10所示,本发明实施例还提供了一种数据处理的系统400,包括上述装置300和存储单元。装置300的具体功能和模块如上述所示,这里不再详述。任何可以实现存储功能的单元都可以作为该系统400中的存储单元。

如图11所示,本发明实施例还提供了一种数据处理的装置300,该装置300包括:处理器310、存储器320和收发器340,其中,该处理器310、该存储器320和该收发器340通过内部连接通路互相通信,该存储器320用于存储指令,该处理器310用于执行该存储器320存储的指令,以控制该收发器340发送信号;其中,该处理器310用于:获取输入数据,该输入数据为以下数据中的至少一种数据:图像数据、视频数据和语音数据;获取第一卷积层的卷积运算特性,该第一卷积层为神经网络模型中的任一卷积层,该神经网络模型包括至少一个卷积层,该卷积运算特性包括以下参数中的至少一种参数:卷积核的尺寸、卷积核的移动步进、输入通道的数目以及处理器的并行粒度;根据该卷积运算特性,从该输入数据中获取与该处理器的并行粒度相等数量的多个数据块,该多个数据块中的每个数据块用于与卷积核进行卷积处理;将该多个数据块并行地进行卷积处理,以获取输出数据。

因此,本发明实施例的数据处理的装置,根据卷积运算特性,自适应选择最佳并行方法,从而提高卷积运算并行度。

应理解,在本发明实施例中,该处理器310可以是中央处理单元(Central Processing Unit,简称为“CPU”),该处理器310还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

该存储器320可以包括只读存储器和随机存取存储器,并向处理器310提供指令和数据。存储器320的一部分还可以包括非易失性随机存取存储器。例如,存储器320还可以存储设备类型的信息。

在实现过程中,上述方法的各步骤可以通过处理器310中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器320,处理器310读取存储器320中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

应理解,根据本发明实施例的数据处理的装置300可对应于装置200,并可以对应于执行根据本发明实施例的方法100中的执行主体,并且装置300中的各个单元的上述和其它操作和/或功能分别为了实现图3至图8中的方法的相应流程,为了简洁,在此不再赘述。

应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1