一种对用于图片识别的卷积神经网络训练的方法与设备的制造方法

文档序号:10687963阅读:504来源:国知局
一种对用于图片识别的卷积神经网络训练的方法与设备的制造方法
【专利摘要】本申请的目的是提供一种对用于图片识别的卷积神经网络进行训练的方法与设备。具体地,根据用于图片识别的卷积神经网络的参数信息初始化同一GPU上所述卷积神经网络的多个网络;将所述卷积神经网络所对应的训练图片数据分配至所述多个网络;对所述多个网络按所分配的所述训练图片数据进行并行训练处理;根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。与现有技术相比,本申请通过使用同一套参数信息初始化同一GPU上卷积神经网络的多个网络,将训练图片数据分配至所述多个网络进行并行训练处理,用所得误差信息更新所述参数信息,从而提高GPU单卡计算效率,减少计算资源浪费,提升卷积神经网络对图片的识别效率。
【专利说明】
一种对用于图片识别的卷积神经网络训练的方法与设备
技术领域
[0001]本申请涉及计算机领域,尤其涉及一种对用于图片识别的卷积神经网络训练的技术。
【背景技术】
[0002]随着互联网高速发展,网络中图片数据量激增,针对图片数据的处理技术迅速发展并日益完善,其中,卷积神经网络这样的深度学习算法被广泛应用于图片识别中,并在降低网络模型复杂度、提升图片数据处理能力等方面取得了显著的成效。为了提升图片识别中数据的处理效率,目前对于基于GPU进行图片识别学习训练的卷积神经网络多采用单机多GPU或多机多GPU的方式,其中,GPU(Graphics Processing Unit)又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。然而,对于每一块GHJ而言,其性能并没有被充分利用,从而造成计算资源的严重浪费。

【发明内容】

