一种训练任务资源调度方法、装置、设备及介质与流程

文档序号:28297657发布日期:2021-12-31 23:23阅读:104来源:国知局
一种训练任务资源调度方法、装置、设备及介质与流程

1.本发明涉及人工智能技术领域,特别涉及一种训练任务资源调度方法、装置、设备及介质。


背景技术:

2.在基于服务器集群的ai(即artificial intelligence,人工智能)训练场景中,一个模型训练所需要的具体资源由于无法被预先准确计算出来,所以目前算法人员在申请训练任务使用的cpu(即central processing unit,中央处理器)和gpu(即graphics processing unit,图形处理器)时,通常都会按照个人主观判断申请或者按照最大规格来申请,这可能会导致训练任务资源不充分或者资源浪费。对于已经在运行的训练任务job来说,如果该训练任务job的已分配资源利用率已经很高,此时会出现由于训练任务job的预分配资源不足致使无法提高训练性能、而集群中却存在资源闲置情况的问题。
3.为了克服上述问题,当前可以采取以下两种方式来对训练任务job进行资源伸缩,以达到为训练任务job进行资源扩容或缩容的目的,其中,一种方式是采用horovod训练框架为训练任务提供的弹性资源伸缩机制,但是在使用这种方式时需要用户进行手动处理,从而降低了资源伸缩效率;而另外一种方式则是基于checkpoint来进行训练任务的资源弹性扩容,不过这种方式需要先终止训练任务job中的所有任务运行进程task,并进行task的重建,整个过程消耗时间过多,由此也降低了资源伸缩效率。
4.综上,如何提升服务器集群的训练任务资源伸缩效率是目前有待解决的问题。


技术实现要素:

