一种用于分布式训练同步阶段的自动优化方法

文档序号:31185090发布日期:2022-08-19 21:09阅读:159来源:国知局
一种用于分布式训练同步阶段的自动优化方法

1.本发明涉及人工智能领域,具体来说,涉及应用于深度神经网络的分布式训练系统领域,更具体地说,涉及深度神经网络分布式训练过程中的同步阶段,即一种用于分布式训练同步阶段的自动优化方法。


背景技术:

2.随着科学技术技术的进步,现在信息的收集变得越来越容易。通过挖掘有用的信息,深度神经网络(deep neural network,dnn)可以帮助人们完成日常生活中的各种任务,如图像识别、语言翻译、个人推荐等。然而,数据量的极速增加使其分析变得非常复杂和耗时,例如,微软的coco数据集的大小达到25gb,包含330k图片,而imagenet-22k的大小达到1tb,包含超过15m图片,对这些数据集进行分析可能需要几天甚至几周的时间。此外,深度神经网络(dnn)的模型大小也随着任务难度的增加而增加,如resnet-50(98mb)和vgg-16(525mb)。由于上述两个原因,dnn的训练非常耗时,由此,人们提出了针对深度神经网络的分布式训练方法。分布式训练通过并行化策略为减少dnn的训练时间提供了一种有效的解决方案。
3.在分布式训练中,有两种模式,分别为模型并行和数据并行。模型并行模式是指一个dnn模型被划分为多个部分,分布式系统中不同的节点分布负责计算各个部分,但由于其划分工作复杂,在通信开销大的系统中效率较低,在实际应用中很少使用。如今,数据并行模式越来越普遍,数据并行模式包括计算阶段和同步阶段。在数据并行中,每个计算节点持有模型的一个副本,并且输入数据集分布到每个节点。其中,数据并行模式又分为同步训练和异步训练。然而,与同步分布式训练相比,异步分布式训练收敛速度较慢,最终精度较低,有时会出现非收敛的情况,由此,同步训练应用越来越广泛。在同步分布式训练中,每个节点完成一个小批量的训练后,系统开始收集梯度,用于均匀更新权值。这样,每个节点的每一轮训练都以相同的权重进行,相当于一个节点进行计算。
4.目前,同步分布式训练的主要架构有参数服务器架构和all reduce算法架构。参数服务器架构的结构是一对多的,即一个参数服务器负责多个进程(worker),这种结构导致了较差的可伸缩性。在利用网络全双工特性的(ring all reduce、halving and doubling all reduce)算法中,在同步阶段通过节点内交换梯度完成权值的更新,其可扩展性较好,它的性能随节点数量线性增长。但是,由于同步分布式训练和all reduce算法的结构特点,资源和负载等带来的网络不平衡现象会给其性能带来严重的影响。同步分布式训练过程可分为计算阶段和同步阶段,而在同步阶段,由于all reduce算法的结构特点,同步阶段的性能取决于分布式训练系统中网络状态最差的节点:一方面,由于网络连接的拓扑结构导致不同节点间的传输效率本身就有差别;另一方面,在现实场景中,单机上经常存在多个工作负载并存的情况,由于竞争网络资源,会进一步加剧网络不平衡问题,而此问题会导致总体性能受损。


技术实现要素:

