分布式训练方法、系统、设备及存储介质转让专利

申请号 : CN202010599075.1

文献号 : CN111753997B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 董大祥巩伟宝刘毅于佃海马艳军王海峰

申请人 : 北京百度网讯科技有限公司

摘要 :

本申请公开了一种分布式训练方法、系统、设备及存储介质,涉及人工智能技术领域,具体涉及深度学习和云计算技术领域。所述方法包括:任务信息服务器向多个数据服务器中的至少第一数据服务器发送第一训练请求和可用的第一计算服务器信息;第一数据服务器根据所述第一训练请求向所述第一计算服务器发送第一批训练数据;第一计算服务器根据所述第一批训练数据进行模型训练,并在训练完成后将模型参数发送给所述第一数据服务器进行保存,以及将所述第一批训练数据的标识信息发送给所述任务信息服务器进行记录;其中,在各个计算服务器上不存储模型参数。利用本申请实施例能够实现计算资源弹性变化的高效率训练过程。

权利要求 :

1.一种分布式训练方法,所述方法基于分布式训练系统,其中,所述分布式训练系统用于根据训练数据进行模型训练,所述分布式训练系统包括:任务信息服务器、数据服务器和计算服务器,其中所述数据服务器的数目为多个,所述计算服务器的数目是可变的;

所述分布式训练方法包括:

所述任务信息服务器向多个数据服务器中的至少第一数据服务器发送第一训练请求和可用的第一计算服务器信息;

所述第一数据服务器根据所述第一训练请求向所述第一计算服务器发送第一批训练数据;

所述第一计算服务器根据所述第一批训练数据进行模型训练,并在训练完成后将模型参数发送给所述第一数据服务器进行保存,以及将所述第一批训练数据的标识信息发送给所述任务信息服务器进行记录;

其中,在各个计算服务器上不存储模型参数;所述各个计算服务器之间不存在信息交互。

2.根据权利要求1所述的方法,还包括:在开始训练之前,各个数据服务器从分布式文件系统下载训练数据和待训练的模型的信息。

3.根据权利要求1所述的方法,其中,所述各个数据服务器包括一参数服务器;

在所述第一计算服务器将训练后的模型参数发送给所述第一数据服务器之后,所述方法还包括:将所述训练后的模型参数保存在所述第一数据服务器中的第一参数服务器中。

4.根据权利要求1所述的方法,还包括:所述任务信息服务器对系统中的各个计算服务器进行探活检测,如果系统中可用计算服务器的数量不变,则令各个数据服务器中的参数服务器保存最新的模型参数。

5.根据权利要求1所述的方法,还包括:所述任务信息服务器对系统中的各个计算服务器进行探活检测,如果系统中可用计算服务器的数量发生变化,则更新可用计算服务器列表,并且令各个数据服务器中的参数服务器重新加载上一次探活检测时的模型参数。

6.根据权利要求4或5所述的方法,还包括:在所述任务信息服务器进行探活检测时,系统暂停训练处理,在完成探活检测后,所述任务信息服务器根据当前的模型参数以及记录的已完成训练的训练数据的标识信息,向各个数据服务器发送新的训练请求。

7.根据权利要求1所述的方法,其中,所述任务信息服务器为静态节点。

8.一种分布式训练系统,包括:任务信息服务器、数据服务器和计算服务器,其中所述数据服务器的数目为多个,所述计算服务器的数目是可变的,所述分布式训练系统用于根据训练数据进行模型训练;其中,所述任务信息服务器用于向各个数据服务器发送训练请求和可用计算服务器信息;

所述数据服务器用于根据接收到的训练请求向可用计算服务器发送训练数据;

所述计算服务器用于根据接收到的训练数据进行模型训练,并在训练完成后将模型参数发送给所述数据服务器进行保存,以及将训练完成的所述训练数据的标识信息发送给所述任务信息服务器进行记录;

其中,各个计算服务器不用于存储模型参数;所述各个计算服务器之间不存在信息交互。

9.根据权利要求8所述的分布式训练系统,其中,所述各个数据服务器还用于在系统开始训练之前从分布式文件系统下载训练数据和待训练的模型的信息。

10.根据权利要求8所述的分布式训练系统,其中,所述各个数据服务器包括一参数服务器,所述参数服务器用于保存所述训练后的模型参数。

11.根据权利要求8所述的分布式训练系统,其中,所述任务信息服务器还用于对系统中的各个计算服务器进行探活检测,如果系统中可用计算服务器的数量不变,所述任务信息服务器令各个数据服务器中的参数服务器保存最新的模型参数。