5.有鉴于此,本发明的目的在于提供一种训练任务资源调度方法、装置、设备及介质,能够提升服务器集群的训练任务资源伸缩效率。其具体方案如下:
6.第一方面,本技术公开了一种训练任务资源调度方法,包括:
7.确定当前所述服务器集群中正在运行的目标训练任务的已分配资源利用率;所述目标训练任务为所述分布式训练任务中的任一训练任务;
8.若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中为所述目标训练任务分配新资源,以得到扩容后训练任务;
9.当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求;
10.若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。
11.可选的,所述确定当前所述服务器集群中正在运行的目标训练任务的已分配资源利用率,包括:
12.确定当前所述服务器集群中正在运行的目标训练任务的已分配gpu利用率;
13.相应的,所述若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中为所述目标训练任务分配新资源,包括:
14.若所述已分配gpu利用率不小于第一预设阈值,并且所述服务器集群中的空闲gpu资源数量不小于第一预设gpu资源数量,则对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中根据所述第一预设gpu资源数量和预设cpu资源数量为所述目标训练任务创建具有相应资源的新任务运行进程。
15.可选的,所述确定当前所述服务器集群中正在运行的目标训练任务的已分配资源利用率,包括:
16.确定当前所述服务器集群中正在运行的目标训练任务的已分配gpu利用率和已分配cpu利用率;
17.相应的,所述若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中为所述目标训练任务分配新资源,包括:
18.若所述已分配gpu利用率小于第一预设阈值,并且所述已分配cpu利用率不小于第二预设阈值,则确定当前所述目标训练任务所需的新cpu资源数量,并判断当前运行所述目标训练任务的服务器节点中的空闲cpu资源数量是否不小于所述新cpu资源数量;
19.如果所述空闲cpu资源数量不小于所述新cpu资源数量,则从所述服务器集群中筛选出当前运行所述目标训练任务的服务器节点,并在筛选到的服务器节点中为所述目标训练任务的已创建任务运行进程分配与所述新cpu资源数量相一致的新cpu资源;
20.如果所述空闲cpu资源数量小于所述新cpu资源数量,则根据当前所述服务器集群中其他服务器节点的空闲资源,对所述其他服务器节点进行筛选,并在筛选到的服务器节点中根据所述新cpu资源数量以及第二预设gpu资源数量为所述目标训练任务创建具有相应资源的新任务运行进程。
21.可选的,所述从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放,包括:
22.确定每个所述服务器节点中包含的新资源总数;
23.确定每个所述服务器节点中与所述新资源相关的训练任务总数,以得到关联任务总数;
24.基于所述服务器节点中的所述新资源总数和所述关联任务总数,确定出所述服务器集群中每个所述服务器节点的优先级;
25.基于所述服务器节点的优先级从所述服务器集群中确定出目标服务器,并对所述目标服务器节点中的所述新资源进行释放,以使释放后的所述服务器集群中的空闲资源满足所述新训练任务的资源需求。
26.可选的,还包括:
27.按照预设扩容触发时刻定期触发为已分配资源利用率满足所述预设条件的所述目标训练任务分配新资源的步骤;
28.按照预设缩容触发时刻定期触发对所述目标服务器节点中的所述新资源进行释
放的步骤。
29.可选的,还包括:
30.对同时运行有第一训练任务和第二训练任务的任一服务器节点进行实时监视,当监视到所述任一服务器节点中的所述第一训练任务结束运行,则确定当前所述任一服务器节点中的空闲资源,并确定运行在其他服务器节点上的属于所述第二训练任务的任务运行进程所对应的进程资源;
31.判断所述任一服务器节点中的空闲资源是否大于所述进程资源,如果是,则将所述其他服务器节点上的属于所述第二训练任务的任务运行进程迁移至所述任一服务器节点。
32.第二方面,本技术公开了一种训练任务资源调度装置,应用于服务器集群,所述服务器集群用于执行分布式训练任务,所述装置包括:
33.利用率确定模块,用于确定当前所述服务器集群中正在运行的目标训练任务的已分配资源利用率;所述目标训练任务为所述分布式训练任务中的任一训练任务;
34.资源分配模块,用于若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,在筛选到的服务器节点中为所述目标训练任务分配新的资源,以得到扩容后训练任务;
35.需求判断模块,用于当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求;
36.资源释放模块,用于若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。
37.第三方面,本技术公开了一种电子设备,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现前述公开的训练任务资源调度方法。
38.第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的训练任务资源调度方法。
39.可见,本技术中,确定当前所述服务器集群中正在运行的目标训练任务的已分配资源利用率;若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中为所述目标训练任务分配新的资源,以得到扩容后训练任务;当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求;若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。如此一来,能够在不停止训练任务中的所有进程的运行的情况下,自动进行资源伸缩,进一步提升了服务器集群的训练任务资源伸缩效率。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
41.图1为本技术提供的一种训练任务资源调度方法流程图;
42.图2为本技术提供的一种具体的训练任务资源调度方法流程图;
43.图3为本技术提供的一种训练任务资源调度方法示意图;
44.图4为本技术提供的一种训练任务资源调度方法示意图;
45.图5为本技术提供的一种具体的训练任务资源调度方法流程图;
46.图6为本技术提供的一种具体的训练任务资源调度方法流程图;
47.图7为本技术提供的一种训练任务资源调度方法示意图;
48.图8为本技术提供的一种具体的训练任务资源调度方法流程图;
49.图9为本技术提供的一种训练任务资源调度方法示意图;
50.图10为本技术提供的一种训练任务资源调度装置结构示意图;
51.图11为本技术提供的一种电子设备结构图。
具体实施方式
52.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
53.当前可以采取以下两种方式来对训练任务进行资源伸缩,以达到为训练任务进行资源扩容或缩容的目的,其中,一种方式是采用horovod训练框架为训练任务提供的弹性资源伸缩机制,但是在使用这种方式时需要用户进行手动处理,从而降低了资源伸缩效率;而另外一种方式则是基于checkpoint来进行训练任务的资源弹性扩容,不过这种方式需要先终止训练任务job中的所有任务运行进程,并进行任务运行进程的重建,整个过程消耗时间过多,由此也降低了资源伸缩效率。为了克服上述问题,本技术提供了一种训练任务资源调度方案,能够有效提升服务器集群的训练任务资源伸缩效率。
54.参见图1所示,本技术实施例公开了一种训练任务资源调度方法流程图,该方法包括:
55.步骤s11:确定当前服务器集群中正在运行的目标训练任务的已分配资源利用率。
56.本实施例中所述已分配资源利用率包括已分配gpu利用率和已分配cpu利用率;所述目标训练任务为所述分布式训练任务中的任一训练任务。
57.本实施例中,所述服务器集群中需要部署资源调度平台,用于申请训练任务所需的gpu资源和cpu资源,创建训练任务。另外,训练任务中的已分配gpu和已分配cpu是算法人员在创建训练任务时指定的,同时,算法人员可以设置训练任务可以使用的资源数量。例如,分配训练任务运行需要的任务运行进程数量时,最小数量tasknum
min
为4个,最大数量tasknum
max
为8个,每个任务运行进程的gpu数量taskgpu为2个,最小cpu数量taskcpu
min
为12个,最大cpu数量taskcpu
max
为24个。另外,资源调度器在为初始创建的训练任务进行资源分配时,默认按照最小资源数量进行资源分配。
58.本实施例中,所述资源调度平台也可以提供分布式训练框架,本实施例中使用的分布式训练框架为horovod框架。平台内有多个分布式训练任务,单个训练任务有多个任务
运行进程。其中所述任务运行进程以容器的方式运行在gpu服务器。
59.步骤s12:若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中为所述目标训练任务分配新资源,以得到扩容后训练任务。
60.本实施例中,在所述服务器集群中,对于初始设置的服务器节点数目可以根据实际使用时对所述服务器集群的需求来部署,如果实际需求对所述服务器集群的处理性能要求较高,则可以在当前服务器集群中部署较多的服务器节点,将所述服务器节点设置为较大的数值,从而可以提升服务器集群的处理性能;如果实际需求对所述服务器集群的处理性能要求较低,则可以在当前服务器集群中部署较少的服务器节点,将所述服务器节点设置为较小的数值。
61.本实施例中,所述新资源可以是新任务运行进程,也可以是新cpu资源。可以理解的是,所述服务器集群可以通过创建新任务运行进程为训练任务分配新资源,也可以通过为训练任务分配新cpu资源对训练任务进行新资源分配;另外,所述服务器集群中存在多个服务器节点,每个所述服务器节点中存在多个训练任务,并且每个训练任务存在上述两种分配新资源的方法中的一种,因此所述服务器节点中可能存在一种或两种上述分配新资源的方法,进一步,所述服务器集群中可能存在一种或两种上述分配新资源的方法。
62.步骤s13:当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求。
63.本实施例中,获取到新训练任务后,需要判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求,也即,判断当前所述服务器集群中的空闲cpu资源和空闲gpu资源是否不小于所述新训练任务所需要的相应的cpu资源和gpu资源,如果当前所述服务器集群中的空闲cpu资源和空闲gpu资源不小于所述新训练任务所需要的相应的cpu资源和gpu资源,则表示当前所述服务器集群中的空闲资源满足所述新训练任务的资源需求;反之,则表示当前所述服务器集群中的空闲资源不满足所述新训练任务的资源需求。可以理解的是,当前所述服务器集群中的空闲资源是得到前述扩容后训练任务后的剩余资源。
64.步骤s14:若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。
65.本实施例中,当获取到新训练任务,并且当前所述服务器集群中的空闲资源不满足所述新建训练任务的资源需求时,需要按照一定的规则对所述新资源进行回收,以便所述服务器集群中的空闲资源能够满足新建训练任务的最小资源需求。
66.本实施例中,可以通过减少前述扩容阶段创建的新任务运行进程来进行资源释放;也可以通过减少前述扩容阶段为已有任务运行进程分配的新cpu资源来进行资源释放;另外,由于所述服务器集群中可能存在一种或多种分配新资源的方法,因此,所述服务器集群中也可能同时存在通过减少新资源对应的新任务运行进程和减少新资源对应的新cpu资源来进行新资源释放的方法。
67.可以理解的是,进行新资源分配和新资源释放的过程中需要随时获取所述服务器集群中的新资源变化情况,在本实施例中,通过预设脚本创建接口获取资源变化监测脚本,
并利用所述资源变化监测脚本对新资源分配操作或资源释放操作对应的资源变化情况进行监测。例如,定义通知horovodrun训练任务新增任务运行进程或者减少任务运行进程的的通信机制,horovod训练任务提供了一种发现可用任务运行进程的机制,支持用户自定义discovery_host脚本,需要在启动horovod训练任务的同时指定启动参数
‑‑
host

