本技术实施例涉及集群调度,具体而言,涉及一种面向深度学习的服务器无感知计算集群调度方法及产品。
背景技术:
1、随着深度学习在日常应用程序和服务中的应用越来越广泛,智能化已经成为在计算环境下软件的核心特征和基本能力,而高质量的深度学习模型则是智能化的重要支撑。因此,软件开发人员除了编写核心业务功能逻辑,往往还需要利用分布式机器学习系统来进行模型训练任务。当前的深度学习训练平台大多都遵循以服务器为中心的模式,其中深度学习开发人员以物理机、虚拟机、容器等机器实例的形式请求硬件资源以运行深度学习训练作业。
2、然而,现有以服务器为中心的方案不具备弹性,无法在保证满足作业的训练截止时间(即保证在特定的截止时间之前完成作业)的同时,灵活地扩展深度学习作业的资源以提供性能保证。例如,一些生产环境为了在定期发布产品时及时将产品上线,要求模型在上线时间之前完成训练。尽管一些工作尝试考虑作业截止时间,但这些工作仍然采用以服务器为中心的模式,缺乏弹性地扩展或收缩作业资源的灵活性以优化集群范围的资源利用率并满足截止时间。因此,如何在提升作业的截止时间满足率同时,充分利用集群资源,成为当前领域内亟待解决的问题。
技术实现思路
1、本技术实施例在于提供一种面向深度学习的服务器无感知计算集群调度方法及产品,旨在解决如何在提升作业的截止时间满足率同时,充分利用集群资源的问题。
2、本技术实施例第一方面提供了一种面向深度学习的服务器无感知计算集群调度方法,包括:
3、获取新增作业,将所述新增作业添加至调度队列;
4、基于所述调度队列中每个作业对应的截止时间,确定所述调度队列中每个作业分配的资源量,作为第一调度方案;
5、基于所述调度队列中每个作业的边际回报,对所述第一调度方案中的每个作业分配的资源量进行分配,得到第二调度方案;
6、基于所述第二调度方案,确定所述调度队列中每个作业对应的资源;调用集群中所述调度队列中每个作业对应的资源对所述每个作业进行训练。
7、在一种可选的实施方式中,获取新增作业,包括:
8、获取待训练作业以及所述待训练作业的截止时间;
9、获取集群的空闲资源量,以及,基于所述待训练作业的截止时间获取所述待训练作业的满足份额,所述满足份额为在所述待训练作业的截止时间内完成对所述待训练作业训练所需的最小资源量;
10、在所述空闲资源量大于所述待训练作业的满足份额的情况下,将所述待训练作业作为所述新增作业。
11、在一种可选的实施方式中,基于所述调度队列中每个作业对应的截止时间,确定所述调度队列中每个作业分配的资源量,作为第一调度方案,包括:
12、按照所述调度队列中每个作业对应的截止时间,对所述调度队列中的作业进行排序;
13、在每个预设时间段内,向所述调度队列中每个作业分配预设数量的资源量,所述预设时间段为所述调度队列中每个作业对应的截止时间之前的单位时间段;
14、若在所述预设时间段内,所述调度队列中每个作业能够在所述每个作业对应的截止时间内完成训练,将所述预设时间段内的所述调度队列中每个作业对应的资源量,作为所述第一调度方案。
15、在一种可选的实施方式中,基于所述调度队列中每个作业的边际回报,对所述第一调度方案中的每个作业分配的资源量进行分配,得到第二调度方案,包括:
16、按照所述第一调度方案中每个作业的边际回报,对所述第一调度方案中的作业进行排序,得到候选第二调度方案;
17、分配迭代:基于集群的空闲资源量,向所述候选第二调度方案中的目标作业分配一个资源量,按照所述候选第二调度方案中每个作业的边际回报,对所述候选第二调度方案中的作业进行排序,得到更新的候选第二调度方案,所述目标作业为所述候选第二调度方案中边际回报最大的作业;
18、重复上述分配迭代过程,直至集群的空闲资源量全部进行分配,将所述更新的候选第二调度方案作为所述第二调度方案。
19、在一种可选的实施方式中,所述每个作业的边际回报,按照如下方式获取:
20、确定每个作业分配的第一资源量以及第一运行时间,所述第一资源量为所述第一调度方案中的每个作业分配的资源量,所述第一运行时间为每个作业基于所述每个作业分配的第一资源量完成训练的时间;将所述每个作业分配的第一资源量与所述第一运行时间的乘积,作为所述每个作业的第一边际值;
21、确定每个作业分配的第二资源量以及第二运行时间,所述第二资源量为在所述第一资源量上加一个资源量,所述第二运行时间为每个作业基于所述每个作业分配的第二资源量完成训练的时间;将所述每个作业分配的第二资源量与所述第二运行时间的乘积,作为所述每个作业的第二边际值;
22、将每个作业的所述第一边际值与所述第二边际值的差值,作为所述每个作业的边际回报。
23、在一种可选的实施方式中,基于所述第二调度方案,确定所述调度队列中指定作业对应的资源,所述指定作业为所述调度队列中的任意一个作业,包括:
24、基于所述集群中的资源,确定集群资源树;
25、基于所述集群资源树,枚举得到多个集群资源子树,所述多个集群资源子树的资源量和/或资源种类不同;
26、获取资源量大于或等于指定作业对应的资源量的所述集群资源子树,作为所述指定作业的候选集群资源子树,所述指定作业对应的资源量为2的n次幂,n大于或等于1;
27、获取资源量最小的所述指定作业的候选集群资源子树中的集群资源,作为所述指定作业对应的资源。
28、本技术实施例第二方面提供了一种面向深度学习的服务器无感知计算集群调度装置,包括:
29、获取模块,用于获取新增作业,将所述新增作业添加至调度队列;
30、第一资源分配模块,用于基于所述调度队列中每个作业对应的截止时间,确定所述调度队列中每个作业分配的资源量,作为第一调度方案;
31、第二资源分配模块,用于基于所述调度队列中每个作业的边际回报,对所述第一调度方案中的每个作业分配的资源量进行分配,得到第二调度方案;
32、训练执行模块,用于基于所述第二调度方案,确定所述调度队列中每个作业对应的资源;调用集群中所述调度队列中每个作业对应的资源对所述每个作业进行训练。
33、在一种可选的实施方式中,所述获取模块,包括:
34、待训练作业获取子模块,用于获取待训练作业以及所述待训练作业的截止时间;
35、满足份额获取子模块,获取集群的空闲资源量,以及,基于所述待训练作业的截止时间获取所述待训练作业的满足份额,所述满足份额为在所述待训练作业的截止时间内完成对所述待训练作业训练所需的最小资源量;
36、新增作业获取子模块,用于在所述空闲资源量大于所述待训练作业的满足份额的情况下,将所述待训练作业作为所述新增作业。
37、在一种可选的实施方式中,所述第一资源分配模块,包括:
38、排序子模块,用于按照所述调度队列中每个作业对应的截止时间,对所述调度队列中的作业进行排序;
39、渐进填充子模块,用于在每个预设时间段内,向所述调度队列中每个作业分配预设数量的资源量,所述预设时间段为所述调度队列中每个作业对应的截止时间之前的单位时间段;
40、第一资源分配子模块,用于若在所述预设时间段内,所述调度队列中每个作业能够在所述每个作业对应的截止时间内完成训练,将所述预设时间段内的所述调度队列中每个作业对应的资源量,作为所述第一调度方案。
41、在一种可选的实施方式中,所述第二资源分配模块,包括:
42、候选第二调度子模块,用于按照所述第一调度方案中每个作业的边际回报,对所述第一调度方案中的作业进行排序,得到候选第二调度方案;
43、分配迭代子模块,用于分配迭代:基于集群的空闲资源量,向所述候选第二调度方案中的目标作业分配一个资源量,按照所述候选第二调度方案中每个作业的边际回报,对所述候选第二调度方案中的作业进行排序,得到更新的候选第二调度方案,所述目标作业为所述候选第二调度方案中边际回报最大的作业;
44、重复子模块,用于重复上述分配迭代过程,直至集群的空闲资源量全部进行分配,将所述更新的候选第二调度方案作为所述第二调度方案。
45、在一种可选的实施方式中,所述第二资源分配模块,还包括:
46、第一边际值确定子模块,用于确定每个作业分配的第一资源量以及第一运行时间,所述第一资源量为所述第一调度方案中的每个作业分配的资源量,所述第一运行时间为每个作业基于所述每个作业分配的第一资源量完成训练的时间;将所述每个作业分配的第一资源量与所述第一运行时间的乘积,作为所述每个作业的第一边际值;
47、第二边际值确定子模块,用于确定每个作业分配的第二资源量以及第二运行时间,所述第二资源量为在所述第一资源量上加一个资源量,所述第二运行时间为每个作业基于所述每个作业分配的第二资源量完成训练的时间;将所述每个作业分配的第二资源量与所述第二运行时间的乘积,作为所述每个作业的第二边际值;
48、边际回报确定子模块,用于将每个作业的所述第一边际值与所述第二边际值的差值,作为所述每个作业的边际回报。
49、在一种可选的实施方式中,所述训练执行模块,包括:
50、资源树获取子模块,用于基于所述集群中的资源,确定集群资源树;
51、资源子树枚举子模块,用于基于所述集群资源树,枚举得到多个集群资源子树,所述多个集群资源子树的资源量和/或资源种类不同;
52、资源子树获取子模块,用于获取资源量大于或等于指定作业对应的资源量的所述集群资源子树,作为所述指定作业的候选集群资源子树,所述指定作业对应的资源量为2的n次幂,n大于或等于1;
53、资源获取子模块,用于获取资源量最小的所述指定作业的候选集群资源子树中的集群资源,作为所述指定作业对应的资源。
54、本技术实施例第三方面提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现第一方面中任一所述的一种面向深度学习的服务器无感知计算集群调度方法中的步骤。
55、本技术实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现第一方面中任一所述的一种面向深度学习的服务器无感知计算集群调度方法中的步骤。
56、本技术实施例第五方面提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现第一方面中任一所述的一种面向深度学习的服务器无感知计算集群调度方法中的步骤。
57、有益效果:
58、本技术提供了一种面向深度学习的服务器无感知计算集群调度方法及产品,包括:获取新增作业,将所述新增作业添加至调度队列;基于所述调度队列中每个作业对应的截止时间,确定所述调度队列中每个作业分配的资源量,作为第一调度方案;基于所述调度队列中每个作业的边际回报,对所述第一调度方案中的每个作业分配的资源量进行分配,得到第二调度方案;基于所述第二调度方案,确定所述调度队列中每个作业对应的资源;调用集群中所述调度队列中每个作业对应的资源对所述每个作业进行训练。本技术的方法具有以下优点:
59、(1)本技术的方案中,开发人员只需要提供新增作业的算法信息,无需关注系统资源配置的细节,系统按照本技术的方法可以自动进行资源分配和调度,大幅度降低了模型训练任务的开发复杂度,降低了开发人员的学习成本。
60、(2)本技术的方案通过基于作业的截止时间和边际回报,对所有作业进行动态资源分配,从而在保证调度队列中进行训练的作业的截止时间满足率的同时,充分利用集群资源,有效提升作业的性能。