任务调度方法、装置、电子设备及计算机可读存储介质与流程

文档序号:20016918发布日期:2020-02-25 10:42阅读:115来源:国知局
任务调度方法、装置、电子设备及计算机可读存储介质与流程
本发明涉及云计算
技术领域
,特别是涉及一种任务调度方法、装置、电子设备及计算机可读存储介质。
背景技术
:大规模的深度学习模型或海量数据的训练通常是基于容器的形式进行管理和调度的,例如,使用kubernates或者mesos的容器管理系统进行调度。现有的容器管理系统的任务调度通常是按照时间提交的先后顺序对任务进行调度的,然而,在运行资源不足,训练任务较多的情况下,其无法实现灵活的任务调度。因此,现有的容器管理系统中存在任务调度的灵活性比较差的问题。技术实现要素:本发明实施例的目的在于提供一种任务调度方法、装置、电子设备及计算机可读存储介质,以实现灵活的任务优先调度,提高任务调度的灵活性的目的。具体技术方案如下:在本发明实施的第一方面,首先提供了一种任务调度方法,所述方法包括:获取目标任务队列;其中,所述目标任务队列为包括有至少一个待调度任务的任务队列;按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。在本发明实施的第二方面,还提供了一种任务调度装置,所述装置包括:第一获取模块,用于获取目标任务队列;其中,所述目标任务队列为包括有至少一个待调度任务的任务队列;调度模块,用于按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的任务调度方法。在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的任务调度方法。本发明实施例提供的任务调度方法、装置、电子设备及计算机可读存储介质,基于目标任务队列中待调度任务配置的优先级,按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。可以解决在运行资源不足而训练任务又较多的情况下,无法实现优先级高的任务优先调度的问题,同时,可以支持不同优先级的任务调度,保证高优先级的任务能够快速的部署进行训练,这样,可以实现灵活的任务优先调度,提高任务调度的灵活性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为本发明实施例中任务调度方法的流程示意图之一;图2为任务调度管理系统的主控服务器的任务管理示意图;图3为本发明实施例中对待调度任务进行调度的流程示意图;图4为本发明实施例中任务调度方法的流程示意图之二;图5为本发明实施例中任务调度装置的结构示意图之一;图5为本发明实施例中任务调度装置的结构示意图;图6为本发明实施例中任务调度装置的调度模块的细化结构示意图;图7为本发明实施例中任务调度装置的结构示意图之二;图8为本发明实施例中任务调度装置的确定模块的细化结构示意图;图9为本发明实施例中电子设备的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。首先对本发明实施例提供的任务调度方法进行说明。需要说明的是,本发明实施例提供的任务调度方法可以应用于电子设备中。可选的,该电子设备可以为任务调度管理系统中的服务器,所述任务调度管理系统用于对各用户的任务队列中的任务进行调度管理及任务处理。其中,该任务调度管理系统可以包括多个服务器,这些服务器构成了所述任务调度管理系统的服务器集群,本发明实施例即应用于所述服务器集群中的主控服务器中,用于对目标任务队列中的待调度任务按照优先级从高到低的顺序进行调度。同时,在主控服务器对待调度任务进行调度之后,所述任务调度管理系统中的从服务器接收主控服务器调度的任务,对接收的任务进行处理。所述任务调度管理系统可以用于对任意功能的任务的调度和处理,比如,所述任务调度管理系统可以用于对基于人工智能(artificialintelligence,ai)推理模型的任务进行调度和处理,举个例子来说,所述任务调度管理系统的主控服务器可以将基于ai推理模型的图像识别任务调度至从服务器进行处理,以使所述任务调度管理系统可以实现图像的检测。又比如,所述任务调度管理系统可以用于深度学习任务的调度和处理,所述任务调度管理系统的主控服务器可以将深度学习任务调度至所述任务调度管理系统的从服务器中进行训练,以使所述任务调度管理系统可以实现深度学习任务的训练。上述只是举例说明所述任务调度管理系统可调度和处理的任务,当然,所述任务调度管理系统可调度和处理的任务并不局限于此,在此不再一一举例说明。以下实施例中,所述任务调度管理系统将以用于深度学习任务的调度和处理为例进行详细说明。参见图1,图中示出了本发明实施例中任务调度方法的流程示意图之一。如图1所示,该方法可以包括如下步骤:步骤101,获取目标任务队列;其中,所述目标任务队列为包括有至少一个待调度任务的任务队列;步骤102,按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。在介绍步骤101和步骤102的具体实现过程之前,首先详细介绍任务调度管理系统对深度学习任务的调度管理。系统初始化时,所述任务调度管理系统未包括任何用户的深度学习任务,为满足各用户对于深度学习任务进行训练的需求,所述任务调度管理系统可以通过注册账户的方式或其他可实施的方式允许各用户在主控服务器上注册,使各用户的深度学习任务部署于所述任务调度管理系统的管理范围。其中,所述用户可以为自然人,也可以为企业,还可以为团队,在此不做具体限定。在实现过程中,所述主控服务器可以采用队列管理的方式对各用户的深度学习任务进行管理,所述主控服务器可以仅管理一个任务队列,将各用户的深度学习任务按照调度优先级进行排序后统一放置在该任务队列中,所述主控服务器也可以管理多个任务队列,采用多级队列管理的方式为注册账号的用户设置任务队列,然后将各用户需要训练的深度学习任务放置至各自用户的任务队列中,也就是说,所述任务调度管理系统中的主控服务器可以并列管理多个任务队列,对多个任务队列中的深度学习任务进行调度管理。为了实现各用户需要训练的深度学习任务在物理上的隔离管理,以下实施例中,主控服务器将采用多级队列管理的方式为各用户需要训练的深度学习任务设置相应的任务队列为例进行详细说明。需要说明的是,深度学习任务在调度和训练过程中,会存在三个管理状态,可以分别定义为待调度状态、正在训练状态和完成训练状态,其中,深度学习任务处于待调度状态可以理解为该深度学习任务正在等待主控服务器进行调度,其还未进行训练处理,深度学习任务处于正在训练状态可以理解为该深度学习任务正在进行训练处理,深度学习任务处于完成训练状态可以理解为该深度学习任务已经完成了训练处理。参见图2,图中示出了任务调度管理系统的主控服务器的任务管理示意图。如图2所示,所述主控服务器可以并列管理n个用户的任务队列,分别为用户1、用户2···用户n,n为大于或等于1的正整数,每个任务队列中可以包括两个列表,分别为待调度任务列表和训练任务列表,所述待调度任务列表可以称之为pendinglist,所述训练任务列表可以称之为runninglist。其中,在用户有深度学习任务的训练需求时,可以提交待调度任务,该调度任务可以为处于待调度状态的深度学习任务,此时,所述pendinglist可以包括该用户的待调度任务。另外,该待调度任务可以为分类任务,也可以为目标检测任务,还可以为语义分割任务,亦或是实例分割任务,在此不做具体限定。在所述主控服务器对处于待调度状态的深度学习任务进行调度之后,其深度学习任务的管理状态发生变化,其管理状态变为正在训练状态,可以将该深度学习任务从pendinglist移动存储至runninglist中,相应的,所述runninglist中可以包括处于正在训练状态的深度学习任务。随着深度学习任务的训练处理,在该深度学习任务完成训练处理之后,其深度学习任务的管理状态又发生变化,其管理状态变为完成训练状态,此时,可以将该深度学习任务从所述runninglist中删除。需要说明的是,pendinglist可以为空,此时,用户的任务队列中没有待调度任务需要调度,或者用户的任务队列中待调度任务都已经调度完成,当然,所述pendinglist也可以包括待调度任务,如图2所示,待调度任务列表中即包括有深度学习任务1和深度学习任务2。runninglist与pendinglist类似,也就是说,runninglist可以为空,此时,用户的任务队列中没有正在训练的深度学习任务,当然,所述runninglist也可以包括正在训练的深度学习任务,如图2所示,训练任务列表中即包括有深度学习任务3。另外,在对每个任务队列中pendinglist的待调度任务进行调度时,若任务队列的pendinglist中包括多个待调度任务,可以按照待调度任务的优先级进行调度,使高优先级的待调度任务进行优先调度。在实现过程中,需要确定pendinglist中的每个待调度任务的优先级,从而在对待调度任务进行调度时,获取pendinglist中最高优先级的待调度任务进行优先调度。在一种优选的实施方式中,每个任务队列中pendinglist的待调度任务可以以优先级的方式进行排序,排序靠前的待调度任务的优先级高于排序靠后的待调度任务的优先级,这样,可以实现优先级从高到低的排队策略。同时,在对每个任务队列中runninglist的深度学习任务进行训练处理时,若任务队列的runninglist中包括多个深度学习任务,在系统出现异常的情况下,比如,一从服务器出现异常,使深度学习任务的训练处理突然中断,此时,可以按照深度学习任务的优先级进行训练处理,使高优先级的深度学习任务进行优先训练处理。在实现过程中,需要确定runninglist中的每个深度学习任务的优先级,可以通过深度学习任务调度的优先级,来确定runninglist中的每个深度学习任务的优先级,也就是说,深度学习任务在pendinglist的优先级顺序即为在runninglist的优先级顺序。这样,在一从服务器出现异常时,可以确定该从服务器进行训练处理的深度学习任务的优先级,若该深度学习任务的优先级比较高,则将该深度学习任务移动至另一从服务器进行训练处理,或者,在运行资源不足的情况下,中断对低优先级的深度学习任务的训练处理,对高优先级的深度学习任务进行优先训练处理。在一种优选的实施方式中,每个任务队列中runninglist的深度学习任务可以以优先级的方式进行排序,排序靠前的深度学习任务的优先级高于排序靠后的深度学习任务的优先级,这样,可以有序的进行深度学习任务的训练处理。在步骤101中,可以通过间隔周期(比如每10ms)遍历各任务队列的pendinglist,也可以时间不间断的去遍历各任务队列的pendinglist,比如,在一次遍历完成各任务队列的pendinglist之后,立刻启动另一次遍历,还可以在条件触发的情况下,遍历各任务队列的pendinglist,比如,在获取到预设个数的待调度任务的情况下,遍历各任务队列的pendinglist。以下实施例中,将通过间隔周期(比如每10ms)遍历各任务队列的pendinglist为例进行详细说明。若遍历到任务队列中pendinglist不为空,即遍历的任务队列中pendinglist包括待调度任务,此时,获取该任务队列,该任务队列即为目标任务队列。其中,遍历各任务队列过程中,可以以任何顺序去遍历各任务队列,比如,按照地址从上至下的排列顺序去遍历各任务队列,又比如,按照任务队列的优先级从高到低的排列顺序去遍历各任务队列。当然,若按照任务队列的优先级从高到低的排列顺序去遍历各任务队列,所述主控服务器首先需要标记各任务队列的优先级,可以从用户的角度去标记各任务队列的优先级,比如,若用户为高级用户,则可以将该用户的任务队列的优先级标记为高,若用户为普通用户,则可以将该用户的任务队列的优先级标记为低。应当说明的是,所述目标任务队列的数量可以为1个,也可以为两个,亦或是更多个,这里不做具体限定,只要在遍历各任务队列过程中,遍历到任务队列中pendinglist不为空,该任务队列即为目标任务队列。当然,在所述目标任务队列的数量至少为两个的情况下,针对每一所述目标任务队列,都需要按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。在步骤102中,针对每一所述目标任务队列,都可以按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。具体的,针对第一目标任务队列,所述第一目标任务队列为至少一个目标任务队列中的任一目标任务队列,按照所述第一目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述第一目标任务队列中的待调度任务进行调度的方式有两种。第一种调度方式为:首先,获取所述第一目标任务队列的pendinglist中处于最高优先级的待调度任务,对该pendinglist中处于最高优先级的待调度任务进行调度;然后,对该待调度任务进行调度之后,将其移动至runninglist,由于调度之后的深度学习任务已经移动至runninglist,则pendinglist中处于次高优先级的待调度任务变为处于最高优先级的待调度任务;最后,对调度之后的深度学习任务进行移动之后,一直按照对pendinglist中处于最高优先级的待调度任务进行优先调度的原则,对pendinglist中的待调度任务依次进行调度,直至pendinglist中的待调度任务全部调度完成,或者用于训练处理所述第一目标任务队列的深度学习任务的运行资源使用不足。第二种调度方式为:可以按照所述第一目标任务队列的pendinglist中待调度任务的优先级从高到低的排队策略,依次对pendinglist的待调度任务进行调度,在pendinglist中所有的待调度任务进行调度之后,或者用于训练处理所述第一目标任务队列的深度学习任务的运行资源使用不足时,停止对该pendinglist的待调度任务的调度,在停止调度之后,将所有调度完成的深度学习任务移动至runninglist。以下实施例中,将采用第一种调度方式对所述第一目标任务队列中的待调度任务进行调度为例进行详细说明。需要说明的是,在实际应用中,可以有两种时机方式对目标任务队列中的待调度任务进行调度:第一种时机方式,可以在遍历任务队列的pendinglist的同时进行调度,也就是说,边遍历边调度,比如,若遍历到任务队列的pendinglist包括待调度任务,将当前遍历的任务队列确定为目标任务队列,同时,对目标任务队列的pendinglist中的第一个待调度任务进行调度,并继续遍历该目标任务队列的pendinglist中的下一个待调度任务,直至将该目标任务队列的pendinglist中的所有待调度任务遍历并调度完成,或者直至用于训练处理所述该目标任务队列的深度学习任务的运行资源使用不足,则直接跳到下一个任务队列进行pendinglist的遍历检查。另外,其他任务队列的pendinglist中的待调度任务的调度时机也和上述类似,这里就不再赘述。第二种时机方式,可以在遍历完所有任务队列的pendinglist之后获取至少一个目标任务队列,并获取每一所述目标任务队列的pendinglist中的待调度任务,然后,对各目标任务队列的pendinglist中的待调度任务进行调度,也就是说,先遍历再调度。具体的,针对各目标任务队列,可以对各目标任务队列的pendinglist中处于最高优先级的待调度任务优先统一调度,比如,获取目标任务队列a和目标任务队列b之后,可以对目标任务队列a的pendinglist中处于最高优先级的待调度任务和目标任务队列b的pendinglist中处于最高优先级的待调度任务进行统一调度。针对各目标任务队列,还可以将一目标任务队列的pendinglist中的所有待调度任务调度完成之后,再调度另一目标任务队列的pendinglist中的待调度任务,当然,若调度需要消耗时间资源,则可以对高优先级的目标任务队列的pendinglist中的待调度任务进行优先调度。以下实施例中,将采用边遍历边调度的方式对各目标任务队列中的待调度任务进行调度为例进行详细说明。本发明实施例提供的任务调度方法,针对每一所述目标任务队列,基于所述目标任务队列中待调度任务配置的优先级,按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。可以解决在运行资源不足而训练任务又较多的情况下,无法实现优先级高的任务优先调度的问题,同时,可以支持不同优先级的任务调度,保证高优先级的任务能够快速的部署进行训练,这样,可以实现灵活的任务优先调度,提高任务调度的灵活性。并且,还能够高效地实现任务调度。进一步的,是否对目标任务队列的pendinglist中待调度任务进行调度需要考察所述目标任务队列对应的预设资源配额,基于实施例一,参见图3,图中示出了本发明实施例中对待调度任务进行调度的流程示意图。如图3所示,针对每一所述目标任务队列,所述目标任务队列中包括第一待调度任务,所述第一待调度任务为所述目标任务队列中任一待调度任务,对所述第一待调度任务进行调度包括:步骤301,获取所述第一待调度任务的资源配额;步骤302,基于所述第一待调度任务的资源配额,确定目标运行资源;其中,所述目标运行资源包括所述目标任务队列中所有正在运行的任务所需的运行资源和所述第一待调度任务所需的运行资源;步骤303,若所述目标运行资源小于或等于预设资源配额,对所述第一待调度任务进行调度。在步骤301中,所述第一待调度任务的资源配额可以为需要预留给所述第一待调度任务进行训练处理的运行资源,该资源配额为一个预估的参数,其应该大于或等于所述第一待调度任务在实际训练处理中所需的运行资源,以保证所述第一待调度任务的正常训练。所述第一待调度任务的资源配额可以是主控服务器根据所述第一待调度任务的任务类型或其他任务信息所计算的运行资源,相应的,获取计算的运行资源作为所述第一待调度任务的资源配额,所述第一待调度任务的资源配额也可以是用户根据其提交的第一待调度任务向任务调度管理系统所申请的运行资源,相应的,获取用户所提交的运行资源作为所述第一待调度任务的资源配额。本实施例中,所述第一待调度任务的资源配额将以用户根据其提交的第一待调度任务向任务调度管理系统所申请的运行资源为例进行详细说明。下表1为用户为第一待调度任务向任务调度管理系统申请运行资源的示意表,如下表1所示,用户n为第一待调度任务向任务调度管理系统所申请的运行资源为cpu:1,gpu:1,mem:4,其表示1台cpu,1片gpu和4块存储器,则所述第一待调度任务的资源配额为1台cpu,1片gpu和4块存储器。用户标识任务标识运行资源用户n第一待调度任务cpu:1,gpu:1,mem:4表1用户为第一待调度任务向任务调度管理系统申请运行资源的示意表需要说明的是,在实际应用中,所述第一待调度任务可以为所述目标任务队列的pendinglist中处于最高优先级的待调度任务。在步骤302中,主控服务器可以有两种方式确定所述目标运行资源。第一种方式为:可以通过查表的方式确定所述目标运行资源,具体的,所述主控服务器将所有深度学习任务的资源配额都预先存储在表中,形成了任务标识与资源配额的映射表,其中,可以通过所述目标任务队列对应的用户为每个深度学习任务向任务调度管理系统所申请的运行资源来确定每个所述深度学习任务的资源配额。然后,所述主控服务器基于深度学习任务的任务标识,从该映射表中查询获得所述目标任务队列的runninglist中的所有深度学习任务的资源配额,并计算所有深度学习任务的资源配额的总和。最后,将所有深度学习任务的资源配额的总和加上所述第一待调度任务的资源配额,得到所述目标运行资源,其目标运行资源即为执行所述第一待调度任务之后所需的运行资源。第二种方式为:可以通过获取正在训练的深度学习任务的实际运行资源来确定所述目标运行资源,具体的,从服务器可以通过上报的方式将其正在训练的深度学习任务的实际运行资源上报给主控服务器,相应的,所述主控服务器获取从服务器上报的运行资源,基于所述目标任务队列的runninglist中的所有深度学习任务的运行资源,统计所述目标任务队列的runninglist中的所有深度学习任务的运行资源的总和,然后,将所有深度学习任务的运行资源的总和加上所述第一待调度任务的资源配额,得到所述目标运行资源,其目标运行资源即为执行所述第一待调度任务之后所需的运行资源。在步骤303中,针对每一所述目标任务队列,所述预设资源配额与所述目标任务队列对应,比如,针对目标任务队列a和目标任务队列b,目标任务队列a对应的预设资源配额为10台cpu、2片gpu和50块存储器,目标任务队列b对应的预设资源配额为20台cpu、5片gpu和100块存储器。所述目标任务队列对应的预设资源配额可以为所述目标任务队列对应的用户根据其需求而向任务调度管理系统所申请的资源配额,主控服务器可以根据获取的用户所申请的资源配额,获取所述目标任务队列对应的预设资源配额,并将其存储至配额列表中。下表2为配额列表,如下表2所示,任务调度管理系统并列管理n个用户的任务队列,分别为用户1、用户2、用户3···用户n,用户1为其任务队列向任务调度管理系统申请资源配额cpu:10,gpu:2,mem:50,其表示10台cpu,2片gpu和50块存储器,则所述用户1的任务队列对应的预设资源配额为10台cpu,2片gpu和50块存储器,用户2为其任务队列向任务调度管理系统申请资源配额cpu:20,gpu:5,mem:100,其表示20台cpu,5片gpu和100块存储器,则所述用户2的任务队列对应的预设资源配额为20台cpu,5片gpu和100块存储器,用户n为其任务队列向任务调度管理系统申请资源配额cpu:50,gpu:10,mem:1000,其表示50台cpu,10片gpu和1000块存储器,则所述用户n的任务队列对应的预设资源配额为50台cpu,10片gpu和1000块存储器。表2配额列表在所述目标任务队列的数量至少为两个的情况下,针对每一所述目标任务队列,所述预设资源配额与所述目标任务队列对应;相应的,若所述目标运行资源小于或等于预设资源配额,对所述第一待调度任务进行调度之前,所述方法还包括:针对每一所述目标任务队列,分别从配额列表中获取与每一所述目标任务队列对应的预设资源配额。这样,通过给每个用户分配不同的资源配额,可以实现对不同用户的任务队列在训练资源需求上的隔离管理。另外,若所述目标运行资源大于预设资源配额,表示用于训练处理所述目标任务队列的深度学习任务的运行资源使用不足,则不对所述第一待调度任务进行调度。本实施例中,通过给每个用户分配不同的资源配额,使得不同的用户可以使用各自的资源配额进行其对应的任务队列中深度学习任务的训练处理,互不干扰,从而可以实现对不同用户的任务队列在训练资源需求上的隔离管理。另外,可以使得各个用户能够公平的使用深度学习训练的资源,保证任务调度管理系统的运行资源能够得到充分合理的利用。同时,针对每一所述目标任务队列,基于所述目标任务队列中待调度任务配置的优先级,按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。可以解决在运行资源不足而训练任务又较多的情况下,无法实现优先级高的任务优先调度的问题,同时,可以支持不同优先级的任务调度,保证高优先级的任务能够快速的部署进行训练,这样,可以实现灵活的任务优先调度,提高任务调度的灵活性。进一步的,基于实施例一,参见图4,图中示出了本发明实施例中任务调度方法的流程示意图之二,如图4所示,该方法可以包括如下步骤:步骤401,获取提交的待调度任务的任务信息;步骤402,基于所述任务信息,确定所述提交的待调度任务的优先级;步骤403,基于所述提交的待调度任务的优先级,将所述提交的待调度任务插入至所述提交的待调度任务所属的任务队列的待调度任务列表的目标位置中;其中,所述待调度任务列表用于存储待调度任务,若所述目标位置的前一位置存储有待调度任务,所述前一位置存储的待调度任务的优先级大于所述提交的待调度任务,若所述目标位置的后一位置存储有待调度任务,所述后一位置存储的待调度任务的优先级小于所述提交的待调度任务;步骤404,获取目标任务队列;其中,所述目标任务队列为包括有至少一个待调度任务的任务队列;步骤405,按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。在步骤401中,主控服务器可以包括用户接口,用户可以通过该用户接口直接在所述主控服务器上提交待调度任务,相应的,获取所述待调度任务的任务信息。主控服务器也可以包括通信接口,用户可以在任务调度管理系统的终端上提交待调度任务,所述终端根据用户提交的待调度任务,将提交的待调度任务的任务信息发送给主控服务器,相应的,所述主控服务器通过该通信接口接收所述终端发送的任务信息。其中,所述任务信息可以包括标识优先级的信息。在步骤402中,所述步骤402包括:从所述任务信息中获取所述提交的待调度任务的优先级参数;获取所述提交的待调度任务的提交时间;基于所述优先级参数和提交时间,确定所述提交的待调度任务的优先级。具体的,从所述任务信息中获取所述提交的待调度任务的优先级参数,若用户为提交的待调度任务未设置优先级参数,主控服务器默认该提交的待调度任务的优先级参数priority为0,即在不考虑时间因素的前提下,表明提交的待调度任务的优先级最低,同时,记录用户提交该待调度任务的提交时间,基于所述优先级参数和提交时间,确定所述提交的待调度任务的优先级。在确定优先级时,所述优先级参数的权重可以远远大于提交时间的权重,也就是说,对于不同优先级参数的待调度任务,可以通过优先级参数来确定其优先级,比如,优先级参数为3的待调度任务1和优先级参数为1的待调度任务2,其待调度任务1的优先级比待调度任务2的优先级高,对于相同优先级参数的待调度任务,可以通过提交时间来确定其优先级,比如,优先级参数为3的待调度任务1和优先级参数为3的待调度任务3,由于待调度任务1的提交时间早于待调度任务3的提交时间,则待调度任务1的优先级高于待调度任务3的优先级,最终的优先级排序为待调度任务1的优先级高于待调度任务3的优先级,而待调度任务3的优先级又高于待调度任务2的优先级。另外,对于不同优先级的待调度任务,优先级越高的待调度任务排列靠前,而对于相同优先级的待调度任务,提交时间越早的待调度任务排列靠前。其中,用户可以通过设置待调度任务的优先级参数priority(优先级参数priority大于0)来设置待调度任务的优先级,以优先级参数priority加1或者加m的方式提升待调度任务的优先级。在步骤403中,可以基于对于不同优先级的待调度任务,优先级越高的待调度任务排列靠前,而对于相同优先级的待调度任务,提交时间越早的待调度任务排列靠前的原则,对所述提交的待调度任务进行插入。插入之前,可以根据所述提交的待调度任务的标识信息,确定所述提交的待调度任务所属的任务队列;然后,将找到对应的任务队列,并查找到该任务队列的pendinglist的目标位置;其中,若所述目标位置的前一位置存储有待调度任务,所述前一位置存储的待调度任务的优先级大于所述提交的待调度任务,若所述目标位置的后一位置存储有待调度任务,所述后一位置存储的待调度任务的优先级小于所述提交的待调度任务;最后,将该提交的待调度任务插入至该目标位置中。上述步骤404与实施例一的步骤101类似,上述步骤405与实施例一的步骤102类似,其解释可以分别参照实施例一的步骤101和步骤102,在此不再赘述。本实施例中,通过对提交的待调度任务以优先级的方式进行排序,排序靠前的待调度任务的优先级高于排序靠后的待调度任务的优先级,从而可以实现优先级从高到低的排队策略。同时,针对每一所述目标任务队列,基于所述目标任务队列中待调度任务配置的优先级,按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。可以解决在运行资源不足而训练任务又较多的情况下,无法实现优先级高的任务优先调度的问题,同时,可以支持不同优先级的任务调度,保证高优先级的任务能够快速的部署进行训练,这样,可以实现灵活的任务优先调度,提高任务调度的灵活性。下面举个例子对本发明实施例提供的任务调度方法进行详细说明。应用场景:任务调度管理系统并列管理两个用户的任务队列,分别为用户1的任务队列a和用户2的任务队列b,任务队列a和任务队列b中都包括有pendinglist和runninglist,任务队列a中的pendinglist中包括待调度任务1和待调度任务2,待调度任务1的优先级参数为2,待调度任务2的优先级参数为0,任务队列a中的runninglist中包括深度学习任务3,而任务队列b的pendinglist中没有待调度任务。首先,检测到用户1提交了待调度任务4;然后,获取待调度任务4的任务信息,该任务信息包括优先级参数和提交时间,其中,待调度任务4的优先级参数为1;接着,基于该任务信息,确定待调度任务4的优先级;接着,由于待调度任务4的优先级小于待调度任务1的优先级,且大于待调度任务2的优先级,则将待调度任务4插入至任务队列a的pendinglist中的待调度任务1和待调度任务2的中间,其中,任务队列a即为待调度任务4所属的任务队列;接着,在遍历时间到达时,可以首先遍历任务队列a的pendinglist,遍历到待调度任务1,待调度任务1为pendinglist中处于最高优先级的待调度任务,获取待调度任务1的资源配额,将待调度任务1的资源配额加上深度学习任务3的资源配额,得到目标运行资源;接着,从配额列表中获取任务队列a对应的预设资源配额;接着,判定所述目标运行资源小于或等于预设资源配额,对待调度任务1进行调度;接着,将待调度任务1移动至任务队列a的runninglist中,标识为runninglist的深度学习任务1,此时,任务队列a的runninglist中包括深度学习任务1和深度学习任务3,任务队列a的pendinglist中包括待调度任务4和待调度任务2;接着,遍历待调度任务4,此时,待调度任务4为pendinglist中处于最高优先级的待调度任务,获取待调度任务4的资源配额,将待调度任务4的资源配额加上深度学习任务1和深度学习任务3的资源配额,得到目标运行资源;接着,判定所述目标运行资源大于预设资源配额,不对待调度任务4进行调度,此时,直接跳转到任务队列b,对任务队列b的pendinglist进行遍历,由于任务队列b的pendinglist中没有包括待调度任务,则结束本次遍历,等待下一次遍历时间的到达;最后,在深度学习任务1和深度学习任务3训练处理完成之后,将深度学习任务1和深度学习任务3从任务队列a的runninglist中删除。下面对本发明实施例提供的任务调度装置进行说明。参见图5,图中示出了本发明实施例中任务调度装置的结构示意图之一。如图5所示,任务调度装置500包括:第一获取模块501,用于获取目标任务队列;其中,所述目标任务队列为包括有至少一个待调度任务的任务队列;调度模块502,用于按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。可选的,所述目标任务队列中包括第一待调度任务,所述第一待调度任务为所述目标任务队列中任一待调度任务。参见图6,图中示出了本发明实施例中任务调度装置的调度模块的细化结构示意图,如图6所示,所述调度模块502包括:第一获取单元5021,用于获取所述第一待调度任务的资源配额;第一确定单元5022,用于基于所述第一待调度任务的资源配额,确定目标运行资源;其中,所述目标运行资源包括所述目标任务队列中所有正在运行的任务所需的运行资源和所述第一待调度任务所需的运行资源;调度单元5024,用于若所述目标运行资源小于或等于预设资源配额,对所述第一待调度任务进行调度。可选的,所述目标任务队列的数量至少为两个,针对每一所述目标任务队列,所述预设资源配额与所述目标任务队列对应,如图6所示,所述调度模块502还包括:第二获取单元5023,用于针对每一所述目标任务队列,分别从配额列表中获取与每一所述目标任务队列对应的预设资源配额。可选的,参见图7,图中示出了本发明实施例中任务调度装置的结构示意图之二。如图7所示,任务调度装置500还包括:第二获取模块503,用于获取提交的待调度任务的任务信息;确定模块504,用于基于所述任务信息,确定所述提交的待调度任务的优先级;插入模块505,用于基于所述提交的待调度任务的优先级,将所述提交的待调度任务插入至所述提交的待调度任务所属的任务队列的待调度任务列表的目标位置中;其中,所述待调度任务列表用于存储待调度任务,若所述目标位置的前一位置存储有待调度任务,所述前一位置存储的待调度任务的优先级大于所述提交的待调度任务,若所述目标位置的后一位置存储有待调度任务,所述后一位置存储的待调度任务的优先级小于所述提交的待调度任务。可选的,参见图8,图中示出了本发明实施例中任务调度装置的确定模块的细化结构示意图,如图8所示,所述确定模块504包括:第三获取单元5041,用于从所述任务信息中获取所述提交的待调度任务的优先级参数;第四获取单元5042,用于获取所述提交的待调度任务的提交时间;第二确定单元5043,用于基于所述优先级参数和提交时间,确定所述提交的待调度任务的优先级。本发明实施例提供的装置能够实现上述方法实施例中实现的各个过程,为避免重复,这里不再赘述。本实施例提供的任务调度装置,基于目标任务队列中待调度任务配置的优先级,按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。可以解决在运行资源不足而训练任务又较多的情况下,无法实现优先级高的任务优先调度的问题,同时,可以支持不同优先级的任务调度,保证高优先级的任务能够快速的部署进行训练,这样,可以实现灵活的任务优先调度,提高任务调度的灵活性。并且,还能够高效地实现任务调度。下面对本发明实施例提供的电子设备进行说明。本发明实施例还提供了一种电子设备,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,存储器903,用于存放计算机程序;处理器901,用于执行存储器903上所存放的程序时,实现如下步骤:获取目标任务队列;其中,所述目标任务队列为包括有至少一个待调度任务的任务队列;按照所述目标任务队列中待调度任务的优先级从高到低的顺序,依次对所述目标任务队列中的待调度任务进行调度。可选的,所述目标任务队列中包括第一待调度任务,所述第一待调度任务为所述目标任务队列中任一待调度任务,处理器901,具体用于:获取所述第一待调度任务的资源配额;基于所述第一待调度任务的资源配额,确定目标运行资源;其中,所述目标运行资源包括所述目标任务队列中所有正在运行的任务所需的运行资源和所述第一待调度任务所需的运行资源;若所述目标运行资源小于或等于预设资源配额,对所述第一待调度任务进行调度。可选的,所述目标任务队列的数量至少为两个,针对每一所述目标任务队列,所述预设资源配额与所述目标任务队列对应,处理器901,具体用于:针对每一所述目标任务队列,分别从配额列表中获取与每一所述目标任务队列对应的预设资源配额。可选的,处理器901,还用于:获取提交的待调度任务的任务信息;基于所述任务信息,确定所述提交的待调度任务的优先级;基于所述提交的待调度任务的优先级,将所述提交的待调度任务插入至所述提交的待调度任务所属的任务队列的待调度任务列表的目标位置中;其中,所述待调度任务列表用于存储待调度任务,若所述目标位置的前一位置存储有待调度任务,所述前一位置存储的待调度任务的优先级大于所述提交的待调度任务,若所述目标位置的后一位置存储有待调度任务,所述后一位置存储的待调度任务的优先级小于所述提交的待调度任务。可选的,处理器901,具体用于:从所述任务信息中获取所述提交的待调度任务的优先级参数;获取所述提交的待调度任务的提交时间;基于所述优先级参数和提交时间,确定所述提交的待调度任务的优先级。上述终端提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的任务调度方法。在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的任务调度方法。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1