一种集群管理任务调度的方法及装置与流程

文档序号:29127899发布日期:2022-03-05 00:38阅读:155来源:国知局
一种集群管理任务调度的方法及装置与流程

1.本发明涉及计算集群领域,特别涉及一种集群管理任务调度的方法及装置。


背景技术:

2.随着人工智能技术的发展,越来越多的公司、高校、科研院所将人工智能作为研究探索的新方向和新动能。当前,人工智能技术发展的主要领域为深度学习,通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示,从而解决以往传统机器学习算法无法解决的众多问题。而深度学习模型依赖于大规模样本的训练及计算机硬件的支持。随着业务量的增加、模型复杂程度的不断提升,需要机房大规模gpu集群的方式为众多的模型训练提供整理的计算力。
3.采用大规模计算集群进行模型训练的时候需要考虑算力分配、任务调度的问题。现有技术中,通常采用单一先进先出队列调度或者优先级调度的静态调度方式,先进先出的方式是通过一个等待队列,以提交时间为序,先提交的任务优先获得运行许可。优先级调度通常会根据用户或管理员标记的任务优先级为准调度,优先运行任务队列中优先级最高的任务。
4.传统的调度方式有诸多缺陷,静态的调度方式意味着对于集群的情况,包括用户配额变化、任务变化、集群资源变化等无法及时响应,动态调整任务调度的情况。简单的先入先出容易导致调度程序灵活度低,一些紧急任务没法被调度;优先级调度会导致一些任务会长期占用资源,无法从总体上提高集群使用效率。而且传统的调度方式在对新建和挂起任务做了区分,每次新建任务时会使用一次调度程序,在逻辑上导致调度模块与其他模块耦合度高,不利于调度模块的灵活拓展等等这些问题都是有待解决的。


技术实现要素:

