深度神经网络模型的训练方法和设备的制造方法_2

文档序号:9217603阅读:来源:国知局
,处理器21可以是专用 的图形处理器(Graphics Processing Unit,GPU),也可以是其它处理器,如通用的中央处 理器(Central Processing Unit,CPU)。本领域技术人员可以理解,图1所示的示意图仅 是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的应用范围不受到 该框架任何方面的限制。例如,在基于数据并行的多处理器方案以及在基于数据并行与模 型并行混合的多处理器方案中,除了可以包含4个处理器之外,也可以包含其它数量的处 理器。
[0043] 示例件方法
[0044] 下面结合图1的应用场景,参考图2来描述根据本发明示例性实施方式的、用于深 度神经网络模型的训练的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的 精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可 以应用于适用的任何场景。
[0045] 请参阅图2,其示意性地示出了根据本发明的一个实施方式的深度神经网络模型 的训练方法的流程图,例如,该方法可以由处理系统20执行,方法具体例如可以包括:
[0046] 步骤201 :当训练数据的大小发生改变时,针对改变后的训练数据,分别计算所述 改变后的训练数据在预设的至少两个候选训练方案中的训练耗时。
[0047] 步骤202 :从预设的至少两个训练方案中选取训练耗时最小的训练方案作为所述 改变后的训练数据的最佳训练方案。
[0048] 步骤203 :将所述改变后的训练数据在所述最佳训练方案中进行深度神经网络模 型训练。
[0049] 通常,深度神经网络模型的训练过程包括正向处理、反向处理、模型参数修正量同 步以及模型参数更新四个过程,因此,在发明的一个优选实施方式中,如图3所示,可以通 过如下方式计算改变后的训练数据在一个候选训练方案中的训练耗时。
[0050] 步骤301 :统计所述改变后的训练数据在所述候选训练方案中的正向处理耗时和 反向处理耗时;
[0051] 步骤302 :统计在一个完整的深度神经网络模型中先后进行正向和反向处理后所 产生的模型参数修正量在所述候选训练方案中的同步耗时,以及统计一个完整的深度神经 网络模型的模型参数在所述候选训练方案中的更新耗时;
[0052] 步骤303 :计算所述正向处理耗时、反向处理耗时、同步耗时和更新耗时的总和 值,所述总和值即为所述改变后的训练数据在所述候选训练方案中的训练耗时。
[0053] 例如,如果采用基于数据并行的多处理器方案进行模型训练,下面以该方案中共 包含4个处理器为例说明模型训练的过程,如图1所示。其中,在4个处理器(210-213)上 各布置有一个完整的深度神经网络模型,且布置在4个处理器上的深度神经网络模型是相 同的。在训练之前,先将一份完整的训练数据平均拆分成4份,将4个1/4份完整的训练数 据分别作为4个处理器的训练数据并输入到4个处理器中。当进行训练时,如图4所示,该 训练过程具体可以包括:
[0054] 步骤401 :4个处理器同时将各自的训练数据从一个完整的深度神经网络模型的 首层到末层逐层地进行正向处理,经过正向处理后,4个处理器各获得一份误差信息;
[0055] 步骤402 :4个处理器同时将各自的误差信息从一个完整的深度神经网络模型的 末层到首层逐层地进行反向处理,经过反向处理后,4个处理器各获得一份可对需要进行模 型参数更新的层进行更新的模型参数修正量Rcr^Ro由处理器210产生,依次类推);
[0056] 步骤403 :4个处理器将模型参数修正量进行同步处理;
[0057] 该同步处理过程具体包括:
[0058] 1)处理器210与处理器211同时向对方发送各自的模型参数修正量,与此同时,处 理器212与处理器213也同时向对方发送各自的模型参数修正量。
[0059] 2)每一个处理器在获得新的模型参数修正量之后,计算该新的模型参数修正量与 自身的模型参数修正量的算术平均值,从而完成第一次同步,并得到各自的第一次同步结 果。
[0060] 其中,处理器210与处理器211获得相同的第一次同步结果,S卩,(Ra+Ri)/%处理器 212与处理器213获得相同的第一次同步结果,即,(R2+R3)/2。
[0061] 3)处理器210与处理器212同时向对方发送各自的第一次同步结果,与此同时,处 理器211与处理器213也同时向对方发送各自的第一次同步结果。
[0062] 4)每一个处理器在获得新的第一次同步结果之后,计算该新的第一次同步结果与 自身的第一次同步结果的算术平均值,从而完成第二次同步,并得到各自的第二次同步结 果。
[0063] 其中,4个处理器经过第二次同步后获得相同的同步结果,S卩,(Ra+Ri+Rfig/4,至 此,模型参数修正量的同步过程结束,第二次同步结果即为同步后的模型参数修正量。
[0064] 步骤404 :4个处理器同时根据同步后的模型参数修正量对各自的完整的深度神 经网络模型中需要进行模型参数更新的层的模型参数进行更新。
[0065] 其中,在步骤401中,由于4个处理器的处理能力相同,布置的深度神经网络模型 相同,正向处理输入数据的大小也相同,因此,当4个处理器同时进行正向处理时,步骤401 中的正向处理耗时即为4个处理器中的任意一个处理器的正向处理耗时Tf__4,Tf__4表示 1/4份完整的训练数据在一个完整的深度神经网络模型中进行正向处理的耗时。
[0066] 同样,在步骤402中,当4个处理器同时进行反向处理时,步骤402中的反向处理 耗时即为4个处理器中的任意一个处理器的反向处理耗时Tbadt_4,Tbadt_4表示1/4份完整的 训练数据在一个完整的深度神经网络模型中进行反向处理的耗时。
[0067] 在步骤403中,假设计算第一次同步结果的时间以及计算第二次同步结果的时间 可以忽略不计,并且,假设在两个处理器之间传输的模型参数修正量与第一次同步结果的 大小也几乎相等,即,模型参数修正量在两个处理器之间的传输耗时与第一次同步结果在 两个处理器之间的传输耗时相等,即都为T trans,因此,步骤403中的同步耗时即为2XTtMns, TtMns= M/S,T tMns为在一个完整的深度神经网络模型中先后进行正向和反向处理后所产生 的模型参数修正量的传输时间,M为一个完整的深度神经网络模型中先后进行正向和反向 处理后所产生的模型参数修正量的大小,S为该模型参数修正量在两个处理器之间的传输 速率。
[0068] 当然,当训练方案中存在更多的处理器时,处理器之间除了传输第一次同步结果 之外,还需要传输更多的同步结果。因此,模型参数修正量的同步耗时的大小不仅与模型参 数修正量在处理器之间的传输耗时有关,同时也与最佳训练方案中处理器的数量有关。
[0069] 当处理器为GPU时,GPU与GPU之间可以直接进行传输,也可以通过CPU进行传输。
[0070] 在步骤404中,由于4个处理器所获得的同步后的模型模型参数修正量的大小相 同,在4个处理器中布置的深度神经网络模型也相同,因此,当4个处理器同时进行模型参 数更新时,步骤404中的更新耗时即为4个处理器中的任意一个处理器的模型参数更新耗 时T updn,Tupdate_^示一个完整的深度神经网络模型的模型参数在一个处理器中的更新耗 时。
[0071] 综上,当基于数据并行的多处理器方案中包含4个处理器时,其训练耗时为:T = T fore-4+丁back-4+2 ^Ttrans+rTUpdate-1 〇
[0072] 如果将基于数据并行的多处理器方案推广为包含N个处理器,则训练耗时为: T=T]ore_N+Tbmk_N+l〇^xTlrans+T ,,其中 N 为 2 的 n 次方,n 为零或正整数。
[0073] 如果采用单处理器方案进行模型训练,与基于数据并行的多处理器方案不同, 由于只有一个处理器完整模型训练,因此不需要在处理器之间对模型参数修正量进行 同步,也就是说,在训练耗时中,模型参数修正量同步耗时为0。其训练耗时为:T = 。其中,表示1份完整的训练数据在一个完整的深度神经网络模 型中进行正向处理的耗时,表示1份完整的训练数据在一个完整的深度神经网络模型 中进行正向处理的耗时,表示一个完整的深度神经网络模型的模型参数在一个处理 器中的更新耗时。
[0074] 另外,需要说明的是,对于单处理器方案和基于数据并行的多处理器方案,其更新 耗时是相等的,因此,在具体实现时,只要计算出其中一个方案的更新耗时,即可得到另一 个方法的更新耗时。另外,其正向处理耗时之间存在如下计算关系 向处理耗时之间存在如下计算关系:NXTbadt_N多N为基于数据并行的多处理方案中 处理器的个数。在具体实现时,可以在单处理器方案中,利用一份完整的训练数据计算出单 处理器方案中的正向处理耗时以及反向处理耗时,利用1/N份的训练数据计算 出基于数据并行的多处理器方案的正向处理耗时T fOTe_N以及反向处理耗时Tbadt_N。
[0075] 如果采用基于数据并行与模型并行混合的多处理器方案进行模型训练,下面以 该方案中共包含4个处理器为例说明模型训练的过程,其中,如图1所示,将4个处理器 (210-213)平均分成2个组,第一个组包含处理器210和212,第二个组包含处理器211和 213,为每一个组各布置一个完整的深度神经网络模型,并将布置在每一个组内的一个完整 的深度神经网络模型平均拆分成两个子模型A和B (子模型A和B的层数相同或基本相同), 艮P,对于第一个组,在处理器210中布置子模型A,在处理器212中布置子模型B,对于第二 个组,在处理器211中布置子模型A,在处理器213中布置子模型B。在训练之前,先将一份 完整的训练数据平均分成2份,将2个1/2份完整的训练数据分别作为处理器210与211 的训练数据并输入到处理器210与211中。当进行训练时,如图5所示,
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1