5.因此,本发明的目的在于克服上述现有技术的缺陷,提供一种能够优化分布式训练同步阶段性能的方法。
6.根据本发明的第一方面,提供一种用于分布式训练同步阶段的自动优化方法,所述方法包括在分布式训练的每个回合执行如下步骤:s1、获取在当前回合网络状态满足预设的系统要求的节点组成激活节点列表;s2、基于激活节点列表中的所有节点构建自动优化策略以从激活节点列表中选出使分布式系统效率最大的激活节点组合作为自动优化策略,并将自动优化策略对应的节点加入分布式训练。其中,所述激活节点列表包括当前回合已存在的激活节点列表以及当前回合新加入的新增激活节点列表,其中,所述当前回合新加入的新增激活节点列表是在当前回合网络状态满足系统要求的非激活节点组成的列表,所述非激活节点是指当前回合之前未加入分布式训练的节点。
7.在本发明的一些实施例总,通过如下步骤判断是否需要将非激活节点加入新增激活节点列表:对所有非激活节点进行网络状态统计,所述网络状态指的是在每个回合中非激活节点的网络速度;将在当前回合之前的连续达到第一预设阈值个数的回合中网络速度均大于或等于预设的网络速度阈值的非激活节点加入新增激活节点列表。优选的,所述第一预设阈值为5。
8.优选的,所述步骤s2包括:s21、将激活节点列表中的所有节点按照其对应网络状态由差到好进行升序排序;s22、按照步骤s21的排序从前往后以步长为1依次删除节点并采用剩余节点构建自动优化策略以获得多个自动优化策略;s23、计算每个自动优化策略对应的系统效率,选出系统效率最大的自动优化策略作为最终的自动优化策略,其中,每个自动优化策略对应的系统效率=该自动优化策略对应的所有节点的负载数/该自动优化策略对应的计算总时间。其中,自动优化策略对应的计算总时间包括在该自动优化策略对应的所有节点完成分布式训练计算阶段和同步阶段的总时间。
9.在本发明的一些实施例中,所述方法还包括:s3、基于当前回合之前的多个回合中每个激活节点的网络状态,统计每个激活节点在当前回合之前的每回合中处于最终自动优化策略中的次数作为其合格次数,并从激活节点列表中删除合格次数小于第二预设阈值的激活结点。优选的,所述第二预设阈值为3。
10.根据本发明的第二方面,提供一种分布式训练方法,用于对深度神经网络进行多回合训练,所述分布式训练的每个回合包括深度神经网络在分布式训练系统中的计算阶段和同步阶段,其特征在于,所述方法包括在同步阶段采用如本发明第一方面所述的方法获得自动优化策略进行分布式训练。
11.与现有技术相比,采用本发明方法后,dnn同步分布式训练中同步阶段的不平衡现象大大缓解,空闲等待时间减少,提升了训练效率。
附图说明
12.以下参照附图对本发明实施例作进一步说明,其中:
13.图1为根据本发明实施例的现有技术下训练效果示意图;
14.图2为根据本发明实施例的同步分布式训练效果示意图;
15.图3为根据本发明实施例的分布式训练原理示意图;
16.图4为根据本发明实施例的实验数据示意图。
具体实施方式
17.为了使本发明的目的,技术方案及优点更加清楚明白,以下通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
18.为了更好的理解本发明,首先介绍一下网络不平衡现象。
19.图1是现有技术下的all reduce算法架构分布式训练示例示意图,假设有四个节点的分布式训练系统(节点0、1、2、3),可以看出同步分布式训练中,在同步阶段,各个节点交换数据(scatter-reduce步骤)后得到一个结果块(分别为块0、1、2、3),所谓的块是dnn在反向传播过程中产生的梯度,然后各个节点交换块使每个节点获得所有块的和获得完整的梯度,然后进行模型参数更新(all gather步骤),达到同步目的,但是由于网络的不平衡现象导致同步阶段出现大量的等待时间(如图中斜线部分所表示的),造成了资源的浪费,网络的不平衡现象主要是由于网络结构的特点和将争夺网络的工作负载共存造成的。dnn分布式训练,同步阶段中,由于各节点间网络传输能力不同,而由于同步算法的结构特点,导致性能取决于系统中网络最差的节点,导致性能浪费。
20.为了解决该问题,本发明提出一种同步阶段的优化方法,通过收集各节点网络信息,动态调整参与同步阶段的节点来减轻网络不平衡对dnn分布式训练同步阶段的影响。具体地,本发明监控节点的网络状态根据节点的网络状态的好坏将其划分为激活节点和非激活节点(激活节点是指参与分布式训练的节点,非激活节点是不参与分布式训练的节点),将网络状态好的激活节点加入分布式训练以减轻网络不平衡对dnn分布式训练同步阶段的影响,并且根据网络状态的变化,动态调整激活节点和非激活节点,可将网络状态不好的激活节点从激活节点列表删除,不让其参与分布式训练,也可将网络状态好的非激活节点加入激活结点列表让其参与分布式训练。图2是与图1所示的系统一样的分布式训练系统,通过监控节点的表项,发现节点1的网络状态较差,将其节点1划分为非激活节点,其他节点均为激活节点,节点1不参与分布式训练,可以看出,这样极大的减少了等待时间。
21.本发明的主要思想是通过监控节点在过去几轮中的表现,来确定节点当前的状态是否适合参加分布式训练,通过对不同方案的评价,选择出最优的高效方案。如此,本发明通过保持激活节点(激活阶段)列表,以保证高性能节点处于激活状态,减少节点在通信阶段的空闲时间。
22.下面结合具体实施例详细说明本发明。
23.根据本发明的一个实施例,提供一种用于分布式训练同步阶段的自动优化方法,所述方法包括在分布式训练的每个回合执行步骤s1、s2、s3,下面详细说明每个步骤。
24.在步骤s1中,基于预设的系统要求,获取在当前回合网络状态满足系统要求的节点组成激活节点列表。根据本发明的一个实施例,所述激活节点列表包括当前回合已存在的激活节点列表以及当前回合新加入的新增激活节点列表,其中,所述当前回合新加入的新增激活节点列表是在当前回合网络状态满足系统要求的非激活节点组成的列表,所述非激活节点是指当前回合之前未加入分布式训练的节点。根据本发明的一个实施例,通过如下方式判断是否需要将非激活节点加入新增激活节点列表:对所有非激活节点进行网络状
态统计,所述网络状态指的是在每个回合中非激活节点的网络速度;将在当前回合之前的连续达到第一预设阈值个数的回合中,网络速度均大于或等于预设的网络速度阈值的非激活节点加入新增激活节点列表。
25.在步骤s2中,基于激活节点列表中的所有节点构建自动优化策略以从激活节点列表中选出使分布式系统效率最大的激活节点组合作为自动优化策略,并将自动优化策略对应的节点加入分布式训练。根据本发明的一个实施例,所述步骤s2包括:s21、将激活节点列表中的所有节点按照其对应网络状态由差到好进行升序排序;s22、按照步骤s21的排序从前往后以步长为1依次删除节点并采用剩余节点构建自动优化策略以获得多个自动优化策略;s23、计算每个自动优化策略对应的系统效率,选出系统效率最大的自动优化策略作为最终的自动优化策略,其中,每个自动优化策略对应的系统效率=该自动优化策略对应的所有节点的负载数/该自动优化策略对应的计算总时间。其中,自动优化策略对应的计算总时间包括在该自动优化策略对应的所有节点完成分布式训练计算阶段时间和同步阶段时间之和。根据本发明的一个实施例,计算阶段时间为前几轮收集的计算时间的均值,同步阶段时间则为由前几轮收集的各节点同步时间均值,取其中最大的作为同步阶段时间。
26.在步骤s3中,基于当前回合之前的多个回合中每个激活节点的网络状态,并统计每个激活节点在当前回合之前的每回合中处于最终自动优化策略中的次数作为其合格次数,并从激活节点列表中删除合格次数小于第二预设阈值的激活结点。第二预设阈值可根据用户需求设置,优选的,可设置为3。
27.具体地说,本发明的优化关键包括两方面:找出分布式系统中表现好的节点让其参与分布式训练以及找出表现差的节点让其退出分布式训练。
28.第一方面,找出表现好的节点。首先,检查非激活列表中的节点,当发现其已在第一预设阈值的连续数个回合(此回合数为超参数,由使用者设置,在本实施例中第一预设阈值设置为5)满足系统要求(高于使用者设置的网络速度阈值)时,即其网络状态好时,将其加入分布式训练系统。加入的操作比较简单,只需让原本的激活节点先进行同步操作,在完成后向新加入节点发送更新完的模型权重即可。
29.另一方面,需要找出系统中的网络状态差的节点,评估其是否有价值继续参与后续训练,评估的方法是利用其性能参数评估其参与分布式训练后,是否能减少计算时间。具体过程包括:将激活节点列表中的激活节点按网络状态进行排序,依次删去最差的节点使剩下的节点组成优化策略,计算删去不同节点后的优化策略对应的效率,从中找出效率最高的优化策略。如此,便确定了要将哪些节点移动至非激活节点列表,此操作只需通知其无需参与后续的同步阶段。通过如此维护激活节点列表,让网络状态好的节点参与分布式训练,排除异常节点,保证了整体性能。
30.表1所示的为本发明优化方法的优选实施方式的伪代码。
31.其中,伪代码中的系统输入:list
tt
表示传输时间列表,这个时间为通过测量节点当前网络状态,并根据模型大小计算可得其传输整个模型需要的时间;list
bc
表示每个节点负责计算的负载minibatch数量;t
comp
表示计算阶段的估计时间,通过用户设定统计的回合数,由前数个回合测量的时间平均得到;list
an
表示当前激活节点列表,即参与分布式训练的节点列表;list
newan
表示当前非激活节点列表,就是没有参与分布式训练的节点列表;list
ns
表示每个节点之前数回合的网络状态列表,具体回合数由用户设定;list
ap
表示激活
节点数回合的表现情况列表,当激活结点在该回合满足要求(在最优解内)时,记1,不满足时记0,从而可以统计数个回合的和来得知其是否适合继续停留在系统内。λ1和λ2是用户设定的阈值,用于辅助方案决策。本发明中,λ1是第一预设阈值,用于在对非激活节点进行网络状态统计的时候辅助判断非激活节点是否满足加入激活节点的条件,λ2是第二预设阈值,用于在对激活节点进行网络状态统计的时候辅助判断激活节点是否适合继续留在系统内。
32.系统结果:将会产生list
an
激活节点列表;list
newan
,新激活节点列表;二者之和就是接下来要参与分布式训练的节点。
33.下面简单说明一下伪代码所示的具体步骤:
34.1、首先检查非激活节点当前网络状态,记录在list
ns
中;
35.2、建立新的空list
newan