[0003]本申请的目的是提供一种对用于图片识别的卷积神经网络训练的方法与设备,用以解决基于GHJ对用于图片识别的卷积神经网络训练效率低下造成资源浪费的问题。
[0004]根据本申请的一个方面,提供了一种对用于图片识别的卷积神经网络训练的方法,该方法解决了基于GPU对用于图片识别的卷积神经网络训练效率低下造成资源浪费的问题,其中该方法包括:
[0005]根据用于图片识别的卷积神经网络的参数信息初始化同一GPU上所述卷积神经网络的多个网络;
[0006]将所述卷积神经网络所对应的训练图片数据分配至所述多个网络;
[0007]对所述多个网络按所分配的所述训练图片数据进行并行训练处理;
[0008]根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。
[0009]根据本申请的另一方面,还提供了一种提供了一种对用于图片识别的卷积神经网络训练的设备,该设备解决了基于GPU对用于图片识别的卷积神经网络训练效率低下造成资源浪费的问题,其中该设备包括:
[0010]第一装置,用于根据用于图片识别的卷积神经网络的参数信息初始化同一GPU上所述卷积神经网络的多个网络;
[0011]第二装置,用于将所述卷积神经网络所对应的训练图片数据分配至所述多个网络;
[0012]第三装置,用于对所述多个网络按所分配的所述训练图片数据进行并行训练处理;
[0013]第四装置,用于根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。
[0014]与现有技术相比,本申请通过根据用于图片识别的卷积神经网络的参数信息初始化同一 GPU上所述卷积神经网络的多个网络,将所述卷积神经网络所对应的训练图片数据分配至所述多个网络并进行训练处理后,用训练处理所得的误差信息更新所述卷积神经网络的参数信息,从而提高GPU的单卡计算效率,减少计算资源浪费,进而提升卷积神经网络对图片的识别效率。
【附图说明】
[0015]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0016]图1示出根据本申请一个方面的一种对用于图片识别的卷积神经网络训练的设备示意图;
[0017]图2示出根据本申请一个优选实施例的一种对用于图片识别的卷积神经网络训练的方法与设备中将训练图片数据分配至多个网络的示意图;
[0018]图3示出根据本申请一个优选实施例的一种对用于图片识别的卷积神经网络训练的方法与设备中根据经训练所得误差信息更新卷积神经网络参数信息的示意图;
[0019]图4示出根据本申请另一个方面的一种对用于图片识别的卷积神经网络训练的方法流程图;
[0020]图5示出根据本申请一个优选实施例的一种多GPU并行方案示意图。
[0021]附图中相同或相似的附图标记代表相同或相似的部件。
【具体实施方式】
[0022 ]下面结合附图对本申请作进一步详细描述。
[0023]在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0024]内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0025]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0026]图1示出根据本申请一个方面的一种对用于图片识别的卷积神经网络训练的设备I的示意图。其中,所述设备I包括第一装置11、第二装置12、第三装置13和第四装置14.
[0027]其中,所述设备I的第一装置11根据用于图片识别的卷积神经网络的参数信息初始化同一 GPU上所述卷积神经网络的多个网络;第二装置12将所述卷积神经网络所对应的训练图片数据分配至所述多个网络;第三装置13对所述多个网络按所分配的所述训练图片数据进行并行训练处理;第四装置14根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。
[0028]具体地,第一装置11根据用于图片识别的卷积神经网络的参数信息初始化同一GPU上所述卷积神经网络的多个网络。其中,对所述卷积神经网络的多个网络使用同一套参数对其进行初始化,即所述同一GPU上的多个网络共享同一套初始化参数,初始化参数包括权值但不限于权值。共享同一套初始化参数,可为所述多个网络并行打下基础,简化初始化工作同时提高多个网络并行工作的效率。优选地,所述卷积神经网络的多个网络可以是该卷积神经网络的多个网络副本,每个网络都保留有完整卷积神经网络所需的必要的数据信息。
[0029]本领域技术人员应能理解上述初始化同一GPU上所述卷积神经网络的多个网络的方式仅为举例,其他现有的或今后可能出现的初始化同一 GPU上所述卷积神经网络的多个网络的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[°03°]优选地,所述多个网络的数量信息与所述GPU所支持的独立工作流的数量相适应。具体地,GPU的每个独立工作流上可以相应地运行一个网络,由于每个独立工作流不会互相阻塞,因此多个网络可以在各自的独立工作流上并行运行,由此,多个网络的数量受到所述GPU所支持的独立工作流的数量的约束,需小于或等于GPU所支持的独立工作流的数量。所述独立工作流的数量受到GPU本身架构以及所支持通用计算标准的约束,具体地,GPU需要有独立核心流处理器的硬件架构,同时需要支持至少一种GPU的通用计算标准如Nvidia的CUDA、Khronos的OpenCL、AMD的Stream等,例如,例如Nvidia所生产的GPU从开普勒架构都可以支持硬件队列独立工作且不互相阻塞,即允许CUDA流独占一个硬件工作队列,从而形成独立工作流,每个独立工作流对应一个网络可充分利用GPU的硬件资源,并提高卷积神经网络的处理速度。在此,CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。
[0031]接着,第二装置12将所述卷积神经网络所对应的训练图片数据分配至所述多个网络。其中,第二装置可以是一个数据分配器,具体地,数据分配器可以由数据分配函数实现其功能,即给予在同一 GHJ上卷积神经网络的多个网络分配该卷积神经网络所获取的图片数据,从而使得每个网络均获取可供训练的图片数据。数据分配函数将需要训练的图片数据划分成若干部分,创建图片数据指针并给每个指针分配一个分别指向所分的若干部分图片数据的地址,使得每个获得图片数据的网络均分得并维护一个图片数据指针。优选地,所述卷积神经网络所对应的训练图片数据由CPU获取,数据分配器可以分配CPU内存中的地址,也可以分配GPU的显存中的地址。前者图片数据指针指向CPU内存中的地址,各网络实例分别从图片数据指针所指向的CHJ地址中将图片数据直接拷贝至GPU显存。如图2所示,后者卷积神经网络框架先将所有数据从内存拷贝至GPU显存,图片数据指针指向GPU显存中的地址,数据分配器再从显存中拷贝至各网络实例。
[0032]本领域技术人员应能理解上述数据分配器分配图片数据的方式仅为举例,其他现有的或今后可能出现的数据分配器分配图片数据的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0033]第三装置13对所述多个网络按所分配的所述训练图片数据进行并行训练处理。其中,所述的多个网络是并存在卷积神经网络中,同时可以独立运行且不会互相干扰,从而使得所述多个网络可以进行并行训练处理。具体地,对卷积神经网络框架的代码进行修改,以卷积神经网络框架caffe为例,修改caffe的代码从而允许caffe程序运行时可以存在多个网络实例,具体地,例如,初始化caffe中一个net类实例,修改net类中前向传播、后向传播具体内容以及权值更新函数,通过该实例调用net类中前向传播和后向传播的功能从而实现网络的具体功能,因此通过初始化多个net类实例可实现单GPU上多个网络实例共存,每个网络实例均单独保存一份网络权值数据,以及前向传播和反向传播过程中所需的数据,使得所述多个网络实例可以独立运行。因此在所述多个网络初始化并分别获取训练图片数据后,可在各独立运行的网络中进行卷积神经网络的前向传播计算以及后向传播计算,从而对图片数据进行训练处理。多个网络在同一 GPU上对图片数据进行并行训练处理,可以提升同一时间内GPU的计算资源利用率,同时提升卷积神经网络对图片数据的处理速度。
[0034]本领域技术人员应能理解上述多个网络并行训练图片数据的方式仅为举例,其他现有的或今后可能出现的多个网络并行训练图片数据的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0035]第四装置14根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。其中,所述多个网络在分别进行训练处理的过程中根据反向传播所得偏差以及前向传播所得的结果,来计算网络权值偏差,并将每一层的网络权值偏差保存,根据每一层网络权值的偏差对卷积神经网络参数信息进行更新。因为所述多个网络独立运行不互相阻塞的,在经过一次训练后所有的网络可以分别单独进行更新,或者因为所述多个网络开始使用的是同一套参数进行初始化的,且训练处理是并行进行地,所以所述多个网络在运行时间基本一致的情况下也可以进行统一的误差更新,例如一次训练完结束的时间偏差都小于某一设定阈值,此时可以对多个网络进行统一更新。
[0036]优选地,所述训练图片数据中的图片满足单通道像素尺寸小于等于32*32。在同一GPU上并行运行一个卷积神经网络的多个网络,可提高GPU的利用率,同时使得卷积神经网络在图片处理尤其是在满足一定条件的小图片识别的过程中计算速度和收敛速度大幅度提升,尤其训练图片数据中的图片满足单通道像素尺寸在小于等于32x32时,所述卷积神经网络识别图片的速度有显著提升。
[0037]优选地,所述多个网络中每一个都独占所述GPU中的一个硬件队列,其中,所述第二装置12将所述卷积神经网络所对应的训练图片数据经所述硬件队列分配至所述多个网络。
[0038]具体地,所述多个网络独立运行的基础需要有相应的可以独立运行的硬件进行支撑,以Nvidia所生产开普勒架构之后支持CUDA运行的GPU为例,在同一 GPU上可以允许每个独立工作流独占一个硬件队列,在此基础上同一GPU上的多个网络实例均可维护一个独立工作流属性,该属性可以决定该网络实例在训练时在哪个独立工作流所对应的硬件队列上运行,即所分配的训练图片数据实例在调用某一层负责计算的操作系统核心时,可以给该操作系统核心输入一个关于具体在哪个独立工作流上执行的参数,相应的就可以在该独立工作流对应的网络进行训练图片传输或者是其它计算。据此,所述训练图片数据经由图片数据指针调用至对应网络时即经过相应的硬件队列传输至相应网络。同一 GPU上每个网络独占一个硬件队列是多网络同GPU并行计算的基础,保证了各网络运行不相互干扰,从而可以充分利用(PU资源,提升各网络的运行效率。
[0039]本领域技术人员应能理解上述调用独立工作流的方式仅为举例,其他现有的或今后可能出现的调用独立工作流的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0040]优选地,所述第二装置12将所述卷积神经网络所对应的训练图片数据按所述多个网络的数量分成多个训练图片子集;将每个训练图片子集传输至对应的所述网络。具体地,分配训练图片数据的第二装置12可以是一个函数,这个函数将图片数据分为与所述多个网络数量相适应的若干份,在所述多个网络运行需要对图片数据处理时,通过指向所对应部分的图片数据地址的指针对图片数据进行调用,此时图片数据藉由独立工作流传送至相对应的所述网络。将训练图片数据分为对应统一 GPU上多个网络数量的若干份并传送至各网络,可使得各网络可以同时处理一批训练图片数据,从而在并行运行时提高GHJ的资源使用率。
[0041]进一步地,任两个所述训练图片子集中的图片数量的差值低于预定的图片分配阈值。其中,预定的图片分配阈值可以尽可能的小,从而使得所分配给所述多个网络中的图片数量基本一致,从而达到平均分配的效果,例如,在同一GHJ卷积神经网络的网络一共有4个,训练图片一共有120张,若预定图片分配阈值设置为0,则每个网络所分得的图片为30张,若预定图片分配阈值设置为10,则每个网络所分得的图片可以为27、33、30、25。预定的图片分配阈值可以很好的控制分配至各个网络的图片数量,使其在图片总数与网络总数的比值附近波动,从而使得各网络在进行图片数据训练处理时的时间基本保持一致,从而提高了同一段时间内GPU的资源利用率,也使得所述多个网络基本保持同步运行。
[0042]在一个优选的实施例中(参照图1),所述网络包括多个计算层,其中,所述第三装置13对所述多个网络按所分配的所述训练图片数据进行并行训练处理,其中,所述多个网络的训练处理按所述计算层保持同步。
[0043]具体地,在卷积神经网络中所有的多个计算层在所述的多个网络中也同时都具有,每个网络在对所分配到的图片数据进行并行训练处理时,使得所述多个网络在每个计算层的数据处理保持同步,可以使得所有网络的每一个计算层的都可以选择在计算时所有网络可以同时充分调动GPU上的资源,例如,在资源富裕的情况下某一时间可以允许三个相同的计算同时进行,此时如果计算层不同步可能只有一个计算在进行,从而造成了计算资源的浪费。优选地,在采用可以实现数据并行的网络更新权值算法时,所有网络可以同步得出相应计算层的计算结果,从而在一次训练中正向和反向传播的过程中进行误差的叠加,因为所有网络初始化是使用的同一套参数,在同步计算的情况下,可以将叠加的误差对所有网络实现同步更新,从而实现了所有网络的权值共享,若计算层不保持同步,所有网络的计算层计算进程进行的不一样,从而无法对权值进行统一更新,增加了计算的复杂度,占用了不必要的计算资源。
[0044]进一步地,所述第三装置13还在至少一个所述计算层中将所述多个网络的训练处理合并进行。一般情况下所述多个网络分别在各自独立工作流上计算可以提高处理效率,但是在具体训练处理的计算过程中存在将所述多个网络同一计算层的数据计算合并会得到更快的计算速度。因为所述多个网络在每个计算层的数据处理保持同步,因此在这样的数据处理模式基础上,可将符合条件的某个计算层中所述多个网络的数据进行合并处理,例如,在处理卷积神经网络中常见的矩阵运算过程中,相乘的两个矩阵越接近方阵计算效率越高,若所述各网络独立计算则会出长条形矩阵相乘从而造成效率低下,将卷积神经网络的多个网络的同一计算层的矩阵计算进行合并会得到接近方阵的矩阵,从而使得卷积神经网络数据处理速度有所提高。
[0045]本领域技术人员应能理解上述在计算层中合并处理多个网络训练的方式仅为举例,其他现有的或今后可能出现的在计算层中合并处理多个网络训练的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0046]更优选地,所述第三装置13还根据所述多个网络的训练处理过程中所述GPU的利用率,确定所述多个网络在下一个所述计算层中的训练处理方式。具体地,接上文所述在所述多个网络并行处理训练图片数据的过程中采取合并处理可改变卷积神经网络的计算效率,因此选择所述多个网络在某个计算层选择是在同一个或几个独立工作流上共同或分组计算,或者各自分别子在某个独立工作流上互相不干扰的独立计算可以根据上层相似的计算层在计算时或者历史数据中相应计算层的GPU利用率来确定,从而使得卷积神经网络在处理训练图片数据时更加灵活高效,也更好的应用技术上已有的针对卷积神经网络的优化,例如,在某一计算层中已有的技术优化显示合并所有网络的数据计算会得到最高的GPU利用率或者计算速度,则此时可以让所有网络的该层操作系统内核调用同一个独立工作流,从而使得所有网络顺序执行而获得最优的计算速度和资源利用率。
[0047]优选地,所述第四装置14根据所述网络在每一所述计算层中的误差信息,确定所述所述网络经训练处理后的误差信息;根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。
[0048]具体地,可在卷积神经网络框架中增加多个网络实例一起更新的功能,例如,在caffe中net类的实现中,可定义static的成员函数,使得多个实例之间可进行交流,从而达到共同更新的目的。如图3所示所有网络实例根据不同的数据都各自在不同的独立工作流上完成前向传播和反向传播过程后,此更新功能将所有网络实例对应层的权值偏差都相加,由此确定所述网络经训练后的误差信息,然后利用误差信息来更新所有网络。因为在训练开始时,所有网络都使用同一权值进行初始化,因此经过一次训练以后所有网络实例一起更新且更新的权值偏差都一样,就可以确保所有网络实际上还是对同一网络权值进行训练,而区别仅在于各个网络实例所用来训练使用的数据不同,例如,卷积神经网络的输入数据为datal+data2,让datal+data2全部输入到卷积神经网络中进行训练,得到网络权值的误差信息为delta_Wl+delta_W2,因为卷积神经网络更新方法可以可以进行数据并行,即若只输入datal,则可得到更新量delta_wl,若只输入data2,则得到更新量delta_w2,这样两个网络分开计算以后,只要把更新量加起来即delta_Wl+delta_W2,那么得到的结果就和一次性将所有数据都输入得到的结果一样,因此将误差信息统一对卷积神经网络进行参数更新可以使得数据并行,从而提升卷积神经网络处理图片数据的速度。
[0049]本领域技术人员应能理解上述多个网络实例一起更新的方式仅为举例,其他现有的或今后可能出现的多个网络实例一起更新的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0050]优选地,如图5所示的多GPU并行的方案中,所述设备I还包括:第五装置15(未示出),其中,所述第五装置15向对应参数服务器上传所述卷积神经网络的参数信息。第六装置16(未示出),其中,所述第六装置16接收所述参数服务器返回的、基于不同GPU上传的所述卷积神经网络的参数信息所更新的所述卷积神经网络的参数信息。其中,所述参数服务器用于对不同GPU中的卷积神经网络的参数信息进行更新并反馈,从而达到多个GPU参数信息同步更新使得多GHJ并行的效果。
[0051 ]具体地,在所述多GPU并行的方案中每个GPU均有多个网络并存在同一卷积神经网络中,可以独立运行且不会互相干扰,因此,在每个GHJ中多个网络并行训练处理,且在训练处理过程中根据网络训练处理后的误差信息统一进行参数信息的更新,在此,每个GPU中的参数信息更新是基于与多个GPU共同进行数据交互的参数服务器所反馈的信息进行的。例如图5所示的权值更新,是通过权值更新器完成,其中,每个GPU中的所述权值更新器与CPU中央处理器中的参数服务器进行数据交互,由每个GPU中的权值更新器上传所述参数服务器在数据交互的过程中根据每个GHJ上的权值更新计算的权值矩阵对权值进行更新。
[0052]优选地,每个GPU中的权值矩阵在进行完一次训练过程后,将权值矩阵上传到CPU中的参数服务器中,参数服务器中一直维护着一份全局的最新的权值矩阵,在接收到某一GPU的计算结果后,进行更新,并将更新完成后的权值矩阵传回给对应的GPU,进行下一次的训练。具体参数服务器是如何根据每个GPU的计算结果来进行更新全局权值矩阵的算法,不同的实现不尽相同。
[0053]本领域技术人员应能理解上述多GPU并行进行神经网络图片识别的方式仅为举例,其他现有的或今后可能出现的多GPU并行进行神经网络图片识别的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0054]图4示出根据本申请另一个方面的一种对用于图片识别的卷积神经网络训练的方法流程图。
[0055]其中,在步骤SI中设备I根据用于图片识别的卷积神经网络的参数信息初始化同一GPU上所述卷积神经网络的多个网络;在步骤S2中设备I将所述卷积神经网络所对应的训练图片数据分配至所述多个网络;在步骤S3中设备I对所述多个网络按所分配的所述训练图片数据进行并行训练处理;在步骤S4中设备I根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。
[0056]具体地,在步骤SI中设备I根据用于图片识别的卷积神经网络的参数信息初始化同一GPU上所述卷积神经网络的多个网络。其中,对所述卷积神经网络的多个网络使用同一套参数对其进行初始化,即所述同一GPU上的多个网络共享同一套初始化参数,初始化参数包括权值但不限于权值。共享同一套初始化参数,可为所述多个网络并行打下基础,简化初始化工作同时提高多个网络并行工作的效率。优选地,所述卷积神经网络的多个网络可以是该卷积神经网络的多个网络副本,每个网络都保留有完整卷积神经网络所需的必要的数据信息。
[0057]本领域技术人员应能理解上述初始化同一GPU上所述卷积神经网络的多个网络的方式仅为举例,其他现有的或今后可能出现的初始化同一 GPU上所述卷积神经网络的多个网络的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0058]优选地,所述多个网络的数量信息与所述GPU所支持的独立工作流的数量相适应。具体地,GPU的每个独立工作流上可以相应地运行一个网络,由于每个独立工作流不会互相阻塞,因此多个网络可以在各自的独立工作流上并行运行,由此,多个网络的数量受到所述GPU所支持的独立工作流的数量的约束,需小于或等于GPU所支持的独立工作流的数量。所述独立工作流的数量受到GPU本身架构以及所支持通用计算标准的约束,具体地,GPU需要有独立核心流处理器的硬件架构,同时需要支持至少一种GPU的通用计算标准如Nvidia的CUDA、Khronos的OpenCL、AMD的Stream等,例如,例如Nvidia所生产的GPU从开普勒架构都可以支持硬件队列独立工作且不互相阻塞,即允许CUDA流独占一个硬件工作队列,从而形成独立工作流,每个独立工作流对应一个网络可充分利用GPU的硬件资源,并提高卷积神经网络的处理速度。
[0059]接着,在步骤S2中设备I将所述卷积神经网络所对应的训练图片数据分配至所述多个网络。具体地,这一功能可由一个数据分配器完成,具体地,数据分配器功能可以由一个函数实现,即给予在同一GPU上卷积神经网络的多个网络分配该卷积神经网络所获取的图片数据,从而使得每个网络均获取可供训练的图片数据。数据分配函数将需要训练的图片数据划分成若干部分,创建图片数据指针并给每个指针分配一个分别指向所分的若干部分图片数据的地址,使得每个获得图片数据的网络均分得并维护一个图片数据指针。优选地,所述卷积神经网络所对应的训练图片数据由CPU获取,数据分配器可以分配CPU内存中的地址,也可以分配GPU的显存中的地址。前者图片数据指针指向CPU内存中的地址,各网络实例分别从图片数据指针所指向的CHJ地址中将图片数据直接拷贝至GPU显存。如图2所示,后者卷积神经网络框架先将所有数据从内存拷贝至GHJ显存,图片数据指针指向GPU显存中的地址,数据分配器再从显存中拷贝至各网络实例。
[0060]本领域技术人员应能理解上述数据分配器分配图片数据的方式仅为举例,其他现有的或今后可能出现的数据分配器分配图片数据的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0061]在步骤S3中设备I对所述多个网络按所分配的所述训练图片数据进行并行训练处理。其中,所述的多个网络是并存在卷积神经网络中,同时可以独立运行且不会互相干扰,从而使得所述多个网络可以进行并行训练处理。具体地,对卷积神经网络框架的代码进行修改,例如,以卷积神经网络框架caf f e为例,修改caf f e的代码,从而允许caf f e程序运行时可以存在多个网络实例。同时,每个网络实例均单独保存一份网络权值数据,以及前向传播和反向传播过程中所需的数据,使得所述多个网络实例可以独立运行。因此在所述多个网络初始化并分别获取训练图片数据后,可在各独立运行的网络中进行卷积神经网络的前向传播计算以及后向传播计算,从而对图片数据进行训练处理。多个网络在同一 GHJ上对图片数据进行并行训练处理,可以提升同一时间内GPU的计算资源利用率,同时提升卷积神经网络对图片数据的处理速度。
[0062]本领域技术人员应能理解上述多个网络并行训练图片数据的方式仅为举例,其他现有的或今后可能出现的多个网络并行训练图片数据的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0063]在步骤S4中设备I根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。其中,所述多个网络在分别进行训练处理的过程中根据反向传播所得偏差以及前向传播所得的结果,来计算网络权值偏差,并将每一层的网络权值偏差保存,根据每一层网络权值的偏差对卷积神经网络参数信息进行更新。因为所述多个网络独立运行不互相阻塞的,在经过一次训练后所有的网络可以分别单独进行更新,或者因为所述多个网络开始使用的是同一套参数进行初始化的,且训练处理是并行进行地,所以所述多个网络在运行时间基本一致的情况下也可以进行统一的误差更新,例如一次训练完结束的时间偏差都小于某一设定阈值,此时可以对多个网络进行统一更新。
[0064]优选地,所述训练图片数据中的图片满足单通道像素尺寸小于等于32*32。在同一GPU上并行运行一个卷积神经网络的多个网络,可提高GPU的利用率,同时使得卷积神经网络在图片处理尤其是在满足一定条件的小图片识别的过程中计算速度和收敛速度大幅度提升,尤其训练图片数据中的图片满足单通道像素尺寸在小于等于32x32时,所述卷积神经网络识别图片的速度有显著提升。
[0065]优选地,所述多个网络中每一个都独占所述GPU中的一个硬件队列,其中,所述将所述卷积神经网络所对应的训练图片数据分配至所述多个网络包括:将所述卷积神经网络所对应的训练图片数据经所述硬件队列分配至所述多个网络。
[0066]具体地,所述多个网络独立运行的基础需要有相应的可以独立运行的硬件进行支撑,以Nvidia所生产开普勒架构之后支持CUDA运行的GPU为例,在同一 GPU上可以允许每个独立工作流独占一个硬件队列,在此基础上同一GPU上的多个网络实例均可维护一个独立工作流属性,该属性可以决定该网络实例在训练时在哪个独立工作流所对应的硬件队列上运行,即所分配的训练图片数据实例在调用某一层负责计算的操作系统核心时,可以给该操作系统核心输入一个关于具体在哪个独立工作流上执行的参数,相应的就可以在该独立工作流对应的网络进行训练图片传输或者是其它计算。据此,所述训练图片数据经由图片数据指针调用至对应网络时即经过相应的硬件队列传输至相应网络。同一 GPU上每个网络独占一个硬件队列是多网络同GPU并行计算的基础,保证了各网络运行不相互干扰,从而可以充分利用(PU资源,提升各网络的运行效率。
[0067]本领域技术人员应能理解上述调用独立工作流的方式仅为举例,其他现有的或今后可能出现的调用独立工作流的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0068]优选地,所述将所述卷积神经网络所对应的训练图片数据分配至所述多个网络包括:将所述卷积神经网络所对应的训练图片数据按所述多个网络的数量分成多个训练图片子集;将每个训练图片子集传输至对应的所述网络。具体地,分配训练图片数据的可以是一个函数,这个函数将图片数据分为与所述多个网络数量相适应的若干份,在所述多个网络运行需要对图片数据处理时,通过指向所对应部分的图片数据地址的指针对图片数据进行调用,此时图片数据藉由独立工作流传送至相对应的所述网络。将训练图片数据分为对应统一 GPU上多个网络数量的若干份并传送至各网络,可使得各网络可以同时处理一批训练图片数据,从而在并行运行时提高GPU的资源使用率。
[0069]进一步地,任两个所述训练图片子集中的图片数量的差值低于预定的图片分配阈值。其中,预定的图片分配阈值可以尽可能的小,从而使得所分配给所述多个网络中的图片数量基本一致,从而达到平均分配的效果,例如,在同一 GPU上卷积神经网络的网络一共有4个,训练图片一共有120张,若预定图片分配阈值设置为0,则每个网络所分得的图片为30张,若预定图片分配阈值设置为10,则每个网络所分得的图片可以为27、33、30、25。预定的图片分配阈值可以很好的控制分配至各个网络的图片数量,使其在图片总数与网络总数的比值附近波动,从而使得各网络在进行图片数据训练处理时的时间基本保持一致,从而提高了同一段时间内GPU的资源利用率,也使得所述多个网络基本保持同步运行。
[0070]在一个优选的实施例中(参照图1),所述网络包括多个计算层,其中,所述对所述多个网络按所分配的所述训练图片数据进行并行训练处理包括:对所述多个网络按所分配的所述训练图片数据进行并行训练处理,其中,所述多个网络的训练处理按所述计算层保持同步。
[0071]具体地,在卷积神经网络中所有的多个计算层在所述的多个网络中也同时都具有,每个网络在对所分配到的图片数据进行并行训练处理时,使得所述多个网络在每个计算层的数据处理保持同步,可以使得所有网络的每一个计算层的都可以选择在计算时所有网络可以同时充分调动GPU上的资源,例如,在资源富裕的情况下某一时间可以允许三个相同的计算同时进行,此时如果计算层不同步可能只有一个计算在进行,从而造成了计算资源的浪费。优选地,在采用可以实现数据并行的网络更新权值算法时,所有网络可以同步得出相应计算层的计算结果,从而在一次训练中正向和反向传播的过程中进行误差的叠加,因为所有网络初始化是使用的同一套参数,在同步计算的情况下,可以将叠加的误差对所有网络实现同步更新,从而实现了所有网络的权值共享,若计算层不保持同步,所有网络的计算层计算进程进行的不一样,从而无法对权值进行统一更新,增加了计算的复杂度,占用了不必要的计算资源。
[0072]进一步地,所述对所述多个网络按所分配的所述训练图片数据进行并行训练处理还包括:在至少一个所述计算层中将所述多个网络的训练处理合并进行。一般情况下所述多个网络分别在各自独立工作流上计算可以提高处理效率,但是在具体训练处理的计算过程中存在将所述多个网络同一计算层的数据计算合并会得到更快的计算速度。因为所述多个网络在每个计算层的数据处理保持同步,因此在这样的数据处理模式基础上,可将符合条件的某个计算层中所述多个网络的数据进行合并处理,例如,在处理卷积神经网络中常见的矩阵运算过程中,相乘的两个矩阵越接近方阵计算效率越高,若所述各网络独立计算则会出长条形矩阵相乘从而造成效率低下,将卷积神经网络的多个网络的同一计算层的矩阵计算进行合并会得到接近方阵的矩阵,从而使得卷积神经网络数据处理速度有所提高。
[0073]本领域技术人员应能理解上述在计算层中合并处理多个网络训练的方式仅为举例,其他现有的或今后可能出现的在计算层中合并处理多个网络训练的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0074]更优选地,所述对所述多个网络按所分配的所述训练图片数据进行并行训练处理还包括:根据所述多个网络的训练处理过程中所述GHJ的利用率,确定所述多个网络在下一个所述计算层中的训练处理方式。具体地,接上文所述在所述多个网络并行处理训练图片数据的过程中采取合并处理可改变卷积神经网络的计算效率,因此选择所述多个网络在某个计算层选择是在同一个或几个独立工作流上共同或分组计算,或者各自分别子在某个独立工作流上互相不干扰的独立计算可以根据上层相似的计算层在计算时或者历史数据中相应计算层的GPU利用率来确定,从而使得卷积神经网络在处理训练图片数据时更加灵活高效,也更好的应用技术上已有的针对卷积神经网络的优化,例如,在某一计算层中已有的技术优化显示合并所有网络的数据计算会得到最高的GPU利用率或者计算速度,则此时可以让所有网络的该层操作系统内核调用同一个独立工作流,从而使得所有网络顺序执行而获得最优的计算速度和资源利用率。
[0075]优选地,所述根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息包括:根据所述网络在每一所述计算层中的误差信息,确定所述所述网络经训练处理后的误差信息;根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。
[0076]具体地,可在卷积神经网络框架中增加多个网络实例一起更新的功能,如图3所示所有网络实例根据不同的数据都各自在不同的独立工作流上完成前向传播和反向传播过程后,此更新功能将所有网络实例对应层的权值偏差都相加,由此确定所述网络经训练后的误差信息,然后利用误差信息来更新所有网络。因为在训练开始时,所有网络都使用同一权值进行初始化,因此经过一次训练以后所有网络实例一起更新且更新的权值偏差都一样,就可以确保所有网络实际上还是对同一网络权值进行训练,而区别仅在于各个网络实例所用来训练使用的数据不同,例如,卷积神经网络的输入数据为datal+data2,让datal+data2全部输入到卷积神经网络中进行训练,得到网络权值的误差信息为delta_Wl+delta_w2,因为卷积神经网络更新方法可以可以进行数据并行,即若只输入datal,则可得到更新量delta_wl,若只输入data2,则得到更新量delta_w2,这样两个网络分开计算以后,只要把更新量加起来即delta_Wl+delta_W2,那么得到的结果就和一次性将所有数据都输入得到的结果一样,因此将误差信息统一对卷积神经网络进行参数更新可以使得数据并行,从而提升卷积神经网络处理图片数据的速度。
[0077]优选地,如图5所示的多GPU并行的方案中,所述方法还包括:步骤S5(未示出),其中,在步骤S5中设备I向对应参数服务器上传所述卷积神经网络的参数信息。步骤S6(未示出),其中,在步骤S6中设备I接收所述参数服务器返回的、基于不同GPU上传的所述卷积神经网络的参数信息所更新的所述卷积神经网络的参数信息。其中,所述参数服务器用于对不同GPU中的卷积神经网络的参数信息进行更新并反馈,从而达到多个GPU参数信息同步更新使得多GHJ并行的效果。
[0078]具体地,在所述多GPU并行的方案中每个GPU均有多个网络并存在同一卷积神经网络中,可以独立运行且不会互相干扰,因此,在每个GHJ中多个网络并行训练处理,且在训练处理过程中根据网络训练处理后的误差信息统一进行参数信息的更新,在此,每个GPU中的参数信息更新是基于与多个GPU共同进行数据交互的参数服务器所反馈的信息进行的。例如图5所示的权值更新,是通过权值更新器完成,其中,每个GPU中的所述权值更新器与CPU中央处理器中的参数服务器进行数据交互,由每个GPU中的权值更新器上传所述参数服务器在数据交互的过程中根据每个GHJ上的权值更新计算的权值矩阵对权值进行更新。
[0079]优选地,每个GPU中的权值矩阵在进行完一次训练过程后,将权值矩阵上传到CPU中的参数服务器中,参数服务器中一直维护着一份全局的最新的权值矩阵,在接收到某一GPU的计算结果后,进行更新,并将更新完成后的权值矩阵传回给对应的GPU,进行下一次的训练。具体参数服务器是如何根据每个GPU的计算结果来进行更新全局权值矩阵的算法,不同的实现不尽相同。
[0080]本领域技术人员应能理解上述多GPU并行进行神经网络图片识别的方式仅为举例,其他现有的或今后可能出现的多GPU并行进行神经网络图片识别的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0081]本领域技术人员应能理解上述多个网络实例一起更新的方式仅为举例,其他现有的或今后可能出现的多个网络实例一起更新的方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0082]对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此夕卜,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
【主权项】
1.一种对用于图片识别的卷积神经网络进行训练的方法,包括: 根据用于图片识别的卷积神经网络的参数信息初始化同一 GHJ上所述卷积神经网络的多个网络; 将所述卷积神经网络所对应的训练图片数据分配至所述多个网络; 对所述多个网络按所分配的所述训练图片数据进行并行训练处理; 根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。2.根据权利要求1所述的方法,其中,所述多个网络中每一个都独占所述GHJ中的一个硬件队列; 其中,所述将所述卷积神经网络所对应的训练图片数据分配至所述多个网络包括: 将所述卷积神经网络所对应的训练图片数据经所述硬件队列分配至所述多个网络。3.根据权利要求1所述的方法,其中,所述将所述卷积神经网络所对应的训练图片数据分配至所述多个网络包括: 将所述卷积神经网络所对应的训练图片数据按所述多个网络的数量分成多个训练图片子集; 将每个训练图片子集传输至对应的所述网络。4.根据权利要求3所述的方法,其中,任两个所述训练图片子集中的图片数量的差值低于预定的图片分配阈值。5.根据权利要求1至4中任一项所述的方法,其中,所述网络包括多个计算层; 其中,所述对所述多个网络按所分配的所述训练图片数据进行并行训练处理包括: 对所述多个网络按所分配的所述训练图片数据进行并行训练处理,其中,所述多个网络的训练处理按所述计算层保持同步。6.根据权利要求5所述的方法,其中,所述对所述多个网络按所分配的所述训练图片数据进行并行训练处理还包括: 在至少一个所述计算层中将所述多个网络的训练处理合并进行。7.根据权利要求5所述的方法,其中,所述根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息包括: 根据所述网络在每一所述计算层中的误差信息,确定所述所述网络经训练处理后的误差?目息; 根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。8.根据权利要求5所述的方法,其中,所述对所述多个网络按所分配的所述训练图片数据进行并行训练处理还包括: 根据所述多个网络的训练处理过程中所述GPU的利用率,确定所述多个网络在下一个所述计算层中的训练处理方式。9.根据权利要求1所述的方法,其中,所述多个网络的数量信息与所述GPU所支持的独立工作流的数量相适应。10.根据权利要求1所述的方法,其中,所述训练图片数据中的图片满足单通道像素尺寸小于等于32*32。11.根据权利要求1所述的方法,其中,所述方法还包括: 向对应参数服务器上传所述卷积神经网络的参数信息; 接收所述参数服务器返回的、基于不同GPU上传的所述卷积神经网络的参数信息所更新的所述卷积神经网络的参数信息。12.—种对用于图片识别的卷积神经网络进行训练的设备,其中,该设备包括: 第一装置,用于根据用于图片识别的卷积神经网络的参数信息初始化同一GPU上所述卷积神经网络的多个网络; 第二装置,用于将所述卷积神经网络所对应的训练图片数据分配至所述多个网络; 第三装置,用于对所述多个网络按所分配的所述训练图片数据进行并行训练处理; 第四装置,用于根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数?目息O13.根据权利要求12所述的设备,其中,所述多个网络中每一个都独占所述GPU中的一个硬件队列; 其中,所述第二装置用于: 将所述卷积神经网络所对应的训练图片数据经所述硬件队列分配至所述多个网络。14.根据权利要求12所述的设备,其中,所述第二装置用于: 将所述卷积神经网络所对应的训练图片数据按所述多个网络的数量分成多个训练图片子集; 将每个训练图片子集传输至对应的所述网络。15.根据权利要求14所述的设备,其中,任两个所述训练图片子集中的图片数量的差值低于预定的图片分配阈值。16.根据权利要求12至15中任一项所述的设备,其中,所述网络包括多个计算层; 其中,所述第三装置用于: 对所述多个网络按所分配的所述训练图片数据进行并行训练处理,其中,所述多个网络的训练处理按所述计算层保持同步。17.根据权利要求16所述的设备,其中,所述第三装置还用于: 在至少一个所述计算层中将所述多个网络的训练处理合并进行。18.根据权利要求16所述的设备,其中,所述第四装置用于: 根据所述网络在每一所述计算层中的误差信息,确定所述所述网络经训练处理后的误差?目息; 根据所述网络经训练处理后的误差信息更新所述卷积神经网络的参数信息。19.根据权利要求16所述的设备,其中,所述第三装置还用于: 根据所述多个网络的训练处理过程中所述GPU的利用率,确定所述多个网络在下一个所述计算层中的训练处理方式。20.根据权利要求12所述的设备,其中,所述多个网络的数量信息与所述GHJ所支持的独立工作流的数量相适应。21.根据权利要求12所述的设备,其中,所述训练图片数据中的图片满足单通道像素尺寸小于等于32*32。22.根据权利要求12所述的设备,其中,所述设备还包括: 第五装置,用于向对应参数服务器上传所述卷积神经网络的参数信息; 第六装置,用于接收所述参数服务器返回的、基于不同GPU上传的所述卷积神经网络的参数信息所更新的所述卷积神经网络的参数信息。
【文档编号】G06T1/20GK106056529SQ201610203216
【公开日】2016年10月26日
【申请日】2016年4月1日 公开号201610203216.7, CN 106056529 A, CN 106056529A, CN 201610203216, CN-A-106056529, CN106056529 A, CN106056529A, CN201610203216, CN201610203216.7
【发明人】王琤, 贾喆
【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1