技术新讯 > 计算推算,计数设备的制造及其应用技术 > 分布式训练系统、方法及设备、介质和计算机程序产品与流程  >  正文

分布式训练系统、方法及设备、介质和计算机程序产品与流程

  • 国知局
  • 2024-07-31 23:18:56

本发明涉及计算机,更具体地说,涉及一种分布式训练系统、方法及设备、介质和计算机程序产品。

背景技术:

1、卷积神经网络(convolutional neural network,cnn)特别适用于处理具有空间结构的数据,如图像、视频和序列数据,因其良好的特征提取能力和对图像数据的有效处理能力,被广泛应用于图像处理、计算机视觉、自然语言处理等领域。然而近年来模型尺寸变得越来越大,这种增长使得高效的模型训练变得更加重要,分布式训练应运而生。目前的分布式模型训练方法有数据并行和模型并行两种方法。而针对cnn模型的训练,目前应用最广泛的是数据并行方法。数据并行方法中,每个计算节点上都存有完整的网络模型,它将训练数据集分成多个小批次,在多个计算节点上同时进行训练,然后在各个计算节点间进行梯度数据同步,最后利用同步后的梯度数据更新共享模型参数。随着模型规模和分布式系统规模变得越来越大,同步数据并行训练中的梯度数据同步通信在整个训练过程中所占的比重越来越大,导致各计算节点之间的同步效率较低,进而影响了卷积神经网络的训练效率。

2、因此,如何提高卷积神经网络的训练效率是本领域技术人员需要解决的技术问题。

技术实现思路

1、本发明的目的在于提供一种分布式训练方法、装置及设备、存储介质和计算机程序产品,提高了卷积神经网络的训练效率。

2、为实现上述目的,本发明提供了一种分布式训练系统,包括i个第一计算节点和j个第二计算节点,所述第一计算节点包括本地内存,所述第二计算节点包括本地内存和通过计算快速链路内存扩展器扩展出的扩展内存,i个第一计算节点环形连接,j个第二计算节点环形连接,第i个第一计算节点与第个第二计算节点连接,n=;

3、第一计算节点与连接的第二计算节点采用模型并行的方式训练卷积神经网络,所述卷积神经网络包括依次连接的多个卷积层、多个全连接层,i个第一计算节点采用数据并行方式训练所述卷积神经网络中的卷积层,第一计算节点向连接的第二计算节点发送前向计算得到的最后一个卷积层的激活数据,i个第一计算节点之间进行卷积层的梯度数据的同步,j个第二计算节点采用数据并行方式训练所述卷积神经网络中的全连接层,第二计算节点向连接的第一计算节点发送反向计算得到的最后一个卷积层同步后的梯度数据,j个第二计算节点之间进行全连接层的梯度数据的同步和最后一个卷积层的梯度数据的同步。

4、其中,所述第一计算节点包括处理器和与所述处理器连接的本地内存;

5、所述第二计算节点包括处理器、与所述处理器连接的本地内存、与所述处理器连接的根复合器、与所述根复合器连接的计算快速链路内存扩展器、与所述计算快速链路内存扩展器连接的扩展内存。

6、其中,所述第一计算节点训练所述卷积神经网络中的卷积层的过程包括:基于本地的训练数据对所述卷积神经网络中的各卷积层进行前向计算,得到最后一个卷积层的激活数据,将所述激活数据发送至对应的第二计算节点;当接收到对应的第二计算节点计算得到的最后一个卷积层的平均梯度数据时,基于最后一个卷积层的平均梯度数据对所述卷积神经网络中除最后一个卷积层之外的各卷积层进行反向计算,得到除最后一个卷积层之外的各卷积层的梯度数据;其中,每得到一个卷积层的梯度数据之后,对i个第一计算节点计算得到的所述卷积层的梯度数据进行同步得到所述卷积层的平均梯度数据,并基于所述卷积层的平均梯度数据更新所述卷积层的参数。

7、其中,所述第二计算节点训练所述卷积神经网络中的全连接层的过程包括:

8、接收对应的第一计算节点发送的最后一个卷积层的激活数据,基于所述激活数据和本地的训练数据对所述卷积神经网络中的各全连接层进行前向计算、对所述卷积神经网络中的各全连接层和最后一个卷积层进行反向计算,得到各全连接层的梯度数据和最后一个卷积层的梯度数据;其中,每得到一个全连接层或最后一个卷积层的梯度数据之后,对j个第二计算节点计算得到的所述全连接层或最后一个卷积层的梯度数据进行同步得到平均梯度数据,并基于所述平均梯度数据更新所述全连接层或最后一个卷积层的参数;将最后一个卷积层的平均梯度数据发送至所述第一计算节点。

9、为实现上述目的,本发明提供了一种分布式训练方法,应用于如上述分布式训练系统中的第一计算节点,所述方法包括:

10、获取本地的训练数据,基于本地的训练数据对所述卷积神经网络中的各卷积层进行前向计算,得到最后一个卷积层的激活数据,将所述激活数据发送至对应的第二计算节点;

