CN109255439B - 一种多个gpu并行的dnn模型训练方法和装置 - Google Patents

一种多个gpu并行的dnn模型训练方法和装置 Download PDF

Info

Publication number
CN109255439B
CN109255439B CN201710564223.4A CN201710564223A CN109255439B CN 109255439 B CN109255439 B CN 109255439B CN 201710564223 A CN201710564223 A CN 201710564223A CN 109255439 B CN109255439 B CN 109255439B
Authority
CN
China
Prior art keywords
input data
mean
global
data
gpu
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
Application number
CN201710564223.4A
Other languages
English (en)
Other versions
CN109255439A (zh
Inventor
龚轶凡
靳江明
苏磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Tusimple Technology Co Ltd
Original Assignee
Beijing Tusimple Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Tusimple Technology Co Ltd filed Critical Beijing Tusimple Technology Co Ltd
Priority to CN201710564223.4A priority Critical patent/CN109255439B/zh
Publication of CN109255439A publication Critical patent/CN109255439A/zh
Application granted granted Critical
Publication of CN109255439B publication Critical patent/CN109255439B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Processing (AREA)

Abstract

本发明公开一种多个GPU并行的DNN模型训练方法和装置,用于解决现有技术中多个GPU并行训练DNN模型时存在的训练精度低的问题。该方法包括:在前向传播处理过程中,接收前向BN输入数据子集;确定全局前向BN输入数据均值集合;根据全局前向BN输入数据均值集合,对前向BN输入数据子集进行前向BN处理,得到前向BN输出数据子集;在后向传播处理过程中,接收后向BN输入数据子集;确定全局后向BN输入数据均值集合;根据全局后向BN输入数据均值集合、后向BN输入数据子集和全局前向BN数据均值集合,对前向BN输入数据子集进行后向BN处理,得到前向BN输入数据子集中每个数据的梯度。

Description

一种多个GPU并行的DNN模型训练方法和装置
技术领域
本发明涉及信息处理领域,特别涉及一种多个图形处理单元(GraphicsProcessing Unit,GPU)并行的深度神经网络(Deep Neutral Network,DNN)模型训练方法和装置。
背景技术
目前在对图片进行分类和分割的深度学习中,会进行DNN模型训练。现有技术中存在一种多个GPU并行训练的方法。将一张或多张图片的数据(或称为全局数据)按照GPU的数量分为多个数据子集,并将这多个数据子集对应分配给多个GPU,各GPU使用分配的数据子集对DNN模型进行训练,以提高训练的效率。具体地在实际处理的过程中,在一个训练周期内,***将获得的一批训练数据(data batch)(例如多张图片)按照已有的GPU卡数目,分成相应份数的数据子集(sub batch),并将数据子集分发给对应的GPU卡。在训练时,每一块GPU卡上会预先加载一套完整的待训练的DNN模型,再使用分配到的数据子集去训练该DNN模型。
由于每块GPU获得的数据不同,就会导致不同GPU卡训练出来的DNN模型权重的梯度存在差异。
这种情况下会进行模型同步操作,即将不同GPU上训练出来的梯度进行归约合并,确定得到相同的梯度,再用该归约合并得到的梯度去更新每块GPU上的模型权重。
通过上述方案,多GPU并行训练DNN模型的效率提高了,但是整体训练的精度下降了,并且在GPU的数量越多时,精度下降的越明显。
发明内容
鉴于上述问题,本发明提供了一种多个GPU并行的DNN模型训练方法和装置,用以解决现有技术中多个GPU并行训练DNN模型时存在的训练精度低的问题。
根据本申请的一个方面,一些实施例中提供了一种多个GPU并行的DNN模型训练方法,包括:多个GPU中的一个GPU在对分配到的数据子集进行DNN模型训练时,在前向传播处理过程中,接收前向归一化(BN)输入数据子集;确定全局前向BN输入数据均值集合;根据所述全局前向BN输入数据均值集合,对所述前向BN输入数据子集进行前向BN处理,得到前向BN输出数据子集;
在后向传播处理过程中,接收后向BN输入数据子集,所述后向BN输入数据子集是所述前向BN输出数据子集的梯度集合;确定全局后向BN输入数据均值集合;根据所述全局后向BN输入数据均值集合、所述后向BN输入数据子集和所述全局前向BN数据均值集合,对所述前向BN输入数据子集进行后向BN处理,得到所述前向BN输入数据子集中每个数据的梯度。
根据本申请的一个方面,一些实施例中提供了一种多GPU并行的DNN模型训练装置,所述装置设置在多个GPU的每个GPU中,所述装置包括:前向归一化(BN)处理单元,用于在前向传播处理过程中,接收前向BN输入数据子集;确定全局前向BN输入数据均值集合;根据所述全局前向BN输入数据均值集合,对所述前向BN输入数据子集进行前向BN处理,得到前向BN输出数据子集;后向BN处理单元,用于在后向传播处理过程中,接收后向BN输入数据子集,所述后向BN输入数据子集是所述前向BN输出数据子集的梯度集合;确定全局后向BN输入数据均值集合;根据所述全局后向BN输入数据均值集合、所述后向BN输入数据子集和所述全局前向BN数据均值集合,对所述前向BN输入数据子集进行后向BN处理,得到所述前向BN输入数据子集中每个数据的梯度。
通过本申请实施例提供的方法和装置,多个GPU并行训练DNN模型时,在前向BN处理过程中引入了全局前向BN输入数据的均值集合,在后向BN处理过程中引入了全局后向BN输入数据的均值集合,能够弥补GPU未获得全部数据进行DNN模型训练的缺陷,能够基于全局数据的均值情况进行前向BN处理和后向BN处理、得到与单个GPU进行全局数据训练时的相似的全局梯度、提高训练精度,从而能够解决现有技术中多个GPU并行训练时训练精度低的问题。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
图1a为现有技术中多个GPU并行的DNN模型训练的示意图;
图1b为现有技术中多个GPU并行的DNN模型训练的训练精度和检验精度图;
图2为本申请实施例提供的多个GPU并行的DNN模型训练方法的流程图;
图3a为图2中步骤201的一种处理流程图;
图3b为图2中步骤201的一种处理流程图;
图3c为图2中步骤201的一种处理流程图;
图4a为图2中步骤202的一种处理流程图;
图4b为图2中步骤202的一种处理流程图;
图4c为图2中步骤202的一种处理流程图;
图5为本申请实施例提供的多个GPU并行的DNN模型训练装置的结构框图;
图6为实施图2所示方法的模型训练精度图;
图7为实施图2所示方法的模型检验精度图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
在现有技术中,在进行多GPU并行训练DNN模型时,由于每个GPU分配到的数据子集是全局数据的一部分,使用数据子集训练DNN会导致不同GPU训练出来的模型权重的梯度存在差异,此时将不同GPU上训练出来的梯度进行归约合并,得到相同的梯度,再用该梯度去更新每个GPU上的模型权重,会导致多GPU并行训练的模型的精度比单GPU时训练的精度要低,而且在GPU的数量越多时,精度下降的越明显。
本申请的发明人在解决上述技术问题的过程中,发现多GPU并行的DNN模型训练方法中,归一化(Batch Normalization,BN)层进行数据间操作,主要对该GPU上进入BN层的数据子集(即BN层输入数据子集)计算全部数据的均值和方差,再使用该均值和方差对数据子集中的每个数据进行归一化处理。具体如图1a所示,多个GPU包括GPU 0、GPU 1和GPU 2,GPU0、GPU 1和GPU 2分别使用分配到的数据子集Sub Batch 0、Sub Batch 1和Sub Batch 2对其内预载的DNN模型进行训练,在前向处理过程中,对进入BN层的数据子集进行BN处理,在后向处理之后将不同GPU上训练出来的梯度进行归约合并,确定得到相同的梯度,再用该确定得到的梯度去更新每块GPU上的模型权重。
但是在前向处理的过程中,由于每个GPU上的数据子集只是全局数据的一部分,各个GPU之间的数据存在差异,BN层中计算出来的数据子集的均值和方差都不一样,使用均值和方差对每个数据进行归一化处理,进一步扩大了各GPU上的数据的局部性,从而导致各GPU计算出的梯度方向并非全局下降方向、以及训练精度低的问题。如图1b所示,3个GPU并行的DNN模型训练精度(如图1b中细实线所示)相比于单GPU对全局数据进行DNN模型训练时的精度(如图1b中粗实线所示)下降了7%左右,而3个GPU并行的检验精度(如图1b中细虚线所示)比单GPU时的检验精度(如图1b中粗实线所示)下降了15%左右。当GPU数量进一步增加时,精度会进一步下降。
针对该问题,在本申请实施例提供的方法中,多个GPU并行训练DNN模型时,在进行前向传播处理的过程中,对全局前向BN输入数据确定全局前向BN输入数据均值集合,并根据该全局前向BN输入数据均值集合,对进入BN层的前向BN输入数据子集进行前向BN处理,并且在后向BN处理过程中,将前向BN处理输出的数据子集的梯度集合作为后向BN的输入,并对全局后向BN输入数据确定全局后向BN输入数据均值集合,根据该全局后向BN输入数据均值集合对前向BN输入数据子集进行后向BN处理,确定得到前向BN输入数据的梯度;由于在前向BN处理过程中引入了全局前向BN输入数据的均值集合,在后向BN处理过程中引入了全局后向BN输入数据的均值集合,能够弥补GPU未获得全部数据进行DNN模型训练的缺陷,能够基于全局数据的均值情况进行前向BN处理和后向BN处理、得到与单个GPU进行全局数据训练时的相似的全局梯度、提高训练精度,从而能够解决现有技术中多个GPU并行训练DNN模型时训练精度低的问题。
下面对本申请实施例提供的方法和装置进行详细说明。
实施例一
参见图2,本申请实施例提供了一种多个GPU并行的DNN模型训练方法,该方法的处理流程包括:
步骤201,多个GPU中的一个GPU在对分配到的数据子集进行DNN模型训练时,在前向传播处理过程中,接收前向归一化(BN)输入数据子集;确定全局前向BN输入数据均值集合;根据所述全局前向BN输入数据均值集合,对所述前向BN输入数据子集进行前向BN处理,得到前向BN输出数据子集;
步骤202,在后向传播处理过程中,接收后向BN输入数据子集,所述后向BN输入数据子集是所述前向BN输出数据子集的梯度集合;确定全局后向BN输入数据均值集合;根据所述全局后向BN输入数据均值集合、所述后向BN输入数据子集和所述全局前向BN数据均值集合,对所述前向BN输入数据子集进行后向BN处理,得到所述前向BN输入数据子集中每个数据的梯度。
本申请提供的方法在前向传播处理过程中,根据确定的全局前向BN输入数据均值集合,对前向BN输入数据子集进行前向BN处理,在后向传播处理过程中,根据确定的全局后向BN输入数据均值集合、后向BN输入数据子集和全局前向BN数据均值集合,对所述前向BN输入数据子集进行后向BN处理,能够弥补GPU没有获得全部数据进行DNN模型训练的缺陷,能够基于全局数据的均值情况进行前向BN处理和后向BN处理、得到与单个GPU进行全局数据训练时的相似的全局梯度、提高训练精度,从而能够解决现有技术中多个GPU并行训练DNN模型时存在的训练精度低的问题。
下面对前向传播处理过程中的前向BN处理和后向传播处理过程中的后向BN处理进行详细说明。
本发明实施例中,前述步骤201中,确定全局前向BN输入数据均值集合具体可通过但不仅限于以下两种方式实现:
方式1、多个GPU中,选取一个GPU作为主GPU,其他GPU为从GPU,由主GPU确定全局前向BN输入数据均值集合,并将该全局前向BN输入数据均值集合发送给其他各从GPU,从GPU无需再独立计算全局前向BN输入数据均值集合。
方式2、多个GPU不分主从,每个GPU分别独立确定全局前向BN输入数据均值集合。
基于方式1,当GPU为主GPU时,确定全局前向BN输入数据均值集合可通过以下步骤A1~步骤A4实现:
步骤A1、主GPU根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
步骤A2、接收来自其它各从GPU的前向BN输入数据子集均值集合;
步骤A3、根据所述主GPU的前向BN输入数据子集均值集合和其它各从GPU的前向BN输入数据子集均值集合,确定全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;
步骤A4、将所述全局前向BN输入数据均值集合发送给其它各从GPU。
基于方式1,当GPU为从GPU时,确定全局前向BN输入数据均值集合可通过以下步骤B1~步骤B3实现:
步骤B1、从GPU根据所述前向BN输入数据子集确定所述从GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
步骤B2、将所确定的前向BN输入数据子集均值集合发送给多个GPU中的主GPU;
步骤B3、接收来自所述主GPU的所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值。
基于方式2,确定全局前向BN输入数据均值集合可通过以下步骤C1~步骤C3实现:
步骤C1、根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
步骤C2、将所述GPU的前向BN输入数据子集均值集合发送给其它GPU;
步骤C3、接收来自其它各GPU的前向BN输入数据子集均值集合;
步骤C4、根据所述GPU的前向BN输入数据子集均值集合和其它各GPU的前向BN输入数据子集均值集合,确定所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值。
其中步骤A1、步骤B1和步骤C1的实现方式相同。其中方式1、方式2中,GPU根据多个GPU的输入数据子集均值集合确定所述全局前向BN输入数据均值集合的方式也相同。
以下针对前述方式1中的主GPU、方式1中的从GPU以及方式2中的每个GPU,前述步骤201的具体实现进行详细的描述,分别参见图3a、图3b和图3c。
图3a示出了图2中步骤201的详细处理过程,包括如下的处理流程:
步骤2011,接收前向BN输入数据子集,该前向BN输入数据子集为在前向传播处理过程中输入到BN层的数据子集,具体可表示为Bi={xi,j}(j=1,2,…mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量;
步骤2012,在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述前向BN输入数据子集确定所述主GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000091
确定所述前向BN输入数据子集的均值,根据公式
Figure BDA0001347897140000092
确定所述前向BN输入数据子集的平方均值;
其中,μi为所述GPU为第i个GPU时的前向BN输入数据子集的均值,vi为所述GPU为第i个GPU时的前向BN输入数据子集的平方均值;
在本申请的其实实施例中,也可以根据其它方法来确定前向BN输入数据子集的均值和平方均值,这些方法对于本领域普通技术人员而言是熟知的,在这里不再赘述;
步骤2013,接收来自其它各从GPU的前向BN输入数据子集均值集合;
步骤2014,根据所述主GPU的前向BN输入数据子集均值集合和其它各从GPU的前向BN输入数据子集均值集合,确定全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;并将所述全局前向BN输入数据均值集合发送给其它各从GPU;
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000093
确定所述全局前向BN输入数据的均值,根据公式
Figure BDA0001347897140000094
确定所述全局前向BN输入数据的平方均值;
其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集中的数据的数量,μi为第i个GPU的前向BN输入数据子集的均值,μ为所述全局前向BN输入数据的均值,vi为第i个GPU的前向BN输入数据子集的平方均值,v为所述全局前向BN输入数据的平方均值;
在本申请的其它实施例中,也可以根据其它方法来确定全局前向BN输入数据的均值和平方均值,本领域普通技术人员可以根据具体的应用场景选择具体的算法,本申请这里不一一列举;
步骤2015,根据所述全局前向BN输入数据的均值和平方均值,确定全局前向BN输入数据的方差;
在本申请的一些实施例中,可以根据公式σ2=v-μ2确定所述全局前向BN输入数据的方差,其中,σ2为所述全局前向BN输入数据的方差,v和μ如步骤2014中所示,分别为所述全局前向BN输入数据的平方均值和均值;
在本申请的其它实施例中,也可以根据其它方法来确定全局前向BN输入数据的方差,本领域技术人员可以根据具体的应用场景选择具体的算法,本申请这里不一一列举;
步骤2016,根据所述全局前向BN输入数据的方差对所述前向BN输入数据子集中的每个数据进行前向BN操作,得到前向BN后数据子集;
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000101
对所述前向BN输入数据子集中的每个数据进行前向BN操作,其中,如上所述xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差,ε为固定的极小非零值、防止除零情况的发生,
Figure BDA0001347897140000102
为所述前向BN后数据子集中的数据;
步骤2017,对所述前向BN后数据子集中每个数据进行偏移操作,得到所述前向BN输出数据子集。
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000103
对所述前向BN后数据子集中每个数据进行偏移操作,其中,γ、β为偏移参数,
Figure BDA0001347897140000104
为所述前向BN后数据子集中的数据,yi,j为所述前向BN输出数据子集中的数据。
在上述前向传播处理过程中,GPU确定全局前向BN输入数据均值和平方均值,对前向BN输入数据子集进行的基于全局前向BN输入数据均值和平方均值的BN处理,能够弥补GPU未获得全部数据进行前向BN处理的缺陷,能够基于全局数据的均值情况进行前向BN处理。
图3a所示的处理过程描述了多个GPU中的主GPU的前向BN处理工作原理,从GPU的前向BN处理工作原理与主GPU的前向BN处理工作原理的区别在于上述步骤2012-2014,其它处理过程与图3a所示的步骤2011和2015-2017相同,下面参考图3b对从GPU的前向BN处理处理过程进行说明,图3b中与图3a中相同的处理步骤不再赘述。
步骤2011,接收前向BN输入数据子集;
步骤2012’,在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述前向BN输入数据子集确定所述从GPU的前向BN输入数据子集均值集合;确定前向BN输入数据子集均值集合的方法与步骤2012相同,这里不再赘述;
步骤2013’,将所确定的前向BN输入数据子集均值集合发送给多个GPU中的主GPU;
步骤2014’,接收来自所述主GPU的所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;
步骤2015,根据所述全局前向BN输入数据的均值和平方均值,确定全局前向BN输入数据的方差;
步骤2016,根据所述全局前向BN输入数据的方差对所述前向BN输入数据子集中的每个数据进行前向BN操作,得到前向BN后数据子集;
步骤2017,对所述前向BN后数据子集中每个数据进行偏移操作,得到所述前向BN输出数据子集。
在多个GPU分为主/从GPU的情况下,由主GPU确定全局前向BN输入数据均值集合,从GPU接收主GPU所确定的全局前向BN输入数据均值集合,能够节省从GPU的处理资源。
在本申请的其它一些实施例中,也可以不区分主/从GPU,每个GPU独立确定全局前向BN输入数据均值集合。各独立GPU的前向BN处理工作原理与主GPU的前向BN处理工作原理的区别在于上述步骤2012-2014,其它处理过程与图3a所示的步骤2011和2015-2017相同,下面参考图3c对各GPU的处理过程进行说明,图3c中与图3a中相同的处理步骤不再赘述。
步骤2011,接收前向BN输入数据子集;
步骤2012”,根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合;确定前向BN输入数据子集均值集合的方法与步骤2012相同,这里不再赘述;
步骤2013”,将所确定的前向BN输入数据子集均值集合发送给其它各GPU;接收来自其它各GPU的前向BN输入数据子集均值集合;
步骤2014”,根据所述GPU的前向BN输入数据子集均值集合和其它各GPU的前向BN输入数据子集均值集合,确定所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;确定全局前向BN输入数据均值集合的方法与步骤2014相同,这里不再赘述;
步骤2015,根据所述全局前向BN输入数据的均值和平方均值,确定全局前向BN输入数据的方差;
步骤2016,根据所述全局前向BN输入数据的方差对所述前向BN输入数据子集中的每个数据进行前向BN操作,得到前向BN后数据子集;
步骤2017,对所述前向BN后数据子集中每个数据进行偏移操作,得到所述前向BN输出数据子集。
在多个GPU中的各个GPU为独立GPU的情况下,各GPU分别各自确定全局前向BN输入数据均值集合,各GPU之间的操作独立性高,不依赖于其它GPU的处理结果。
下面对后向传播处理过程的BN处理进行说明。
本发明实施例中,前述步骤202中,确定全局后向BN输入数据均值集合具体可通过但不仅限于以下两种方式实现:
方式1、多个GPU中,选取一个GPU作为主GPU,其他GPU为从GPU,由主GPU确定全局后向BN输入数据均值集合,并将该全局后向BN输入数据均值集合发送给其他各从GPU,从GPU无需再独立计算全局后向BN输入数据均值集合。
方式2、多个GPU不分主从,每个GPU分别独立确定全局后向BN输入数据均值集合。
方式1中主GPU确定全局后向BN输入数据均值集合可通过以下的步骤D1~D4实现:
步骤D1、主GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述主GPU的后向BN输入数据子集均值集合,所述后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
步骤D2、接收来自其它各从GPU的后向BN输入数据子集均值集合;
步骤D3、根据所述主GPU的后向BN输入数据子集均值集合和其它各从GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值;
步骤D4、将所述全局后向BN输入数据均值集合发送给其它各从GPU。
方式1中从GPU确定全局后向BN输入数据均值集合可通过以下的步骤E1~E3实现:
步骤E1、所述从GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述从GPU的后向BN输入数据子集均值集合,所述从GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
步骤E2、将所确定的后向BN输入数据子集均值集合发送给多个GPU中的主GPU;
步骤E3、接收来自所述主GPU的全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
方式2中各GPU可通过以下步骤F1~F4实现:
步骤F1、所述GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述GPU的后向BN输入数据子集均值集合,所述GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
步骤F2、将所述GPU的后向BN输入数据子集均值集合发送给其它各GPU;
步骤F3、接收来自其它各GPU的后向BN输入数据子集均值集合;
步骤F4、根据所述GPU的后向BN输入数据子集均值集合和其它各GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
其中步骤D1、步骤E1和步骤F1的实现方式相同。其中方式1、方式2中,GPU根据多个GPU的后向BN输入数据子集均值集合确定所述全局前向BN输入数据均值集合的方式也相同。
以下针对前述方式1中的主GPU、方式1中的从GPU以及方式2中的每个GPU,前述步骤202的具体实现进行详细的描述,分别参见图4a、图4b和图4c。
图4a示出了图2中步骤202的详细处理过程,包括如下的处理流程:
步骤2021,接收后向BN输入数据子集,该后向BN输入数据子集是上述步骤2017中确定得到的前向BN输入数据子集的梯度集合,具体可表示为
Figure BDA0001347897140000141
Gi为所述GPU为第i个GPU时的后向BN输入数据子集,
Figure BDA0001347897140000142
是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,
Figure BDA0001347897140000151
为yi,j的梯度、也即后向BN输入数据子集中的数据;
步骤2022,在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述主GPU的后向BN输入数据子集均值集合,所述后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000152
确定所述后向BN输入数据子集均值,其中,
Figure BDA0001347897140000153
为所述GPU为第i个GPU时的后向BN输入数据子集均值;
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000154
确定所述前向BN梯度校正数据均值,其中,φi为所述GPU为第i个GPU时的前向BN梯度校正数据均值;
步骤2023,接收来自其它各从GPU的后向BN输入数据子集均值集合;
步骤2024,根据所述主GPU的后向BN输入数据子集均值集合和其它各从GPU的后向BN输入数据子集均值集合,确定全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值;将所述全局后向BN输入数据子集均值集合发送给其它各从GPU;
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000155
确定所述全局后向BN输入数据均值,其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集的数据的数量,
Figure BDA0001347897140000156
为第i个GPU的前向BN输出数据子集梯度均值,
Figure BDA0001347897140000157
为所述全局后向BN输入数据均值;
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000158
确定所述全局前向BN梯度校正数据均值,其中,φi为第i个GPU的前向BN梯度校正数据均值,φ为所述全局前向BN梯度校正数据均值;
步骤2025,根据所述后向BN输入数据子集确定所述前向BN后数据子集中每个数据的梯度;
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000161
确定所述前向BN后数据子集中每个数据的梯度,其中,
Figure BDA00013478971400001613
是预定的损失函数,γ为偏移参数,
Figure BDA0001347897140000162
为所述前向BN后数据子集中数据
Figure BDA0001347897140000163
的梯度;
步骤2026,根据所述全局前向BN输入数据均值集合、全局后向BN输入数据均值和全局前向BN梯度校正数据均值,确定所述全局前向BN输入数据的方差的梯度;
在本申请的一些实施例中,根据公式
Figure BDA0001347897140000164
Figure BDA0001347897140000165
确定所述全局前向BN输入数据的方差的梯度,其中,σ2为全局前向BN输入数据的方差,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,
Figure BDA0001347897140000166
为所述全局前向BN输出数据梯度均值,γ为偏移参数,
Figure BDA0001347897140000167
为所述全局前向BN输入数据的方差的梯度;
步骤2027,根据所述全局前向BN输入数据均值集合、所述全局前向BN梯度校正数据均值确定全局前向BN输入数据均值的梯度;
在本申请的一些实施例中,根据公式
Figure BDA0001347897140000168
确定所述全局前向BN输入数据均值的梯度,其中,σ2为全局前向BN输入数据的方差,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,γ为偏移参数,
Figure BDA0001347897140000169
是所述全局前向BN输入数据均值的梯度;
步骤2028,根据所述前向BN后数据子集中每个数据的梯度、所述全局前向BN输入数据的方差的梯度、所述全局前向BN输入数据均值的梯度、所述全局前向BN输入数据均值集合和所述全局前向BN输入数据的均值,确定所述前向BN输入数据子集中每个数据的梯度;
在本申请的一些实施例中,根据公式
Figure BDA00013478971400001610
Figure BDA00013478971400001611
确定所述前向BN输入数据子集中每个数据的梯度,其中,
Figure BDA00013478971400001612
为上述步骤2025中确定的前向BN后数据子集中每个数据的梯度,σ2为全局前向BN输入数据的方差,ε为固定的极小非零值,
Figure BDA0001347897140000171
为上述步骤2026中确定的全局前向BN输入数据的方差的梯度,
Figure BDA0001347897140000172
是上述步骤2027中确定的全局前向BN输入数据均值的梯度,
Figure BDA0001347897140000173
是所述前向BN输入数据子集中的数据xi,j的梯度。
在上述后向传播处理过程中,将前向BN处理后输出的前向BN输出数据子集的梯度集合作为后向BN处理的输入,GPU确定全局后向BN输入数据均值集合,基于全局前向BN输入数据均值集合以及全局后向BN输入数据均值集合,对前向BN输入数据子集进行后向BN处理,能够弥补GPU未获得全部数据进行DNN模型训练的缺陷,能够基于全局数据的均值情况进行前向BN处理和后向BN处理,得到与单GPU进行全局数据训练时相似的数据的全局梯度,对模型训练的精度能够达到与单GPU对全局数据进行训练时的相似的精度;从而本申请提出的多GPU并行的DNN模型训练方法能够解决现有技术中存在的多个GPU并行训练DNN模型时存在的训练精度低的问题。
图4a所示的处理过程描述了多个GPU中的主GPU的后向BN处理工作原理,从GPU的后向BN处理工作原理与主GPU的后向BN处理工作原理的区别在于上述步骤2022-2024,其它处理过程与图4a所示的步骤2011和2025-2028相同,下面参考图4b对从GPU的后向BN处理处理过程进行说明,图4b中与图4a中相同的处理步骤不再赘述。
步骤2021,接收后向BN输入数据子集;
步骤2022’,在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述从GPU的后向BN输入数据子集均值集合,所述从GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
步骤2023’,将所确定的后向BN输入数据子集均值集合发送给多个GPU中的主GPU;
步骤2024’,接收来自所述主GPU的全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值;
步骤2025,根据所述后向BN输入数据子集确定所述前向BN后数据子集中每个数据的梯度;
步骤2026,根据所述全局前向BN输入数据均值集合、全局后向BN输入数据均值和全局前向BN梯度校正数据均值,确定所述全局前向BN输入数据的方差的梯度;
步骤2027,根据所述全局前向BN输入数据均值集合、所述全局前向BN梯度校正数据均值确定全局前向BN输入数据均值的梯度;
步骤2028,根据所述前向BN后数据子集中每个数据的梯度、所述全局前向BN输入数据的方差的梯度、所述全局前向BN输入数据均值的梯度、所述全局前向BN输入数据均值集合和所述全局前向BN输入数据的均值,确定所述前向BN输入数据子集中每个数据的梯度。
在多个GPU分为主/从GPU的情况下,由主GPU确定全局后向BN输入数据均值集合,从GPU接收主GPU所确定的全局后向BN输入数据均值集合,能够节省从GPU的处理资源。
在本申请的其它一些实施例中,也可以不区分主/从GPU,每个GPU独立确定全局后向BN输入数据均值集合。各独立GPU的后向BN处理工作原理与主GPU的后向BN处理工作原理的区别在于上述步骤2022-2024,其它处理过程与图4a所示的步骤2021和2025-2028相同,下面参考图4c对各GPU的处理过程进行说明,图4c中与图4a中相同的处理步骤不再赘述。
步骤2021,接收后向BN输入数据子集;
步骤2022”,所述GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述GPU的后向BN输入数据子集均值集合,所述GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
步骤2023”,将所述GPU的后向BN输入数据子集均值集合发送给其它各GPU;接收来自其它各GPU的后向BN输入数据子集均值集合;
步骤2024”,根据所述GPU的后向BN输入数据子集均值集合和其它各GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值;
步骤2025,根据所述后向BN输入数据子集确定所述前向BN后数据子集中每个数据的梯度;
步骤2026,根据所述全局前向BN输入数据均值集合、全局后向BN输入数据均值和全局前向BN梯度校正数据均值,确定所述全局前向BN输入数据的方差的梯度;
步骤2027,根据所述全局前向BN输入数据均值集合、所述全局前向BN梯度校正数据均值确定全局前向BN输入数据均值的梯度;
步骤2028,根据所述前向BN后数据子集中每个数据的梯度、所述全局前向BN输入数据的方差的梯度、所述全局前向BN输入数据均值的梯度、所述全局前向BN输入数据均值集合和所述全局前向BN输入数据的均值,确定所述前向BN输入数据子集中每个数据的梯度。
在多个GPU中的各个GPU为独立GPU的情况下,各GPU分别各自确定全局后向BN输入数据均值集合,各GPU之间的操作独立性高,不依赖于其它GPU的处理结果。
在图2至图4c所示处理方法的基础上,本申请实施例提供的多GPU并行的DNN模型训练方法还进一步地包括如下处理:根据全局前向BN输入数据的均值集合和全局后向BN输入数据均值集合,确定BN层训练参数的梯度,所述训练参数包括上述的偏移参数γ和β。
在本申请的一些实施例中,可以根据公式
Figure BDA0001347897140000201
确定偏移参数γ的梯度,根据公
Figure BDA0001347897140000202
确定偏移参数β的梯度,其中,
Figure BDA0001347897140000203
为所述GPU为第i个GPU时的偏移参数γ的梯度,
Figure BDA0001347897140000204
为所述GPU为第i个GPU时的偏移参数β的梯度。
确定出偏移参数γ和β的梯度后,可以利用该确定的梯度和梯度下降算法来更新γ和β的值,达到优化DNN模型的目的。
下面对本申请实施例提供的多个GPU并行的DNN模型训练装置进行说明,该装置设置于多个GPU中的每个GPU中,该GPU对分配到的数据子集进行DNN模型训练,图5示出了该装置的结构框图,该装置包括:前向BN处理单元51和后向BN处理单元52。
前向BN处理单元51,用于在前向传播处理过程中,接收前向BN输入数据子集;确定全局前向BN输入数据均值集合;根据所述全局前向BN输入数据均值集合,对所述前向BN输入数据子集进行前向BN处理,得到前向BN输出数据子集;
其中,在本申请的一些实施例中,所述前向BN处理单元51确定全局前向BN输入数据均值集合,包括:在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;接收来自其它各从GPU的前向BN输入数据子集均值集合;根据所述主GPU的前向BN输入数据子集均值集合和其它各从GPU的前向BN输入数据子集均值集合,确定全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;将所述全局前向BN输入数据均值集合发送给其它各从GPU。
在本申请的另一些实施例中,所述前向BN处理单元确定全局前向BN输入数据均值集合,包括:在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述前向BN输入数据子集确定所述从GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;将所确定的前向BN输入数据子集均值集合发送给多个GPU中的主GPU;接收来自所述主GPU的所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值。
在本申请的另一些实施例中,所述前向BN处理单元51确定全局前向BN输入数据均值集合,包括:根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;将所述GPU的前向BN输入数据子集均值集合发送给其它GPU;接收来自其它各GPU的前向BN输入数据子集均值集合;根据所述GPU的前向BN输入数据子集均值集合和其它各GPU的前向BN输入数据子集均值集合,确定所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值。
所述前向BN处理单元51确定所述GPU的前向BN输入数据子集均值集合,包括:根据公式
Figure BDA0001347897140000211
确定所述前向BN输入数据子集的均值,其中,Βi={xi,j}(j=1,2,…mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μi为所述GPU为第i个GPU时的前向BN输入数据子集的均值;根据公式
Figure BDA0001347897140000221
确定所述前向BN输入数据子集的平方均值,其中,νi为所述GPU为第i个GPU时的前向BN输入数据子集的平方均值。
所述前向BN处理单元51确定全局前向BN输入数据均值集合,包括:根据公式
Figure BDA0001347897140000222
确定所述全局前向BN输入数据的均值,其中,n为所述多个GPU的数量,μi为第i个GPU的前向BN输入数据子集的均值,mi为第i个GPU的前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值;据公式
Figure BDA0001347897140000223
确定所述全局前向BN输入数据的平方均值,其中,νi为第i个GPU的前向BN输入数据子集的平方均值,ν为所述全局前向BN输入数据的平方均值。
所述前向BN处理单元51对所述前向BN输入数据子集进行前向BN处理,包括:根据所述全局前向BN输入数据的均值和平方均值,对所述前向BN输入数据子集中的每个数据进行前向BN操作,得到前向BN后数据子集;对所述前向BN后数据子集中每个数据进行偏移操作,得到所述前向BN输出数据子集。
所述前向BN处理单元51对所述前向BN输入数据子集中的每个数据进行前向BN操作,包括:
根据公式σ2=ν-μ2确定所述全局前向BN输入数据的方差,其中,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差;
根据公式
Figure BDA0001347897140000224
对所述前向BN输入数据子集中的每个数据进行前向BN操作,其中,Βi={xi,j}(j=1,2,…mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差,ε为固定的极小非零值,
Figure BDA0001347897140000231
为所述前向BN后数据子集中的数据。
所述前向BN处理单元51对所述前向BN后数据子集中每个数据进行偏移操作,包括:根据公式
Figure BDA0001347897140000232
对所述前向BN后数据子集中每个数据进行偏移操作,其中,γ、β为偏移参数,
Figure BDA0001347897140000233
为所述前向BN后数据子集中的数据,yi,j为所述前向BN输出数据子集中的数据。
所述前向BN处理单元51,还用于:将所述全局前向BN输入数据均值集合发送给其它各GPU;或者,将所述GPU的前向BN输入数据子集均值集合发送给其它各GPU。
后向BN处理单元52,用于在后向传播处理过程中,接收后向BN输入数据子集,所述后向BN输入数据子集是所述前向BN处理单元51进行前向BN处理后、得到的前向BN输出数据子集的梯度集合;确定全局后向BN输入数据均值集合;根据所述全局后向BN输入数据均值集合、所述后向BN输入数据子集和所述全局前向BN数据均值集合,对所述前向BN输入数据子集进行后向BN处理,得到所述前向BN输入数据子集中每个数据的梯度。
其中,所述后向BN处理单元52确定全局后向BN输入数据均值集合,包括:在所述GPU为多个GPU中的主GPU的情况下,根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述主GPU的后向BN输入数据子集均值集合,所述后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;接收来自其它各从GPU的后向BN输入数据子集均值集合;根据所述主GPU的后向BN输入数据子集均值集合和其它各从GPU的后向BN输入数据子集均值集合,确定全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值;将所述全局后向BN输入数据均值集合发送给其它各从GPU。
在本申请的一些实施例中,所述后向BN处理单元52确定全局后向BN输入数据均值集合,包括:在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述从GPU的后向BN输入数据子集均值集合,所述从GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;将所确定的后向BN输入数据子集均值集合发送给多个GPU中的主GPU;接收来自所述主GPU的全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
在本申请的另一些实施例中,所述后向BN处理单元确定全局后向BN输入数据均值集合,包括:所述GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述GPU的后向BN输入数据子集均值集合,所述GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;将所述GPU的后向BN输入数据子集均值集合发送给其它各GPU;接收来自其它各GPU的后向BN输入数据子集均值集合;根据所述GPU的后向BN输入数据子集均值集合和其它各GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
所述后向BN处理单元52确定所述GPU的后向BN输入数据子集均值集合,包括:根据公式
Figure BDA0001347897140000241
确定所述后向BN输入数据子集均值,其中,
Figure BDA0001347897140000251
为所述GPU为第i个GPU时的后向BN输入数据子集,
Figure BDA0001347897140000259
是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,
Figure BDA0001347897140000252
为yi,j的梯度,
Figure BDA0001347897140000253
为所述GPU为第i个GPU时的后向BN输入数据子集均值;根据公式
Figure BDA0001347897140000254
确定所述前向BN梯度校正数据均值,其中,Βi={xi,j}(j=1,2,…mi)为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,φi为所述GPU为第i个GPU时的前向BN梯度校正数据均值。
所述后向BN处理单元52确定所述全局后向BN输入数据子集均值集合,包括:根据公式
Figure BDA0001347897140000255
确定所述全局后向BN输入数据均值,其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集的数据的数量,
Figure BDA0001347897140000256
为第i个GPU的前向BN输出数据子集梯度均值,
Figure BDA0001347897140000257
为所述全局后向BN输入数据均值;根据公式
Figure BDA0001347897140000258
确定所述全局前向BN梯度校正数据均值,其中,φi为第i个GPU的前向BN梯度校正数据均值,φ为所述全局前向BN梯度校正数据均值。
所述后向BN处理单元52对所述前向BN输入数据子集进行后向BN处理,包括:根据所述后向BN输入数据子集确定所述前向BN后数据子集中每个数据的梯度;根据所述全局前向BN输入数据均值集合、全局后向BN输入数据均值和全局前向BN梯度校正数据均值,确定所述全局前向BN输入数据的方差的梯度;根据所述全局前向BN输入数据均值集合、所述全局前向BN梯度校正数据均值确定全局前向BN输入数据均值的梯度;根据所述前向BN后数据子集中每个数据的梯度、所述全局前向BN输入数据的方差的梯度、所述全局前向BN输入数据均值的梯度、所述全局前向BN输入数据均值集合和所述全局前向BN输入数据的均值,确定所述前向BN输入数据子集中每个数据的梯度。
所述后向BN处理单元52确定所述前向BN后数据子集中每个数据的梯度,包括:根据公式
Figure BDA0001347897140000261
确定所述前向BN后数据子集中每个数据的梯度,其中,
Figure BDA0001347897140000262
为所述GPU为第i个GPU时的后向BN输入数据子集,
Figure BDA00013478971400002612
是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,
Figure BDA0001347897140000263
为yi,j的梯度,γ为偏移参数,
Figure BDA0001347897140000264
为所述前向BN后数据子集中数据
Figure BDA0001347897140000265
的梯度。
所述后向BN处理单元52确定全局前向BN输入数据的方差的梯度,包括:根据公式
Figure BDA0001347897140000266
确定所述全局前向BN输入数据的方差的梯度,其中,σ2为全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,
Figure BDA0001347897140000267
为所述全局前向BN输出数据梯度均值,γ为偏移参数,
Figure BDA0001347897140000268
为所述全局前向BN输入数据的方差的梯度。
所述后向BN处理单元52确定全局前向BN输入数据均值的梯度,包括:根据公式
Figure BDA0001347897140000269
确定所述全局前向BN输入数据均值的梯度,其中,σ2为全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,γ为偏移参数,
Figure BDA00013478971400002610
是所述全局前向BN输入数据均值的梯度。
所述后向BN处理单元52确定所述前向BN输入数据子集中每个数据的梯度,包括:根据公式
Figure BDA00013478971400002611
确定所述前向BN输入数据子集中每个数据的梯度,其中,
Figure BDA0001347897140000271
为所述前向BN后数据子集中每个数据的梯度,σ2为全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,
Figure BDA0001347897140000272
为所述全局前向BN输入数据的方差的梯度,
Figure BDA0001347897140000273
是所述全局前向BN输入数据均值的梯度,
Figure BDA0001347897140000274
是所述前向BN输入数据子集中的数据xi,j的梯度。
所述后向BN处理单元52,还用于:根据全局前向BN输入数据的均值集合和全局后向BN输入数据均值集合,确定BN层训练参数的梯度,所述BN层训练参数包括偏移参数γ和β。
所述后向BN处理单元52可以根据如下公式
Figure BDA0001347897140000275
确定偏移参数γ的梯度,其中,φ为所述全局前向BN梯度校正数据均值,μ为所述全局前向BN输入数据的均值,
Figure BDA00013478971400002710
为所述全局前向BN输出数据梯度均值,σ2为全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,
Figure BDA0001347897140000276
为所述GPU为第i个GPU时的偏移参数γ的梯度。
所述后向BN处理单元52可以根据如下公式
Figure BDA0001347897140000277
确定偏移参数β的梯度,其中,
Figure BDA0001347897140000278
为所述全局前向BN输出数据梯度均值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,
Figure BDA0001347897140000279
为所述GPU为第i个GPU时的偏移参数β的梯度。
通过图5所示的装置,在后向传播处理过程中,根据确定的全局后向BN输入数据均值集合、后向BN输入数据子集和全局前向BN数据均值集合,对所述前向BN输入数据子集进行后向BN处理,能够进一步弥补数据不全导致的数据差异扩大的问题;从而能够得到与单个GPU进行全局数据训练时的相似的梯度、多个GPU之间一致的数据梯度、提高训练精度,从而能够解决现有技术中多个GPU并行训练DNN模型时,由于各GPU之间数据梯度不一致导致存在的训练精度低的问题。
下面对本申请实施例提供的多个GPU并行的DNN模型训练方法在实际应用中的情况进行说明。
在具体应用的过程中,可以将图2、图3a和图4a所示的处理过程结合到深度学习训练框架MXNet中,实现完整的可执行的技术方案。MXNet的***设计可分为C++层和Python层。C++层主要负责任务调度,内存优化,计算图形优化等***级功能,Python层主要功能是封装完整的训练过程,并提供与用户交互的接口。在MXNet中,传统Python层的训练过程如下:
Figure BDA0001347897140000281
在实际实现的过程中,对C++层和Python层都会有所修改,修改后可以正常调用Python接口,应用本申请实施例提供的多个GPU并行的DNN模型训练方法后,Python层的训练过程如下:
Figure BDA0001347897140000282
Figure BDA0001347897140000291
实施上述处理后,可以明显的提高训练精度和检验精度,图6示出了3个GPU并行训练和单个GPU训练的训练精度对比情况,其中,可以显著地发现应用本申请提供的多个GPU的并行训练方法的训练精度(如图6中实线所示的3GPU并行全局数据训练精度)接近于单GPU全局数据训练时的训练精度(如图6中粗虚线所示的单GPU训练精度),而现有技术中的多GPU并行训练时的训练精度(如图6中细虚线所示的3GPU并行局部数据训练精度)则明显要低于单GPU全局数据训练时的训练精度。图7示出了3个GPU并行训练和单个GPU训练的检验精度对比情况,其中,应用本申请提供的多个GPU的并行训练方法的检验精度(如图7中虚线所示的3GPU并行全局数据检验精度)接近于单GPU全局数据训练时的检验精度(如图7中粗实线所示的单GPU检验精度),而现有技术中的多GPU并行训练时的检验精度(如图7中细实线所示的3GPU并行局部数据检验精度)则明显要低于单GPU全局数据训练时的检验精度。从图中可以看出应用本申请实施例提供的方法训练的模型精度,可以达到与单GPU训练时相似的精度,并且比现有技术中多GPU并行训练的方法训练的模型精度提高15%左右。
以上是本发明的核心思想,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (44)

1.一种多个图形处理单元并行的深度神经网络模型训练方法,其特征在于,包括:
多个图形处理单元GPU中的一个GPU在对分配到的数据子集进行DNN模型训练时,在前向传播处理过程中,接收前向归一化BN输入数据子集;确定全局前向BN输入数据均值集合;根据所述全局前向BN输入数据均值集合,对所述前向BN输入数据子集进行前向BN处理,得到前向BN输出数据子集;所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;
在后向传播处理过程中,接收后向BN输入数据子集,所述后向BN输入数据子集是所述前向BN输出数据子集的梯度集合;确定全局后向BN输入数据均值集合;根据所述全局后向BN输入数据均值集合、所述后向BN输入数据子集和所述全局前向BN输入数据均值集合,对所述前向BN输入数据子集进行后向BN处理,得到所述前向BN输入数据子集中每个数据的梯度,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
2.根据权利要求1所述的方法,其特征在于,确定全局前向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
接收来自其它各从GPU的前向BN输入数据子集均值集合;
根据所述主GPU的前向BN输入数据子集均值集合和其它各从GPU的前向BN输入数据子集均值集合,确定全局前向BN输入数据均值集合;
将所述全局前向BN输入数据均值集合发送给其它各从GPU。
3.根据权利要求2所述的方法,其特征在于,确定前向BN输入数据子集均值集合,包括:
根据公式
Figure FDA0002821074520000021
确定所述前向BN输入数据子集的均值,其中,Bi={xi,j}(j=1,2,...mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μi为所述GPU为第i个GPU时的前向BN输入数据子集的均值;
根据公式
Figure FDA0002821074520000022
确定所述前向BN输入数据子集的平方均值,其中,νi为所述GPU为第i个GPU时的前向BN输入数据子集的平方均值。
4.根据权利要求2所述的方法,其特征在于,确定全局前向BN输入数据均值集合,包括:
根据公式
Figure FDA0002821074520000023
确定所述全局前向BN输入数据的均值,其中,n为所述多个GPU的数量,μi为第i个GPU的前向BN输入数据子集的均值,mi为第i个GPU的前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值;
根据公式
Figure FDA0002821074520000024
确定所述全局前向BN输入数据的平方均值,其中,νi为第i个GPU的前向BN输入数据子集的平方均值,ν为所述全局前向BN输入数据的平方均值。
5.根据权利要求2所述的方法,其特征在于,对所述前向BN输入数据子集进行前向BN处理,包括:
根据所述全局前向BN输入数据的均值和平方均值,对所述前向BN输入数据子集中的每个数据进行前向BN操作,得到前向BN后数据子集;
对所述前向BN后数据子集中每个数据进行偏移操作,得到所述前向BN输出数据子集。
6.根据权利要求5所述的方法,其特征在于,对所述前向BN输入数据子集中的每个数据进行前向BN操作,包括:
根据公式σ2=ν-μ2确定全局前向BN输入数据的方差,其中,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差;
根据公式
Figure FDA0002821074520000031
对所述前向BN输入数据子集中的每个数据进行前向BN操作,其中,Bi={xi,j}(j=1,2,...mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差,ε为固定的极小非零值,
Figure FDA0002821074520000034
为所述前向BN后数据子集中的数据。
7.根据权利要求5所述的方法,其特征在于,对所述前向BN后数据子集中每个数据进行偏移操作,包括:
根据公式
Figure FDA0002821074520000032
对所述前向BN后数据子集中每个数据进行偏移操作,其中,γ、β为偏移参数,
Figure FDA0002821074520000033
为所述前向BN后数据子集中的数据,yi,j为所述前向BN输出数据子集中的数据。
8.根据权利要求1所述的方法,其特征在于,确定全局前向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述前向BN输入数据子集确定所述从GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
将所确定的前向BN输入数据子集均值集合发送给多个GPU中的主GPU;
接收来自所述主GPU的所述全局前向BN输入数据均值集合。
9.根据权利要求1所述的方法,其特征在于,确定全局前向BN输入数据均值集合,包括:
根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
将所述GPU的前向BN输入数据子集均值集合发送给其它GPU;
接收来自其它各GPU的前向BN输入数据子集均值集合;
根据所述GPU的前向BN输入数据子集均值集合和其它各GPU的前向BN输入数据子集均值集合,确定所述全局前向BN输入数据均值集合。
10.根据权利要求5所述的方法,其特征在于,确定全局后向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述主GPU的后向BN输入数据子集均值集合,所述后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
接收来自其它各从GPU的后向BN输入数据子集均值集合;
根据所述主GPU的后向BN输入数据子集均值集合和其它各从GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合;
将所述全局后向BN输入数据均值集合发送给其它各从GPU。
11.根据权利要求10所述的方法,其特征在于,确定所述GPU的后向BN输入数据子集均值集合,包括:
根据公式
Figure FDA0002821074520000041
确定所述后向BN输入数据子集均值,其中,
Figure FDA0002821074520000042
为所述GPU为第i个GPU时的后向BN输入数据子集,l是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,
Figure FDA0002821074520000043
为yi,j的梯度,
Figure FDA0002821074520000044
为所述GPU为第i个GPU时的后向BN输入数据子集均值;
根据公式
Figure FDA0002821074520000045
确定所述前向BN梯度校正数据均值,其中,Bi={xi,j}(j=1,2,...mi)为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,φi为所述GPU为第i个GPU时的前向BN梯度校正数据均值。
12.根据权利要求10所述的方法,其特征在于,确定所述全局后向BN输入数据子集均值集合,包括:
根据公式
Figure FDA0002821074520000051
确定所述全局后向BN输入数据均值,其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集的数据的数量,
Figure FDA0002821074520000054
为第i个GPU的前向BN输出数据子集梯度均值,
Figure FDA0002821074520000053
为所述全局后向BN输入数据均值;
根据公式
Figure FDA0002821074520000052
确定所述全局前向BN梯度校正数据均值,其中,φi为第i个GPU的前向BN梯度校正数据均值,φ为所述全局前向BN梯度校正数据均值。
13.根据权利要求10所述的方法,其特征在于,对所述前向BN输入数据子集进行后向BN处理,包括:
根据所述后向BN输入数据子集确定所述前向BN后数据子集中每个数据的梯度;
根据所述全局前向BN输入数据均值集合、全局后向BN输入数据均值和全局前向BN梯度校正数据均值,确定所述全局前向BN输入数据的方差的梯度;
根据所述全局前向BN输入数据均值集合、所述全局前向BN梯度校正数据均值确定全局前向BN输入数据均值的梯度;
根据所述前向BN后数据子集中每个数据的梯度、所述全局前向BN输入数据的方差的梯度、所述全局前向BN输入数据均值的梯度、所述全局前向BN输入数据均值集合和所述全局前向BN输入数据的均值,确定所述前向BN输入数据子集中每个数据的梯度。
14.根据权利要求13所述的方法,其特征在于,确定所述前向BN后数据子集中每个数据的梯度,包括:
根据公式
Figure FDA0002821074520000061
确定所述前向BN后数据子集中每个数据的梯度,其中,
Figure FDA0002821074520000062
为所述GPU为第i个GPU时的后向BN输入数据子集,l是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,
Figure FDA0002821074520000063
为yi,j的梯度,γ为偏移参数,
Figure FDA0002821074520000064
为所述前向BN后数据子集中数据
Figure FDA0002821074520000065
的梯度。
15.根据权利要求13所述的方法,其特征在于,确定全局前向BN输入数据的方差的梯度,包括:
根据公式
Figure FDA0002821074520000066
确定所述全局前向BN输入数据的方差的梯度,其中,σ2为所述全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,
Figure FDA0002821074520000067
为所述全局前向BN输出数据梯度均值,γ为偏移参数,
Figure FDA0002821074520000068
为所述全局前向BN输入数据的方差的梯度。
16.根据权利要求13所述的方法,其特征在于,确定全局前向BN输入数据均值的梯度,包括:
根据公式
Figure FDA0002821074520000069
确定所述全局前向BN输入数据均值的梯度,其中,σ2为所述全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,γ为偏移参数,
Figure FDA00028210745200000610
是所述全局前向BN输入数据均值的梯度。
17.根据权利要求13所述的方法,其特征在于,确定所述前向BN输入数据子集中每个数据的梯度,包括:
根据公式
Figure FDA0002821074520000071
确定所述前向BN输入数据子集中每个数据的梯度,其中,
Figure FDA0002821074520000072
为所述前向BN后数据子集中每个数据的梯度,σ2为所述全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,
Figure FDA0002821074520000073
为所述全局前向BN输入数据的方差的梯度,
Figure FDA0002821074520000074
是所述全局前向BN输入数据均值的梯度,
Figure FDA0002821074520000075
是所述前向BN输入数据子集中的数据xi,j的梯度。
18.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据全局前向BN输入数据的均值集合和全局后向BN输入数据均值集合,确定BN层训练参数的梯度,所述BN层训练参数包括偏移参数γ和β。
19.根据权利要求18所述的方法,其特征在于,根据公式
Figure FDA0002821074520000076
mi确定偏移参数γ的梯度,其中,φ为所述全局前向BN梯度校正数据均值,μ为所述全局前向BN输入数据的均值,
Figure FDA0002821074520000077
为所述全局前向BN输出数据梯度均值,σ2为所述全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,
Figure FDA0002821074520000078
为所述GPU为第i个GPU时的偏移参数γ的梯度。
20.根据权利要求18所述的方法,其特征在于,根据公式
Figure FDA0002821074520000079
确定偏移参数β的梯度,其中,
Figure FDA00028210745200000710
为所述全局前向BN输出数据梯度均值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,
Figure FDA00028210745200000711
为所述GPU为第i个GPU时的偏移参数β的梯度。
21.根据权利要求5所述的方法,其特征在于,确定全局后向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述从GPU的后向BN输入数据子集均值集合,所述从GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
将所确定的后向BN输入数据子集均值集合发送给多个GPU中的主GPU;
接收来自所述主GPU的全局后向BN输入数据均值集合。
22.根据权利要求5所述的方法,其特征在于,确定全局后向BN输入数据均值集合,包括:
所述GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述GPU的后向BN输入数据子集均值集合,所述GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
将所述GPU的后向BN输入数据子集均值集合发送给其它各GPU;
接收来自其它各GPU的后向BN输入数据子集均值集合;
根据所述GPU的后向BN输入数据子集均值集合和其它各GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合。
23.一种多个图形处理单元并行的深度神经网络模型训练装置,其特征在于,所述装置设置在多个GPU的每个GPU中,所述装置包括:
前向归一化BN处理单元,用于在前向传播处理过程中,接收前向BN输入数据子集;确定全局前向BN输入数据均值集合;根据所述全局前向BN输入数据均值集合,对所述前向BN输入数据子集进行前向BN处理,得到前向BN输出数据子集;所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;
后向BN处理单元,用于在后向传播处理过程中,接收后向BN输入数据子集,所述后向BN输入数据子集是所述前向BN输出数据子集的梯度集合;确定全局后向BN输入数据均值集合;根据所述全局后向BN输入数据均值集合、所述后向BN输入数据子集和所述全局前向BN输入数据均值集合,对所述前向BN输入数据子集进行后向BN处理,得到所述前向BN输入数据子集中每个数据的梯度,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
24.根据权利要求23所述的装置,其特征在于,所述前向BN处理单元确定全局前向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
接收来自其它各从GPU的前向BN输入数据子集均值集合;
根据所述主GPU的前向BN输入数据子集均值集合和其它各从GPU的前向BN输入数据子集均值集合,确定全局前向BN输入数据均值集合;
将所述全局前向BN输入数据均值集合发送给其它各从GPU。
25.根据权利要求24所述的装置,其特征在于,所述前向BN处理单元确定所述GPU的前向BN输入数据子集均值集合,包括:
根据公式
Figure FDA0002821074520000091
确定所述前向BN输入数据子集的均值,其中,Bi={xi,j}(j=1,2,...mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μi为所述GPU为第i个GPU时的前向BN输入数据子集的均值;
根据公式
Figure FDA0002821074520000092
确定所述前向BN输入数据子集的平方均值,其中,νi为所述GPU为第i个GPU时的前向BN输入数据子集的平方均值。
26.根据权利要求24所述的装置,其特征在于,所述前向BN处理单元确定全局前向BN输入数据均值集合,包括:
根据公式
Figure FDA0002821074520000101
确定所述全局前向BN输入数据的均值,其中,n为所述多个GPU的数量,μi为第i个GPU的前向BN输入数据子集的均值,mi为第i个GPU的前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值;
根据公式
Figure FDA0002821074520000102
确定所述全局前向BN输入数据的平方均值,其中,νi为第i个GPU的前向BN输入数据子集的平方均值,ν为所述全局前向BN输入数据的平方均值。
27.根据权利要求24所述的装置,其特征在于,所述前向BN处理单元对所述前向BN输入数据子集进行前向BN处理,包括:
根据所述全局前向BN输入数据的均值和平方均值,对所述前向BN输入数据子集中的每个数据进行前向BN操作,得到前向BN后数据子集;
对所述前向BN后数据子集中每个数据进行偏移操作,得到所述前向BN输出数据子集。
28.根据权利要求27所述的装置,其特征在于,所述前向BN处理单元对所述前向BN输入数据子集中的每个数据进行前向BN操作,包括:
根据公式σ2=ν-μ2确定所述全局前向BN输入数据的方差,其中,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差;
根据公式
Figure FDA0002821074520000103
对所述前向BN输入数据子集中的每个数据进行前向BN操作,其中,Bi={xi,j}(j=1,2,...mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差,ε为固定的极小非零值,
Figure FDA0002821074520000104
为所述前向BN后数据子集中的数据。
29.根据权利要求27所述的装置,其特征在于,所述前向BN处理单元对所述前向BN后数据子集中每个数据进行偏移操作,包括:
根据公式
Figure FDA0002821074520000111
对所述前向BN后数据子集中每个数据进行偏移操作,其中,γ、β为偏移参数,
Figure FDA0002821074520000112
为所述前向BN后数据子集中的数据,yi,j为所述前向BN输出数据子集中的数据。
30.根据权利要求23所述的装置,其特征在于,所述前向BN处理单元确定全局前向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述前向BN输入数据子集确定所述从GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
将所确定的前向BN输入数据子集均值集合发送给多个GPU中的主GPU;
接收来自所述主GPU的所述全局前向BN输入数据均值集合。
31.根据权利要求23所述的装置,其特征在于,所述前向BN处理单元确定全局前向BN输入数据均值集合,包括:
根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
将所述GPU的前向BN输入数据子集均值集合发送给其它GPU;
接收来自其它各GPU的前向BN输入数据子集均值集合;
根据所述GPU的前向BN输入数据子集均值集合和其它各GPU的前向BN输入数据子集均值集合,确定所述全局前向BN输入数据均值集合。
32.根据权利要求27所述的装置,其特征在于,所述后向BN处理单元确定全局后向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述主GPU的后向BN输入数据子集均值集合,所述后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
接收来自其它各从GPU的后向BN输入数据子集均值集合;
根据所述主GPU的后向BN输入数据子集均值集合和其它各从GPU的后向BN输入数据子集均值集合,确定全局后向BN输入数据均值集合;
将所述全局后向BN输入数据均值集合发送给其它各从GPU。
33.根据权利要求32所述的装置,其特征在于,所述后向BN处理单元确定所述GPU的后向BN输入数据子集均值集合,包括:
根据公式
Figure FDA0002821074520000121
确定所述后向BN输入数据子集均值,其中,
Figure FDA0002821074520000122
为所述GPU为第i个GPU时的后向BN输入数据子集,l是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,
Figure FDA0002821074520000123
为yi,j的梯度,
Figure FDA0002821074520000124
为所述GPU为第i个GPU时的后向BN输入数据子集均值;
根据公式
Figure FDA0002821074520000125
确定所述前向BN梯度校正数据均值,其中,Bi={xi,j}(j=1,2,...mi)为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,φi为所述GPU为第i个GPU时的前向BN梯度校正数据均值。
34.根据权利要求32所述的装置,其特征在于,所述后向BN处理单元确定所述全局后向BN输入数据子集均值集合,包括:
根据公式
Figure FDA0002821074520000126
确定所述全局后向BN输入数据均值,其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集的数据的数量,
Figure FDA0002821074520000128
为第i个GPU的前向BN输出数据子集梯度均值,
Figure FDA0002821074520000129
为所述全局后向BN输入数据均值;
根据公式
Figure FDA0002821074520000127
确定所述全局前向BN梯度校正数据均值,其中,φi为第i个GPU的前向BN梯度校正数据均值,φ为所述全局前向BN梯度校正数据均值。
35.根据权利要求32所述的装置,其特征在于,所述后向BN处理单元对所述前向BN输入数据子集进行后向BN处理,包括:
根据所述后向BN输入数据子集确定所述前向BN后数据子集中每个数据的梯度;
根据所述全局前向BN输入数据均值集合、全局后向BN输入数据均值和全局前向BN梯度校正数据均值,确定所述全局前向BN输入数据的方差的梯度;
根据所述全局前向BN输入数据均值集合、所述全局前向BN梯度校正数据均值确定全局前向BN输入数据均值的梯度;
根据所述前向BN后数据子集中每个数据的梯度、所述全局前向BN输入数据的方差的梯度、所述全局前向BN输入数据均值的梯度、所述全局前向BN输入数据均值集合和所述全局前向BN输入数据的均值,确定所述前向BN输入数据子集中每个数据的梯度。
36.根据权利要求35所述的装置,其特征在于,所述后向BN处理单元确定所述前向BN后数据子集中每个数据的梯度,包括:
根据公式
Figure FDA0002821074520000131
确定所述前向BN后数据子集中每个数据的梯度,其中,
Figure FDA0002821074520000132
为所述GPU为第i个GPU时的后向BN输入数据子集,l是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,
Figure FDA0002821074520000133
为yi,j的梯度,γ为偏移参数,
Figure FDA0002821074520000134
为所述前向BN后数据子集中数据
Figure FDA0002821074520000135
的梯度。
37.根据权利要求35所述的装置,其特征在于,所述后向BN处理单元确定全局前向BN输入数据的方差的梯度,包括:
根据公式
Figure FDA0002821074520000141
确定所述全局前向BN输入数据的方差的梯度,其中,σ2为所述全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,
Figure FDA0002821074520000142
为所述全局前向BN输出数据梯度均值,γ为偏移参数,
Figure FDA0002821074520000143
为所述全局前向BN输入数据的方差的梯度。
38.根据权利要求35所述的装置,其特征在于,所述后向BN处理单元确定全局前向BN输入数据均值的梯度,包括:
根据公式
Figure FDA0002821074520000144
确定所述全局前向BN输入数据均值的梯度,其中,σ2为所述全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,γ为偏移参数,
Figure FDA0002821074520000145
是所述全局前向BN输入数据均值的梯度。
39.根据权利要求35所述的装置,其特征在于,所述后向BN处理单元确定所述前向BN输入数据子集中每个数据的梯度,包括:
根据公式
Figure FDA0002821074520000146
确定所述前向BN输入数据子集中每个数据的梯度,其中,
Figure FDA0002821074520000147
为所述前向BN后数据子集中每个数据的梯度,σ2为所述全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,
Figure FDA0002821074520000148
为所述全局前向BN输入数据的方差的梯度,
Figure FDA0002821074520000149
是所述全局前向BN输入数据均值的梯度,
Figure FDA00028210745200001410
是所述前向BN输入数据子集中的数据xi,j的梯度。
40.根据权利要求32所述的装置,其特征在于,所述后向BN处理单元,还用于:
根据全局前向BN输入数据的均值集合和全局后向BN输入数据均值集合,确定BN层训练参数的梯度,所述BN层训练参数包括偏移参数γ和β。
41.根据权利要求40所述的装置,其特征在于,所述后向BN处理单元根据公式
Figure FDA0002821074520000151
确定偏移参数γ的梯度,其中,φ为所述全局前向BN梯度校正数据均值,μ为所述全局前向BN输入数据的均值,
Figure FDA0002821074520000156
为所述全局前向BN输出数据梯度均值,σ2为所述全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,
Figure FDA0002821074520000152
为所述GPU为第i个GPU时的偏移参数γ的梯度。
42.根据权利要求40所述的装置,其特征在于,所述后向BN处理单元根据公式
Figure FDA0002821074520000153
确定偏移参数β的梯度,其中,
Figure FDA0002821074520000154
为所述全局前向BN输出数据梯度均值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,
Figure FDA0002821074520000155
为所述GPU为第i个GPU时的偏移参数β的梯度。
43.根据权利要求27所述的装置,其特征在于,所述后向BN处理单元确定全局后向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述从GPU的后向BN输入数据子集均值集合,所述从GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
将所确定的后向BN输入数据子集均值集合发送给多个GPU中的主GPU;
接收来自所述主GPU的全局后向BN输入数据均值集合。
44.根据权利要求27所述的装置,其特征在于,所述后向BN处理单元确定全局后向BN输入数据均值集合,包括:
所述GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述GPU的后向BN输入数据子集均值集合,所述GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
将所述GPU的后向BN输入数据子集均值集合发送给其它各GPU;
接收来自其它各GPU的后向BN输入数据子集均值集合;
根据所述GPU的后向BN输入数据子集均值集合和其它各GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合。
CN201710564223.4A 2017-07-12 2017-07-12 一种多个gpu并行的dnn模型训练方法和装置 Active CN109255439B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710564223.4A CN109255439B (zh) 2017-07-12 2017-07-12 一种多个gpu并行的dnn模型训练方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710564223.4A CN109255439B (zh) 2017-07-12 2017-07-12 一种多个gpu并行的dnn模型训练方法和装置

Publications (2)

Publication Number Publication Date
CN109255439A CN109255439A (zh) 2019-01-22
CN109255439B true CN109255439B (zh) 2021-04-02

Family

ID=65050560

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710564223.4A Active CN109255439B (zh) 2017-07-12 2017-07-12 一种多个gpu并行的dnn模型训练方法和装置

Country Status (1)

Country Link
CN (1) CN109255439B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210089887A1 (en) * 2019-09-24 2021-03-25 Apple Inc. Variance-Based Learning Rate Control For Training Machine-Learning Models
CN112328532B (zh) * 2020-11-02 2024-02-09 长沙景嘉微电子股份有限公司 多gpu通信的方法及装置、存储介质、电子装置
CN113011563A (zh) * 2021-03-19 2021-06-22 北京大学 基于gpu的卷积神经网络批归一化处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488662A (zh) * 2013-04-01 2014-01-01 哈尔滨工业大学深圳研究生院 基于图形处理单元的自组织映射神经网络聚类方法及***
CN104036451A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机***有限公司 基于多图形处理器的模型并行处理方法及装置
KR20170012019A (ko) * 2015-07-24 2017-02-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035751B (zh) * 2014-06-20 2016-10-12 深圳市腾讯计算机***有限公司 基于多图形处理器的数据并行处理方法及装置
US10168785B2 (en) * 2015-03-03 2019-01-01 Nvidia Corporation Multi-sensor based user interface
CN106096605B (zh) * 2016-06-02 2019-03-19 史方 一种基于深度学习的图像模糊区域检测方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488662A (zh) * 2013-04-01 2014-01-01 哈尔滨工业大学深圳研究生院 基于图形处理单元的自组织映射神经网络聚类方法及***
CN104036451A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机***有限公司 基于多图形处理器的模型并行处理方法及装置
KR20170012019A (ko) * 2015-07-24 2017-02-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Real-Time US Image Enhancement by Forward-Backward Diffusion Using GPU;M Nieniewski;《Image Processing and Communications Challenges 7》;20150930;第177-186页 *
基于CPU-GPU的条件随机场并行化研究;韩丹;《中国优秀硕士学位论文全文数据库信息科技辑》;20140615;第1-61页 *

Also Published As

Publication number Publication date
CN109255439A (zh) 2019-01-22

Similar Documents

Publication Publication Date Title
CN108964879B (zh) 一种抽签方法、共识方法、设备和存储介质
Pleiss et al. Memory-efficient implementation of densenets
EP3540652A1 (en) Method, device, chip and system for training neural network model
CN109255439B (zh) 一种多个gpu并行的dnn模型训练方法和装置
CN111178542B (zh) 基于机器学习建模的***和方法
US20190114533A1 (en) Machine learning runtime library for neural network acceleration
WO2016119429A1 (zh) 用于神经网络中训练参数集的***和方法
Yang et al. A generalized equilibrium efficient frontier data envelopment analysis approach for evaluating DMUs with fixed-sum outputs
CN110942154A (zh) 基于联邦学习的数据处理方法、装置、设备及存储介质
DE102018127647A1 (de) Systeme und verfahren zum trainieren neuronaler netzwerke auf regression ohne referenzdaten-trainingsmuster
WO2016095068A1 (en) Pedestrian detection apparatus and method
CN106652008A (zh) 一种自动生成网格与着色器多层次细节的方法
CN113239875A (zh) 人脸特征的获取方法、***、装置及计算机可读存储介质
CN114463605B (zh) 基于深度学习的持续学习图像分类方法及装置
US20200125958A1 (en) Training apparatus, training method, inference apparatus, inference method, and non-transitory computer readable medium
CN113706372A (zh) 自动抠图模型建立方法及***
CN110689136A (zh) 一种深度学习模型获得方法、装置、设备及存储介质
CN110852385A (zh) 图像处理方法、装置、设备和存储介质
CN109871942B (zh) 神经网络的训练方法和装置、***、存储介质
MX2021015602A (es) Sistemas y metodos para determinar acciones realizadas por objetos dentro de imagenes.
CN114255353A (zh) 一种基于加权超图模型的页面显著性要素提取方法及***
CN109859111A (zh) 一种基于map方法的单幅图像盲去模糊方法
CN112882835B (zh) 一种机器节点并行处理方法、装置、计算机设备及存储介质
CN113452546A (zh) 深度学习训练通信的动态服务质量管理
CN109636097B (zh) 一种产品设计任务的分配方法及装置

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
TA01 Transfer of patent application right

Effective date of registration: 20200326

Address after: 101300, No. two, 1 road, Shunyi Park, Zhongguancun science and Technology Park, Beijing, Shunyi District

Applicant after: BEIJING TUSENZHITU TECHNOLOGY Co.,Ltd.

Address before: 101300, No. two, 1 road, Shunyi Park, Zhongguancun science and Technology Park, Beijing, Shunyi District

Applicant before: TuSimple

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant