发明内容
本说明书一个或多个实施例描述了一种利用GPU集群更新卷积神经网络的方法、装置及设备,可以有效而准确地对卷积神经网络进行更新。
第一方面,提供了一种利用GPU集群更新卷积神经网络的方法,所述GPU集群包括第一GPU以及若干其它GPU,所述第一GPU具有所述卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,该方法由所述第一GPU执行,包括:
获取带分类标签的样本;
基于所述前端各层网络的参数,对所述样本执行与所述前端各层网络相应的第一操作,得到所述样本的第一操作结果;
基于所述第一操作结果以及具有的后端各层网络的参数,对所述样本执行相应的第二操作得到第二操作结果;
将所述第一操作结果分别发送给所述其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及所述第一操作结果,对所述样本执行相应的第三操作;
接收所述其它各GPU在执行相应的第三操作后得到的第三操作结果;
合并所述第二操作结果和所述第三操作结果得到所述样本的分类结果;
根据所述分类结果和所述样本的分类标签,确定预测误差;
根据所述预测误差,更新所述卷积神经网络。
第二方面,提供了一种利用GPU集群更新卷积神经网络的方法,所述GPU集群包括第一GPU以及若干其它GPU,所述其它GPU具有所述卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,该方法由所述其它GPU中任意的第二GPU执行,包括:
接收所述第一GPU发送的样本的第一操作结果;所述样本具有分类标签;
基于所述第一操作结果以及具有的后端各层网络的参数,对所述样本执行相应的第三操作得到第三操作结果;
向所述第一GPU发送所述第三操作结果,以使得所述第一GPU在获取到其它各GPU发送的第三操作结果后,对所述样本的第二操作结果以及所述第三操作结果进行合并,得到所述样本的分类结果;所述样本的第二操作结果是由所述第一GPU基于所述第一操作结果以及具有的后端各层网络的参数对所述样本执行相应的第二操作后得到的;还使得所述第一GPU根据所述分类结果和所述样本的分类标签,确定预测误差;根据所述预测误差,更新所述卷积神经网络。
第三方面,提供了一种利用GPU集群的图片分类方法,所述GPU集群包括第一GPU以及若干其它GPU,所述第一GPU具有卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,该方法由所述第一GPU执行,包括:
获取待分类图片;
基于所述前端各层网络的参数,对所述待分类图片执行与所述前端各层网络相应的第一操作,得到所述待分类图片的第一操作结果;
基于所述第一操作结果以及具有的后端各层网络的参数,对所述待分类图片执行相应的第二操作得到第二操作结果;
将所述第一操作结果分别发送给所述其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及所述第一操作结果,对所述待分类图片执行相应的第三操作;
接收所述其它各GPU在执行相应的第三操作后得到的第三操作结果;
合并所述第二操作结果和所述第三操作结果得到所述待分类图片的分类结果。
第四方面,提供了一种利用GPU集群更新卷积神经网络的装置,所述GPU集群包括第一GPU以及若干其它GPU,所述第一GPU具有所述卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,该装置包括:
获取单元,用于获取带分类标签的样本;
第一操作单元,用于基于所述前端各层网络的参数,对所述获取单元获取的所述样本执行与所述前端各层网络相应的第一操作,得到所述样本的第一操作结果;
第二操作单元,用于基于所述第一操作结果以及具有的后端各层网络的参数,对所述样本执行相应的第二操作得到第二操作结果;
发送单元,用于将所述第一操作结果分别发送给所述其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及所述第一操作结果,对所述样本执行相应的第三操作;
接收单元,用于接收所述其它各GPU在执行相应的第三操作后得到的第三操作结果;
合并单元,用于合并所述第二操作结果和所述第三操作结果得到所述样本的分类结果;
确定单元,用于根据所述分类结果和所述样本的分类标签,确定预测误差;
更新单元,用于根据所述确定单元确定的所述预测误差,更新所述卷积神经网络。
第五方面,提供了一种利用GPU集群更新卷积神经网络的装置,所述GPU集群包括第一GPU以及若干其它GPU,所述其它GPU具有所述卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,该装置包括:
接收单元,用于接收所述第一GPU发送的样本的第一操作结果;所述样本具有分类标签;
第三操作单元,用于基于所述接收单元接收的所述第一操作结果以及具有的后端各层网络的参数,对所述样本执行相应的第三操作得到第三操作结果;
发送单元,用于向所述第一GPU发送所述第三操作结果,以使得所述第一GPU在获取到其它各GPU发送的第三操作结果后,对所述样本的第二操作结果以及所述第三操作结果进行合并,得到所述样本的分类结果;所述样本的第二操作结果是由所述第一GPU基于所述第一操作结果以及具有的后端各层网络的参数对所述样本执行相应的第二操作后得到的;还使得所述第一GPU根据所述分类结果和所述样本的分类标签,确定预测误差;根据所述预测误差,更新所述卷积神经网络。
第六方面,提供了一种利用GPU集群的图片分类装置,所述GPU集群包括第一GPU以及若干其它GPU,所述第一GPU具有卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,该装置包括:
获取单元,用于获取待分类图片;
第一操作单元,用于基于所述前端各层网络的参数,对所述获取单元获取的所述待分类图片执行与所述前端各层网络相应的第一操作,得到所述待分类图片的第一操作结果;
第二操作单元,用于基于所述第一操作结果以及具有的后端各层网络的参数,对所述待分类图片执行相应的第二操作得到第二操作结果;
发送单元,用于将所述第一操作结果分别发送给所述其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及所述第一操作结果,对所述待分类图片执行相应的第三操作;
接收单元,用于接收所述其它各GPU在执行相应的第三操作后得到的第三操作结果;
合并单元,用于合并所述第二操作结果和所述第三操作结果得到所述待分类图片的分类结果。
第七方面,提供了一种更新卷积神经网络的设备,包括第一GPU以及若干其它GPU,所述第一GPU具有所述卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,所述第一GPU在运行时实现以下步骤:
获取带分类标签的样本;
基于所述前端各层网络的参数,对所述样本执行与所述前端各层网络相应的第一操作,得到所述样本的第一操作结果;
基于所述第一操作结果以及具有的后端各层网络的参数,对所述样本执行相应的第二操作得到第二操作结果;
将所述第一操作结果分别发送给所述其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及所述第一操作结果,对所述样本执行相应的第三操作;
接收所述其它各GPU在执行相应的第三操作后得到的第三操作结果;
合并所述第二操作结果和所述第三操作结果得到所述样本的分类结果;
根据所述分类结果和所述样本的分类标签,确定预测误差;
根据所述预测误差,更新所述卷积神经网络。
第八方面,提供了一种更新卷积神经网络的设备,包括第一GPU以及若干其它GPU,所述其它GPU具有所述卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,所述其它GPU中任意的第二GPU在运行时实现以下步骤:
接收所述第一GPU发送的样本的第一操作结果;所述样本具有分类标签;
基于所述第一操作结果以及具有的后端各层网络的参数,对所述样本执行相应的第三操作得到第三操作结果;
向所述第一GPU发送所述第三操作结果,以使得所述第一GPU在获取到其它各GPU发送的第三操作结果后,对所述样本的第二操作结果以及所述第三操作结果进行合并,得到所述样本的分类结果;所述样本的第二操作结果是由所述第一GPU基于所述第一操作结果以及具有的后端各层网络的参数对所述样本执行相应的第二操作后得到的;还使得所述第一GPU根据所述分类结果和所述样本的分类标签,确定预测误差;根据所述预测误差,更新所述卷积神经网络。
第九方面,提供了一种图片分类设备,包括第一GPU以及若干其它GPU,所述第一GPU具有所述卷积神经网络的前端各层网络的参数,所述第一GPU和所述其它GPU共同具有所述卷积神经网络的后端各层网络的参数,所述第一GPU在运行时实现以下步骤:
获取待分类图片;
基于所述前端各层网络的参数,对所述待分类图片执行与所述前端各层网络相应的第一操作,得到所述待分类图片的第一操作结果;
基于所述第一操作结果以及具有的后端各层网络的参数,对所述待分类图片执行相应的第二操作得到第二操作结果;
将所述第一操作结果分别发送给所述其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及所述第一操作结果,对所述待分类图片执行相应的第三操作;
接收所述其它各GPU在执行相应的第三操作后得到的第三操作结果;
合并所述第二操作结果和所述第三操作结果得到所述待分类图片的分类结果。
本说明书一个或多个实施例提供的利用GPU集群更新卷积神经网络的方法、装置及设备,第一GPU获取带分类标签的样本。基于前端各层网络的参数,对样本执行第一操作得到第一操作结果。基于第一操作结果以及具有的后端各层网络的参数,对样本执行第二操作得到第二操作结果。将第一操作结果分别发送给其它GPU。接收其它各GPU在基于各自具有的后端各层网络的参数以及第一操作结果,对样本执行第三操作后得到的第三操作结果。合并第二操作结果和第三操作结果得到分类结果。根据分类结果和分类标签,确定预测误差。根据预测误差,更新卷积神经网络。由此可以看出,本说明书提供的方案可以基于多个GPU来对卷积神经网络进行更新,从而可以有效而准确地对卷积神经网络进行更新。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
在描述本说明书提供的方案之前,先对本方案的发明构思作以下介绍。
根据背景技术的内容可知,在图像处理技术领域,通用的图片分类方法即为基于卷积神经网络的分类方法。其中,以AlexNet,Inception系列,VGG,ResNet系列的卷积神经网络的性能较为卓越。经过研究发现,这些卷积神经网络基本都使用了softmax层作为最后分类的输出。而softmax层的输入层通常是一个全联接层(fully connected layer,FC)或者一个卷积层(convolutional layer,CONV)。
如果softmax层的输入层是FC层,假设该FC层输入的数据大小为[N,H,W,I],输出数据的大小为[N,O],则FC层的参数总个数为:H*W*I*O。这里,H为FC层输入的图片(image)的高度,W为图片的宽度,N为图片的个数,I为FC层输入的特征图(feature map)的个数,O是FC层输出的特征图的大小(也即softmax层分类的个数)。如果softmax层的输入层是CONV层,假设该CONV层输入的数据大小为[N,H,W,I],输出数据的大小为[N,O],卷积核大小为K*K(这里的K通常为1,3,5等比较小的奇数),则该CONV层的参数总个数为:K*K*I*O。为方便讨论,后续将softmax层及其输入层FC层称为FC-Softmax组合,将softmax层及其输入层CONV层称为Conv-Softmax组合。
假设CNN各层网络的参数以及对应的输出结果以字节(Byte)为单位进行存储。则FC-softmax组合需要H*W*I*O*B字节存储该层参数,需要N*O*B字节存储softmax层的输出结果。对Conv-softmax组合,需要K*K*I*O*B字节存储该层参数,需要N*O*B字节存储softmax层的输出结果。对于需要基于大规模的训练样本,来对卷积神经网络进行训练的情况,如在训练用于进行人脸识别的模型时,通常基于大规模的人脸图片。如,人脸图片的个数可能等于参与分类的人口总数。也就是说,上述公式中的O=10亿。在O=10亿情况下,当N=1时,FC-softmax组合需要至少4(H*W*I+1)GB内存,Conv-Softmax组合需要至少4(K*K*I+1)GB内存。这里的4用于表示存储的参数或者输出结果为单精度浮点数。典型地,H=W=7,I=16,32,64,128,512或者1024等。而当前主流的图形处理器(Graphics Processing Unit,GPU)设备内存只有16GB,远远小于FC-softmax组合或者Conv-Softmax组合需要的内存。在这种情况下,单个GPU无法完成卷积神经网络的训练任务。
因此,本申请的申请人考虑可将FC-Softmax组合或者Conv-Softmax组合的参数均匀分布到多个GPU上,然后利用多个GPU分布式内存完成训练。这里的多个GPU也可以称为分布式GPU集群。
此外,申请人还考虑到对除FC-Softmax组合和Conv-Softmax组合的其它层,如卷积层或者池化层等(为方便讨论,以下简称前端各层网络),由于其对应的参数占用的内存较少,因此如果将前端各层网络的参数也均匀分布到多个GPU上的话,会降低GPU利用率,浪费计算资源。为节约计算机资源,本方案对于前端各层网络仍然采用基于mini-batch的数据并行模式完成训练,即每个GPU中存储前端各层网络的全部的参数。
在这种情况下,假设GPU个数为P,每个GPU接收N张图片输入,整个网络训练的批大小(batch size)就是N*P。这里的P和N均为正整数。在前端各层网络,每个时刻,N*P张图片在所有GPU上被同时处理。在后端各层网络(如,FC-Softmax组合或者Conv-Softmax组合),每个时刻,所有GPU在处理同一张图片。
需要说明的是,在前端各层网络,虽然P个GPU在理论上可以同时运行,但是对于部分层(如,批归一化(batch normalization,BN)层)需要基于整个batch内的数据才能完成相应的操作,因此,该P个GPU之间通常还需要进行相互通讯。此外,在后端各层网络,由于P个GPU共同协作来处理一张图片,因此,各个GPU间也需要进行通讯。在本说明书中,该P个GPU之间可以基于支持分布式通讯和计算的应用编程接口函数库进行相互通讯。该函数库例如可以为信息传递接口(Message Passing Interface,MPI)库或者Rabit库等。
此外,由于对每张图片,所有的GPU都要参与处理,因此可以指定一个GPU作为协调者(coordinator)来统筹和维护整个处理过程。该一个GPU也通常称为具有协调和/或管理功能的GPU,其可以指定当前正在处理的图片,以及最后负责把一个批次的图片的分类结果拼接到一起输出等等。
以上就是本方案的发明构思,基于以上的发明构思就可以得到本方案,以下对本方案进行详细阐述。
图1为本说明书提供的更新卷积神经网络的方法示意图。图1中,该分布式GPU集群中可以包括P个GPU:GPU0、GPU1、…、GPUP-1,且GPU0为具有协调和/或管理功能的GPU。其中,GPU0中可以具有CNN的前端各层网络的全部的参数以及后端各层网络的第一部分参数,GPU1中可以具有有CNN的前端各层网络的全部的参数以及后端各层网络的第二部分参数,依次类推。以后端某层网络为FC层为例来说,假设与FC层对应的参数可以构成n*m的矩阵,那么,每个GPU中具有的该层的部分参数的个数可以表示为:(n*m)/P。特别地,当GPU的个数比较多时,各个GPU可以只初始化矩阵中的一列或者一行参数,本说明书对此不作限定。
需要说明的是,对于上述前端各层网络的参数,P个GPU可以各自独立初始化,也可以统一初始化。如果独立初始化,则该P个GPU之间不需要进行通讯。如果统一初始化,则一个GPU(如,GPU0)在完成初始化之后,可以向其它GPU广播其初始化的参数,由此来完成各个GPU之间的统一初始化。对于上述后端各层网络的参数,由于各个GPU只存储部分参数,从而各个GPU可以独立完成初始化。
如图1所示,本说明书提供的前端各层网络可以包括卷积层、BN层以及其它层,该BN层位于卷积层之后,用于对卷积层输出的中间结果进行归一化处理。由于中间结果的归一化处理通常是基于一个批次的样本(即P*N张图片)来完成的,因此,各个GPU之间通常需要进行相互通讯,具体通讯内容后续说明。此外,图1中还示出,在FC层以及Softmax层各个GPU之间通常也需要进行相互通讯,具体通讯内容也后续进行说明。
以上是对图1的整体说明,以下将结合图2来对卷积神经网络的更新过程进行详细说明。图2中,假设该方法的执行主体为GPU0(也称第一GPU),即上述具有协调和管理功能的GPU,那么该方法可以包括如下步骤:
步骤202,获取带分类标签的样本。
需要说明的是,GPU0在获取样本的同时,其它GPU也可以获取各自对应的其它样本。P个GPU共同获取的样本构成一个批次的样本。在一个例子中,上述样本可以为图片,从而上述分类标签可以是指人为预先标定好的图片类别。
步骤204,基于前端各层网络的参数,对样本执行与前端各层网络相应的第一操作,得到样本的第一操作结果。
同样地,其它各GPU也可以分别根据各自具有的前端各层网络的参数,对各自获取的其它样本执行与前端各层网络相应的第一操作,得到其它样本的第一操作结果。
如前所述,这里的前端各层网络可以包括卷积层、BN层以及其它层等。以某层网络为卷积层为例来说,GPU0根据存储的卷积层的参数,对样本执行与该卷积层对应的第一操作可以包括:GPU0根据与该卷积层对应的多个卷积核,对样本执行卷积操作,从而得到第一中间结果。之后将第一中间结果输入BN层,在BN层,GPU0在获取到上述第一中间结果后,可以等待其它各GPU完成对各自获取的其它样本的卷积操作。之后,GPU0可以读取其它各GPU在完成对各自获取的其它样本的卷积操作后所得到的第二中间结果。最后GPU0基于上述第一中间结果以及第二中间结果,对第一中间结果进行归一化处理。根据与BN层对应的尺度因子和平移因子,对归一化后的第一中间结果进行尺度变换和偏移。将尺度变换和偏移后的第一中间结果输入其它层,并根据其它层的参数对样本执行相应的其它操作,直至得到样本的第一操作结果。
其它GPU执行与前端各层网络相对应的第一操作的过程类似,在此不复赘述。
需要说明的是,由于P个GPU均具有CNN的前端各层网络的参数,因此P个GPU可以针对各自获取的样本同时执行上述第一操作。此外,由于每个GPU中只存储了CNN的后端各层网络的部分的参数,因此,对执行完成上述第一操作的当前一个样本,可以由P个GPU共同对其执行与后端各层网络对应的第二操作和第三操作。以下对该共同执行过程进行说明。
步骤206,基于第一操作结果以及具有的后端各层网络的参数,对样本执行相应的第二操作得到第二操作结果。
以样本为图片为例来说,样本的第一操作结果可以理解为是由前端各层网络从图片中提取的多张特征图。以后端各层网络为FC-Softmax组合为例来说,假设GPU0中存储有FC层的一列参数,则GPU0对图片执行与FC层相对应的第二操作可以理解为执行如下的矩阵运算:将提取的多张特征图分别与上述一列参数相乘。之后,将该矩阵运算结果输入Softmax层,并执行与Softmax层相对应的第二操作,从而得到图片的第二操作结果。
可以理解的是,上述与Softmax层相对应的第二操作即为对矩阵运算结果进一步处理,以使得其取值范围在0到1之间的过程。由于该进一步处理的过程通常会涉及到与每列参数相对应的矩阵运算结果,因此GPU0还可以与其它GPU进行通讯,以获取其它GPU各自所获取的与某一列参数相对应的矩阵运算结果。在本说明书中,图片的第二操作结果即为与GPU0所存储的一列参数相对应的、进一步处理后的矩阵运算结果。
步骤208,将第一操作结果分别发送给其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及第一操作结果,对样本执行相应的第三操作。
还以前述例子为例来说,假设其它GPU中的某个GPU(以下称为GPU1)中存储的是FC层的另一列参数,则GPU1对图片执行与FC层相对应的第三操作可以理解为执行如下的矩阵运算:将提取的多张特征图分别与上述另一列网络相乘。之后,将该矩阵运算结果输入Softmax层,并执行与Softmax层相对应的第三操作,从而得到与GPU1对应的1个图片的第三操作结果。
步骤210,接收其它各GPU在执行相应的第三操作后得到的第三操作结果。
如前述例子,GPU0可以接收其它P-1个GPU各自获取的进一步处理的矩阵运算结果,从而得到P个进一步处理的矩阵运算结果。
需要说明的是,前述例子是以FC层的参数为P列进行的说明,即矩阵的列数与GPU的个数相等,从而每个GPU中可以存储FC层的一列的参数。在实际应用中,GPU的个数可以任意设定,如,GPU的个数可以少于FC层的参数的列数。在少于的情况下,可以通过如下的公式来分配每个GPU中的参数:参数总个数/P,其中,P为GPU个数。再如,GPU的个数也可以多于FC层的参数的列数。在多于的情况下,剩余的GPU返回的操作结果可以为空,也即不参与运算。
步骤212,合并第二操作结果和第三操作结果得到样本的分类结果。
如,GPU0将P个GPU的进一步处理的矩阵运算结果进行合并,从而得到上述分类结果。
步骤214,根据分类结果和样本的分类标签,确定预测误差。
当然,在实际应用中,为了提高所确定的预测误差的准确性,也可以基于一个批次的样本的分类结果以及分类标签,来确定预测误差。在这种情况下,GPU0可以在确定出所获取的样本的分类结果之后,获取其它GPU针对各自获取的其它样本所获得的分类结果。合并P个GPU针对各自获取的样本所获得的分类结果,得到合并后的分类结果。根据合并后的分类结果以及一个批次的样本(包括样本以及其它样本)的分类标签,确定预测误差。
当然,在实际应用中,P个GPU中每个GPU获取的样本个数可以为多个。每个GPU针对各自所获取的多个样本执行第一操作以及第二操作或者第三操作的过程同上所述,在此不复赘述。
步骤216,根据预测误差,更新卷积神经网络。
该更新过程具体可以为:GPU0根据预测误差,确定前端各层网络的第一更新参数以及后端各层网络的第二更新参数。根据第一更新参数,更新第一GPU所具有的前端各层网络的参数。根据第二更新参数中与第一GPU所具有的后端各层网络的参数对应的更新参数,更新第一GPU所具有的后端各层网络的参数。向其它GPU发送第一更新参数以及各自对应的第二更新参数。以使其它GPU根据各自对应的第二更新参数,更新各自具有的后端各层网络的参数。
需要说明的是,GPU0之所以可以向其它GPU发送各自对应的第二更新参数,是因为GPU0在处理一个批次的样本的过程中,可以学习到其它GPU各自所存储的后端各层网络的部分参数。
需要说明的是,上述步骤206-步骤214是由P个GPU共同对GPU0所获取的样本执行与后端各层网络对应的第二操作或者第三操作的过程。当对其它GPU中任一个GPU(以下称第二GPU)所获取的其它样本执行如上的第二操作或者第三操作时,上述步骤206-步骤214可以替换为如下各步骤:
步骤a,从第二GPU接收其它样本的第一操作结果。
需要说明的是,这里的第一操作结果可以是由第二GPU基于具有的前端各层网络的参数,对其它样本执行与前端各层网络相应的第一操作后所得到的。
步骤b,基于其它样本的第一操作结果以及具有的后端各层网络的参数,对其它样本执行相应的第二操作得到第二操作结果。
即这里是由GPU0对从其它GPU中任意的第二GPU接收的其它样本执行第二操作的过程。需要说明的是,与此同时,其它GPU也可以对该其它样本执行相应的第三操作。
步骤c,接收其它GPU在针对其它样本执行相应的第三操作后得到的第三操作结果。
除GPU0之外的其它GPU在获取到与其它样本对应的第三操作结果之后,可以向GPU0发送各自获取的其它样本的第三操作结果。
步骤d,合并其它样本的第二操作结果和其它样本的第三操作结果,得到其它样本的分类结果。
步骤e,根据样本的分类结果和分类标签,以及其它样本的分类结果和分类标签,确定预测误差。
即当还获取到其它样本的分类结果时,可以基于一个批次的样本的分类结果以及分类标签,共同来确定预测误差,由此来提高所确定误差的准确性。
综上,本说明书实施例提供的利用GPU集群更新卷积神经网络的方法,可以基于大规模的训练样本来对卷积神经网络进行更新,由此可以提高卷积神经网络更新的准确性。此外,本说明书实施例的多个GPU可以针对各自获取的样本同时执行与前端各层网络对应的第一操作,由此大大提升了GPU资源的利用率。
以上是以P个GPU中的GPU0(即协调者)为执行主体对卷积神经网络的更新过程所进行的描述,以下以P个GPU中除GPU0之外的任一个GPU(以下称第二GPU)为例对卷积神经网络的更新过程进行说明。
图3为本说明书另一个实施例提供的利用GPU集群更新卷积神经网络的方法流程图,所述方法的执行主体为第二GPU。如图3所示,所述方法可以包括如下步骤:
步骤302,接收第一GPU发送的样本的第一操作结果。
该样本具有分类标签。
可以理解的是,该样本的第一操作结果是由第一GPU基于具有的前端各层网络的参数,对样本执行与前端各层网络相应的第一操作后所得到的。
步骤304,基于第一操作结果以及具有的后端各层网络的参数,对样本执行相应的第三操作得到第三操作结果。
这里,在第二GPU执行上述第三操作的过程中,第一GPU可以对该样本执行相应的第二操作,其它GPU中除第二GPU外的GPU也可以对该样本执行相应的第三操作。
步骤306,向第一GPU发送第三操作结果。
第一GPU在获取到其它各GPU发送的第三操作结果后,对样本的第二操作结果以及第三操作结果进行合并,得到样本的分类结果。这里的样本的第二操作结果是由第一GPU基于第一操作结果以及具有的后端各层网络的参数对样本执行相应的第二操作后得到的。此外,第一GPU还可以根据分类结果和样本的分类标签,确定预测误差。根据预测误差,更新卷积神经网络。
当然,在实际应用中,为了提高所确定的预测误差的准确性,也可以基于一个批次的样本的分类结果以及对应的分类标签,来确定预测误差。其具体确定方法同上所述,在此不复赘述。此外,卷积神经网络的更新过程也可以参照步骤216,在此不作重复说明。
需要说明的是,上述步骤302-步骤306是由P个GPU共同对第一GPU所获取的样本执行与后端各层网络对应的第二操作或者第三操作的过程。当对第二GPU所获取的其它样本执行如上的第二操作或者第三操作时,上述步骤302-步骤306可以替换为如下各步骤:
步骤A,获取带分类标签的其它样本。
步骤B,基于前端各层网络的参数,对其它样本执行与前端各层网络相应的第一操作,得到其它样本的第一操作结果。
如前所述,这里的前端各层网络可以包括卷积层、BN层以及其它层等。第二GPU执行对应的第一操作的过程同第一GPU(GPU0)类似,在此不复赘述。
以其它样本也为图片为例来说,其它样本的第一操作结果可以理解为是由前端各层网络从图片中提取的多张特征图。
步骤C,基于其它样本的第一操作结果以及具有的后端各层网络的参数,对其它样本执行相应的第三操作得到第三操作结果。
步骤D,向第一GPU以及其它GPU中除第二GPU外的GPU发送其它样本的第一操作结果。
第一GPU基于具有的后端各层网络的参数以及其它样本的第一操作结果,对其它样本执行相应的第二操作得到第二操作结果。其它GPU中除第二GPU外的GPU基于各自具有的后端各层网络的参数以及其它样本的第一操作结果,对其它样本执行相应的第三操作得到第三操作结果。
步骤E,向第一GPU发送其它样本的第三操作结果。
其它GPU中除第二GPU外的GPU也可以向第一GPU发送第三操作结果。第一GPU在接收到其它GPU发送的第三操作结果后,合并第二操作结果和其它GPU发送的第三操作结果得到其它样本的分类结果,根据样本的分类结果和分类标签,以及其它样本的分类结果和分类标签,确定预测误差。
在确定预测误差之后,卷积神经网络的更新过程也可以参照步骤216,在此不作重复说明。
综上,本说明书实施例提供的利用GPU集群更新卷积神经网络的方法,可以基于大规模的训练样本来对卷积神经网络进行更新,由此可以提高卷积神经网络更新的准确性。
在完成卷积神经网络的训练之后,可以通过如下方式来完成图片的分类:由分布式GPU集群中的第一GPU对待分类图片执行与前端各层网络对应的第一操作,之后由多个GPU共同对该待分类图片执行与后端各层网络的对应的第二操作或者第三操作,从而得到对应的分类结果。其具体分类过程可以如图4所示。
图4为本说明书提供的利用GPU集群的图片分类方法流程图,所述方法的执行主体可以为第一GPU,如图4所示,所述方法可以包括如下步骤:
步骤402,获取待分类图片。
步骤404,基于前端各层网络的参数,对待分类图片执行与前端各层网络相应的第一操作,得到待分类图片的第一操作结果。
步骤406,基于第一操作结果以及具有的后端各层网络的参数,对待分类图片执行相应的第二操作得到第二操作结果。
步骤408,将第一操作结果分别发送给其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及第一操作结果,对待分类图片执行相应的第三操作。
步骤410,接收其它各GPU在执行相应的第三操作后得到的第三操作结果。
步骤412,合并第二操作结果和第三操作结果得到待分类图片的分类结果。
综上,本说明书实施例提供的利用GPU集群的图片分类方法,可以实现图片的准确而有效的分类。
与上述利用GPU集群更新卷积神经网络的方法对应地,本说明书一个实施例还提供的一种利用GPU集群更新卷积神经网络的装置,该GPU集群包括第一GPU以及若干其它GPU,第一GPU具有卷积神经网络的前端各层网络的参数,第一GPU和其它GPU共同具有所述卷积神经网络的后端各层网络的参数,如图5所示,该装置可以包括:
获取单元502,用于获取带分类标签的样本。
第一操作单元504,用于基于前端各层网络的参数,对获取单元502获取的样本执行与前端各层网络相应的第一操作,得到样本的第一操作结果。
第二操作单元506,用于基于第一操作结果以及具有的后端各层网络的参数,对样本执行相应的第二操作得到第二操作结果。
发送单元508,用于将第一操作结果分别发送给其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及第一操作结果,对样本执行相应的第三操作。
接收单元510,用于接收其它各GPU在执行相应的第三操作后得到的第三操作结果。
合并单元512,用于合并第二操作结果和第三操作结果得到样本的分类结果。
确定单元514,用于根据分类结果和样本的分类标签,确定预测误差。
更新单元516,用于根据确定单元514确定的预测误差,更新卷积神经网络。
可选地,接收单元510,还用于从第二GPU接收其它样本的第一操作结果,第二GPU是其它GPU中的任一个,该其它样本具有分类标签。
第二操作单元506,还用于基于接收单元510接收的其它样本的第一操作结果以及具有的后端各层网络的参数,对其它样本执行相应的第二操作得到第二操作结果。
接收单元510,还用于接收其它GPU在针对其它样本执行相应的第三操作后得到的第三操作结果。
合并单元512,还用于合并其它样本的第二操作结果和其它样本的第三操作结果,得到其它样本的分类结果。
确定单元514具体用于:根据样本的分类结果和分类标签,以及其它样本的分类结果和分类标签,确定预测误差。
更新单元516具体可以用于:
根据预测误差,确定前端各层网络的第一更新参数以及后端各层网络的第二更新参数。
根据第一更新参数,更新第一GPU所具有的前端各层网络的参数。根据第二更新参数中与第一GPU所具有的后端各层网络的参数对应的更新参数,更新第一GPU所具有的后端各层网络的参数。
向其它GPU发送第一更新参数以及各自对应的第二更新参数。以使其它GPU根据各自对应的第二更新参数,更新各自具有的后端各层网络的参数。
可选地,前端各层网络包括卷积层以及其它层。
第一操作单元504具体可以用于:
基于卷积层的参数,对样本执行卷积操作,以得到第一中间结果。
获取其它GPU根据各自具有的卷积层的参数,对各自获取的其它样本执行卷积操作所获得的第二中间结果。
根据其它GPU的第二中间结果,对第一中间结果进行归一化处理。
基于其它层的参数以及归一化处理后的第一中间结果,对样本执行其它操作,得到样本的第一操作结果。
可选地,上述第一GPU与其它GPU之间基于支持分布式通讯和计算的应用编程接口函数库进行相互通讯。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的利用GPU集群更新卷积神经网络的装置,可以基于多个GPU来对卷积神经网络进行更新,从而可以有效而准确地对卷积神经网络进行更新。
本说明书一个实施例提供的利用GPU集群更新卷积神经网络的装置可以为图1中GPU0的一个模块或者单元。
与上述利用GPU集群更新卷积神经网络的方法对应地,本说明书一个实施例还提供的一种利用GPU集群更新卷积神经网络的装置,该GPU集群包括第一GPU以及若干其它GPU,其它GPU具有卷积神经网络的前端各层网络的参数,第一GPU和其它GPU共同具有卷积神经网络的后端各层网络的参数,如图6所示,该装置可以包括:
接收单元602,用于接收第一GPU发送的样本的第一操作结果。
该样本具有分类标签。
第三操作单元604,用于基于接收单元602接收的第一操作结果以及具有的后端各层网络的参数,对样本执行相应的第三操作得到第三操作结果。
发送单元606,用于向第一GPU发送第三操作结果,以使得第一GPU在获取到其它各GPU发送的第三操作结果后,对样本的第二操作结果以及第三操作结果进行合并,得到样本的分类结果。样本的第二操作结果是由第一GPU基于第一操作结果以及具有的后端各层网络的参数对样本执行相应的第二操作后得到的。还使得第一GPU根据分类结果和样本的分类标签,确定预测误差。根据预测误差,更新卷积神经网络。
可选地,该装置还可以包括:
获取单元608,用于获取带分类标签的其它样本。
第一操作单元610,用于基于前端各层网络的参数,对其它样本执行与前端各层网络相应的第一操作,得到其它样本的第一操作结果。
第三操作单元604,还用于基于其它样本的第一操作结果以及具有的后端各层网络的参数,对其它样本执行相应的第三操作得到第三操作结果。
发送单元606,还用于向第一GPU以及其它GPU中除第二GPU外的GPU发送其它样本的第一操作结果,以使得第一GPU基于具有的后端各层网络的参数以及其它样本的第一操作结果,对其它样本执行相应的第二操作得到第二操作结果,以及使得其它GPU中除第二GPU外的GPU基于各自具有的后端各层网络的参数以及其它样本的第一操作结果,对其它样本执行相应的第三操作得到第三操作结果。
发送单元606,还用于向第一GPU发送其它样本的第三操作结果,以使得第一GPU合并第二操作结果和其它各GPU发送的第三操作结果得到其它样本的分类结果,根据样本的分类结果和分类标签,以及其它样本的分类结果和分类标签,确定预测误差。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的利用GPU集群更新卷积神经网络的装置,可以基于多个GPU来对卷积神经网络进行更新,从而可以有效而准确地对卷积神经网络进行更新。
本说明书一个实施例提供的利用GPU集群更新卷积神经网络的装置可以为图1中GPU1至GPUP-1中任一个GPU的一个模块或者单元。
与上述利用GPU集群的图片分类方法对应地,本说明书实施例还提供了一种利用GPU集群的图片分类装置,该GPU集群包括第一GPU以及若干其它GPU,第一GPU具有卷积神经网络的前端各层网络的参数,第一GPU和其它GPU共同具有卷积神经网络的后端各层网络的参数,如图7所示,该装置可以包括:
获取单元702,用于获取待分类图片。
第一操作单元704,用于基于前端各层网络的参数,对获取单元702获取的待分类图片执行与前端各层网络相应的第一操作,得到待分类图片的第一操作结果。
第二操作单元706,用于基于第一操作结果以及具有的后端各层网络的参数,对待分类图片执行相应的第二操作得到第二操作结果。
发送单元708,用于将第一操作结果分别发送给其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及第一操作结果,对待分类图片执行相应的第三操作。
接收单元710,用于接收其它各GPU在执行相应的第三操作后得到的第三操作结果。
合并单元712,用于合并第二操作结果和第三操作结果得到待分类图片的分类结果。
本说明书一个实施例提供的利用GPU集群的图片分类装置,可以实现图片的准确而有效的分类。
本说明书一个实施例提供的利用GPU集群的图片分类装置可以为图1中GPU0的一个模块或者单元。
与上述利用GPU集群的更新卷积神经网络的方法对应地,本说明书实施例还提供了一种更新卷积神经网络的设备,如图8所示,该设备可以包括:包括第一GPU802以及若干其它GPU(GPU804-GPUP),第一GPU802具有卷积神经网络的前端各层网络的参数,第一GPU802和其它GPU共同具有卷积神经网络的后端各层网络的参数,第一GPU802在运行时实现以下步骤:
获取带分类标签的样本。
基于前端各层网络的参数,对样本执行与前端各层网络相应的第一操作,得到样本的第一操作结果。
基于第一操作结果以及具有的后端各层网络的参数,对样本执行相应的第二操作得到第二操作结果。
将第一操作结果分别发送给其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及第一操作结果,对样本执行相应的第三操作。
接收其它各GPU在执行相应的第三操作后得到的第三操作结果。
合并第二操作结果和第三操作结果得到样本的分类结果。
根据分类结果和样本的分类标签,确定预测误差。
根据预测误差,更新卷积神经网络。
本说明书一个实施例提供的更新卷积神经网络的设备,可以基于多个GPU来对卷积神经网络进行更新,从而可以有效而准确地对卷积神经网络进行更新。
与上述利用GPU集群更新卷积神经网络的方法对应地,本说明书实施例还提供了一种更新卷积神经网络的设备,如图9所示,该设备可以包括:第一GPU902以及若干其它GPU(GPU904-GPUP),其它GPU具有卷积神经网络的前端各层网络的参数,第一GPU和其它GPU共同具有卷积神经网络的后端各层网络的参数,其它GPU中任意的第二GPU904在运行时实现以下步骤:
接收第一GPU发送的样本的第一操作结果,该样本具有分类标签。
基于第一操作结果以及具有的后端各层网络的参数,对样本执行相应的第三操作得到第三操作结果。
向第一GPU发送第三操作结果,以使得第一GPU在获取到其它各GPU发送的第三操作结果后,对样本的第二操作结果以及第三操作结果进行合并,得到样本的分类结果。样本的第二操作结果是由第一GPU基于第一操作结果以及具有的后端各层网络的参数对样本执行相应的第二操作后得到的。还使得第一GPU根据分类结果和样本的分类标签,确定预测误差。根据预测误差,更新卷积神经网络。
本说明书一个实施例提供的更新卷积神经网络的设备,可以基于多个GPU来对卷积神经网络进行更新,从而可以有效而准确地对卷积神经网络进行更新。
与上述利用GPU集群的图片分类方法对应地,本说明书还提供了一种图片分类设备,如图10所示,该设备可以包括:包括第一GPU1002以及若干其它GPU(GPU1004-GPUP),第一GPU1002具有卷积神经网络的前端各层网络的参数,第一GPU1002和其它GPU共同具有卷积神经网络的后端各层网络的参数,第一GPU1002在运行时实现以下步骤:
获取待分类图片。
基于前端各层网络的参数,对待分类图片执行与前端各层网络相应的第一操作,得到待分类图片的第一操作结果。
基于第一操作结果以及具有的后端各层网络的参数,对待分类图片执行相应的第二操作得到第二操作结果
将第一操作结果分别发送给其它GPU,以使得其它各GPU分别基于各自具有的后端各层网络的参数以及所述第一操作结果,对待分类图片执行相应的第三操作。
接收其它各GPU在执行相应的第三操作后得到的第三操作结果。
合并第二操作结果和第三操作结果得到待分类图片的分类结果。
本说明书提供的图片分类设备,可以实现图片的准确而有效的分类。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
结合本说明书公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于服务器中。当然,处理器和存储介质也可以作为分立组件存在于服务器中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。