5.针对现有技术中存在的上述缺陷,本发明提供一种集群管理任务调度的方法及装置,通过通过任务优先级、用户权利数、运行时长、用户使用率等多个维度进行参考按排列分配,能实现将有限的算力资源在用户与任务的之间尽可能的合理分配,实现内部资源的分配均衡,以解决与现有调度技术中存在的问题。
6.实现本发明的目的的技术方案为:
7.一种集群管理任务调度的方法,每间隔一个调度时间便触发如下的调度操作步骤:
8.(1)获取所有任务的训练参数;
9.(2)获取集群中可用节点信息;
10.(3)按优先级降序排列,优先级列表中最高优先级的任务优先获得运行许可;如果还有可用节点,则进入下一优先级的任务调度,直到可用节点或任务分配结束;
11.(4)调度结束,任务开始运行。
12.作为优选,步骤(3)所述的优先级列表中任务调度包括如下步骤:
13.(3.1)获取每个用户的节点配额,根据用户提交任务占用节点数求得用户节点需求数;
14.(3.2)如果可用节点之和大于等于所有用户节点需求数之和,此时节点够用,用户节点权利数,等于该用户节点需求数,根据用户节点权利数,分配可用节点,使得用户权利数内对应的任务获得运行许可,本优先级任务分配完毕;
15.(3.3)如果可用节点数量小于所有用户节点需求数之和,用户节点权利数为将可用节点在用户之间按节点配额比例进行分配得到数值,根据用户节点权利数,分配可用节点,使得用户权利数内对应的任务获得运行许可;
16.(3.4)剩余任务中,对获取连续运行时长小于标记时长的任务,连续运行时长短的任务优先获得运行许可;
17.(3.5)还有可用节点的情况下,获取每个用户使用率,剩余可用节点优先用于用户使用率低的用户提交的任务。
18.作为优选,步骤(3.5)所述用户使用率为一个用户实际占用的节点与用户节点配额的比例。
19.作为优选,步骤(3.3)所述的用户节点权利数的计算方法为通过的迭代法,逼近求出缩放因子p,p需要达到浮点数最高精度,该用户节点权利数=min(可用节点*该用户节点配额/所有用户节点需求数之和,该用户节点需求数),并同时满足所有用户节点权利数之和等于空闲节点数。
20.作为优选,按步骤(3.5)所述的用户使用率对涉及到的用户进行升序排序,按顺序每个用户可以运行且只能运行一个任务进行依次轮转,然后重复上述轮转过程,直到可用节点、任务分配完毕,或剩余的任务节点数都大于可用节点数。
21.作为优选,步骤(3.5)所述的每个用户使用率轮转的过程中,每轮每个用户只能运行一个任务,优先选择该用户的处于运行、挂起状态的任务,获得运行许可,当运行、挂起状态任务分配完成后,后面进行用户使用率轮换的时候,再选择处于待运行状态的任务,获得运行许可。
22.作为优选,其特征在于,对于每个用户提交任务获得运行许可的顺序遵循先进先出的原则,按任务提交的时间顺序,先提交的任务优先满足,然后依次为后面提交的任务。
23.作为优选,调度时间设定为1秒。
24.作为优选,其特征在于,步骤(3.4)所述标志时长为15分钟。
25.一种应用如上方法的计算机装置,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序。
26.本发明的有益效果在于,提供一种集群管理任务调度的方法及装置,实现集群训练中任务在分配调度管理,通过任务优先级、用户权利数、运行时长、用户使用率等多个维度进行参考按排列分配,能实现将有限的算力资源在用户与任务的之间尽可能的合理分配,实现内部资源的分配均衡。通过用户节点配额、动态优先级、先入先出、优先分配等方式,降低低效轮转调度次数,使得调度算法更加稳定,减少系统资源浪费,提高分配效率。
27.通过每个间隔时间触发一次调度算法,能极大提高计算集群的利用率,对用户节点配额、任务训练参数、集群资源的变化都能极大的提高响应速度,做到对变化的动态适应,保障了集群计算机整体的高效运行。
28.与传统调度相比,通过独立的调度算模块设计,克服了传统模块中调度模块与其他模块的对接耦合的问题,使得程序更加灵活容易扩展。采用中断、启动逻辑二合一的模式,从调度的层面无需关心任务状态,是新建任务、被中断的任务还是重启的任务,只需计算结果,从底层设计提高了任务调度模块的独立性。为后续更多的用户、更庞大的集群及更加复杂的平台服务场景提供的条件。
附图说明
29.图1是本发明方法的流程示意图;
30.图2是本发明同一优先级中的任务调度流程示意图,
具体实施方式
31.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
32.为了便于实现本技术的方案,系统平台预设调度模块,通过调度模块中的调度算法实现任务调度的方法s101-s107步骤,实现对任务进行接收和节点资源的合理分配。调度算法针对用户提交的所有任务进行资源分配及调度,除完成的任务外,包括等待运行、运行、挂起状态的任务。该调度算法每间隔一个触发时间运行一次。有新任务创建加入、任务出错、退出等情况不立即出发调度算法,而是等待到间隔的触发时间,再统一运行一次该调度算法。
33.在一个具体实施例中,所述调度触发时间可以设定为1秒。
34.如图1所示,一种集群管理任务调度的实现方法如下:每间隔一个调度触发时间便触发如下的调度操作步骤:
35.s101获取所有任务训练参数;具体的实施中,所述任务可以通过计算机集群进行机器学习算法代码的训练程序,比如神经网络模型训练程序(rnn)等。用户通过客户端完成训练程序的代码开发后,可以将其上传至集群训练云服务平台,创建训练任务,在任务列表中排队等待分配计算节点资源,部署环境并运行训练任务。
36.用户在提交创建任务后,任务的状态分为四种:等待运行、运行、挂起、完成。新任务提交后为等待运行状态,进入等待运行队列,节点分配好以后获取运行许可的任务进入运行状态,运行过程中由于资源调度算法需要被中断的任务为挂起状态,挂起后可以通过调度算法重新获得运行许可,运行完成的任务处于完成状态。
37.具体实施中,参与调度的所有任务包括本系统中所有用户提交的、处于等待运行、运行和挂起状态的任务。
38.在一个实施例中,所述任务训练参数包括任务占用节点数及任务运行优先级;
39.具体的,用户创建训练任务时,会同时提交该任务的训练参数,这些用户提交的训练参数包括该任务运行的机器训练环境选择,还包括任务占用节点数及任务训练优先级。根据选择机器训练环境组件,通过容器化技术,创建训练环境容器和容器镜像,将操作系统、驱动、配置文件、项目训练框架等训练环境同步至分配好的节点计算机,完成训练环境自动部署。任务占用节点数表示该运行任务需要占用多少节点。任务运行优先级为任务运
行中的优先级设定,在一个具体实施例中,任务运行分为6个优先级,高优先级的任务有优先运行权,所有高优先级任务分配完毕后,进入低一个优先级的任务调度分配。
40.s102获取集群中可用节点信息。
41.所述可用节点信息包括统计可用的节点资源数量。在本实施例中,所述集群包括多个节点,所述节点指计算机服务器,包括一块、或多块gpu、cpu等。gpu用于接收调度程序分发的训练任务消息,根据训练任务消息将对应算法模型加载到gpu显存中,执行训练任务。所述可用节点为所有集群节点中运行状态正常、不在锁定状态、不被禁用且不执行任务的节点。在所有集群节点计算机服务器中,部分节点服务器可以人工禁用,部分节点服务器正在执行任务。而确定任务分配到开始运行训练任务的过程会有一定延迟,在该延迟中,分配到执行任务的节点会被锁定。
42.在本实施例中,一台节点计算机服务器作为整体进行任务分配,即同一时间一台节点计算器服务器只能分配给一个任务运行,在不同的时间段上,可以调度分配给多个任务使用。
43.s103按优先级降序排列,优先级列表中最高优先级的任务优先获得运行许可;
44.在本实施例中,最高优先级的任务优先获得运行许可,分配可用节点进行任务运行。在同一优先级内进行任务分配调度的方法如图2所示,包括:
45.301获取每个用户的节点配额。
46.具体实施中,每个用户被预先配置一定数量的节点配额,该用户所有提交任务在实际运行中所使用的节点数量不能超过该用户的节点配额。值得注意的是,每个用户的所给定的节点配额为预先指定,在训练任务运行过程中也可以根据实际情况申请后进行后台调整。
47.302根据用户提交任务占用节点数求得用户节点需求数;
48.具体实施中,在满足用户提交任务占用节点数及该用户节点配额条件下,可以计算该用户的节点需求数。值得注意的是,剩余任务占用节点数超出用户节点配额的任务将不会被运行。比如,用户提交了2个任务,每个任务占用节点数为4节点,该用户的节点配额是6。则用户只有一个任务获得运行许可,节点需求数是4。用户提交了2个任务,每个任务占用节点数2节点,该用户节点配额是6。则节点需求数是4,这个用户没有用完他的配额;
49.应该指出的,此处用户节点需求数的计算应该包括该用户提交的处于等待运行、运行、挂起状态中的所有任务。
50.在本实施例中,由于用户节点配额在运行过程中可调,因此节点需求数也可能会在任务运行过程中发生变化。
51.303可用节点之和是否大于等于所有用户节点需求数之和,如果是,则进入步骤304,如果不是则进入步骤307。
52.304获取每个用户节点权利数,等于该用户节点需求数;
53.用户节点权利数是指在当前可用节点资源的情况下,该用户实际能分配到的节点数量。当可用节点数大于等于所有用户节点需求数之和时,每个用户的节点权利数等于节点需求数。
54.305根据用户节点权利数,分配可用节点,使得用户权利数内对应的任务获得运行许可;
55.此时可用节点是够用的,由于每个用户节点权利数等于该用户的节点需求数。此时,可用节点足够保证本优先级任务的运行。因此在本优先级中,每个用户提交所有需要运行的任务,均可以获得运行许可。根据用户的节点权利数跟对应的任务进行节点资源分配,进入步骤306本优先级任务分配完毕。
56.307获取每个用户节点权利数,节点权利数为将可用节点在用户之间按节点配额比例进行分配得到数值;
57.当可用节点数量小于所有用户节点需求数之和时,此时可用节点不足以完全满足所有任务的运行,需要将可用节点在用户之间按节点配额比例进行分配。具体的,通过的迭代法,逼近求出缩放因子p,p需要达到浮点数最高精度,该用户节点权利数=min(可用节点*该用户节点配额/所有用户节点需求数之和,该用户节点需求数),并同时满足所有用户节点权利数之和等于空闲节点数。
58.308根据用户节点权利数,分配可用节点,使得用户权利数内对应的任务获得运行许可;
59.在可用节点不能满足本优先级所有用户任务的情况下,在用户任务里,没有超出该用户节点权利数的任务可以全部获得运行许可。通过此种分配方式,优先保证用户节点权利数内的资源需求得到满足;
60.在本实施例中,每个用户提交任务获得运行许可的顺序遵循先进先出的原则,按任务提交的时间顺序,先提交的任务优先满足,然后依次为后面提交的任务。
61.309获取连续运行时长小于标记时长的任务;
62.具体地,对节点权利数以外的任务,将处于运行状态,且连续运行时长小于标记时长的,按连续运行时长的升序排列。所述连续运行时长是指从该任务最后一次恢复运行算起,到此时触发调度算法的连续运行时长。对没有被中断挂起过的任务,连续运行时长为该任务从开始运行到此刻触发调度算法的时长;
63.在一个实施例中,标记时长可以为15分钟。
64.310连续运行时长短的任务优先获得运行许可;
65.根据运行时长升序,运行时长短的任务,优先分配可用节点,获得运行许可;
66.用户节点权利数任务之外,优先保证运行时长短的任务运行。具体地,将连续运行时长小于标记时长的任务按连续运行时长升序排列,依次分配获得运行许可。运行时长短的任务优先分配可用节点、获得运行许可。通过这种分配方式可以保证运行时长短的任务尽可能的不要被打断。
67.特别地,当剩余可用节点数量不能满足该任务占用节点数时,则放弃该任务,寻找下一个满足可用节点数量的任务。在本实施例中,如果分配到最后,还剩4个可用节点,但下一个任务占用节点数为6个节点,则放弃该任务,进入下一个顺序,直到找到下一个占用节点数小于4节点的任务。值得注意的是,由于每个用户提交任务获得许可遵循先进先出的时间排序原则,如果分配到最后,剩余可用节点不能满足该任务的占用节点数,则该用户的后续任务均不能获得运行许可。
68.311检查是否还有可用节点,没有可用节点则进入步骤306本优先级分配完毕。有可用节点则进入步骤311继续分配步骤。
69.312获取每个用户使用率;
70.在本实施例中,用户使用率表示一个用户实际使用的节点,和他节点配额的比例;
71.具体的,每个触发时间进行一次运算,该用户的“瞬时使用率”=该用户的实际使用的节点数/“节点配额”。特别地,如果“显卡配额”为0,则“瞬时使用率”也为0;
72.在一个实施例中,所述触发时间可以为1秒;
[0073]“用户使用率”r=“瞬时使用率”s的指数衰减平均数,半衰期暂定是3600秒。计算公式如下,其中r为用户使用率,s为瞬时使用率,t为时间,math.pow(a,b)方法用于返回a参数的b参数次方;
[0074]
即:特别地,当t=0时,r0=0。
[0075]
在本实施例中,由于用户节点配额为初期直接指定,在训练任务运行过程中也可以根据实际情况申请后进行后台调整。为了避免运行过程中的动态调整“节点配额”的时候产生过大值影响用户体验,瞬时使用率s的算法可以调整为瞬时使用率s=min(该用户的实际使用的节点数/节点配额,2.0)。
[0076]
313剩余可用节点优先用于用户使用率低的用户提交的任务;
[0077]
具体地,按用户使用率对涉及到的用户进行升序排序,按顺序每个用户可以运行且只能运行一个任务,进行依次轮转,然后重复上述轮转过程,直到可用节点、任务分配完毕,或剩余的任务节点数都大于可用节点数。使得可用节点按用户使用率的多少,优先满足用户使用率低的用户任务。;
[0078]
在本实施例中,在每个用户使用率轮转的过程中,每轮每个用户只能运行一个任务,优先选择该用户的处于运行、挂起状态的任务,获得运行许可。当运行、挂起状态任务分配完成后,后面进行用户使用率轮换的时候,再选择处于待运行状态的任务,获得运行许可。每个用户获得运行许可的顺序遵循先进先出的原则,按任务提交的时间顺序依次排序获得许可。
[0079]
特别的,如果分配到最后,还剩4个可用节点,但下一个任务占用节点数为6个节点,则放弃该任务,进入下一个用户,直到找到下一个占用节点数小于4节点的任务。值得注意的是,由于每个用户提交任务获得许可遵循先进先出的时间排序原则,如果分配到最后,剩余可用节点不能满足该任务的占用节点数,则该用户的后续任务均不能获得运行许可;
[0080]
按用户使用率升序让每个用户可以运行且只能运行一个任务,直到本优先级任务分配完毕或剩余的任务节点需求数都大于可用节点数;
[0081]
通过这种方式,实现集群利用率总体更优,使得资源分配更加公平,降低了无效的轮转次数,增加任务调度的稳定性。
[0082]
306本优先级任务分配完毕。
[0083]
s104检查是否还有可用节点供下一个优先级任务运行,如果有则进入步骤s105,没有则进入步骤s107
[0084]
s105检查下一个优先级是否还有待运行、挂起任务,如果有则进入步骤s106,没有进入步骤s107。
[0085]
s106进入优先级列表中下一个优先级;
[0086]
具体的,当最高优先级任务调度完毕后,检查是否还有可用节点,下一个优先级是
否还有待运行及挂起状态的任务,如果有,则进入下一个优先级的任务调度,使剩下任务的中最高优先级的任务获得运行许可,重复301-312的步骤。如果没有则结束任务调度。
[0087]
s107任务调度结束,开始运行;
[0088]
在本实施例中,该调度算法每间隔一个触发时间运行一次,获得运行许可任务可以分配到可用节点上运行。对之前处于待运行、挂起状态的任务,在开始运行之前需要部署训练环境,对于之前已经运行的任务,采用维持运行状态不中断的方式;
[0089]
在调度算法中没有获得运行许可的任务将不会被分配到可用节点。对于之前处于待运行、挂起状态的任务,将继续处于原有状态在队列中排队等候。对于之前处于运行状态的任务,将中断运行,进入挂起状态,该任务的节点将被调度给其他获得运行许可的任务使用;
[0090]
具体的,对开始运行任务,通过容器在分配节点上部署训练环境。使用docker技术实现服务器环境统一管理和资源的统筹规划。系统预先创建多个训练环境组件镜像文件,根据用户预先选择的机器训练环境,同步的相应镜像文件创建容器组件完成训练环境部署。部署完成后加载训练框架,开始任务训练。
[0091]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0092]
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0093]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素
的过程、方法、物品或者设备中还存在另外的相同要素。
[0094]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0095]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1