11、当接收到对应的第二计算节点计算得到的最后一个卷积层的平均梯度数据时,基于最后一个卷积层的平均梯度数据对所述卷积神经网络中除最后一个卷积层之外的各卷积层进行反向计算,得到除最后一个卷积层之外的各卷积层的梯度数据;

12、其中,每得到一个卷积层的梯度数据之后,对i个第一计算节点计算得到的所述卷积层的梯度数据进行同步得到所述卷积层的平均梯度数据,并基于所述卷积层的平均梯度数据更新所述卷积层的参数。

13、其中,获取本地的训练数据,包括:

14、主线程获取本地的训练数据,并启动辅助线程;

15、相应的,基于本地的训练数据对所述卷积神经网络中的各卷积层进行前向计算,得到最后一个卷积层的激活数据,将所述激活数据发送至对应的第二计算节点,包括:

16、所述主线程基于本地的训练数据对所述卷积神经网络中的各卷积层进行前向计算,得到最后一个卷积层的激活数据,将所述激活数据发送至对应的第二计算节点;

17、相应的,当接收到对应的第二计算节点计算得到的最后一个卷积层的平均梯度数据时,基于最后一个卷积层的平均梯度数据对所述卷积神经网络中除最后一个卷积层之外的各卷积层进行反向计算,得到除最后一个卷积层之外的各卷积层的梯度数据,包括:

18、当所述主线程接收到对应的第二计算节点计算得到的最后一个卷积层的平均梯度数据时,基于最后一个卷积层的平均梯度数据对所述卷积神经网络中除最后一个卷积层之外的各卷积层进行反向计算,得到除最后一个卷积层之外的各卷积层的梯度数据;

19、相应的,每得到一个卷积层的梯度数据之后,对i个第一计算节点计算得到的所述卷积层的梯度数据进行同步得到所述卷积层的平均梯度数据,并基于所述卷积层的平均梯度数据更新所述卷积层的参数,包括:

20、每得到一个卷积层的梯度数据之后,所述辅助线程对i个第一计算节点计算得到的所述卷积层的梯度数据进行同步得到所述卷积层的平均梯度数据,并基于所述卷积层的平均梯度数据更新所述卷积层的参数。

21、其中,每得到一个卷积层的梯度数据之后,还包括:

22、所述主线程将所述卷积层的第一标志位设置为第一预设值;

23、相应的,所述辅助线程对i个第一计算节点计算得到的所述卷积层的梯度数据进行同步得到所述卷积层的平均梯度数据,并基于所述卷积层的平均梯度数据更新所述卷积层的参数,包括:

24、所述辅助线程当检测到所述卷积层的第一标志位为第一预设值时,将所述第一标志位设置为第二预设值,将所述卷积层的第二标志位设置为第二预设值,对i个第一计算节点计算得到的所述卷积层的梯度数据进行同步得到所述卷积层的平均梯度数据,并基于所述卷积层的平均梯度数据更新所述卷积层的参数,将所述卷积层的第二标志位设置为第一预设值。

25、其中,还包括:

26、当所述主线程检测到第一个卷积层的第二标志位为第一预设值时,判断是否满足训练结束条件;

27、若是,则判定训练完成;

28、若否,则重新进入基于本地的训练数据对所述卷积神经网络中的各卷积层进行前向计算的步骤。

29、为实现上述目的,本发明提供了一种分布式训练方法,应用于如上述分布式训练系统中的第二计算节点,所述方法包括:

30、接收到对应的第一计算节点发送的最后一个卷积层的激活数据,基于所述激活数据对所述卷积神经网络中的各全连接层进行前向计算、对所述卷积神经网络中的各全连接层和最后一个卷积层进行反向计算,得到各全连接层的梯度数据和最后一个卷积层的梯度数据;其中,每得到一个全连接层或最后一个卷积层的梯度数据之后,对j个第二计算节点计算得到的所述全连接层或最后一个卷积层的梯度数据进行同步得到平均梯度数据,并基于所述平均梯度数据更新所述全连接层或最后一个卷积层的参数;

31、将最后一个卷积层的平均梯度数据发送至所述第一计算节点。

32、其中,获取本地的训练数据,包括:

33、启动k个主线程,每个所述主线程启动对应的辅助线程;其中,k为所述第二计算节点连接的第一计算节点的数量;

34、相应的,基于所述激活数据对所述卷积神经网络中的各全连接层进行前向计算、对所述卷积神经网络中的各全连接层和最后一个卷积层进行反向计算,得到各全连接层的梯度数据和最后一个卷积层的梯度数据,包括:

35、所述主线程基于所述激活数据对所述卷积神经网络中的各全连接层进行前向计算、对所述卷积神经网络中的各全连接层和最后一个卷积层进行反向计算,得到各全连接层的梯度数据和最后一个卷积层的梯度数据;

36、相应的,每得到一个全连接层或最后一个卷积层的梯度数据之后,对j个第二计算节点计算得到的所述全连接层或最后一个卷积层的梯度数据进行同步得到平均梯度数据,并基于所述平均梯度数据更新所述全连接层或最后一个卷积层的参数,包括:

37、每得到一个全连接层或最后一个卷积层的梯度数据之后,各所述辅助线程对本地计算得到的所述全连接层或最后一个卷积层的k个梯度数据进行同步得到本地平均梯度,j个第二计算节点中的j个目标辅助线程对j个第二计算节点计算得到的所述全连接层或最后一个卷积层的本地平均梯度进行同步得到平均梯度数据,并将所述平均梯度数据广播至所述第二计算节点中的其他辅助线程,所述第二计算节点中的各辅助进程基于所述平均梯度数据更新所述全连接层或最后一个卷积层的参数;其中,所述目标辅助线程为所述第二计算节点中k个辅助线程中的一个辅助线程。

38、其中,每得到一个全连接层或最后一个卷积层的梯度数据之后,还包括:

39、所述主线程将所述全连接层或最后一个卷积层的第一标志位设置为第一预设值;

40、相应的,各所述辅助线程对本地计算得到的所述全连接层或最后一个卷积层的k个梯度数据进行同步得到本地平均梯度,j个第二计算节点中的j个目标辅助线程对j个第二计算节点计算得到的所述全连接层或最后一个卷积层的本地平均梯度进行同步得到平均梯度数据,并将所述平均梯度数据广播至所述第二计算节点中的其他辅助线程,所述第二计算节点中的各辅助进程基于所述平均梯度数据更新所述全连接层或最后一个卷积层的参数,包括:

41、各所述辅助线程当检测到所述全连接层或最后一个卷积层的第一标志位为第一预设值时,将所述第一标志位设置为第二预设值,将所述全连接层或最后一个卷积层的第二标志位设置为第二预设值,对本地计算得到的所述全连接层或最后一个卷积层的k个梯度数据进行同步得到本地平均梯度,j个第二计算节点中的j个目标辅助线程对j个第二计算节点计算得到的所述全连接层或最后一个卷积层的本地平均梯度进行同步得到平均梯度数据,并将所述平均梯度数据广播至所述第二计算节点中的其他辅助线程,所述第二计算节点中的各辅助进程基于所述平均梯度数据更新所述全连接层或最后一个卷积层的参数,将所述全连接层或最后一个卷积层的第二标志位设置为第一预设值。

42、其中,还包括:

43、当所述主线程检测到最后一个卷积层的第二标志位为第一预设值时,判断是否满足训练结束条件;

44、若是,则判定训练完成;

45、若否,则重新进入接收到对应的第一计算节点发送的最后一个卷积层的激活数据的步骤。

46、为实现上述目的,本发明提供了一种电子设备,包括:

47、存储器,用于存储计算机程序;

48、处理器,用于执行所述计算机程序时实现如上述分布式训练方法的步骤。

49、为实现上述目的,本发明提供了一种非易失性存储介质,所述非易失性存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述分布式训练方法的步骤。

50、为实现上述目的,本发明提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述分布式训练方法的步骤。

51、通过以上方案可知,本发明提供的一种分布式训练系统,包括i个第一计算节点和j个第二计算节点,所述第一计算节点包括本地内存,所述第二计算节点包括本地内存和通过计算快速链路内存扩展器扩展出的扩展内存,i个第一计算节点环形连接,j个第二计算节点环形连接,第i个第一计算节点与第个第二计算节点连接,n=;第一计算节点与连接的第二计算节点采用模型并行的方式训练卷积神经网络,所述卷积神经网络包括依次连接的多个卷积层、多个全连接层,i个第一计算节点采用数据并行方式训练所述卷积神经网络中的卷积层,第一计算节点向连接的第二计算节点发送前向计算得到的最后一个卷积层的激活数据,i个第一计算节点之间进行卷积层的梯度数据的同步,j个第二计算节点采用数据并行方式训练所述卷积神经网络中的全连接层,第二计算节点向连接的第一计算节点发送反向计算得到的最后一个卷积层同步后的梯度数据 ,j个第二计算节点之间进行全连接层的梯度数据的同步和或 最后一个卷积层的梯度数据的同步。

52、本发明的有益效果在于:本发明提供的分布式训练系统,采用具有大量计算资源和少量内存资源的第一计算节点训练卷积层,采用具有少量计算资源和大量内存资源的第二计算节点训练全连接层,适配于卷积神经网络中各层所需的训练资源,优化了卷积神经网络的训练效率和效果。另外,在本发明中,第一计算节点与第二计算节点之间传输的数据为最后一个卷积层的激活数据和同步后的梯度数据,各第一计算节点、各第二计算节点之间传递的数据为各层的梯度数据,计算节点之间传输的数据量较小,提高了梯度同步效率,进而提高了卷积神经网络的训练效率。本发明还公开了一种分布式训练装置及一种电子设备、一种非易失性存储介质和一种计算机程序产品,同样能实现上述技术效果。

53、应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。

本文地址:https://www.jishuxx.com/zhuanli/20240730/196963.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。