12.根据权利要求8所述的分布式训练系统,其中,所述任务信息服务器还用于对系统中的各个计算服务器进行探活检测,如果系统中可用计算服务器的数量发生变化,所述任务信息服务器更新可用计算服务器列表,并且令各个数据服务器中的参数服务器重新加载上一次探活检测时的模型参数。

13.根据权利要求11或12所述的分布式训练系统,其中,在所述任务信息服务器进行探活检测时,系统暂停训练处理;

所述任务信息服务器还用于在完成探活检测后,根据当前的模型参数以及记录的已完成训练的训练数据的标识信息,向各个数据服务器发送新的训练请求。

14.根据权利要求8所述的分布式训练系统,其中,所述任务信息服务器为静态节点。

15.一种电子设备,其特征在于,包括:至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至7中任一项所述的方法。

16.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至7中任一项所述的方法。

说明书 :

分布式训练方法、系统、设备及存储介质

技术领域

[0001] 本申请涉及人工智能技术领域,具体涉及深度学习和云计算技术领域,更具体地,涉及一种分布式训练方法、系统、设备及存储介质。

背景技术

[0002] 通常,在大数据场景下,深度学习模型的训练可采用分布式的训练方式,可提升训练速度,已有的大多数深度学习框架采用固定的集群资源做并行训练,直至模型收敛。然
而,在云上训练的场景中,训练资源的配额通常会因为整体集群的调度而动态变化,常规的
深度学习框架无法在动态计算资源的条件下正常训练,拖累了训练效率。

发明内容

[0003] 本申请提供了一种分布式训练方法、系统、设备及存储介质。
[0004] 根据本申请的第一方面,提供了一种分布式训练方法,所述方法基于分布式训练系统,其中,所述分布式训练系统用于根据训练数据进行模型训练,所述分布式训练系统包
括:任务信息服务器、数据服务器和计算服务器,其中所述数据服务器的数目为多个,所述
计算服务器的数目是可变的;所述分布式训练方法包括:所述任务信息服务器向多个数据
服务器中的至少第一数据服务器发送第一训练请求和可用的第一计算服务器信息;所述第
一数据服务器根据所述第一训练请求向所述第一计算服务器发送第一批训练数据;所述第
一计算服务器根据所述第一批训练数据进行模型训练,并在训练完成后将模型参数发送给
所述第一数据服务器进行保存,以及将所述第一批训练数据的标识信息发送给所述任务信
息服务器进行记录;其中,在各个计算服务器上不存储模型参数。
[0005] 根据本申请的第二方面,提供了一种分布式训练系统,包括:任务信息服务器、数据服务器和计算服务器,其中所述数据服务器的数目为多个,所述计算服务器的数目是可
变的,所述分布式训练系统用于根据训练数据进行模型训练;其中,所述任务信息服务器用
于向各个数据服务器发送训练请求和可用计算服务器信息;所述数据服务器用于根据接收
到的训练请求向可用计算服务器发送训练数据;所述计算服务器用于根据接收到的训练数
据进行模型训练,并在训练完成后将模型参数发送给所述数据服务器进行保存,以及将训
练完成的所述训练数据的标识信息发送给所述任务信息服务器进行记录;其中,各个计算
服务器不用于存储模型参数。
[0006] 根据本申请的第三方面,提供了一种电子设备,包括:
[0007] 至少一个处理器;以及
[0008] 与至少一个处理器通信连接的存储器;其中,
[0009] 存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上的分布式训练方法。
[0010] 根据本申请的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行如上所述的分布式训练方法。
[0011] 根据本申请的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方法。
[0012] 本申请实施例提供的分布式训练系统通过对任务信息服务器、数据服务器和计算服务器各自的功能进行合理设置,对它们相互之间的配合方式进行合理设计,能够实现弹
性分布式训练系统对计算节点的及时快速的伸缩调节,使系统整体算力趋于最优。
[0013] 应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。

附图说明

[0014] 附图用于更好地理解本方案,不构成对本申请的限定。其中:
[0015] 图1是根据本申请实施例的分布式训练方法的流程框图;
[0016] 图2是根据本申请实施例的分布式训练系统的结构框图;
[0017] 图3是根据本申请另一实施例的分布式训练系统的架构图;
[0018] 图4是实现本申请实施例的弹性分布式训练方法的电子设备的框图。

具体实施方式

