面向异构计算系统的任务分配方法、装置、设备和介质与流程
未命名
09-07
阅读:97
评论:0
1.本发明涉及多元异构计算技术领域,特别是涉及面向异构计算系统的任务分配方法、装置、设备和介质。
背景技术:
2.随着人工智能(artificial intelligence,ai)技术的发展,大型神经网络模型的优势逐渐体现。近年来,多元异构计算系统概念被提出。在多元异构计算系统中,不同计算性能的计算节点会被接入到同一个分布式计算系统中,并用于协同进行分布式训练大型神经网络模型。其中,计算节点可以为异构计算芯片或计算卡。但是大规模分布式训练任务往往非常耗时、效率低下。
3.异构计算系统包括多个计算节点和一个参数服务器,计算节点和参数服务器之间的通信可以包括服务器内通信和服务器间通信。在该异构计算系统上,每个计算节点都会训练一个相同且完整的神经网络模型,多个计算节点依靠一个参数服务器进行神经网络模型的参数同步。
4.在分布式训练迭代过程中,由于异构计算系统中计算节点性能的差异,以及网络环境的不断变化,造成各计算节点向参数服务器发送梯度的时间不统一,参数服务器需要等待最慢的计算节点发送梯度,因此分布式训练的速度受制于最慢的计算节点,导致分布式训练任务的处理耗时较长。
5.可见,如何降低分布式训练任务的处理耗时,是本领域技术人员需要解决的问题。
技术实现要素:
6.本发明实施例的目的是提供一种面向异构计算系统的任务分配方法、装置、设备和介质,可以降低分布式训练任务的处理耗时。
7.为解决上述技术问题,本发明实施例提供一种面向异构计算系统的任务分配方法,包括:获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;其中,所述训练信息包括模型信息和硬件信息;基于所述训练信息、所述耗时信息以及所述异构计算系统的网络通信信息,确定出各计算节点的负载耗时;根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;依据所述训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。
8.一方面,所述获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息包括:获取分布式训练任务的训练信息;其中,所述训练信息包括模型参数量、梯度数据
量、异构计算系统中计算节点类型、计算节点总数和所有计算节点的单次任务量总和;依据所述训练信息向每种类型的计算节点下发测试任务,以得到每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时。
9.一方面,所述依据所述训练信息向每种类型的计算节点下发测试任务,以得到每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时包括:从每种计算节点类型的所有计算节点中选取一个计算节点作为测试节点;向所述测试节点下发不同的测试任务;其中,不同测试任务所对应的单次任务量不同;基于所述测试节点执行不同测试任务的耗时,确定出所述测试节点在不同单次任务量下的计算耗时;记录每种计算节点类型下不同单次任务量各自对应的计算耗时。
10.一方面,所述基于所述测试节点执行不同测试任务的耗时,确定出所述测试节点在不同单次任务量下的计算耗时包括:统计所述测试节点每执行一次目标测试任务的训练所产生的训练耗时;其中,所述目标测试任务为所有测试任务中的任意一个测试任务,所述目标测试任务对应目标单次任务量;将设定次数的训练耗时的平均值作为所述测试节点在目标单次任务量下的计算耗时。
11.一方面,所述将设定次数的训练耗时的平均值作为所述测试节点在目标单次任务量下的计算耗时包括:从当前统计的所述测试节点执行所述目标测试任务所产生的所有训练耗时中剔除前n次的训练耗时,将剩余满足设定次数的训练耗时的平均值作为所述测试节点在目标单次任务量下的计算耗时。
12.一方面,所述基于所述训练信息、所述耗时信息以及所述异构计算系统的网络通信信息,确定出各计算节点的负载耗时包括:获取异构计算系统中各计算节点到参数服务器之间的通信带宽;根据每个计算节点所对应的模型参数量、梯度数据量、通信带宽以及当前单次任务量下对应的计算耗时,确定出每个计算节点的负载耗时。
13.一方面,所述通信带宽包括上行带宽和下行带宽;相应的,所述根据每个计算节点所对应的模型参数量、梯度数据量、通信带宽以及当前单次任务量下对应的计算耗时,确定出每个计算节点的负载耗时包括:依据每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时,确定出与目标计算节点的计算节点类型以及当前单次任务量匹配的目标计算耗时;其中,所述目标计算节点为所有计算节点中的任意一个计算节点;根据所述目标计算节点所对应的模型参数量、梯度数据量、上行带宽、下行带宽以及所述目标计算耗时,确定出所述目标计算节点的负载耗时。
14.一方面,所述根据所述目标计算节点所对应的模型参数量、梯度数据量、上行带宽、下行带宽以及所述目标计算耗时,确定出所述目标计算节点的负载耗时包括:依据所述模型参数量与所述下行带宽,确定出下行传输耗时;
依据所述梯度数据量与所述上行带宽,确定出上行传输耗时;将所述上行传输耗时、所述下行传输耗时以及所述目标计算耗时的和值作为所述目标计算节点的负载耗时。
15.一方面,所述依据所述模型参数量与所述下行带宽,确定出下行传输耗时包括:将所述模型参数量与所述下行带宽的比值作为下行传输耗时。
16.一方面,所述依据所述梯度数据量与所述上行带宽,确定出上行传输耗时包括:将所述梯度数据量与所述上行带宽的比值作为上行传输耗时。
17.一方面,针对于每个计算节点的单次任务量的设置,所述方法包括:根据所有计算节点的单次任务量总和与计算节点总数,设置各计算节点的初始单次任务量。
18.一方面,所述根据所有计算节点的单次任务量总和与计算节点总数,设置各计算节点的初始单次任务量包括:将所有计算节点的单次任务量总和与计算节点总数的比值作为各计算节点的初始单次任务量。
19.一方面,所述根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量包括:选取所有计算节点的负载耗时最大值和负载耗时最小值;按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量,并重新确定出所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时;在所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时满足设定的耗时偏差条件,则按照设定的任务量调整粒度,反向调整所述第一计算节点和所述第二计算节点的单次任务量,重新确定出所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时,并返回所述选取所有计算节点的负载耗时最大值和负载耗时最小值的步骤;直至负载耗时最大值和负载耗时最小值各自对应的计算节点不变的情况下,则将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量。
20.一方面,在所述选取所有计算节点的负载耗时最大值和负载耗时最小值之后,还包括:判断负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点是否与上一轮选取的计算节点相同;其中,初始状态下上一轮的计算节点为空;在所述负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点相同的情况下,将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量;在所述负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点不相同的情况下,则执行所述按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量的步骤。
21.一方面,所述按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量包括:
按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量。
22.一方面,在所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时满足设定的耗时偏差条件的情况下,则按照设定的任务量调整粒度,反向调整所述第一计算节点和所述第二计算节点的单次任务量包括:每重新确定一次所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时,则判断所述第一计算节点的负载耗时与所述第二计算节点的负载耗时的耗时偏差是否小于上一轮耗时偏差;在所述第一计算节点的负载耗时与所述第二计算节点的负载耗时的耗时偏差小于上一轮耗时偏差的情况下,执行所述按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量的步骤;在所述第一计算节点的负载耗时与所述第二计算节点的负载耗时的耗时偏差大于或等于上一轮耗时偏差的情况下,按照设定的任务量调整粒度,调大所述第一计算节点的单次任务量并且调小所述第二计算节点的单次任务量。
23.一方面,在所述按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量之后,还包括:判断所述第一计算节点的单次任务量是否为零或者所述第二计算节点的单次任务量是否大于上限值;在所述第一计算节点的单次任务量为零或者所述第二计算节点的单次任务量大于上限值的情况下,按照设定的任务量调整粒度,调大所述第一计算节点的单次任务量并且调小所述第二计算节点的单次任务量。
24.一方面,所述按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量包括:将所述第一计算节点的单次任务量减一,将所述第二计算节点的单次任务量加一。
25.一方面,所述按照设定的任务量调整粒度,调大所述第一计算节点的单次任务量并且调小所述第二计算节点的单次任务量包括:将所述第一计算节点的单次任务量加一,将所述第二计算节点的单次任务量减一。
26.本发明实施例还提供了一种面向异构计算系统的任务分配装置,包括获取单元、负载耗时确定单元、任务量确定单元、分配单元;所述获取单元,用于获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;其中,所述训练信息包括模型信息和硬件信息;所述负载耗时确定单元,用于基于所述训练信息、所述耗时信息以及所述异构计算系统的网络通信信息,确定出各计算节点的负载耗时;所述任务量确定单元,用于根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;所述分配单元,用于依据所述训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。
27.一方面,所述获取单元用于获取分布式训练任务的训练信息;其中,所述训练信息包括模型参数量、梯度数据量、异构计算系统中计算节点类型、计算节点总数和所有计算节点的单次任务量总和;依据所述训练信息向每种类型的计算节点下发测试任务,以得到每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时。
28.一方面,所述获取单元包括选取子单元、下发子单元、计算耗时确定子单元和记录子单元;所述选取子单元,用于从每种计算节点类型的所有计算节点中选取一个计算节点作为测试节点;所述下发子单元,用于向所述测试节点下发不同的测试任务;其中,不同测试任务所对应的单次任务量不同;所述计算耗时确定子单元,用于基于所述测试节点执行不同测试任务的耗时,确定出所述测试节点在不同单次任务量下的计算耗时;所述记录子单元,用于记录每种计算节点类型下不同单次任务量各自对应的计算耗时。
29.一方面,所述计算耗时确定子单元用于统计所述测试节点每执行一次目标测试任务的训练所产生的训练耗时;其中,所述目标测试任务为所有测试任务中的任意一个测试任务,所述目标测试任务对应目标单次任务量;将设定次数的训练耗时的平均值作为所述测试节点在目标单次任务量下的计算耗时。
30.一方面,所述计算耗时确定子单元用于从当前统计的所述测试节点执行所述目标测试任务所产生的所有训练耗时中剔除前n次的训练耗时,将剩余满足设定次数的训练耗时的平均值作为所述测试节点在目标单次任务量下的计算耗时。
31.一方面,所述负载耗时确定单元包括带宽获取子单元、耗时确定子单元;所述带宽获取子单元,用于获取异构计算系统中各计算节点到参数服务器之间的通信带宽;所述耗时确定子单元,用于根据每个计算节点所对应的模型参数量、梯度数据量、通信带宽以及当前单次任务量下对应的计算耗时,确定出每个计算节点的负载耗时。
32.一方面,所述通信带宽包括上行带宽和下行带宽;相应的,所述耗时确定子单元用于依据每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时,确定出与目标计算节点的计算节点类型以及当前单次任务量匹配的目标计算耗时;其中,所述目标计算节点为所有计算节点中的任意一个计算节点;根据所述目标计算节点所对应的模型参数量、梯度数据量、上行带宽、下行带宽以及所述目标计算耗时,确定出所述目标计算节点的负载耗时。
33.一方面,所述耗时确定子单元用于依据所述模型参数量与所述下行带宽,确定出下行传输耗时;依据所述梯度数据量与所述上行带宽,确定出上行传输耗时;将所述上行传输耗时、所述下行传输耗时以及所述目标计算耗时的和值作为所述目标计算节点的负载耗时。
34.一方面,所述耗时确定子单元用于将所述模型参数量与所述下行带宽的比值作为下行传输耗时。
35.一方面,所述耗时确定子单元用于将所述梯度数据量与所述上行带宽的比值作为上行传输耗时。
36.一方面,针对于每个计算节点的单次任务量的设置,所述装置包括设置单元;所述设置单元,用于根据所有计算节点的单次任务量总和与计算节点总数,设置各计算节点的初始单次任务量。
37.一方面,所述设置单元用于将所有计算节点的单次任务量总和与计算节点总数的比值作为各计算节点的初始单次任务量。
38.一方面,所述任务量确定单元包括选取子单元、第一调整子单元、第二调整子单元和作为子单元;所述选取子单元,用于选取所有计算节点的负载耗时最大值和负载耗时最小值;所述第一调整子单元,用于按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量,并触发所述耗时确定子单元重新确定出所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时;所述第二调整子单元,用于在所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时满足设定的耗时偏差条件,则按照设定的任务量调整粒度,反向调整所述第一计算节点和所述第二计算节点的单次任务量,重新确定出所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时,并返回所述选取所有计算节点的负载耗时最大值和负载耗时最小值的步骤;所述作为子单元,用于直至负载耗时最大值和负载耗时最小值各自对应的计算节点不变的情况下,则将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量。
39.一方面,还包括节点判断单元;所述节点判断单元,用于判断负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点是否与上一轮选取的计算节点相同;其中,初始状态下上一轮的计算节点为空;在所述负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点相同的情况下,触发所述作为子单元将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量;在所述负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点不相同的情况下,则触发所述第一调整子单元执行所述按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量的步骤。
40.一方面,所述第一调整子单元用于按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量。
41.一方面,所述第二调整子单元用于每重新确定一次所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时,则判断所述第一计算节点的负载耗时与所述第二计算
节点的负载耗时的耗时偏差是否小于上一轮耗时偏差;在所述第一计算节点的负载耗时与所述第二计算节点的负载耗时的耗时偏差小于上一轮耗时偏差的情况下,执行所述按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量的步骤;在所述第一计算节点的负载耗时与所述第二计算节点的负载耗时的耗时偏差大于或等于上一轮耗时偏差的情况下,按照设定的任务量调整粒度,调大所述第一计算节点的单次任务量并且调小所述第二计算节点的单次任务量。
42.一方面,在所述按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量之后,还包括任务量判断单元;所述任务量判断单元,用于判断所述第一计算节点的单次任务量是否为零或者所述第二计算节点的单次任务量是否大于上限值;在所述第一计算节点的单次任务量为零或者所述第二计算节点的单次任务量大于上限值的情况下,触发所述第二调整子单元按照设定的任务量调整粒度,调大所述第一计算节点的单次任务量并且调小所述第二计算节点的单次任务量。
43.一方面,所述第一调整子单元用于将所述第一计算节点的单次任务量减一,将所述第二计算节点的单次任务量加一。
44.一方面,所述第二调整子单元用于将所述第一计算节点的单次任务量加一,将所述第二计算节点的单次任务量减一。
45.本发明实施例还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序以实现如上述面向异构计算系统的任务分配方法的步骤。
46.本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述面向异构计算系统的任务分配方法的步骤。
47.由上述技术方案可以看出,获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;训练信息包括模型信息和硬件信息。为了提升分布式训练任务负载均衡的效果,在考虑不同计算节点的计算能力的同时可以一并考虑异构计算系统的网络资源,因此可以基于训练信息、耗时信息以及异构计算系统的网络通信信息,确定出各计算节点的负载耗时;根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;依据训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。本发明的有益效果在于,在负载均衡时不仅考虑了异构计算系统中不同计算节点的计算性能,同时考虑异构计算系统内的网络资源,从而使负载均衡的效果更优。并且实现负载均衡的过程仅需调整每个计算节点的单次任务量,从而保证负载均衡的实现简单,不需要复杂的算法程序,且不影响整个分布式训练任务的最终收敛以及所训练神经网络的性能。
附图说明
48.为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人
员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1为本发明实施例提供的一种在异构计算系统上参数服务器进行分布式训练的示意图;图2为本发明实施例提供的一种面向异构计算系统的任务分配方法的流程图;图3为本发明实施例提供的一种确定每种类型的计算节点的计算耗时的方法的流程图;图4为本发明实施例提供的一种确定各计算节点的负载耗时的方法的流程图;图5为本发明实施例提供的一种确定各计算节点满足节点耗时均衡条件的单次任务量的方法的流程图;图6为本发明实施例提供的一种异构计算系统各计算节点负载均衡的示意图;图7为本发明实施例提供的一种面向异构计算系统的任务分配装置的结构示意图;图8为本发明实施例提供的一种电子设备的结构图。
具体实施方式
50.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
51.本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”,以及与“包括”和“具有”相关的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
52.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
53.本发明提供的任务分配方案目标就是面向异构计算系统中的参数服务器训练模式,用负载均衡的方式加速分布式训练任务。图1为本发明实施例提供的一种在异构计算系统上参数服务器进行分布式训练的示意图。图1中是以4个异构算力为例,分别为异构算力1至异构算力4,一个异构算力可以看作是一个计算节点。其中,每个异构算力都会训练一个相同且完整的神经网络模型,多个异构算力依靠一个参数服务器进行神经网络模型的参数同步。
54.在一个分布式训练的迭代中,每个异构算力会使用自己所分配到的单次任务量(batch_size)从数据集中获取数据来训练自己的神经网络。一个异构算力训练完毕后,会将自己神经网络的梯度发送到参数服务器。当参数服务器收到所有异构算力的梯度后,会进行梯度同步更新参数,然后将更新后的参数返回给各个异构算力,然后各异构算力收到参数后才能进行下一次训练迭代。在这个过程中,参数服务器需要等待最慢的异构算力发送梯度,因此分布式训练任务的处理耗时较长。
55.故此,本发明提供了一种对参数服务器的分布式训练任务进行负载均衡的方案,在考虑不同计算节点的计算能力的同时一并考虑异构计算系统的网络资源,因此基于训练
信息、耗时信息以及异构计算系统的网络通信信息,确定出各计算节点的负载耗时;根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量,基于确定出的单次任务量,可以实现各计算节点的负载均衡,优化了负载均衡的效果,优化了大型分布式训练任务的计算效率,降低了计算耗时。该方案仅依赖于少数的测试,便可以获得异构算力的计算性能以及异构计算系统的网络资源,进而对整个计算任务进行负载均衡。
56.接下来,详细介绍本发明实施例所提供的一种面向异构计算系统的任务分配方法。图2为本发明实施例提供的一种面向异构计算系统的任务分配方法的流程图,该方法包括:s201:获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息。
57.其中,训练信息可以包括表征异构计算系统计算性能的信息。
58.在本发明实施例中,每个异构算力即为一个计算节点。异构算力的类型可以有多种。根据实际训练需求,在执行分布式训练时,可以调用多种类型的异构算力,每种类型的异构算力可以有多个。
59.计算节点可以为计算芯片或计算卡,计算节点类型用于表示异构计算系统中所使用的计算芯片或计算卡的类型。例如,寒武纪mlu370、英伟达a100等。
60.表征异构计算系统计算性能的信息可以包括模型参数量、梯度数据量、异构计算系统中计算节点类型、计算节点总数和所有计算节点的单次任务量(batch_size)总和。
61.在实际应用中,可以采用符号s表示分布式训练任务在所有异构算力上分配的单次任务量总和。dw表示分布式训练任务的模型参数量。dg表示分布式训练任务的模型的梯度数据量。
62.在训练信息中可以包括硬件配置信息和硬件网络信息。硬件配置信息可以包括分布式训练任务调用的异构算力类型即计算节点类型,以及算力总数即计算节点总数,可以采用符号z表示计算节点总数。硬件网络信息可以包括分布式训练任务调用的每个异构算力在异构计算系统中的地址信息。
63.为了便于异构计算系统向不同计算节点分配训练任务,训练信息中可以包括所需要训练的模型的全部信息,例如训练任务的模型中各层的细节,各层的激活函数,训练模型用的损失函数(loss)等。
64.耗时信息可以包括计算节点执行任务时产生的计算耗时。考虑到同类的计算节点的性能相同,因此针对于同类型的计算节点,只需从同类型的计算节点中选取一个计算节点执行测试任务,获取其计算耗时即可。
65.在实际应用中,可以在异构计算系统中,采用10个寒武纪mlu370、10个英伟达a100进行分布式训练,计算节点总数为20。采用参数服务器的方式训练文本到文本转换器(transfer text-to-text transformer,t5)模型,每个异构算力初始设定的batch_size可以为32,使用深度学习框架(pytorch)进行训练。
66.在本发明实施例中,在获取分布式训练任务的训练信息后,可以依据训练信息向每种类型的计算节点下发测试任务,以得到每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时。
67.s202:基于训练信息、耗时信息以及异构计算系统的网络通信信息,确定出各计算节点的负载耗时。
68.训练信息和耗时信息可以反映计算节点的计算性能,为了考虑在执行分布式训练任务时,网络资源造成的影响,因此在本发明实施例中,可以收集异构计算系统的网络通信信息。
69.网络通信信息可以包括异构计算系统中各个计算节点到参数服务器之间的通信带宽。在实际应用中,可以采用一些测试工具获取通信带宽,例如,采用网络性能测试工具(iperf)进行测试获取通信带宽。
70.负载耗时用于表征在执行任务时同时考虑计算节点的计算性能和网络资源所产生的耗时。
71.耗时信息中包含了基于计算节点的计算性能执行测试任务产生的计算耗时。训练信息中包括了模型参数量和梯度数据量,其和网络通信信息相互配合,可以确定出通信耗时。在本发明实施例中,可以综合考虑计算节点的通信耗时和计算耗时,从而确定出计算节点的负载耗时。
72.s203:根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量。
73.节点耗时均衡条件中可以包括各计算节点达到负载均衡时其负载耗时的分布情况。
74.计算节点的单次任务量不同,其产生的计算耗时也会不同,从而影响负载耗时,因此在本发明实施例中,通过调整计算节点的单次任务量,可以实现各计算节点的负载耗时的均衡。
75.结合图1所示的异构计算系统的示意图,如果各计算节点的负载耗时能够趋于相同,那么各计算节点可以近乎同时向参数服务器推送梯度,参数服务器收到所有计算节点的梯度后,进行梯度同步更新参数,然后将更新后的参数返回给各个计算节点,然后各计算节点收到参数后进行下一次训练迭代。在这个过程中,参数服务器近乎可以同时收到所有计算节点发送的梯度,有效的提升了分布式训练任务的处理效率。
76.s204:依据训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。
77.异构计算系统可以根据分布式训练任务的训练信息、各计算节点的单次任务量,重新构建分布式训练任务,最终下发给异构计算系统中各计算节点。
78.由上述技术方案可以看出,获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;训练信息包括模型信息和硬件信息。为了提升分布式训练任务负载均衡的效果,在考虑不同计算节点的计算能力的同时可以一并考虑异构计算系统的网络资源,因此可以基于训练信息、耗时信息以及异构计算系统的网络通信信息,确定出各计算节点的负载耗时;根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;依据训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。本发明的有益效果在于,在负载均衡时不仅考虑了异构计算系统中不同计算节点的计算性能,同时考虑异构计算系统内的网络资源,从而使负载均衡的效果更优。并且实现负载均衡的过程仅需调整每个计算节点的单次任务量,从而保证负载均衡的实现简单,不需要复杂的算法程序,且不影响整个分布式训练任务的最终收敛以及所训练神经网络的性能。
79.图3为本发明实施例提供的一种确定每种类型的计算节点的计算耗时的方法的流
程图,该方法包括:s301:从每种计算节点类型的所有计算节点中选取一个计算节点作为测试节点。
80.每种类型的计算节点的个数可能有多个,同类型计算节点的性能相同,因此在执行测试任务确定计算耗时的情况下,只需针对每种类型的一个计算节点进行测试即可。
81.在实际应用中,可以从每种计算节点类型的所有计算节点中选取一个计算节点作为测试节点。
82.s302:向测试节点下发不同的测试任务。
83.其中,不同测试任务所对应的单次任务量不同。
84.测试节点设置的单次任务量不同,其产生的计算耗时也会不同。因此在本发明实施例中,可以部署不同的测试任务,每个测试任务有其对应的单次任务量。
85.举例说明,假设一个测试节点所能支持的最大单次任务量为n,则可以按照单次任务量从1至n,设置n个测试任务。该测试任务中的模型和原来的分布式训练任务的模型完全相同,输入的数据可以抽样自原来的数据集,每个测试任务所对应的单次任务量与计算节点初始设置的单次任务量有所不同,而是按照单次任务量从1至n进行测试,从而得到不同单次任务量所对应的计算耗时。
86.s303:基于测试节点执行不同测试任务的耗时,确定出测试节点在不同单次任务量下的计算耗时。
87.按照常规的任务执行流程,针对于每个测试任务,需要执行很多次的迭代训练才能确定出其对应的计算耗时,但是在实际应用中,并不需要完整的执行所有迭代训练,只需获取设定次数的训练耗时,取其均值作为计算耗时即可满足当前的测试需求。
88.在具体实现中,可以统计测试节点每执行一次目标测试任务的训练所产生的训练耗时;其中,目标测试任务为所有测试任务中的任意一个测试任务,目标测试任务对应目标单次任务量;将设定次数的训练耗时的平均值作为测试节点在目标单次任务量下的计算耗时。
89.考虑到训练前期测试结果不稳定,为了保证计算耗时的准确性,可以从当前统计的测试节点执行目标测试任务所产生的所有训练耗时中剔除前n次的训练耗时,将剩余满足设定次数的训练耗时的平均值作为测试节点在目标单次任务量下的计算耗时。
90.在实际应用中,n可以设置为20,设定次数可以设置为80。例如,可以统计每个测试任务第20到第100次迭代训练的训练耗时,将这些训练耗时取平均得到计算耗时。
91.s304:记录每种计算节点类型下不同单次任务量各自对应的计算耗时。
92.为了便于后续的查询调用,可以以表格的形式记录每种计算节点类型下不同单次任务量各自对应的计算耗时。例如,表格可以划分为三列,一列用于表征计算节点的类型,一列用于表征计算节点对应的单次任务量,另一列用于表征计算节点对应的计算耗时。每行信息包含一种类型的计算节点在单次任务量下所对应的计算耗时。
93.在本发明实施例中,通过针对每种类型的计算节点设置不同的测试任务,可以获知计算节点在不同单次任务量下所对应的计算耗时,为后续确定计算节点的负载耗时提供了依据。并且在调整计算节点的单次任务量后,基于记录的计算耗时,可以快速的获知计算节点在当前单次任务量下对应的计算耗时。
94.图4为本发明实施例提供的一种确定各计算节点的负载耗时的方法的流程图,该
方法包括:s401:获取异构计算系统中各计算节点到参数服务器之间的通信带宽。
95.在本发明实施例中,可以同时对异构计算系统的计算性能和网络资源进行分析,从而确定出各计算节点的负载耗时。
96.网络资源可以包括各计算节点到参数服务器之间的通信带宽。
97.在实际应用中,可以通过网络测试工具测试各计算节点到参数服务器之间的通信带宽。
98.在获取到每个计算节点到参数服务器之间的通信带宽后,结合每个计算节点所对应的模型参数量和梯度数据量,可以确定出每个计算节点的通信耗时。将每个计算节点的通信耗时与计算耗时结合,可以确定出每个计算节点的负载耗时。
99.s402:依据每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时,确定出与目标计算节点的计算节点类型以及当前单次任务量匹配的目标计算耗时。
100.每个计算节点负载耗时的确定方式类似,在本发明实施例中,以所有计算节点中的任意一个计算节点即目标计算节点为例展开介绍。
101.在本发明实施例中,以表格的形式记录了每种计算节点类型下不同单次任务量各自对应的计算耗时,因此通过表格可以确定出与目标计算节点的计算节点类型以及当前单次任务量匹配的目标计算耗时。
102.s403:根据目标计算节点所对应的模型参数量、梯度数据量、上行带宽、下行带宽以及目标计算耗时,确定出目标计算节点的负载耗时。
103.通信带宽可以包括上行带宽和下行带宽。上行带宽表示计算节点到参数服务器的带宽,下行带宽表示参数服务器到计算节点的带宽。
104.在本发明实施例中,可以依据模型参数量与下行带宽,确定出下行传输耗时;依据梯度数据量与上行带宽,确定出上行传输耗时;将上行传输耗时、下行传输耗时以及目标计算耗时的和值作为目标计算节点的负载耗时。
105.在实际应用中,将模型参数量与下行带宽的比值作为下行传输耗时。将梯度数据量与上行带宽的比值作为上行传输耗时。
106.根据负载耗时的确定原理,可以构建负载耗时公式,通过按照如下公式计算,可以确定出计算节点的负载耗时:;其中,表示计算节点x的负载耗时,表示分布式训练任务的模型参数量,表示参数服务器到计算节点x的下行带宽,表示计算节点x在单次任务量为batch_size时对应的计算耗时,表示分布式训练任务的模型的梯度数据量,表示计算节点x到参数服务器的上行带宽,表示下行传输耗时,表示上行传输耗时。
107.在实际应用中,在不进行负载均衡的情况下,也可以采用上述计算负载耗时的公
式来预测参数服务器的分布式训练任务的计算耗时。
108.在本发明实施例中,为了不影响整个分布式训练任务的最终收敛以及所训练神经网络的性能,可以使所有计算节点的单次任务量总和不变。在初始状态下,可以根据所有计算节点的单次任务量总和与计算节点总数,设置各计算节点的初始单次任务量。
109.在实际应用中,可以按照均分的方式,设置各计算节点的初始单次任务量,例如可以将所有计算节点的单次任务量总和与计算节点总数的比值作为各计算节点的初始单次任务量。
110.在本发明实施例中,可以采用各计算节点的计算耗时表征计算性能,采用上行传输耗时和下行传输耗时表征网络资源。对各计算节点的计算性能和网络资源进行综合考虑,确定出各计算节点的负载耗时,保证了负载耗时的准确性。
111.图5为本发明实施例提供的一种确定各计算节点满足节点耗时均衡条件的单次任务量的方法的流程图,该方法包括:s501:选取所有计算节点的负载耗时最大值和负载耗时最小值。
112.在本发明实施例中,可以从负载耗时最大和负载耗时最小的两个计算节点作为切入点进行单次任务量的调整。
113.直至负载耗时最大值和负载耗时最小值各自对应的计算节点不变的情况下,说明各计算节点的负载耗时已经趋于相同,此时可以将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量。
114.s502:判断负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点是否与上一轮选取的计算节点相同。
115.其中,初始状态下上一轮的计算节点为空。
116.在负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点相同的情况下,说明各计算节点的负载耗时已经趋于相同,此时可以执行s503。
117.在负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点不相同的情况下,说明各计算节点的负载耗时还未趋于相同,此时可以执行s504。
118.s503:将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量。
119.在负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点相同的情况下,说明各计算节点当前对应的单次任务量已经满足节点耗时均衡条件,无需再执行计算节点单次任务量的调整,此时可以将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量。
120.s504:按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量。
121.在实际应用中,可以预先设定好每次调整任务量的粒度。在负载耗时最大值和负载耗时最小值偏差较大的情况下,可以将任务量调整粒度设置的大一些;在负载耗时最大值和负载耗时最小值偏差较小的情况下,可以将任务量调整粒度设置的小一些。
122.按照设定的任务量调整粒度,调小第一计算节点的单次任务量并且调大第二计算
节点的单次任务量。
123.为了实现单次任务量的精确调整,可以将任务量调整粒度设置为一。每次调整,可以将第一计算节点的单次任务量减一,将第二计算节点的单次任务量加一。
124.s505:重新确定出第一计算节点的负载耗时以及第二计算节点的负载耗时。
125.在调整第一计算节点和第二计算节点的单次任务量后,可以基于记录的每种计算节点类型下不同单次任务量各自对应的计算耗时,确定出第一计算节点在其当前单次任务量下对应的计算耗时,以及第二计算节点在其当前单次任务量下对应的计算耗时。
126.在确定出第一计算节点和第二计算节点的计算耗时后,可以按照s403的操作流程,重新确定出第一计算节点的负载耗时以及第二计算节点的负载耗时。
127.s506:在第一计算节点的负载耗时以及第二计算节点的负载耗时满足设定的耗时偏差条件,则按照设定的任务量调整粒度,反向调整第一计算节点和第二计算节点的单次任务量,重新确定出第一计算节点的负载耗时以及第二计算节点的负载耗时。
128.在重新确定出第一计算节点的负载耗时以及第二计算节点的负载耗时的情况下,可以返回s501重新选取所有计算节点的负载耗时最大值和负载耗时最小值。
129.耗时偏差条件可以基于当前第一计算节点和第二计算节点的负载耗时的耗时偏差与上一轮耗时偏差的关系设置。耗时偏差可以是负载耗时最大值和负载耗时最小值的差值。
130.当耗时偏差越来越小时,说明调整第一计算节点和第二计算节点的单次任务量能起到较优的负载均衡效果,一旦耗时偏差大于或等于上一轮的耗时偏差,说明本轮调整已经无法再达到负载均衡的效果,此时需要执行新一轮的调整,即返回s501重新选取所有计算节点的负载耗时最大值和负载耗时最小值。
131.因此在本发明实施例中,每重新确定一次第一计算节点的负载耗时以及第二计算节点的负载耗时,则可以判断第一计算节点的负载耗时与第二计算节点的负载耗时的耗时偏差是否小于上一轮耗时偏差。
132.在第一计算节点的负载耗时与第二计算节点的负载耗时的耗时偏差小于上一轮耗时偏差的情况下,说明还可以继续对第一计算节点和第二计算节点的单次任务量进行调整,此时可以执行按照设定的任务量调整粒度,调小第一计算节点的单次任务量并且调大第二计算节点的单次任务量的步骤。
133.在第一计算节点的负载耗时与第二计算节点的负载耗时的耗时偏差大于或等于上一轮耗时偏差的情况下,说明当前第一计算节点和第二计算节点的单次任务量的调整已经无法再达到较优的负载均衡效果,此时可以按照设定的任务量调整粒度,调大第一计算节点的单次任务量并且调小第二计算节点的单次任务量,重新计算第一计算节点和第二计算节点的负载耗时,然后返回s501重新选取所有计算节点的负载耗时最大值和负载耗时最小值。
134.需要说明的是,在本发明实施例中,除了依据耗时偏差确定是否结束本轮单次任务量的调整外,还可以关注第一计算节点和第二计算节点调整后的单次任务量。在按照设定的任务量调整粒度,调小第一计算节点的单次任务量并且调大第二计算节点的单次任务量之后,可以进一步判断第一计算节点的单次任务量是否为零或者第二计算节点的单次任务量是否大于上限值。
135.在第一计算节点的单次任务量为零或者第二计算节点的单次任务量大于上限值的情况下,说明本轮调整已经无法再达到较优的负载均衡效果,此时可以按照设定的任务量调整粒度,调大第一计算节点的单次任务量并且调小第二计算节点的单次任务量。
136.以任务量调整粒度为一为例,在实际应用中,在第一计算节点的单次任务量为零或者第二计算节点的单次任务量大于上限值或者第一计算节点的负载耗时与第二计算节点的负载耗时的耗时偏差大于或等于上一轮耗时偏差,可以将第一计算节点的单次任务量加一,将第二计算节点的单次任务量减一。
137.假设计算节点的个数为z,分布式训练任务在所有异构算力上分配的单次任务量总和为s,可以按照如下流程确定计算节点的单次任务量。
138.步骤1:初始给定每个计算节点的batch_size=s/z,并且每个计算节点的batch_size可以记为b1,b2,...... ,bz。
139.步骤2:确定每个计算节点的负载耗时,可以分别记为t
x,1
,t
x,2
,...... ,t
x,z
。
140.步骤3:对于所有的计算节点的负载耗时,找到其中负载耗时最大值和负载耗时最小值,假设为t
x,p
和t
x,q
,其中,下标p和q代表计算节点的标号。计算节点p即为上述介绍的第一计算节点,计算节点q即为上述介绍的第二计算节点。
141.步骤4:记录本次选择的计算节点p和计算节点q,如果与上一轮进入本步骤的计算节点p、计算节点q相同,则进入步骤6,否则进入步骤5。
142.步骤5:计算,令b
p
=b
p-1,bq=bq+1。其中,b
p
表示计算节点p对应的单次任务量,bq表示计算节点q对应的单次任务量。b
p
=b
p-1表示将计算节点p的单次任务量减1作为新的单次任务量,bq=bq+1表示将计算节点q的单次任务量加1作为新的单次任务量。在调整计算节点p和计算节点q的单次任务量后,可以重新确定计算节点p的负载耗时t
x,p
以及计算节点q的负载耗时t
x,q
,将此时计算节点p和计算节点q的负载耗时的差值记为。
143.如果或b
p
=0或bq超过其对应的上限值,则另b
p
=b
p
+1,bq=b
q-1,在调整计算节点p和计算节点q的单次任务量后,重新确定计算节点p的负载耗时t
x,p
以及计算节点q的负载耗时t
x,q
,并返回步骤3。
144.否则,如果,则重复执行步骤5。
145.步骤6:经过算法修改的b1,b2,...... ,bz,即为本算法输出的结果,表示每个计算节点实现负载均衡时各自所对应的batch_size。
146.从上述步骤可以看出,该算法不会改变所有计算节点的batch_size总和s,因此不会影响最终分布式训练的神经网络的最终性能。
147.图6为本发明实施例提供的一种异构计算系统各计算节点负载均衡的示意图,图6是以3个计算节点为例,3个计算节点可以分别与一个参数服务器进行通信,通信可以包括服务器内通信和服务器间通信。在该异构计算系统上,每个计算节点都会训练一个相同且完整的神经网络模型,多个计算节点依靠一个参数服务器进行神经网络模型的参数同步。
148.在一个分布式训练的迭代中,每个计算节点花费的时间包括拉取参数对应的下行传输耗时、本地训练对应的计算耗时以及推送梯度对应的上行传输耗时。当参数服务器收到所有计算节点的梯度后,会进行梯度同步更新参数,然后将更新后的参数返回给各个计算节点,各计算节点收到参数后才能进行下一次训练迭代。
149.在确定出各计算节点满足节点耗时均衡条件的单次任务量后,可以依据训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。此时各计算节点会使用自己所分配到的单次任务量来拉取参数,训练自己的神经网络模型。在完成本地训练后,会将自己神经网络的梯度推送到参数服务器。由于各计算节点的负载耗时趋于相同,因此参数服务器基本可以同时收到所有计算节点的梯度,从而进行梯度同步更新参数,然后将更新后的参数返回给各个计算节点,以便于各计算节点收到参数后进行下一次训练迭代。
150.在这个过程中,参数服务器几乎可以同时收到所有计算节点发送梯度,有效的降低了分布式训练任务的处理耗时。
151.图7为本发明实施例提供的一种面向异构计算系统的任务分配装置的结构示意图,包括获取单元71、负载耗时确定单元72、任务量确定单元73、分配单元74;获取单元71,用于获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;其中,训练信息包括模型信息和硬件信息;负载耗时确定单元72,用于基于训练信息、耗时信息以及异构计算系统的网络通信信息,确定出各计算节点的负载耗时;任务量确定单元73,用于根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;分配单元74,用于依据训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。
152.在一些实施例中,获取单元用于获取分布式训练任务的训练信息;其中,训练信息包括模型参数量、梯度数据量、异构计算系统中计算节点类型、计算节点总数和所有计算节点的单次任务量总和;依据训练信息向每种类型的计算节点下发测试任务,以得到每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时。
153.在一些实施例中,获取单元包括选取子单元、下发子单元、计算耗时确定子单元和记录子单元;选取子单元,用于从每种计算节点类型的所有计算节点中选取一个计算节点作为测试节点;下发子单元,用于向测试节点下发不同的测试任务;其中,不同测试任务所对应的单次任务量不同;计算耗时确定子单元,用于基于测试节点执行不同测试任务的耗时,确定出测试节点在不同单次任务量下的计算耗时;记录子单元,用于记录每种计算节点类型下不同单次任务量各自对应的计算耗时。
154.在一些实施例中,计算耗时确定子单元用于统计测试节点每执行一次目标测试任务的训练所产生的训练耗时;其中,目标测试任务为所有测试任务中的任意一个测试任务,目标测试任务对应目标单次任务量;将设定次数的训练耗时的平均值作为测试节点在目标单次任务量下的计算耗时。
155.在一些实施例中,计算耗时确定子单元用于从当前统计的测试节点执行目标测试任务所产生的所有训练耗时中剔除前n次的训练耗时,将剩余满足设定次数的训练耗时的
平均值作为测试节点在目标单次任务量下的计算耗时。
156.在一些实施例中,负载耗时确定单元包括带宽获取子单元、耗时确定子单元;带宽获取子单元,用于获取异构计算系统中各计算节点到参数服务器之间的通信带宽;耗时确定子单元,用于根据每个计算节点所对应的模型参数量、梯度数据量、通信带宽以及当前单次任务量下对应的计算耗时,确定出每个计算节点的负载耗时。
157.在一些实施例中,通信带宽包括上行带宽和下行带宽;相应的,耗时确定子单元用于依据每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时,确定出与目标计算节点的计算节点类型以及当前单次任务量匹配的目标计算耗时;其中,目标计算节点为所有计算节点中的任意一个计算节点;根据目标计算节点所对应的模型参数量、梯度数据量、上行带宽、下行带宽以及目标计算耗时,确定出目标计算节点的负载耗时。
158.在一些实施例中,耗时确定子单元用于依据模型参数量与下行带宽,确定出下行传输耗时;依据梯度数据量与上行带宽,确定出上行传输耗时;将上行传输耗时、下行传输耗时以及目标计算耗时的和值作为目标计算节点的负载耗时。
159.在一些实施例中,耗时确定子单元用于将模型参数量与下行带宽的比值作为下行传输耗时。
160.在一些实施例中,耗时确定子单元用于将梯度数据量与上行带宽的比值作为上行传输耗时。
161.在一些实施例中,针对于每个计算节点的单次任务量的设置,装置包括设置单元;设置单元,用于根据所有计算节点的单次任务量总和与计算节点总数,设置各计算节点的初始单次任务量。
162.在一些实施例中,设置单元用于将所有计算节点的单次任务量总和与计算节点总数的比值作为各计算节点的初始单次任务量。
163.在一些实施例中,任务量确定单元包括选取子单元、第一调整子单元、第二调整子单元和作为子单元;选取子单元,用于选取所有计算节点的负载耗时最大值和负载耗时最小值;第一调整子单元,用于按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量,并触发耗时确定子单元重新确定出第一计算节点的负载耗时以及第二计算节点的负载耗时;第二调整子单元,用于在第一计算节点的负载耗时以及第二计算节点的负载耗时满足设定的耗时偏差条件,则按照设定的任务量调整粒度,反向调整第一计算节点和第二计算节点的单次任务量,重新确定出第一计算节点的负载耗时以及第二计算节点的负载耗时,并返回选取所有计算节点的负载耗时最大值和负载耗时最小值的步骤;作为子单元,用于直至负载耗时最大值和负载耗时最小值各自对应的计算节点不变的情况下,则将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条
件的单次任务量。
164.在一些实施例中,还包括节点判断单元;节点判断单元,用于判断负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点是否与上一轮选取的计算节点相同;其中,初始状态下上一轮的计算节点为空;在负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点相同的情况下,触发作为子单元将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量;在负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点不相同的情况下,则触发第一调整子单元执行按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量的步骤。
165.在一些实施例中,第一调整子单元用于按照设定的任务量调整粒度,调小第一计算节点的单次任务量并且调大第二计算节点的单次任务量。
166.在一些实施例中,第二调整子单元用于每重新确定一次第一计算节点的负载耗时以及第二计算节点的负载耗时,则判断第一计算节点的负载耗时与第二计算节点的负载耗时的耗时偏差是否小于上一轮耗时偏差;在第一计算节点的负载耗时与第二计算节点的负载耗时的耗时偏差小于上一轮耗时偏差的情况下,执行按照设定的任务量调整粒度,调小第一计算节点的单次任务量并且调大第二计算节点的单次任务量的步骤;在第一计算节点的负载耗时与第二计算节点的负载耗时的耗时偏差大于或等于上一轮耗时偏差的情况下,按照设定的任务量调整粒度,调大第一计算节点的单次任务量并且调小第二计算节点的单次任务量。
167.在一些实施例中,在按照设定的任务量调整粒度,调小第一计算节点的单次任务量并且调大第二计算节点的单次任务量之后,还包括任务量判断单元;任务量判断单元,用于判断第一计算节点的单次任务量是否为零或者第二计算节点的单次任务量是否大于上限值;在第一计算节点的单次任务量为零或者第二计算节点的单次任务量大于上限值的情况下,触发第二调整子单元按照设定的任务量调整粒度,调大第一计算节点的单次任务量并且调小第二计算节点的单次任务量。
168.在一些实施例中,第一调整子单元用于将第一计算节点的单次任务量减一,将第二计算节点的单次任务量加一。
169.在一些实施例中,第二调整子单元用于将第一计算节点的单次任务量加一,将第二计算节点的单次任务量减一。
170.图7所对应实施例中特征的说明可以参见图2至图6所对应实施例的相关说明,这里不再一一赘述。
171.由上述技术方案可以看出,获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;训练信息包括模型信息和硬件信息。为了提升分布式训练任务负载均衡的效果,在考虑不同计算节点的计算能力的同时可以一并考虑异构计算系统的网络资源,因
此可以基于训练信息、耗时信息以及异构计算系统的网络通信信息,确定出各计算节点的负载耗时;根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;依据训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。本发明的有益效果在于,在负载均衡时不仅考虑了异构计算系统中不同计算节点的计算性能,同时考虑异构计算系统内的网络资源,从而使负载均衡的效果更优。并且实现负载均衡的过程仅需调整每个计算节点的单次任务量,从而保证负载均衡的实现简单,不需要复杂的算法程序,且不影响整个分布式训练任务的最终收敛以及所训练神经网络的性能。
172.图8为本发明实施例提供的一种电子设备的结构图,如图8所示,电子设备包括:存储器80,用于存储计算机程序;处理器81,用于执行计算机程序时实现如上述实施例面向异构计算系统的任务分配方法的步骤。
173.本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
174.其中,处理器81可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器81可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器81也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器81可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器81还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
175.存储器80可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器80还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器80至少用于存储以下计算机程序801,其中,该计算机程序被处理器81加载并执行之后,能够实现前述任一实施例公开的面向异构计算系统的任务分配方法的相关步骤。另外,存储器80所存储的资源还可以包括操作系统802和数据803等,存储方式可以是短暂存储或者永久存储。其中,操作系统802可以包括windows、unix、linux等。数据803可以包括但不限于训练信息、耗时信息、网络通信信息等。
176.在一些实施例中,电子设备还可包括有显示屏82、输入输出接口83、通信接口84、电源85以及通信总线86。
177.本领域技术人员可以理解,图8中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
178.可以理解的是,如果上述实施例中的面向异构计算系统的任务分配方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对目前技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、
移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、磁碟或者光盘等各种可以存储程序代码的介质。
179.基于此,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述面向异构计算系统的任务分配方法的步骤。
180.以上对本发明实施例所提供的一种面向异构计算系统的任务分配方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
181.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
182.以上对本发明所提供的一种面向异构计算系统的任务分配方法、装置、设备和计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
技术特征:
1.一种面向异构计算系统的任务分配方法,其特征在于,包括:获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;其中,所述训练信息包括模型信息和硬件信息;基于所述训练信息、所述耗时信息以及所述异构计算系统的网络通信信息,确定出各计算节点的负载耗时;根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;依据所述训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。2.根据权利要求1所述的面向异构计算系统的任务分配方法,其特征在于,所述获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息包括:获取分布式训练任务的训练信息;其中,所述训练信息包括模型参数量、梯度数据量、异构计算系统中计算节点类型、计算节点总数和所有计算节点的单次任务量总和;依据所述训练信息向每种类型的计算节点下发测试任务,以得到每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时。3.根据权利要求2所述的面向异构计算系统的任务分配方法,其特征在于,所述依据所述训练信息向每种类型的计算节点下发测试任务,以得到每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时包括:从每种计算节点类型的所有计算节点中选取一个计算节点作为测试节点;向所述测试节点下发不同的测试任务;其中,不同测试任务所对应的单次任务量不同;基于所述测试节点执行不同测试任务的耗时,确定出所述测试节点在不同单次任务量下的计算耗时;记录每种计算节点类型下不同单次任务量各自对应的计算耗时。4.根据权利要求3所述的面向异构计算系统的任务分配方法,其特征在于,所述基于所述测试节点执行不同测试任务的耗时,确定出所述测试节点在不同单次任务量下的计算耗时包括:统计所述测试节点每执行一次目标测试任务的训练所产生的训练耗时;其中,所述目标测试任务为所有测试任务中的任意一个测试任务,所述目标测试任务对应目标单次任务量;将设定次数的训练耗时的平均值作为所述测试节点在目标单次任务量下的计算耗时。5.根据权利要求4所述的面向异构计算系统的任务分配方法,其特征在于,所述将设定次数的训练耗时的平均值作为所述测试节点在目标单次任务量下的计算耗时包括:从当前统计的所述测试节点执行所述目标测试任务所产生的所有训练耗时中剔除前n次的训练耗时,将剩余满足设定次数的训练耗时的平均值作为所述测试节点在目标单次任务量下的计算耗时。6.根据权利要求2所述的面向异构计算系统的任务分配方法,其特征在于,所述基于所述训练信息、所述耗时信息以及所述异构计算系统的网络通信信息,确定出各计算节点的负载耗时包括:获取异构计算系统中各计算节点到参数服务器之间的通信带宽;
根据每个计算节点所对应的模型参数量、梯度数据量、通信带宽以及当前单次任务量下对应的计算耗时,确定出每个计算节点的负载耗时。7.根据权利要求6所述的面向异构计算系统的任务分配方法,其特征在于,所述通信带宽包括上行带宽和下行带宽;相应的,所述根据每个计算节点所对应的模型参数量、梯度数据量、通信带宽以及当前单次任务量下对应的计算耗时,确定出每个计算节点的负载耗时包括:依据每种类型的计算节点在不同单次任务量下执行测试任务时的计算耗时,确定出与目标计算节点的计算节点类型以及当前单次任务量匹配的目标计算耗时;其中,所述目标计算节点为所有计算节点中的任意一个计算节点;根据所述目标计算节点所对应的模型参数量、梯度数据量、上行带宽、下行带宽以及所述目标计算耗时,确定出所述目标计算节点的负载耗时。8.根据权利要求7所述的面向异构计算系统的任务分配方法,其特征在于,所述根据所述目标计算节点所对应的模型参数量、梯度数据量、上行带宽、下行带宽以及所述目标计算耗时,确定出所述目标计算节点的负载耗时包括:依据所述模型参数量与所述下行带宽,确定出下行传输耗时;依据所述梯度数据量与所述上行带宽,确定出上行传输耗时;将所述上行传输耗时、所述下行传输耗时以及所述目标计算耗时的和值作为所述目标计算节点的负载耗时。9.根据权利要求8所述的面向异构计算系统的任务分配方法,其特征在于,所述依据所述模型参数量与所述下行带宽,确定出下行传输耗时包括:将所述模型参数量与所述下行带宽的比值作为下行传输耗时。10.根据权利要求8所述的面向异构计算系统的任务分配方法,其特征在于,所述依据所述梯度数据量与所述上行带宽,确定出上行传输耗时包括:将所述梯度数据量与所述上行带宽的比值作为上行传输耗时。11.根据权利要求6所述的面向异构计算系统的任务分配方法,其特征在于,针对于每个计算节点的单次任务量的设置,所述方法包括:根据所有计算节点的单次任务量总和与计算节点总数,设置各计算节点的初始单次任务量。12.根据权利要求11所述的面向异构计算系统的任务分配方法,其特征在于,所述根据所有计算节点的单次任务量总和与计算节点总数,设置各计算节点的初始单次任务量包括:将所有计算节点的单次任务量总和与计算节点总数的比值作为各计算节点的初始单次任务量。13.根据权利要求6所述的面向异构计算系统的任务分配方法,其特征在于,所述根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量包括:选取所有计算节点的负载耗时最大值和负载耗时最小值;按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量,并重新确定出所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时;
在所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时满足设定的耗时偏差条件,则按照设定的任务量调整粒度,反向调整所述第一计算节点和所述第二计算节点的单次任务量,重新确定出所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时,并返回所述选取所有计算节点的负载耗时最大值和负载耗时最小值的步骤;直至负载耗时最大值和负载耗时最小值各自对应的计算节点不变的情况下,则将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量。14.根据权利要求13所述的面向异构计算系统的任务分配方法,其特征在于,在所述选取所有计算节点的负载耗时最大值和负载耗时最小值之后,还包括:判断负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点是否与上一轮选取的计算节点相同;其中,初始状态下上一轮的计算节点为空;在所述负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点相同的情况下,将各计算节点当前对应的单次任务量作为各计算节点满足节点耗时均衡条件的单次任务量;在所述负载耗时最大值对应的第一计算节点和负载耗时最小值对应的第二计算节点与上一轮选取的计算节点不相同的情况下,则执行所述按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量的步骤。15.根据权利要求14所述的面向异构计算系统的任务分配方法,其特征在于,所述按照设定的任务量调整粒度,依次调整负载耗时最大值对应的第一计算节点的单次任务量以及负载耗时最小值对应的第二计算节点的单次任务量包括:按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量。16.根据权利要求15所述的面向异构计算系统的任务分配方法,其特征在于,在所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时满足设定的耗时偏差条件的情况下,则按照设定的任务量调整粒度,反向调整所述第一计算节点和所述第二计算节点的单次任务量包括:每重新确定一次所述第一计算节点的负载耗时以及所述第二计算节点的负载耗时,则判断所述第一计算节点的负载耗时与所述第二计算节点的负载耗时的耗时偏差是否小于上一轮耗时偏差;在所述第一计算节点的负载耗时与所述第二计算节点的负载耗时的耗时偏差小于上一轮耗时偏差的情况下,执行所述按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量的步骤;在所述第一计算节点的负载耗时与所述第二计算节点的负载耗时的耗时偏差大于或等于上一轮耗时偏差的情况下,按照设定的任务量调整粒度,调大所述第一计算节点的单次任务量并且调小所述第二计算节点的单次任务量。17.根据权利要求16所述的面向异构计算系统的任务分配方法,其特征在于,在所述按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量之后,还包括:判断所述第一计算节点的单次任务量是否为零或者所述第二计算节点的单次任务量
是否大于上限值;在所述第一计算节点的单次任务量为零或者所述第二计算节点的单次任务量大于上限值的情况下,按照设定的任务量调整粒度,调大所述第一计算节点的单次任务量并且调小所述第二计算节点的单次任务量。18.根据权利要求16所述的面向异构计算系统的任务分配方法,其特征在于,所述按照设定的任务量调整粒度,调小所述第一计算节点的单次任务量并且调大所述第二计算节点的单次任务量包括:将所述第一计算节点的单次任务量减一,将所述第二计算节点的单次任务量加一。19.根据权利要求18所述的面向异构计算系统的任务分配方法,其特征在于,所述按照设定的任务量调整粒度,调大所述第一计算节点的单次任务量并且调小所述第二计算节点的单次任务量包括:将所述第一计算节点的单次任务量加一,将所述第二计算节点的单次任务量减一。20.一种面向异构计算系统的任务分配装置,其特征在于,包括获取单元、负载耗时确定单元、任务量确定单元、分配单元;所述获取单元,用于获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;其中,所述训练信息包括模型信息和硬件信息;所述负载耗时确定单元,用于基于所述训练信息、所述耗时信息以及所述异构计算系统的网络通信信息,确定出各计算节点的负载耗时;所述任务量确定单元,用于根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;所述分配单元,用于依据所述训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。21.一种电子设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序以实现如权利要求1至19任意一项所述面向异构计算系统的任务分配方法的步骤。22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至19任意一项所述面向异构计算系统的任务分配方法的步骤。
技术总结
本发明涉及多元异构计算技术领域,公开了面向异构计算系统的任务分配方法、装置、设备和介质,获取分布式训练任务的训练信息以及每种类型计算节点的耗时信息;训练信息包括模型信息和硬件信息。基于训练信息、耗时信息以及异构计算系统的网络通信信息,确定出各计算节点的负载耗时;根据各计算节点的负载耗时,确定出各计算节点满足节点耗时均衡条件的单次任务量;依据训练信息以及各计算节点的单次任务量,向各计算节点分配对应的训练任务。在负载均衡时考虑了异构计算系统中不同计算节点的计算性能,同时考虑异构计算系统内的网络资源,使负载均衡的效果更优。实现负载均衡仅调整每个计算节点的单次任务量,不影响分布式训练性能。练性能。练性能。
技术研发人员:唐轶男 郭振华 李仁刚 赵雅倩 王丽 高开 曹芳
受保护的技术使用者:浪潮电子信息产业股份有限公司
技术研发日:2023.08.02
技术公布日:2023/9/6
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