discovery

script,以便获得任务运行进程的数量情况。例如
‑‑
host

discovery

script=/usr/local/bin/discovery_host.sh,则horovod会通过该脚本获取任务运行进程数量的变化情况。本方案中,在用户提交horovod训练任务时,平台自动为用户追加
‑‑
host

discovery

script参数,平台为训练任务自动进行新资源分配或者新资源释放时,用于将正确的任务运行进程数量信息通知到horovod训练任务。
68.本实施例中,当分布式训练任务创建时,由于所需的服务器节点的资源被其它的训练任务所占用,导致无法将该分布式训练任务的所有任务运行进程分配到同一所需服务器节点中,出现同一分布式训练任务的多个任务运行进程被分配在不同的服务器节点中的情况,此时训练任务跨节点运行,通信开销增大,并且受到网络带宽的限制,进一步影响了训练任务运行的速度。因此,在服务器集群的资源充足的前提下,通常要求一个训练任务尽量运行在同一个服务器节点中。具体的,参见图2所示,本实施例还可以进一步包括:
69.步骤s21:当同时存在第一训练任务和第二训练任务时,对同时运行有第一训练任务和第二训练任务的任一服务器节点进行实时监视;
70.步骤s22:当监视到所述任一服务器节点中的所述第一训练任务结束运行,则确定当前所述任一服务器节点中的空闲资源,并确定运行在其他服务器节点上的属于所述第二训练任务的任务运行进程所对应的进程资源;
71.步骤s23:判断当前所述任一服务器节点中的空闲资源是否大于所述进程资源,如果是,则将所述其他服务器节点上的属于所述第二训练任务的任务运行进程迁移至所述任一服务器节点。
72.本实施例中,所述第一训练任务和所述第二训练任务可以有一个,也可以存在多个,在此不做具体限定。
73.图3和图4的训练任务资源调度方法示意图展示了自动将单个任务的已分配任务进程迁移到同一个服务器节点的过程。具体的,服务器节点1中存在训练任务1的任务运行进程1以及训练任务2的任务运行进程1,服务器节点2中存在训练任务1的任务运行进程2和训练任务2的任务运行进程1,当所述训练任务1结束运行,并且所述服务器节点1中有足够的空闲资源用于运行训练任务2的任务运行进程1和训练任务2的任务运行进程2时,将训练任务2的任务运行进程2迁移至服务器节点1。
74.可以理解的是,将训练任务2的任务运行进程2迁移至服务器节点1的具体过程为:删除训练任务2中的任务运行进程2,通知horovod,重建horovod通信域,horovod训练任务正常运行后,在服务器节点1创建任务运行进程2,并通知horovod,重建horovod通信域,以便horovod训练任务正常运行。
75.本实施例中,对于一些特殊情况可以定时进行新资源分配和新资源释放的过程。具体的,按照预设扩容触发时刻定期触发为已分配资源利用率满足所述预设条件的所述目标训练任务分配新资源的步骤;按照预设缩容触发时刻定期触发对所述目标服务器节点中的所述新资源进行释放的步骤。
76.可以理解的是,不同时间段训练任务的个数不同,因此需要使用的资源也不同,在使用资源多的时候,对目标服务器节点进行新资源释放,以便为新建训练任务提供足够的空闲资源;在使用资源少的时候,对目标训练任务进行新资源的分配。例如,对于某些高校场景,通常白天会有大量的学生人员使用gpu资源,但是夜间使用gpu资源较少,此时对于训练任务,特别是大模型训练任务,可以定时进行新资源分配和新资源释放,例如,设置晚上7点对指定的训练任务进行新资源分配,使用所述服务器集群中全部的空闲资源进行新资源分配,同时设置早上7点进行新资源释放,保证使用最少的资源进行训练,以便为新建训练任务提供更多的空闲资源。
77.可见,本实施例中,确定当前所述服务器集群中正在运行的目标训练任务的已分配资源利用率;若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中为所述目标训练任务分配新的资源,以得到扩容后训练任务;当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求;若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。如此一来,可以在不终止训练任务的情况下,进行新资源的分配和释放,提升服务器集群的训练任务资源伸缩效率。并且,对于特殊情况也支持定时对新资源进行分配和释放。另外,对于分布式训练任务,可以将已分配在不同服务器节点中的训练任务迁移到同一服务器节点,减少通信开销,提高训练速度。
78.参见图5所示,本技术实施例公开了一种具体的训练任务资源调度方法流程图,该方法包括:
79.步骤s31:确定当前服务器集群中正在运行的目标训练任务的已分配gpu利用率。
80.其中,关于步骤s31的更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
81.步骤s32:若所述已分配gpu利用率不小于第一预设阈值,并且所述服务器集群中的空闲gpu资源数量不小于第一预设gpu资源数量,则对所述服务器集群中的服务器节点进行筛选。
82.本实施例中,所述第一预设阈值是通过多次试验获得的经验值,可以是100%;所述第一预设gpu资源数量表示预先设定的在分配新资源时所需要的gpu资源数量。
83.本实施例中,进行新资源的分配以得到扩容后训练任务时需要对已分配gpu利用率和所述服务器集群中的空闲gpu资源数量进行判断,当已分配gpu利用率高,且不小于第一预设阈值时,需要对训练任务进行新资源分配,然后,当所述服务器集群中的空闲gpu资源数量高,且不小于第一预设gpu资源数量时,所述服务器集群满足新资源分配的条件,之后进行服务器节点筛选的过程。
84.步骤s33:在筛选到的服务器节点中根据所述第一预设gpu资源数量和预设cpu资源数量为所述目标训练任务创建具有相应资源的新任务运行进程。
85.本实施例中,首先确定已分配gpu利用率不小于第一预设阈值和所述服务器集群中的空闲gpu资源数量不小于第一预设gpu资源数量,然后进行服务器节点的筛选,在进行服务器节点的筛选时,需要选择具有足够的用于创建新任务运行进程的资源的服务器节
点。所述创建新任务运行进程时,需要足够的空闲资源,包括足够的gpu资源和足够的cpu资源,并且所述创建每个新任务运行进程所需要的gpu资源数量和cpu资源数量是预先设定的。
86.本实施例中,所述新任务运行进程的数目可以有多个,并且,由于一个服务器节点的空闲资源数量可能不足以创建多个新任务运行进程,因此,所述新任务运行进程可以位于相同或不同的服务器节点中。
87.步骤s34:当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求。
88.其中,关于步骤s34的更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
89.步骤s35:若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。
90.本实施例中,当获取到新训练任务后,判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求,如果当前所述服务器集群中的空闲资源满足所述新训练任务的资源需求,则不需要对新资源进行释放,可以直接创建新训练任务对应的新任务运行进程;如果当前所述服务器集群中的空闲资源不满足所述新训练任务的资源需求,则需要对分配的新资源进行释放,首先应找到扩容后训练任务对应的所述新资源所在的服务器节点,之后,从所述服务器节点中筛选出用于释放新资源的目标服务器节点。然后,对所述目标服务器节点的新资源进行释放,所述资源需求表示进行新训练任务创建所需要的空闲资源,包括gpu资源和cpu资源。
91.可见,本实施例中,如果已分配gpu利用率不小于第一预设阈值,则表明需要进行新资源的分配,然后,判断所述服务器集群中的空闲gpu资源数量是否不小于第一预设gpu资源数量,如果是,则所述服务器集群满足进行新资源分配的条件,可以进行新资源分配。进一步,从所述服务器集群筛选出扩容后训练任务的所述新资源所在的服务器节点,之后,从所述扩容后训练任务的所述新资源所在的服务器节点筛选出具有足够的gpu资源和cpu资源,可以创建新任务运行进程的目标服务器节点,并对所述目标服务器节点的新资源进行释放。如此一来,能够在不终止训练任务的情况下,自动进行新资源分配,提高了服务器集群的训练任务资源伸缩效率。
92.参见图6所示,本技术实施例公开了一种具体的训练任务资源调度方法流程图,该方法包括:
93.步骤s41:确定当前服务器集群中正在运行的目标训练任务的已分配gpu利用率和已分配cpu利用率。
94.其中,关于步骤s41的更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
95.步骤s42:若所述已分配gpu利用率小于第一预设阈值,并且所述已分配cpu利用率不小于第二预设阈值,则确定当前所述目标训练任务所需的新cpu资源数量,并判断当前运行所述目标训练任务的服务器节点中的空闲cpu资源数量是否不小于所述新cpu资源数量。
96.本实施例中,当所述已分配gpu利用率小于第一预设阈值,也就是已分配gpu资源
足够时,就需要对已分配cpu利用率进行判断,如果所述已分配cpu利用率不小于第二预设阈值,则需要进行新资源的分配;所述第一预设阈值和第二预设阈值是通过多次试验获得的经验值,其中,所述第二预设阈值可以是90%。
97.本实施例中,确定所述目标训练任务需要进行新资源分配后,进一步确定所述目标训练任务所需要的新资源数量,并判断当前运行所述目标训练任务的服务器节点中的空闲cpu资源数量是否不小于所述新cpu资源数量,对于当前运行所述目标训练任务的服务器节点中的空闲cpu资源数量不小于所述新cpu资源数量和当前运行所述目标训练任务的服务器节点中的空闲cpu资源数量小于所述新cpu资源数量的两种情况,所述目标训练任务具有不同的分配新资源的方法。
98.步骤s43:如果所述空闲cpu资源数量不小于所述新cpu资源数量,则从所述服务器集群中筛选出当前运行所述目标训练任务的服务器节点,并在筛选到的服务器节点中为所述目标训练任务的已创建任务运行进程分配与所述新cpu资源数量相一致的新cpu资源。
99.本实施例中,经过上述判断,如果当前运行所述目标训练任务的服务器节点中的空闲cpu资源数量不小于所述新cpu资源数量,则可以不考虑gpu资源数量,只对所述目标训练任务的每一个已分配任务运行进程分配新cpu资源;由于cpu的资源数量在一定范围内,并且具有最大值和最小值,所述目标训练任务的每一个已分配任务运行进程的已分配cpu资源的数量都是创建任务运行进程时的cpu的最小资源数量,因此可以对所述目标训练任务的每一个已分配任务运行进程分配新cpu资源。
100.在一种具体实施方式中,直接将所述目标训练任务的每一个已分配任务运行进程的已分配cpu资源的数量由最小资源数量分配新cpu资源达到最大资源数量。例如,所述目标训练任务的最小可分配cpu数量为12个,最大可分配cpu数量为24个,所述所需的新资源为3个cpu,则将所述目标训练任务的cpu数量变为24个。
101.在另一种具体实施方式中,可以根据所述目标训练任务所需的新资源将所述目标训练任务的每一个已分配任务运行进程的已分配cpu资源的数量由最小资源数量逐渐分配新cpu资源,最大可变为最大资源数量。例如,所述目标训练任务的最小可分配cpu数量为12个,最大可分配cpu数量为24个,所述所需的新资源为3个cpu,则将所述目标训练任务的cpu数量变为15个。
102.步骤s44:如果所述空闲cpu资源数量小于所述新cpu资源数量,则根据当前所述服务器集群中其他服务器节点的空闲资源,对所述其他服务器节点进行筛选,并在筛选到的服务器节点中根据所述新cpu资源数量以及第二预设gpu资源数量为所述目标训练任务创建具有相应资源的新任务运行进程。
103.本实施例中,经过上述判断,如果当前运行所述目标训练任务的服务器节点中的空闲cpu资源数量小于所述新cpu资源数量,则表明当前所述训练任务所在的服务器节点的空闲资源不足,则从不包含当前所述训练任务的其他服务器节点中筛选合适的服务器节点。
104.本实施例中,需要确保所述筛选到的服务器节点中的空闲cpu资源和空闲gpu资源都不小于一个任务运行进程需要的gpu资源和最小cpu资源。之后,在筛选到的服务器节点中根据所述新cpu资源数量以及第二预设gpu资源数量为所述目标训练任务创建具有相应资源的新任务运行进程。
105.可以理解的是,所述筛选到的服务器节点可以是一个或多个,每个所述筛选到的服务器节点中的所述新任务运行进程也可以是一个或多个。
106.步骤s45:当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求。
107.其中,关于步骤s45的更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
108.步骤s46:若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。
109.本实施例中,上述提到了两种新资源分配方法,第一种方法为在当前所述目标训练任务所在的服务器节点中为所述目标训练任务的已分配任务运行进程分配新cpu资源,第二种方法为在不包含当前所述训练任务的其他服务器节点中筛选合适的服务器节点,然后在筛选到的服务器节点中创建新任务运行进程。
110.可以理解的是,对所述目标服务器节点进行新资源分配的方法可以是第一种方法,也可以是第二种方法,并且所述目标服务器节点可以是一个或多个,因此所述目标服务器节点中的所述新资源可以是第一种方法中的新cpu资源,可以是第二种方法中的新任务运行进程中的资源,也可以是第一种方法中的新cpu资源和第二种方法中的新任务运行进程中的资源的综合。
111.如图7所示,对运行态horovod训练任务进行已分配资源利用率的判断,首先判断已分配gpu利用率是否不小于第一预设阈值,如果是,便通过创建新任务运行进程来分配新资源,如果否,则需要判断已分配cpu资源是否不小于第二预设阈值,如果是,则进一步判断该训练任务所在的服务器节点的空闲cpu资源是否充足,如果充足,则在该服务器节点为该训练任务的任务运行进程分配新cpu资源,如果不充足,则通过创建新任务运行进程来分配新资源。以上分配新资源的方法的最终目的是使horovod训练任务正常运行。
112.可见,本实施例中,如果所述已分配gpu利用率小于第一预设阈值,并且所述已分配cpu利用率不小于第二预设阈值,判断当前运行所述目标训练任务的服务器节点中的空闲cpu资源数量是否不小于所述新cpu资源数量,如果是,则在当前所述目标训练任务所在的服务器节点中为所述目标训练任务的已分配任务运行进程分配新cpu资源;如果不是,则在当前所述目标训练任务所在的服务器节点之外的其他服务器节点中筛选到所需的服务器节点,然后在筛选到的服务器节点中创建新任务运行进程;根据上述两种情况对所述目标服务器节点中的所述新资源进行释放。如此一来,可以在不终止训练进程的情况下,自动进行新资源分配,进一步提高服务器集群的训练任务资源伸缩效率。
113.参见图8所示,本技术实施例公开了一种具体的训练任务资源调度方法流程图,该方法包括:
114.步骤s51:确定当前服务器集群中正在运行的目标训练任务的已分配资源利用率。
115.其中,关于步骤s51的更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
116.步骤s52:若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中为所
述目标训练任务分配新资源,以得到扩容后训练任务。
117.本实施例中,所述服务器集群中进行新资源分配得到扩容后训练任务的方法有三种,第一种方法为在当前所述目标训练任务所在的服务器节点中为所述目标训练任务的已分配任务运行进程分配新cpu资源;第二种方法为在所述服务器集群中筛选出所需的服务器节点,然后在筛选到的服务器节点中创建新任务运行进程。
118.可以理解的是,所述服务器集群中可以存在上述两种方法中的任意一种或两种。
119.步骤s53:当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求。
120.其中,关于步骤s53的更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
121.步骤s54:确定每个所述服务器节点中包含的新资源总数。
122.本实施例中,所述新资源为所述服务器集群中每个所述服务器节点采用两种方法中的任意一种分配的新资源。
123.步骤s55:确定每个所述服务器节点中与所述新资源相关的训练任务总数,以得到关联任务总数。
124.本实施例中,所述关联任务总数表示释放服务器节点的新资源时受到影响的训练任务的数量。
125.步骤s56:基于所述服务器节点中的所述新资源总数和所述关联任务总数,确定出所述服务器集群中每个所述服务器节点的优先级。
126.本实施例中,所述新资源总数越大的所述服务器节点优先级越高,当所述新资源总数相同时,所述关联任务总数越少,优先级越高。
127.步骤s57:基于所述服务器节点的优先级从所述服务器集群中确定出目标服务器,并对所述目标服务器节点中的所述新资源进行释放,以使释放后的所述服务器集群中的空闲资源满足所述新训练任务的资源需求。
128.本实施例中,{(gpu
ij
,cpu
ij
)|jobtask
ij
,i,j∈0,1...}表示该服务器集群中第i个训练任务job自动扩容的第j个任务进程的资源规格集合,即扩容的gpu和cpu信息,若任务进程只是基于cgroup(进程组)进行了cpu的扩容,则gpu
ij
=0。进行资源释放时,需要满足的条件是回收的资源与所述服务器集群中的空闲资源能够满足新建训练任务的资源需求,可用公式表示为:
[0129][0130]
式中,表示服务器集群中回收的全部资源,cluster
free
表示服务器集群中进行资源释放之前所有的空闲资源,job
new
(gup,cup)表示新建训练任务所需要的资源。另外,上述gpu
ij
表示该服务器集群中第i个训练任务job自动扩容的第j个任务进程的gpu资源,cpu
ij
表示该服务器集群中第i个训练任务job自动扩容的第j个任务进程的cpu资源,jobtask
ij
表示该服务器集群中第i个训练任务job自动扩容的第j个任务进程。
[0131]
本实施例中,进行资源释放时,统计出每个所述服务器节点中能够回收的最大资源数量,即所述服务器节点中的所述新资源总数,根据所述服务器节点中的所述新资源总
数和所述关联任务总数将所述服务器节点进行降序排序以得到节点列表;按照所述节点列表中的所述服务器节点顺序对所述服务器节点的新资源进行释放,直到所述服务器集群中的空闲资源大于新建训练任务的资源需求。
[0132]
本实施例中,按照所述节点列表中的所述服务器节点顺序对所述服务器节点的新资源进行释放的过程中,如果存在所述新资源总数相同的两个所述服务器节点,则首先对影响训练任务数量少的服务器节点的新资源进行释放,如果释放后所述服务器集群中空闲资源不足再继续释放另一个服务器节点的新资源。例如,最大资源数量相同的两个所述服务器节点,第一个服务器节点释放新资源会影响2个训练任务,第二个服务器节点释放资源会影响4个训练任务,则首先释放第一个服务器节点中的新资源,如果释放后所述服务器集群空闲资源不足再继续释放第二个服务器中的新资源。
[0133]
如图9所示,当检测到有新建horovod训练任务时,将所述新建horovod训练任务加入调度队列,再判断服务器集群中的空闲资源是否充足,能否有足够的空闲资源创建该新建horovod训练任务,如果空闲资源充足,则训练任务调度成功,该新建horovod训练任务可正常运行;如果空闲资源不充足,则判断服务器集群中是否存在扩容任务,如果不存在,则训练任务调度失败,如果存在,则通过减少已扩容任务的进程的cpu资源或减少已扩容任务的进程数量来释放新资源,当利用减少已扩容任务的进程数量来释放新资源的方法时,还需要在进行新资源释放之后通知horovod,重建horovod通信域,使horovod训练任务正常运行。
[0134]
可以理解的是,在进行资源释放时,所述服务器集群中所释放的资源可以不仅仅是所述扩容后训练任务对应的所述新资源,也可以是所述服务器集群中的每个服务器节点中的空闲资源。例如,当所述服务器集群中不存在扩容后训练任务时,可以释放所述服务器集群中的每个服务器节点中的空闲资源以便新建训练任务。
[0135]
可见,当获取到新的训练任务,由于所述服务器集群中空闲资源不足而进行新资源释放时,首先从所述服务器集群中根据所述新资源总数和所述关联任务总数确定出进行资源释放的服务器节点的顺序,然后依次对所述服务器节点进行新资源释放,直到所述服务器集群中的空闲资源大于新建训练任务的资源需求。如此一来,可以在不终止训练进程的情况下,自动进行新资源释放,进一步提高服务器集群的训练任务资源伸缩效率。
[0136]
参见图10所示,本技术实施例公开了一种训练任务资源调度装置,应用于服务器集群,所述服务器集群用于执行分布式训练任务,包括:
[0137]
利用率确定模块11,用于确定当前所述服务器集群中正在运行的目标训练任务的已分配资源利用率;所述目标训练任务为所述分布式训练任务中的任一训练任务;
[0138]
资源分配模块12,用于若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,在筛选到的服务器节点中为所述目标训练任务分配新资源,以得到扩容后训练任务;
[0139]
需求判断模块13,用于当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求;
[0140]
资源释放模块14,用于若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。
[0141]
其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0142]
可见,本实施例中,确定当前所述服务器集群中正在运行的目标训练任务的已分配资源利用率;若所述已分配资源利用率满足预设条件,则根据当前所述服务器集群中的空闲资源对所述服务器集群中的服务器节点进行筛选,并在筛选到的服务器节点中为所述目标训练任务分配新的资源,以得到扩容后训练任务;当获取到新训练任务,则判断当前所述服务器集群中的空闲资源是否满足所述新训练任务的资源需求;若当前所述服务器集群中的空闲资源不满足所述资源需求,则从所有所述扩容后训练任务对应的所述新资源所在的服务器节点中筛选出目标服务器节点,并对所述目标服务器节点中的所述新资源进行释放。如此一来,可以在不终止训练任务的情况下,进行新资源的分配和释放,提升服务器集群的训练任务资源伸缩效率。
[0143]
进一步的,本技术实施例还提供了一种电子设备,该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、输入输出接口24、通信接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任意实施例公开的训练任务资源调度方法的相关步骤。
[0144]
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口25能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定。
[0145]
另外,存储器22作为可以包括作为运行内存的随机存取存储器和用于外部内存的存储用途的非易失性存储器,其上的存储资源包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
[0146]
其中,操作系统221用于管理与控制源主机上电子设备20上的各硬件设备以及计算机程序222,操作系统221可以是windows、unix、linux等。计算机程222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的训练任务资源调度方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
[0147]
本实施例中,所述输入输出接口24具体可以包括但不限于usb接口、硬盘读取接口、串行接口、语音输入接口、指纹输入接口等。
[0148]
进一步的,本技术实施例还公开了一种计算机可读存储介质,这里所说的计算机可读存储介质包括随机存取存储器(random access memory,ram)、内存、只读存储器(read

only memory,rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、磁碟或者光盘或技术领域内所公知的任意其他形式的存储介质。其中,所述计算机程序被处理器执行时实现前述训练任务资源调度方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0149]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0150]
结合本文中所公开的实施例描述的训练任务资源调度或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器
(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
[0151]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0152]
以上对本发明所提供的一种训练任务资源调度方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1