[0019] 以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识
到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同
样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0020] 图1示出了本申请实施例提供的分布式训练方法的流程框图,该方法基于分布式训练系统,该分布式训练系统用于根据训练数据进行模型训练,该分布式训练系统包括:任
务信息服务器、数据服务器和计算服务器,其中该数据服务器的数目为多个,该计算服务器
的数目是可变的;该分布式训练方法包括:
[0021] S101,该任务信息服务器向多个数据服务器中的至少第一数据服务器发送第一训练请求和可用的第一计算服务器信息;
[0022] S102,该第一数据服务器根据该第一训练请求向该第一计算服务器发送第一批训练数据;
[0023] S103,该第一计算服务器根据该第一批训练数据进行模型训练,并在训练完成后将模型参数发送给该第一数据服务器进行保存,以及将该第一批训练数据的标识信息发送
给该任务信息服务器进行记录;其中,在各个计算服务器上不存储模型参数。
[0024] 根据本申请的实施例,任务信息服务器向数据服务器发送训练请求和可用的计算服务器信息,例如可用计算服务器的网际互连协议IP地址和/或端口信息,数据服务器向计
算服务器发送训练数据,由计算服务器完成训练过程,并且,各个计算服务器上不存储模型
参数,而是将模型参数发送给数据服务器进行保存,使得计算节点尽可能的轻量化,在退出
或加入系统时对系统整体影响较小,并且,在各个计算服务器上不存储模型参数,占用资源
少,使得计算资源能够用于模型训练,提高计算资源的算力,此外,计算服务器还将训练数
据的标识信息发送给任务信息服务器进行记录,也就是由任务信息服务器记录训练的进
度,从而能够向系统中各计算节点配置训练任务,实现分布式训练系统的整体高效运行。
[0025] 本申请实施例提供的分布式训练方法通过对任务信息服务器、数据服务器和计算服务器各自的处理以及它们相互之间的配合方式进行合理设计,能够实现分布式训练过程
中对计算节点的快速调节,使系统算力集中在模型训练中,提高系统整体的训练效率。
[0026] 图2示出了本申请实施例的分布式训练系统的结构框图,其包括:任务信息服务器100、数据服务器200和计算服务器300,其中该数据服务器200的数目为多个,该计算服务器
300的数目是可变的,该分布式训练系统用于根据训练数据进行模型训练;其中,
[0027] 该任务信息服务器100用于向各个数据服务器200发送训练请求和可用计算服务器信息;
[0028] 该数据服务器200用于根据接收到的训练请求向可用计算服务器300发送训练数据;
[0029] 该计算服务器300用于根据接收到的训练数据进行模型训练,并在训练完成后将模型参数发送给该数据服务器200进行保存,以及将训练完成的该训练数据的标识信息发
送给该任务信息服务器100进行记录;其中,各个计算服务器300不用于存储模型参数。
[0030] 本申请实施例的分布式训练系统中,任务信息服务器、数据服务器和计算服务器各自的功能设置合理,对它们相互之间的配合方式进行合理设计,能够实现分布式训练过
程中对计算节点的快速调节,使系统算力趋于最优。
[0031] 图3示出了本申请具体实施例的分布式训练系统的架构图,图中示意性地描述了任务信息服务器、数据服务器和计算服务器等的逻辑连接关系。图3中包括3个静态节点,每
个静态节点包括数据服务和参数服务,图3还包括4个弹性节点,对应为计算节点(即计算服
务器)。
[0032] 以下将结合各图,对本申请实施例的多种实现方式进行详细描述。
[0033] 在本申请的实施例中,在系统开始训练之前,各个数据服务器从分布式文件系统下载训练数据和待训练的模型的信息。
[0034] 这样处理的好处在于,由数据服务器下载并保存训练数据和待训练的模型的信息,可免去计算服务器保存训练数据,计算服务器仅从数据服务器接收训练所需的数据并
进行训练,训练完毕后再将模型参数返回给数据服务器保存,既能够保持模型参数更新,又
能够降低计算节点退出/加入时对系统的影响。
[0035] 在本申请的实施例中,该各个数据服务器包括一参数服务器;在该第一计算服务器将训练后的模型参数发送给该第一数据服务器之后,该方法还包括:将该训练后的模型
参数保存在该第一数据服务器中的第一参数服务器中。
[0036] 也就是说,将训练后的模型参数保存在参数服务器中,数据服务器负责训练数据的发送和训练结果的回收,处理高效。
[0037] 在本申请的实施例中,该任务信息服务器对系统中的各个计算服务器进行探活检测,如果系统中可用计算服务器的数量不变,则令各个数据服务器中的参数服务器保存最
新的模型参数。
[0038] 通过任务信息服务器的探活检测,不仅能够对系统中可用节点的数量进行探活和更新,还能够在探活检测时确定系统当前的模型参数是否对全部计算节点有效,其中,如果
节点数未发生变化,说明系统可继续平稳训练,这时将当前最新的模型参数保存参数服务
中,可为后续系统的节点变化时提供回退基础。
[0039] 在本申请的实施例中,该任务信息服务器对系统中的各个计算服务器进行探活检测,如果系统中可用计算服务器的数量发生变化,则更新可用计算服务器列表,并且令各个
数据服务器中的参数服务器重新加载上一次探活检测时的模型参数。
[0040] 通过任务信息服务器的探活检测,如果节点数发生了变化,说明探活检测之前的系统数据信息已失效,这时,令各个数据服务器中的参数服务器重新加载上一次探活检测
时的模型参数,也就是退回到上一次探活检测时的数据版本,确保训练过程无误。
[0041] 在本申请的实施例中,在该任务信息服务器进行探活检测时,系统暂停训练处理,在完成探活检测后,该任务信息服务器根据当前的模型参数以及记录的已完成训练的训练
数据的标识信息,向各个数据服务器发送新的训练请求。
[0042] 在任务信息服务器进行探活检测时暂停训练处理,等待模型参数更新完毕,再继续新的训练任务,确保训练过程平稳、快速。
[0043] 在本申请的实施例中,各个计算服务器之间不存在信息交互,各个计算节点均从参数服务器获取训练数据,能够最大限度将计算资源上用于模型训练。
[0044] 在本申请的实施例中,该任务信息服务器为静态节点。
[0045] 由于任务信息服务器负责对系统中的计算节点的定时探活,维护可用计算服务器列表,并且能够使参数服务器中的模型参数保持有效,因此任务信息服务器是分布式系统
的中央节点,其应为静态节点,可理解为处于不能被终止或者说被杀死的计算节点上,使任
务信息服务器具备高可用性,确保系统稳定。
[0046] 本申请实施例的弹性分布式训练方法可用于对各类机器学习模型的训练学习过程,例如对神经网络深度学习框架,能够在资源弹性变化的云端进行高效率的训练,确保计
算服务器的轻量化,可快速动态调节的能力,具有重要的应用意义和价值。
[0047] 以上通过多个实施例从不同角度描述了本申请实施例的具体设置和实现方式。本申请实施例的弹性分布式训练方法基于前述的分布式系统,该方法的处理过程可以参见上
述实施例中的对应描述,在此不再赘述。
[0048] 根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0049] 如图4所示,是根据本申请实施例的弹性分布式训练方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字
助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种
形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算
装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限
制本文中描述的和/或者要求的本申请的实现。
[0050] 如图4所示,该电子设备包括:一个或多个处理器1001、存储器1002,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被
安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令
进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口
的显示设备)上显示图形用户界面(Graphical User Interface,GUI)的图形信息的指令。
在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器
一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器
阵列、一组刀片式服务器、或者多处理器系统)。图4中以一个处理器1001为例。
[0051] 存储器1002即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的弹性分布式
训练方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计
算机执行本申请所提供的弹性分布式训练方法。
[0052] 存储器1002作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的弹性分布式训练方法对应的程序
指令/模块。处理器1001通过运行存储在存储器1002中的非瞬时软件程序、指令以及模块,
从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的弹性分布式训
练方法。
[0053] 存储器1002可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据搜索结果的分析处理电子设
备的使用所创建的数据等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非
瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些
实施例中,存储器1002可选包括相对于处理器1001远程设置的存储器,这些远程存储器可
以通过网络连接至搜索结果的分析处理电子设备。上述网络的实例包括但不限于互联网、
企业内部网、局域网、移动通信网及其组合。
[0054] 本申请实施例的弹性分布式训练方法对应的电子设备还可以包括:输入装置1003和输出装置1004。处理器1001、存储器1002、输入装置1003和输出装置1004可以通过总线或
者其他方式连接,本申请图4实施例中以通过总线连接为例。
[0055] 输入装置1003可接收输入的数字或字符信息,以及产生与搜索结果的分析处理电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触
摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1004可以包括
显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以
包括但不限于,液晶显示器(Liquid Crystal Display,LCD)、发光二极管(Light Emitting 
Diode,LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
[0056] 此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用集成电路(Application Specific Integrated Circuits,ASIC)、计算机硬件、固
件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算
机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执
行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少
一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系
统、该至少一个输入装置、和该至少一个输出装置。
[0057] 这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些
计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指
令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光
盘、存储器、可编程逻辑装置(programmable logic device,PLD)),包括,接收作为机器可
读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数
据提供给可编程处理器的任何信号。
[0058] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode Ray Tube,阴极射线管)或者
LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该
键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交
互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者
触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户
的输入。
[0059] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算
系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界
面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部
件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数
字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网
(Local Area Network,LAN)、广域网(Wide Area Network,WAN)和互联网。
[0060] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计
算机程序来产生客户端和服务器的关系。
[0061] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,
只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
[0062] 上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请
的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。