CN109255439A - 一种多个gpu并行的dnn模型训练方法和装置 - Google Patents
一种多个gpu并行的dnn模型训练方法和装置 Download PDFInfo
- Publication number
- CN109255439A CN109255439A CN201710564223.4A CN201710564223A CN109255439A CN 109255439 A CN109255439 A CN 109255439A CN 201710564223 A CN201710564223 A CN 201710564223A CN 109255439 A CN109255439 A CN 109255439A
- Authority
- CN
- China
- Prior art keywords
- input data
- gpu
- forward direction
- mean value
- global
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations 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
技术领域
本发明涉及信息处理领域,特别涉及一种多个图形处理单元(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输入数据子集的均值和平方均值;
在本申请的一些实施例中,可以根据公式确定所述前向BN输入数据子集的均值,根据公式确定所述前向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;
在本申请的一些实施例中,可以根据公式确定所述全局前向BN输入数据的均值,根据公式确定所述全局前向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后数据子集;
在本申请的一些实施例中,可以根据公式对所述前向BN输入数据子集中的每个数据进行前向BN操作,其中,如上所述xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差,ε为固定的极小非零值、防止除零情况的发生,为所述前向BN后数据子集中的数据;
步骤2017,对所述前向BN后数据子集中每个数据进行偏移操作,得到所述前向BN输出数据子集。
在本申请的一些实施例中,可以根据公式对所述前向BN后数据子集中每个数据进行偏移操作,其中,γ、β为偏移参数,为所述前向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输入数据子集的梯度集合,具体可表示为Gi为所述GPU为第i个GPU时的后向BN输入数据子集,是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,为yi,j的梯度、也即后向BN输入数据子集中的数据;
步骤2022,在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述主GPU的后向BN输入数据子集均值集合,所述后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
在本申请的一些实施例中,可以根据公式确定所述后向BN输入数据子集均值,其中,为所述GPU为第i个GPU时的后向BN输入数据子集均值;
在本申请的一些实施例中,可以根据公式确定所述前向BN梯度校正数据均值,其中,φi为所述GPU为第i个GPU时的前向BN梯度校正数据均值;
步骤2023,接收来自其它各从GPU的后向BN输入数据子集均值集合;
步骤2024,根据所述主GPU的后向BN输入数据子集均值集合和其它各从GPU的后向BN输入数据子集均值集合,确定全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值;将所述全局后向BN输入数据子集均值集合发送给其它各从GPU;
在本申请的一些实施例中,可以根据公式确定所述全局后向BN输入数据均值,其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集的数据的数量,为第i个GPU的前向BN输出数据子集梯度均值,为所述全局后向BN输入数据均值;
在本申请的一些实施例中,可以根据公式确定所述全局前向BN梯度校正数据均值,其中,φi为第i个GPU的前向BN梯度校正数据均值,φ为所述全局前向BN梯度校正数据均值;
步骤2025,根据所述后向BN输入数据子集确定所述前向BN后数据子集中每个数据的梯度;
在本申请的一些实施例中,可以根据公式确定所述前向BN后数据子集中每个数据的梯度,其中,是预定的损失函数,γ为偏移参数,为所述前向BN后数据子集中数据的梯度;
步骤2026,根据所述全局前向BN输入数据均值集合、全局后向BN输入数据均值和全局前向BN梯度校正数据均值,确定所述全局前向BN输入数据的方差的梯度;
在本申请的一些实施例中,根据公式 确定所述全局前向BN输入数据的方差的梯度,其中,σ2为全局前向BN输入数据的方差,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,为所述全局前向BN输出数据梯度均值,γ为偏移参数,为所述全局前向BN输入数据的方差的梯度;
步骤2027,根据所述全局前向BN输入数据均值集合、所述全局前向BN梯度校正数据均值确定全局前向BN输入数据均值的梯度;
在本申请的一些实施例中,根据公式确定所述全局前向BN输入数据均值的梯度,其中,σ2为全局前向BN输入数据的方差,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,γ为偏移参数,是所述全局前向BN输入数据均值的梯度;
步骤2028,根据所述前向BN后数据子集中每个数据的梯度、所述全局前向BN输入数据的方差的梯度、所述全局前向BN输入数据均值的梯度、所述全局前向BN输入数据均值集合和所述全局前向BN输入数据的均值,确定所述前向BN输入数据子集中每个数据的梯度;
在本申请的一些实施例中,根据公式 确定所述前向BN输入数据子集中每个数据的梯度,其中,为上述步骤2025中确定的前向BN后数据子集中每个数据的梯度,σ2为全局前向BN输入数据的方差,ε为固定的极小非零值,为上述步骤2026中确定的全局前向BN输入数据的方差的梯度,是上述步骤2027中确定的全局前向BN输入数据均值的梯度,是所述前向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层训练参数的梯度,所述训练参数包括上述的偏移参数γ和β。
在本申请的一些实施例中,可以根据公式确定偏移参数γ的梯度,根据公确定偏移参数β的梯度,其中,为所述GPU为第i个GPU时的偏移参数γ的梯度,为所述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输入数据子集均值集合,包括:根据公式确定所述前向BN输入数据子集的均值,其中,Βi={xi,j}(j=1,2,…mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μi为所述GPU为第i个GPU时的前向BN输入数据子集的均值;根据公式确定所述前向BN输入数据子集的平方均值,其中,νi为所述GPU为第i个GPU时的前向BN输入数据子集的平方均值。
所述前向BN处理单元51确定全局前向BN输入数据均值集合,包括:根据公式确定所述全局前向BN输入数据的均值,其中,n为所述多个GPU的数量,μi为第i个GPU的前向BN输入数据子集的均值,mi为第i个GPU的前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值;据公式确定所述全局前向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输入数据的方差;
根据公式对所述前向BN输入数据子集中的每个数据进行前向BN操作,其中,Βi={xi,j}(j=1,2,…mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差,ε为固定的极小非零值,为所述前向BN后数据子集中的数据。
所述前向BN处理单元51对所述前向BN后数据子集中每个数据进行偏移操作,包括:根据公式对所述前向BN后数据子集中每个数据进行偏移操作,其中,γ、β为偏移参数,为所述前向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输入数据子集均值集合,包括:根据公式确定所述后向BN输入数据子集均值,其中,为所述GPU为第i个GPU时的后向BN输入数据子集,是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,为yi,j的梯度,为所述GPU为第i个GPU时的后向BN输入数据子集均值;根据公式确定所述前向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输入数据子集均值集合,包括:根据公式确定所述全局后向BN输入数据均值,其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集的数据的数量,为第i个GPU的前向BN输出数据子集梯度均值,为所述全局后向BN输入数据均值;根据公式确定所述全局前向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后数据子集中每个数据的梯度,包括:根据公式确定所述前向BN后数据子集中每个数据的梯度,其中,为所述GPU为第i个GPU时的后向BN输入数据子集,是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,为yi,j的梯度,γ为偏移参数,为所述前向BN后数据子集中数据的梯度。
所述后向BN处理单元52确定全局前向BN输入数据的方差的梯度,包括:根据公式确定所述全局前向BN输入数据的方差的梯度,其中,σ2为全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,为所述全局前向BN输出数据梯度均值,γ为偏移参数,为所述全局前向BN输入数据的方差的梯度。
所述后向BN处理单元52确定全局前向BN输入数据均值的梯度,包括:根据公式确定所述全局前向BN输入数据均值的梯度,其中,σ2为全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,γ为偏移参数,是所述全局前向BN输入数据均值的梯度。
所述后向BN处理单元52确定所述前向BN输入数据子集中每个数据的梯度,包括:根据公式确定所述前向BN输入数据子集中每个数据的梯度,其中,为所述前向BN后数据子集中每个数据的梯度,σ2为全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,为所述全局前向BN输入数据的方差的梯度,是所述全局前向BN输入数据均值的梯度,是所述前向BN输入数据子集中的数据xi,j的梯度。
所述后向BN处理单元52,还用于:根据全局前向BN输入数据的均值集合和全局后向BN输入数据均值集合,确定BN层训练参数的梯度,所述BN层训练参数包括偏移参数γ和β。
所述后向BN处理单元52可以根据如下公式确定偏移参数γ的梯度,其中,φ为所述全局前向BN梯度校正数据均值,μ为所述全局前向BN输入数据的均值,为所述全局前向BN输出数据梯度均值,σ2为全局前向BN输入数据的方差,σ2=ν-μ2,ν为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,为所述GPU为第i个GPU时的偏移参数γ的梯度。
所述后向BN处理单元52可以根据如下公式确定偏移参数β的梯度,其中,为所述全局前向BN输出数据梯度均值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,为所述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层的训练过程如下:
在实际实现的过程中,对C++层和Python层都会有所修改,修改后可以正常调用Python接口,应用本申请实施例提供的多个GPU并行的DNN模型训练方法后,Python层的训练过程如下:
实施上述处理后,可以明显的提高训练精度和检验精度,图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输入数据子集中每个数据的梯度。
2.根据权利要求1所述的方法,其特征在于,确定全局前向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
接收来自其它各从GPU的前向BN输入数据子集均值集合;
根据所述主GPU的前向BN输入数据子集均值集合和其它各从GPU的前向BN输入数据子集均值集合,确定全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;
将所述全局前向BN输入数据均值集合发送给其它各从GPU。
3.根据权利要求2所述的方法,其特征在于,确定前向BN输入数据子集均值集合,包括:
根据公式确定所述前向BN输入数据子集的均值,其中,Bi={xi,j}(j=1,2,...mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μi为所述GPU为第i个GPU时的前向BN输入数据子集的均值;
根据公式确定所述前向BN输入数据子集的平方均值,其中,vi为所述GPU为第i个GPU时的前向BN输入数据子集的平方均值。
4.根据权利要求2所述的方法,其特征在于,确定全局前向BN输入数据均值集合,包括:
根据公式确定所述全局前向BN输入数据的均值,其中,n为所述多个GPU的数量,μi为第i个GPU的前向BN输入数据子集的均值,mi为第i个GPU的前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值;
根据公式确定所述全局前向BN输入数据的平方均值,其中,vi为第i个GPU的前向BN输入数据子集的平方均值,v为所述全局前向BN输入数据的平方均值。
5.根据权利要求2所述的方法,其特征在于,对所述前向BN输入数据子集进行前向BN处理,包括:
根据所述全局前向BN输入数据的均值和平方均值,对所述前向BN输入数据子集中的每个数据进行前向BN操作,得到前向BN后数据子集;
对所述前向BN后数据子集中每个数据进行偏移操作操作,得到所述前向BN输出数据子集。
6.根据权利要求5所述的方法,其特征在于,对所述前向BN输入数据子集中的每个数据进行前向BN操作,包括:
根据公式σ2=v-μ2确定全局前向BN输入数据的方差,其中,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差;
根据公式对所述前向BN输入数据子集中的每个数据进行前向BN操作,其中,Bi={xi,j}(j=1,2,...mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差,ε为固定的极小非零值,为所述前向BN后数据子集中的数据。
7.根据权利要求5所述的方法,其特征在于,对所述前向BN后数据子集中每个数据进行偏移操作,包括:
根据公式对所述前向BN后数据子集中每个数据进行偏移操作,其中,γ、β为偏移参数,为所述前向BN后数据子集中的数据,yi,j为所述前向BN输出数据子集中的数据。
8.根据权利要求1所述的方法,其特征在于,确定全局前向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述前向BN输入数据子集确定所述从GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
将所确定的前向BN输入数据子集均值集合发送给多个GPU中的主GPU;
接收来自所述主GPU的所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值。
9.根据权利要求1所述的方法,其特征在于,确定全局前向BN输入数据均值集合,包括:
根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
将所述GPU的前向BN输入数据子集均值集合发送给其它GPU;
接收来自其它各GPU的前向BN输入数据子集均值集合;
根据所述GPU的前向BN输入数据子集均值集合和其它各GPU的前向BN输入数据子集均值集合,确定所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值。
10.根据权利要求5所述的方法,其特征在于,确定全局后向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的主GPU的情况下,所述主GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述主GPU的后向BN输入数据子集均值集合,所述后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
接收来自其它各从GPU的后向BN输入数据子集均值集合;
根据所述主GPU的后向BN输入数据子集均值集合和其它各从GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值;
将所述全局后向BN输入数据均值集合发送给其它各从GPU。
11.根据权利要求10所述的方法,其特征在于,确定所述GPU的后向BN输入数据子集均值集合,包括:
根据公式确定所述后向BN输入数据子集均值,其中,为所述GPU为第i个GPU时的后向BN输入数据子集,l是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,为yi,j的梯度,为所述GPU为第i个GPU时的后向BN输入数据子集均值;
根据公式确定所述前向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输入数据子集均值集合,包括:
根据公式确定所述全局后向BN输入数据均值,其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集的数据的数量,为第i个GPU的前向BN输出数据子集梯度均值,为所述全局后向BN输入数据均值;
根据公式确定所述全局前向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后数据子集中每个数据的梯度,包括:
根据公式确定所述前向BN后数据子集中每个数据的梯度,其中,为所述GPU为第i个GPU时的后向BN输入数据子集,l是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,为yi,j的梯度,γ为偏移参数,为所述前向BN后数据子集中数据的梯度。
15.根据权利要求13所述的方法,其特征在于,确定全局前向BN输入数据的方差的梯度,包括:
根据公式确定所述全局前向BN输入数据的方差的梯度,其中,σ2为所述全局前向BN输入数据的方差,σ2=v-μ2,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,为所述全局前向BN输出数据梯度均值,γ为偏移参数,为所述全局前向BN输入数据的方差的梯度。
16.根据权利要求13所述的方法,其特征在于,确定全局前向BN输入数据均值的梯度,包括:
根据公式确定所述全局前向BN输入数据均值的梯度,其中,σ2为所述全局前向BN输入数据的方差,σ2=v-μ2,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,γ为偏移参数,是所述全局前向BN输入数据均值的梯度。
17.根据权利要求13所述的方法,其特征在于,确定所述前向BN输入数据子集中每个数据的梯度,包括:
根据公式确定所述前向BN输入数据子集中每个数据的梯度,其中,为所述前向BN后数据子集中每个数据的梯度,σ2为所述全局前向BN输入数据的方差,σ2=v-μ2,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,为所述全局前向BN输入数据的方差的梯度,是所述全局前向BN输入数据均值的梯度,是所述前向BN输入数据子集中的数据xi,j的梯度。
18.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据全局前向BN输入数据的均值集合和全局后向BN输入数据均值集合,确定BN层训练参数的梯度,所述BN层训练参数包括偏移参数γ和β。
19.根据权利要求18所述的方法,其特征在于,根据公式确定偏移参数γ的梯度,其中,φ为所述全局前向BN梯度校正数据均值,μ为所述全局前向BN输入数据的均值,为所述全局前向BN输出数据梯度均值,σ2为所述全局前向BN输入数据的方差,σ2=v-μ2,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,为所述GPU为第i个GPU时的偏移参数γ的梯度。
20.根据权利要求18所述的方法,其特征在于,根据公式确定偏移参数β的梯度,其中,为所述全局前向BN输出数据梯度均值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,为所述GPU为第i个GPU时的偏移参数β的梯度。
21.根据权利要求5所述的方法,其特征在于,确定全局后向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述从GPU的后向BN输入数据子集均值集合,所述从GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
将所确定的后向BN输入数据子集均值集合发送给多个GPU中的主GPU;
接收来自所述主GPU的全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
22.根据权利要求5所述的方法,其特征在于,确定全局后向BN输入数据均值集合,包括:
所述GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述GPU的后向BN输入数据子集均值集合,所述GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
将所述GPU的后向BN输入数据子集均值集合发送给其它各GPU;
接收来自其它各GPU的后向BN输入数据子集均值集合;
根据所述GPU的后向BN输入数据子集均值集合和其它各GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
23.一种多个图形处理单元并行的深度神经网络模型训练装置,其特征在于,所述装置设置在多个GPU的每个GPU中,所述装置包括:
前向归一化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输入数据均值集合包括:全局前向BN输入数据的均值和平方均值;
将所述全局前向BN输入数据均值集合发送给其它各从GPU。
25.根据权利要求24所述的装置,其特征在于,所述前向BN处理单元确定所述GPU的前向BN输入数据子集均值集合,包括:
根据公式确定所述前向BN输入数据子集的均值,其中,Bi={xi,j}(j=1,2,...mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μi为所述GPU为第i个GPU时的前向BN输入数据子集的均值;
根据公式确定所述前向BN输入数据子集的平方均值,其中,vi为所述GPU为第i个GPU时的前向BN输入数据子集的平方均值。
26.根据权利要求24所述的装置,其特征在于,所述前向BN处理单元确定全局前向BN输入数据均值集合,包括:
根据公式确定所述全局前向BN输入数据的均值,其中,n为所述多个GPU的数量,μi为第i个GPU的前向BN输入数据子集的均值,mi为第i个GPU的前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值;
根据公式确定所述全局前向BN输入数据的平方均值,其中,vi为第i个GPU的前向BN输入数据子集的平方均值,v为所述全局前向BN输入数据的平方均值。
27.根据权利要求24所述的装置,其特征在于,所述前向BN处理单元对所述前向BN输入数据子集进行前向BN处理,包括:
根据所述全局前向BN输入数据的均值和平方均值,对所述前向BN输入数据子集中的每个数据进行前向BN操作,得到前向BN后数据子集;
对所述前向BN后数据子集中每个数据进行偏移操作,得到所述前向BN输出数据子集。
28.根据权利要求27所述的装置,其特征在于,所述前向BN处理单元对所述前向BN输入数据子集中的每个数据进行前向BN操作,包括:
根据公式σ2=v-μ2确定所述全局前向BN输入数据的方差,其中,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差;
根据公式对所述前向BN输入数据子集中的每个数据进行前向BN操作,其中,Bi={xi,j}(j=1,2,...mi),Bi为所述GPU为第i个GPU时的前向BN输入数据子集,xi,j为所述前向BN输入数据子集中的数据,mi为所述前向BN输入数据子集中的数据的数量,μ为所述全局前向BN输入数据的均值,σ2为所述全局前向BN输入数据的方差,ε为固定的极小非零值,为所述前向BN后数据子集中的数据。
29.根据权利要求27所述的装置,其特征在于,所述前向BN处理单元对所述前向BN后数据子集中每个数据进行偏移操作,包括:
根据公式对所述前向BN后数据子集中每个数据进行偏移操作,其中,γ、β为偏移参数,为所述前向BN后数据子集中的数据,yi,j为所述前向BN输出数据子集中的数据。
30.根据权利要求23所述的装置,其特征在于,所述前向BN处理单元确定全局前向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述前向BN输入数据子集确定所述从GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
将所确定的前向BN输入数据子集均值集合发送给多个GPU中的主GPU;
接收来自所述主GPU的所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值。
31.根据权利要求23所述的装置,其特征在于,所述前向BN处理单元确定全局前向BN输入数据均值集合,包括:
根据所述前向BN输入数据子集确定所述GPU的前向BN输入数据子集均值集合,所述前向BN输入数据子集均值集合包括:所述前向BN输入数据子集的均值和平方均值;
将所述GPU的前向BN输入数据子集均值集合发送给其它GPU;
接收来自其它各GPU的前向BN输入数据子集均值集合;
根据所述GPU的前向BN输入数据子集均值集合和其它各GPU的前向BN输入数据子集均值集合,确定所述全局前向BN输入数据均值集合,所述全局前向BN输入数据均值集合包括:全局前向BN输入数据的均值和平方均值。
32.根据权利要求27所述的装置,其特征在于,所述后向BN处理单元确定全局后向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的主GPU的情况下,根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述主GPU的后向BN输入数据子集均值集合,所述后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
接收来自其它各从GPU的后向BN输入数据子集均值集合;
根据所述主GPU的后向BN输入数据子集均值集合和其它各从GPU的后向BN输入数据子集均值集合,确定全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值;
将所述全局后向BN输入数据均值集合发送给其它各从GPU。
33.根据权利要求32所述的装置,其特征在于,所述后向BN处理单元确定所述GPU的后向BN输入数据子集均值集合,包括:
根据公式确定所述后向BN输入数据子集均值,其中,为所述GPU为第i个GPU时的后向BN输入数据子集,l是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,为yi,j的梯度,为所述GPU为第i个GPU时的后向BN输入数据子集均值;
根据公式确定所述前向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输入数据子集均值集合,包括:
根据公式确定所述全局后向BN输入数据均值,其中,n为所述多个GPU的数量,mi为第i个GPU的前向BN输入数据子集的数据的数量,为第i个GPU的前向BN输出数据子集梯度均值,为所述全局后向BN输入数据均值;
根据公式确定所述全局前向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后数据子集中每个数据的梯度,包括:
根据公式确定所述前向BN后数据子集中每个数据的梯度,其中,为所述GPU为第i个GPU时的后向BN输入数据子集,l是预定的损失函数,yi,j为所述前向BN输出数据子集中的数据,为yi,j的梯度,γ为偏移参数,为所述前向BN后数据子集中数据的梯度。
37.根据权利要求35所述的装置,其特征在于,所述后向BN处理单元确定全局前向BN输入数据的方差的梯度,包括:
根据公式确定所述全局前向BN输入数据的方差的梯度,其中,σ2为所述全局前向BN输入数据的方差,σ2=v-μ2,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,为所述全局前向BN输出数据梯度均值,γ为偏移参数,为所述全局前向BN输入数据的方差的梯度。
38.根据权利要求35所述的装置,其特征在于,所述后向BN处理单元确定全局前向BN输入数据均值的梯度,包括:
根据公式确定所述全局前向BN输入数据均值的梯度,其中,σ2为所述全局前向BN输入数据的方差,σ2=v-μ2,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,φ为所述全局前向BN梯度校正数据均值,γ为偏移参数,是所述全局前向BN输入数据均值的梯度。
39.根据权利要求335所述的装置,其特征在于,所述后向BN处理单元确定所述前向BN输入数据子集中每个数据的梯度,包括:
根据公式确定所述前向BN输入数据子集中每个数据的梯度,其中,为所述前向BN后数据子集中每个数据的梯度,σ2为所述全局前向BN输入数据的方差,σ2=v-μ2,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,为所述全局前向BN输入数据的方差的梯度,是所述全局前向BN输入数据均值的梯度,是所述前向BN输入数据子集中的数据xi,j的梯度。
40.根据权利要求32所述的装置,其特征在于,所述后向BN处理单元,还用于:
根据全局前向BN输入数据的均值集合和全局后向BN输入数据均值集合,确定BN层训练参数的梯度,所述BN层训练参数包括偏移参数γ和β。
41.根据权利要求40所述的装置,其特征在于,所述后向BN处理单元根据公式确定偏移参数γ的梯度,其中,φ为所述全局前向BN梯度校正数据均值,μ为所述全局前向BN输入数据的均值,为所述全局前向BN输出数据梯度均值,σ2为所述全局前向BN输入数据的方差,σ2=v-μ2,v为所述全局前向BN输入数据的平方均值,μ为所述全局前向BN输入数据的均值,ε为固定的极小非零值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,为所述GPU为第i个GPU时的偏移参数γ的梯度。
42.根据权利要求40所述的装置,其特征在于,所述后向BN处理单元根据公式确定偏移参数β的梯度,其中,为所述全局前向BN输出数据梯度均值,mi为所述GPU为第i个GPU时的前向BN输入数据子集的数据的数量,为所述GPU为第i个GPU时的偏移参数β的梯度。
43.根据权利要求27所述的装置,其特征在于,所述后向BN处理单元确定全局后向BN输入数据均值集合,包括:
在所述GPU为多个GPU中的从GPU的情况下,所述从GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述从GPU的后向BN输入数据子集均值集合,所述从GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
将所确定的后向BN输入数据子集均值集合发送给多个GPU中的主GPU;
接收来自所述主GPU的全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
44.根据权利要求27所述的装置,其特征在于,所述后向BN处理单元确定全局后向BN输入数据均值集合,包括:
所述GPU根据所述后向BN输入数据子集和所述前向BN输入数据子集确定所述GPU的后向BN输入数据子集均值集合,所述GPU的后向BN输入数据子集均值集合包括后向BN输入数据子集均值和前向BN梯度校正数据均值;
将所述GPU的后向BN输入数据子集均值集合发送给其它各GPU;
接收来自其它各GPU的后向BN输入数据子集均值集合;
根据所述GPU的后向BN输入数据子集均值集合和其它各GPU的后向BN输入数据子集均值集合,确定所述全局后向BN输入数据均值集合,所述全局后向BN输入数据均值集合包括:全局后向BN输入数据均值和全局前向BN梯度校正数据均值。
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 true CN109255439A (zh) | 2019-01-22 |
CN109255439B 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) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112308233A (zh) * | 2019-08-02 | 2021-02-02 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、设备和计算机程序产品 |
CN112328532A (zh) * | 2020-11-02 | 2021-02-05 | 长沙景嘉微电子股份有限公司 | 多gpu通信的方法及装置、存储介质、电子装置 |
US20210089887A1 (en) * | 2019-09-24 | 2021-03-25 | Apple Inc. | Variance-Based Learning Rate Control For Training Machine-Learning Models |
CN113011563A (zh) * | 2021-03-19 | 2021-06-22 | 北京大学 | 基于gpu的卷积神经网络批归一化处理方法 |
CN112308233B (zh) * | 2019-08-02 | 2024-07-19 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、设备和计算机程序产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488662A (zh) * | 2013-04-01 | 2014-01-01 | 哈尔滨工业大学深圳研究生院 | 基于图形处理单元的自组织映射神经网络聚类方法及*** |
CN104036451A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机***有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104035751A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机***有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
US20160259037A1 (en) * | 2015-03-03 | 2016-09-08 | Nvidia Corporation | Radar based user interface |
CN106096605A (zh) * | 2016-06-02 | 2016-11-09 | 史方 | 一种基于深度学习的图像模糊区域检测方法及装置 |
KR20170012019A (ko) * | 2015-07-24 | 2017-02-02 | 삼성전자주식회사 | 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법 |
-
2017
- 2017-07-12 CN CN201710564223.4A patent/CN109255439B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488662A (zh) * | 2013-04-01 | 2014-01-01 | 哈尔滨工业大学深圳研究生院 | 基于图形处理单元的自组织映射神经网络聚类方法及*** |
CN104036451A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机***有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104035751A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机***有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
US20160259037A1 (en) * | 2015-03-03 | 2016-09-08 | Nvidia Corporation | Radar based user interface |
KR20170012019A (ko) * | 2015-07-24 | 2017-02-02 | 삼성전자주식회사 | 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법 |
CN106096605A (zh) * | 2016-06-02 | 2016-11-09 | 史方 | 一种基于深度学习的图像模糊区域检测方法及装置 |
Non-Patent Citations (3)
Title |
---|
M NIENIEWSKI: "Real-Time US Image Enhancement by Forward-Backward Diffusion Using GPU", 《IMAGE PROCESSING AND COMMUNICATIONS CHALLENGES 7》 * |
SERGEY IOFFE ET AL: "Batch Normalization: Accelerating Deep Network Training by Reducing", 《ARXIV》 * |
韩丹: "基于CPU-GPU的条件随机场并行化研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112308233A (zh) * | 2019-08-02 | 2021-02-02 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、设备和计算机程序产品 |
CN112308233B (zh) * | 2019-08-02 | 2024-07-19 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、设备和计算机程序产品 |
US20210089887A1 (en) * | 2019-09-24 | 2021-03-25 | Apple Inc. | Variance-Based Learning Rate Control For Training Machine-Learning Models |
CN112328532A (zh) * | 2020-11-02 | 2021-02-05 | 长沙景嘉微电子股份有限公司 | 多gpu通信的方法及装置、存储介质、电子装置 |
CN112328532B (zh) * | 2020-11-02 | 2024-02-09 | 长沙景嘉微电子股份有限公司 | 多gpu通信的方法及装置、存储介质、电子装置 |
CN113011563A (zh) * | 2021-03-19 | 2021-06-22 | 北京大学 | 基于gpu的卷积神经网络批归一化处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109255439B (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104714852B (zh) | 一种适用于分布式机器学习的参数同步优化方法及其*** | |
CN111553484B (zh) | 联邦学习的方法、装置及*** | |
EP3540652B1 (en) | Method, device, chip and system for training neural network model | |
CN111178542B (zh) | 基于机器学习建模的***和方法 | |
CN109034381A (zh) | 训练任务优化***、方法及其非暂态电脑可读媒体 | |
CN104281858B (zh) | 三维卷积神经网络训练方法、视频异常事件检测方法及装置 | |
CN108171762A (zh) | 一种深度学习的压缩感知同类图像快速重构***与方法 | |
CN103262119B (zh) | 用于对图像进行分割的方法和*** | |
CN110889509B (zh) | 一种基于梯度动量加速的联合学习方法及装置 | |
CN110097178A (zh) | 一种基于熵注意的神经网络模型压缩与加速方法 | |
CN109255439A (zh) | 一种多个gpu并行的dnn模型训练方法和装置 | |
CN111223106A (zh) | 全自动人像蒙版抠图方法及*** | |
CN109299781A (zh) | 基于动量和剪枝的分布式深度学习*** | |
CN108351881A (zh) | 分布式最优化的***和方法 | |
CN106611216A (zh) | 基于神经网络的计算方法及装置 | |
CN112686385B (zh) | 面向多站点三维影像的联邦深度学习方法及*** | |
JP6981329B2 (ja) | 分散深層学習システム | |
CN109117897A (zh) | 基于卷积神经网络的图像处理方法、装置及可读存储介质 | |
CN111914936B (zh) | 语料数据的数据特征增强方法、装置及计算机设备 | |
CN110245550A (zh) | 一种基于总体余弦分布的人脸噪音数据集cnn训练方法 | |
CN109272044A (zh) | 一种图像相似度确定方法、装置、设备及存储介质 | |
CN109550252A (zh) | 一种游戏ai训练方法、装置及*** | |
CN112541584B (zh) | 深度神经网络模型并行模式选择方法 | |
CN109190504A (zh) | 汽车图像数据的处理方法、装置及可读存储介质 | |
CN110263835B (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 | ||
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 |
|
GR01 | Patent grant | ||
GR01 | Patent grant |