36.3-7、通过统计各非激活的之前数个回合的网络状态,当其超过用户预设的数目(第一预设阈值λ1)时,认为其网络状态好,可以参与分布式训练,将其加入list
newan

37.8-9、当发现list
newan
非空时,表明此时有新节点要参与分布式训练,算法提前结束,也就是原本的激活点保持不变,同时加入新的在list
newan
中的节点;
38.11、将激活点列表按其当前网络状态进行排序,网络状态差的排前面;
39.12、计算未删去节点时的总负载数nb;
40.13、计算未删去节点时的效率e
tmp
,效率为此时的总负载除以总时间e
tmp
=nb/(t
comp+
t
syn
),其中,总时间包括计算阶段的估计时间t
comp
和同步阶段的估计时间t
syn

41.14-20、根据排序,依次顺序删去网络状态差的节点,以所有剩余节点组成优化策略,并计算删去节点后的剩余节点负载数,估计所需计算总时间,从而得到各个策略的效率,找出其中效率最大的策略;
42.21、根据最优策略,将在最优方案中的激活节点此轮状态登记为1,表示合格,其他不在的节点登记为0,表示不合格;
43.22-26、根据之前数个回合的激活节点的状态,计算其合格次数,当其合格次数少于用户设定要求(第二预设阈值λ2)时,判定其不适合在系统中继续计算(参与训练),将其从激活节点列表移除。至此,便可得到新的激活节点列表。
44.图3为采用本发明方法进行分布式训练的原理示意图,采用本发明方法从分布式训练系统中收集数据,根据节点的网络状态,可以获得激活结点列表、新激活结点列表、非激活节点列表,并由此得到自动调优策略用于指导分布式训练系统优化。
45.通过本发明的方法寻找优化策略,dnn同步分布式训练中同步阶段的不平衡现象大大缓解,空闲等待时间减少。
46.表1
47.[0048][0049]
为了验证本发明的效果,发明人采用本发明的方法在resnet-50,alexnet,vgg-16模型中进行实验,并设定网络不平衡现象为各网络节点的网络性能情况,且为正态分布,60_5表示不平衡程度为正态分布n(0.6,0.05),其他以此类推,设定时间为1000s,每100s重新调整网络情况来模拟动态不平衡,节点数为32。实验结果如图4所示,由图4可以看出,采用本发明优化方法的模型性能相比原本的ring算法有明显提升同步阶段的空闲等待时间大幅度下降。
[0050]
与现有技术相比,采用本发明方法后,dnn同步分布式训练中同步阶段的不平衡现象大大缓解,空闲等待时间减少,提升了训练效率。
[0051]
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
[0052]
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0053]
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
[0054]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1