CN113946431B - 一种资源调度方法、***、介质及计算设备 - Google Patents
一种资源调度方法、***、介质及计算设备 Download PDFInfo
- Publication number
- CN113946431B CN113946431B CN202111576730.2A CN202111576730A CN113946431B CN 113946431 B CN113946431 B CN 113946431B CN 202111576730 A CN202111576730 A CN 202111576730A CN 113946431 B CN113946431 B CN 113946431B
- Authority
- CN
- China
- Prior art keywords
- service node
- executed
- task
- subtask
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及人工智能领域,公开一种资源调度方法、***、介质及设备,该方法包括:获取第一待执行任务的请求信息,第一待执行任务包括至少一个子任务,请求信息包括执行每一所述子任务需消耗的资源信息;获取多个服务节点在预设时长内的实时可用资源;基于各个服务节点在预设时长的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个目标服务节点对应至少一个子任务;分别向各目标服务节点发送第一消息,指示收到第一消息的目标服务节点在预设时长内执行至少一个子任务。本申请提供的资源调度方法,能够充分利用每个服务节点的资源。
Description
技术领域
本申请实施例涉及人工智能的资源管理领域,特别涉及一种资源调度方法、***、介质及计算设备。
背景技术
一些人工智能模型,例如人脸识别模型、图像识别模型等等,在开发测试阶段往往需要对模型进行对抗测评,在测评过程中,往往需要利用成千上万张人脸照片或图像对深度学习模型进行对抗测试,因而人工智能模型,尤其是深度学习模型的测评任务可能会包括成百上千个子任务,这些子任务往往都比较繁重,需要的资源开销极大。
目前大多会利用一些开源的评测***或者对抗***对这些模型进行评测,当前的主流方式是通过k8s调度分布式***的各个服务节点来执行一个测评任务中的各个子任务,k8s在进行调度时,往往只能根据服务节点是否被某个任务占用的状态来确定是否可以继续调度所述服务节点执行新的测评任务,这种情况下,容易存在不满载的服务节点只执行一个测评任务,只有正在执行的测评任务结束后,所述服务节点才会被释放,进而被调度执行新的测评任务,如图1所示,该分布式***包括3个服务节点1、2、3,若某一时刻用户向该分布式***的控制模块(包括收发单元和调度单元)发送两个待执行任务,其中第一待执行任务包括7个子任务,第二待执行任务包括8个子任务,那么对于K8s的调度方法来说,三个服务节点同时仅能执行三个子任务(子任务1-3),对于服务节点1-3来说显然造成了大量的资源浪费,而当面对海量任务时,无法充分利用各个服务节点的资源,难以合理的分配服务节点来对各个任务进行测评,就导致资源调度不及时、分配不合理,形成资源浪费,最终导致测评效率较低;另一方面,基于k8s调度分布式***,默认会将***中的所有与服务节点全部占满,当子任务过多时就会把所有的服务节点全部占用,因而会造成大量的测评任务排队,处理效率较低。
发明内容
本申请实施例的主要目的是提出一种资源调度方法、***、介质及计算设备,能够对有限的硬件资源进行及时合理的调度,提高各个客户端的各个请求任务的处理效率。
为实现上述目的,本申请实施例提出一种资源调度方法,所述方法应用于分布式***中的控制模块,所述分布式***还包括多个服务节点,所述方法包括:
从客户端接收第一待执行任务的请求信息,所述第一待执行任务包括至少一个子任务,所述请求信息包括执行每一所述子任务时的资源占用信息;
获取所述多个服务节点在预设时长内的实时可用资源;
基于各个服务节点在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,所述目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个所述目标服务节点对应至少一个子任务;
分别向各目标服务节点发送第一消息,所述第一消息用于指示收到所述第一消息的目标服务节点在所述预设时长内执行至少一个子任务。
本申请实施例还提出一种资源调度***,包括:
收发单元,用于从客户端接收第一待执行任务的请求信息,所述第一待执行任务包括至少一个子任务,所述请求信息包括执行每一所述子任务需消耗的资源信息,以及
用于获取所述多个服务节点在预设时长内的实时可用资源;
调度单元,被配置为:
基于各个服务节点在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,所述目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个所述目标服务节点对应至少一个子任务;
分别向各目标服务节点发送第一消息,所述第一消息用于指示收到所述第一消息的目标服务节点在所述预设时长内执行至少一个子任务。
本申请实施例还提出一种介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现该资源调度方法。
本申请实施例还提出一种计算设备,所述计算设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现该资源调度方法。
相较于现有技术,本申请实施例所提供的技术方案中,通过根据待执行任务中各个子任务所需的硬件资源信息,从预设的多个服务节点中选择当前资源空余能够满足各个子任务的服务节点供其使用,能够合理的分配***中全部服务节点的硬件资源,避免资源浪费。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为K8s分布式***中的资源调度方法的应用场景图;
图2为本申请一实施例提供的资源调度方法的应用场景图;
图3为本申请一实施例提供的资源调度方法的信令交互图;
图4为本申请一实施例提供的资源调度方法的各端交互图;
图5为本申请另一实施例提供的资源调度方法的时序图;
图6为本申请一实施例部署了资源调度***的分布式***的架构示意图;
图7为本申请一实施例提供的资源调度方法的流程图;
图8为本申请一实施例提供的资源调度***的模块图;
图9为本申请一实施例提供的计算机可读存储介质的模块图;
图10为本申请一实施例提供的计算设备的结构图。
本申请各个实施例目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将参考若干示例性实施方式来描述本申请实施例的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请实施例,而并非以任何方式限制本申请实施例的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本申请实施例的实施方式可以实现为一种装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
本申请实施例提供的方案涉及人工智能(Artificial Intelligence, AI)、自然语言处理(Nature Language processing, NLP)、机器学习(Machine Learning, ML)等技术,具体通过如下实施例进行说明:
人工智能(Artificial intelligence,Ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请的实施例提供的方案涉及人工智能服务的部署以及相关服务节点的调度等技术,本申请实施例的资源调度方法适用于多租户公用一个***完成不同的任务,或者同一个租户在同一个***上完成多个任务。本申请实施例的资源调度方法适用于分布式***,分布式***包括控制模块和服务节点,服务节点会定期向控制模块汇报自己的资源状态,或者控制模块会定期获取各个服务节点的资源状态,其中用户通过客户端向分布式***发送待执行任务,待执行任务可以为用户上传的一些人工智能模型的评测请求,或者一些人工智能模型的试跑任务,比如人脸识别模型、图像识别模型、声音识别模型等等,用户可以将这些深度学习模型的模型参数上传到执行本次评测任务的***,模型参数包括了上传的算法模型每进行一次子任务所需要消耗的硬件资源,比如所需要消耗的显卡大小(GPU)、内存大小、CPU大小等等。一些实施方式中,本申请实施例的资源调度方法可基于分布式***实现。举例来说,本申请实施例的资源调度方法可基于图2所示的一种分布式***实现,该分布式***包括至少一个客户端、至少一个控制模块、以及多个服务节点。
其中,每个服务节点中均部署至少一个子任务,服务节点用来提供执行子任务所需要的硬件资源,比如显卡、内存以及CPU等。如图2所示,用户可以通过客户端发送待执行任务,待执行任务包括多个子任务,比如一个人脸识别模型的评测任务,需要对多张人脸照片进行识别测试,对于每张人脸照片的识别测试任务就属于一个子任务。各个服务节点可以预先设置,预设的服务节点可以有多个,多个服务节点均用于处理各个用户的各个待执行任务,多个服务节点可以提供不同类型、不同大小的硬件资源,对于使用频率较高的硬件资源可以部署较多数量。比如一些服务节点可以提供内存和CPU资源,一些服务节点不仅能够提供内存和CPU资源,还能提供显卡(GPU)资源,在部署各个服务节点时可以按照不同的资源侧重进行部署,比如对于仅提供CPU和内存的服务节点来说,可以一部分服务节点提供较大的内存和常规的CPU,一部分服务节点提供较大的CPU和常规的内存,当然也可以设置一部分服务节点同时提供较大的内存和CPU。同样对于同时提供内存、CPU和显卡的服务节点来说,也可以分别按照不同的侧重进行部署,而且各个服务节点所提供的硬件资源的大小也可以根据需求自行设定,比如一些服务节点可以提供6G的显卡(GPU),另一些服务节点可以提供12G的显卡(GPU),一些服务节点可以提供6核的CPU,一些服务节点可以提供8核的CPU等等。从而不同资源侧重的服务节点可以精准的服务不同的人工智能模型。另外每个服务节点均可以部署在物理主机或虚拟主机或容器上。
控制模块,用于接收客户端发送的待执行任务,并根据各个服务节点的实时可用资源,调度各个服务节点执行待执行任务中的各个子任务。控制模块根据各个服务节点的当前可用资源进行综合调度,供不同客户端的不同待执行任务使用,或者供同一客户端的多个待执行任务使用。
客户端用于供用户向控制模块发送待执行任务,比如用户可以通过计算机终端向分布式***中的控制模块发送人工智能模型的算法代码,以及运行所述人工智能模型所需的资源信息。
下面以1个控制模块、3个服务节点(例如图2中的服务节点1、2、3)为例对本申请实施例中的资源调度方法进行说明。其中,服务节点中部署人工智能模型测评任务。具体通过如下实施例进行说明。
如图2所示,图2为本资源调度方法的一实施例的应用示意图,其中用户在客户端上传待执行任务,控制模块收取到各个待执行任务后,根据本申请实施例的资源调度方法,调度各个服务节点执行所述各个待执行任务,如图2所示,客户端用于通过网络向控制模块发送待执行任务,包括待执行任务所运行的人工智能模型,以及训练或者测试所述人工智能模型的数据。控制模块用于通过网络收取客户端发送的待执行任务,响应于收取到客户端发送的待执行任务,根据各个服务节点当前的资源空余,调度当前能够执行至少一个子任务的服务节点去执行所述待执行任务的至少一个子任务。各个服务节点用于通过网络收取服务模块发送的调度信息,响应于收取到控制模块分配的子任务,利用服务节点自身所提供的资源运行所述人工智能模型。与图1所示的K8s资源调度方法相比,本申请实施例中的资源调度方法能够充分利用每个服务节点中的资源,而图1中的调度方式,对于正在执行任务但资源还有空余的服务节点来说,显然具有大量的资源浪费。另外,本申请实施例的资源调度方法可以面对单个客户端进行服务,也可以对多个不同的客户端进行服务(即开源***),无论是服务多个用户还是仅服务单一用户,都能够获取***上的各个服务节点的资源空余,那么在面对待执行任务时,就可以根据待执行任务所需要的资源开销,将该待执行任务的各个子任务合理的分配至各个服务节点。
根据本申请实施例的实施方式,提出了一种资源调度方法、***、介质及计算设备。
示例性方法
接下来,结合参照图3对所述资源调度方法进行具体阐述,在本示例性实施方式中提出一种资源调度方法,包括如下步骤:
步骤S100:从客户端接收第一待执行任务的请求信息。
其中,所述第一待执行任务包括至少一个子任务,所述请求信息包括执行每一所述子任务需消耗的资源信息。
在步骤S100中,从客户端收取第一待执行任务的请求信息,所述第一待执行任务的请求信息可以是用户通过客户端发送的,同一个用户可以通过客户端发送多个待执行任务的请求信息,***收取到各个用户的各个待执行任务的请求信息后,可以根据收取的时间进行排序,当然,如果该***仅仅服务一个用户,那么该用户也可以根据自身的需求调换各个待执行任务的顺序。用户在向服务器或者***发送的请求信息中包含了所需要运行的人工智能模型,以及运行该人工智能模型的每个子任务所需要消耗的资源信息,比如一个人脸识别模型,需要对1000张人脸照片进行识别,那么就有1000个子任务,以及每个子任务需要消耗多少CPU、GPU、内存等等。
***在收到各个用户的各个请求信息后,可以根据各个请求信息的请求时间进行排序处理。
步骤S200:获取所述多个服务节点在预设时长内的实时可用资源。
在确定了当前的第一待执行任务后,进行步骤S200,确定所有服务节点在预设时长内的实时可用资源。比如一个服务节点可以提供4G的GPU,如果当前时刻只占用了1G的GPU,那么该服务节点当前还可以提供3G的GPU,即当前可用资源为3G的GPU。
由于服务节点的资源可能在时刻变化,例如,服务节点上的多个任务的执行进度并不相同,一些任务刚开始执行,一些任务已经快要执行完毕,如图4所示,服务节点可以通过网络向控制模块实时反馈可用资源,以便控制模块根据可用资源进行实时调度,但是这样的调度方式不可避免的依赖于资源状态的更新,即如果资源状态更新不及时,可能会导致调度不及时,由此,基于每个时刻的资源状态去计算获得当前可用资源的时候,可能已经不够精准了,因而在其他实施例中也可以按照预设时长预估未来一段时长内的可用资源,然后,为各个服务节点预先安排预设时长内的任务调度计划,在预设时长内,按照所述任务调度计划,安排各个服务节点执行任务即可,相较于按照每时每刻计算可用资源来调度服务节点,更加精准高效。
步骤S300:基于各个服务节点在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,所述目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个所述目标服务节点对应至少一个子任务。
经过步骤S100和步骤S200,可以获知用户上传的人工智能模型的每个测评子任务所需要的消耗资源大小,以及当前各个服务节点各自能够提供的资源大小后,从而在本步骤中就可以知道哪些服务节点能够满足测评此用户上传的人工智能模型的各个子任务,即可以确定能够执行第一待执行任务的各个子任务的目标服务节点,各个目标服务节点构成所述目标节点集合。
本实施例中,通过根据用户的人工智能模型所需的资源信息,从预设的多个服务节点中选择当前可用资源能够满足的多个服务节点供其使用,能够合理的分配***中各个服务节点的硬件资源,避免资源浪费。
比如,用户需要对某一人脸识别模型进行评测,用户通过客户端上传该人脸识别模型的算法模型和代码,以及每运行一次所需要占用的硬件资源,假设该人脸识别模型主要占用的是显卡(GPU)资源,每运行一次所需要占用的显卡资源为2G,即每个子任务都需要2G的显卡资源,那么当服务器收到该待执行任务后,则需要选择当前能够提供2G显卡资源的服务节点为目标服务节点。比如该***设有10个服务节点,并监测到当前该10个服务节点均能够提供2G或以上的显卡资源,那么此时就可以调度这10个服务节点分别去执行该人脸识别模型的至少一个子任务,至于每个服务节点具体执行几个子任务根据每个服务节点的可用资源而定,如:某服务节点当前空余5G显卡资源,则可同时执行2个子任务,若某服务节点当前仅空余2G显卡资源,则同时只能执行1个子任务。需要说明的是,不同的人工智能模型,所主要消耗的资源不同,比如上述实施例中的人脸识别模型主要消耗显卡资源,而对内存和CPU则要求不高,故而上述实施例仅对显卡资源进行了说明,其前提是内存和CPU资源也同时满足该人脸识别模型的每个子任务运行需要。
然后就可以向这些目标服务节点发送第一消息,用以指示这些目标服务节点来执行第一待执行任务的各个子任务。即
步骤S400:分别向各目标服务节点发送第一消息,所述第一消息用于指示收到所述第一消息的目标服务节点执行至少一个子任务。在步骤400中就可以向这些目标服务节点发送第一消息,用以指示这些目标服务节点来执行第一待执行任务的各个子任务。
在本实施例中,如图5所示,控制模块能够基于每个服务节点1-n的实时可用资源,调度能够满足至少一个子任务的服务节点去执行客户端上传的相应的子任务,但是对于尚有资源空余但不足以执行一个子任务的服务节点而言,还存在一定程度的资源浪费,故而,在又一个实施例中,还可以对尚有资源空余但不足以执行一个子任务的服务节点进行调度。
比如,在本实施方式的另一个实施例中,在确定目标节点集合之后,该资源调度方法还包括:若存在未确定目标服务节点的子任务、存在未被确定为目标服务节点的多个不饱和服务节点,且所述多个不饱和服务节点的可用资源之和满足执行至少一个所述未确定目标服务节点的子任务,则向所述多个不饱和服务节点发送第二消息,所述第二消息用于指示收到所述第二消息的多个不饱和服务节点协同执行至少一个所述未确定目标服务节点的子任务。
假设在本实施例中该***预设有A、B、C、D、E、F、G、H、I、J10个服务节点,而且此10个服务节点所提供的内存以及CPU均满足上述人脸识别模型运行所需,对于各个服务节点所提供的显卡资源,以及当前各个服务节点的显卡资源空余如下表1所示,该人脸识别模型每运行一次需要2G的显卡,即每个子任务均需要2G的显卡资源,那么在经过步骤S300后,可以确定目标节点集合包括E、F、G、H、I、J服务节点,从而在步骤S400时向服务节点E、F、G、H、I、J发送第一消息以指示执行该人脸识别的各个子任务。根据各个服务节点的当前显卡资源空余可知服务节点E、F每次可以运行一个子任务,服务节点G、H、I、J每次可以运行2个子任务。表2为调度目标服务节点E、F、G、H、I、J执行该人脸识别模型子任务之后显卡的实时可用资源,可知服务节点A、B、C、D则属于未被确定为目标服务节点的4个不饱和服务节点,服务节点A、B、C、D均有显卡资源空余,但都不足以单独执行该人脸识别模型的一个子任务,此时如果该人脸识别模型的还有未确定目标服务节点的子任务,即没有被分配服务节点的子任务的话,就可以判断不饱和服务节点A、B、C、D的可用资源之和是否满足一个子任务,一个人脸识别模型子任务只需要2G显卡资源,而不饱和服务节点A、B、C、D总共能提供4G的显卡资源,显然还可以执行2个子任务,那么此时就可以向服务节点A、B、C、D发送第二消息,以指示协同执行该人脸识别模型的子任务。不难看出,本实施例中对于可用资源不足以执行一个子任务的不饱和服务节点的资源空余也能够进行充分的利用。
表1
服务节点 | A | B | C | D | E | F | G | H | I | J |
资源总量 | 4G | 4G | 4G | 4G | 4G | 6G | 6G | 6G | 6G | 6G |
实时资源空余 | 1G | 1G | 1G | 1G | 2G | 2G | 4G | 4G | 4G | 4G |
表2
服务节点 | A | B | C | D | E | F | G | H | I | J |
资源总量 | 4G | 4G | 4G | 4G | 4G | 6G | 6G | 6G | 6G | 6G |
实时资源空余 | 1G | 1G | 1G | 1G | 0 | 0 | 0 | 0 | 0 | 0 |
考虑到存在尚有资源空余但不足以单独完成一个子任务的服务节点,当多个服务节点的资源空余之和满足完成一个子任务时,可以对多个服务节点进行组合以执行至少一个子任务,但是当多个服务节点的组合有多种时,还需要考虑如何进行最佳组合。那么在本实施方式的另一个实施例中,在调度所述多个不饱和服务节点协同执行至少一个所述未确定目标服务节点的子任务之前(即在向所述多个不饱和服务节点发送第二消息之前),还包括:
确定所述多个不饱和服务节点的多个候选组合策略,其中,每一个候选组合策略均能执行至少一个所述未确定目标服务节点的子任务;
按照第一预设规则从所述多个候选组合策略中确定一个目标组合策略,按照所确定的目标组合策略对所述多个不饱和服务节点进行组合;
向组合后的多个不饱和服务节点发送第三消息,所述第三消息用于指示收到所述第三消息的不饱和服务节点组协同执行至少一个所述未确定目标服务节点的子任务。具体地如下:
不饱和服务节点A、B、C、D的可用资源超过该人脸识别模型一个子任务所需的资源量,那么不饱和服务节点A、B、C、D可以协同执行至少一个子任务,此时还可以进一步继续判断这4个不饱和服务节点是否存在多种组合方式均能够执行一个子任务务,显然A、B、C、D 4个不饱和服务节点两两组合均能够满足该人脸识别模型的一个子任务,即存在如下策略组合:A+B和C+D;A+C和B+D;A+D和B+C三种组合方式,此时就可以按照第一预设规则从三个候选组合策略中确定一个目标组合策略,按照所确定的目标组合策略对所述多个不饱和服务节点进行组合,其中第一预设规则可以按照各个服务节点组的当前负载,或者网络通信质量,或者服务节点与客户端的物理距离等等,以网络通信质量为例,可以分别计算上述三个组合方式各自的当前通信质量,并按照通信质量最高的组合策略调度A、B、C、D四个服务节点组成两个服务节点组各自执行一个子任务,假设当前A+B和C+D的组合通信质量最高,那么此时就可以分别向A+B组合以及C+D组合发送第三消息,分别指示两个组合各自执行一个子任务。不难看出,在本实施例中,当不饱和服务节点存在多种组合方式时,可以按照预设第一规则选择出最佳的组合方式,从而提高任务处理的速度。
考虑到,当存在单个不饱和服务节点不足以执行一个子任务时,可以利用多个不饱和服务节点协同完成一个子任务,但是若多个不饱和服务节点的可用资源之和不满足执行至少一个子任务时,即虽然当前第一待执任务还存在未确定目标服务节点的子任务,但是当前不饱和的服务节点的可用资源全部加起来也不够执行第一待执行任务的任何一个子任务,那么如果保持这多个不饱和服务节点的当前资源空余状态不变的话,显然也会在一定程度上造成资源浪费。因而,在本申请的另一个实施例中,可以通过执行另一个待执行任务来解决该资源浪费的问题,具体来说,若所述多个不饱和服务节点的可用资源之和不满足执行至少一个所述未确定目标服务节点的子任务时,本申请实施例还包括:
从待执行任务序列中获取第二待执行任务,所述第二待执行任务的至少一个子任务的资源消耗与所述多个不饱和服务节点的可用资源之和匹配,向所述多个不饱和服务节点发送第四消息,所述第四消息用于指示收到所述第四消息的多个不饱和服务节点协同执行所述第二待执行任务的至少一个子任务;或者
所述第二待执行任务的至少一个子任务的资源消耗与所述多个不饱和服务节点中的至少一个不饱和服务节点的可用资源匹配,向所述至少一个不饱和服务节点发送第五消息,所述第五消息用于指示收到所述第五消息的至少一个不饱和服务节点执行所述第二待执行任务的至少一个子任务。
例如,在本实施例中,各个服务节点当前的实时资源空余如表3所示,还以该人脸识别模型为例,可知当前不饱和服务节点A、B、C、D的当前显卡资源之和为1G,也就是说4个不饱和的服务节点组合也不足以执行一个子任务,那么此时就可以在待执行任务序列中获取另一个待执行任务,该待执行任务至少有一个子任务的资源消耗小于或者等于1G,即第二待执行任务。需要说明的是,此处描述的第二待执行任务并非一定是在时序上的第二待执行任务,如果在时序上的第二待执行任务的全部子任务的资源消耗均大于1G,那么继续在排队序列里获取其他待执行任务,直至获取到至少有一个资源消耗小于1G的待执行任务。那么此时就可以向A、B、C、D服务节点发送第四消息,以指示协同执行所述第二待执行任务的一个子任务。或者向A、B、C、D服务节点中资源空余大于所述第二待执行任务一个子任务的服务节点发送第五消息,以指示单独执行该子任务。不难看出,本实施例中的资源调度方法,对于当不饱和服务节点的可用资源之和也不足以执行第一待执行任务的一个子任务时,还可以根据其他待执行任务的子任务的资源消耗大小,对这些不饱和服务节点进行调度,能够更加细粒度的调度各个服务节点的可用资源。
表3
服务节点 | A | B | C | D | E | F | G | H | I | J |
资源总量 | 4G | 4G | 4G | 4G | 4G | 6G | 6G | 6G | 6G | 6G |
实时资源空余 | 0.25G | 0.25G | 0.25G | 0.25G | 0 | 0 | 0 | 0 | 0 | 0 |
上述实施例中的资源调度方法,能够充分调度每一个服务节点的资源,从而使整个***的资源利用率达到最高。
如图6所示,在本实施方式另一个实施例中,由于所有服务节点被预先划分为多个服务节点组,且多个服务节点组可以提供不同类型、大小的硬件资源,为方便管理各个服务节点,在本实施例中,还可以将各个服务节点预先进行分组设置,分组时可以根据各服务节点提供的硬件资源类型进行分组。比如可以将多个服务节点至少划分为下述3类服务节点组:GPU资源组、CPU资源组和内存资源组。同一种类型的服务节点组的数量、以及每组中的服务节点数量均不限定。
其中,GPU资源组为按照GPU资源划分,GPU资源组中的各服务节点提供的显卡(GPU)资源的权重较高,比如各个服务节点能够提供1G的内存,2核CPU,以及8G的显卡;CPU资源组为按照CPU资源划分,CPU资源组中的各服务节点提供的CPU资源的权重较高,比如各个服务节点能够提供1G的内存,1G的显卡以及8核CPU;内存资源组为按照内存资源划分,内存资源组中各服务节点提供内存的权重较高,比如各服务节点能够提供1G的显卡,2核CPU以及8G的内存。另外每种类型的服务节点组都可以有多个,每个服务节点组的大小均可以按照需要进行设定。比如***在初始部署时,可以划分10个GPU资源组、5个内存资源组,8个CPU资源点组。另外10个显卡组可以为12G、8Gg、6G等大小,同样内存及CPU资源组也可以为不同的大小,本申请实施例对具体每个类型服务节点组的数量,以及每个服务节点组所提供的硬件资源的大小均不作限制。各个类型的服务节点组在初始部署时,可以在注册中心中完成,比如将侧重提供同种资源的服务节点的label标记为相同。与上述各个实施例相比,本实施例通过设置多个服务节点组,可以并行调度多个服务节点组,以同时供多个待执行任务使用,一方面可以多任务同时处理,而且每个服务节点组都有多个服务节点,也能在一定程度上保证每个待执行任务的处理效率;另一方面,不同的服务节点组可以提供侧重不同的资源类型,因此在面对不同类型的人工智能模型时,可以将侧重消耗不同资源的人工智能模型相互隔离,提高各个人工智能模型运行的稳定性。
那么在本实施例中,在预先划分了服务节点组后,在收取第一待执行任务的请求信息后,所述方法还包括:
获取所有服务节点组在预设时长内的实时可用资源;
基于各个服务节点组在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定可执行所述第一待执行任务的各个目标服务节点组;
按照预设第二规则从可执行所述第一待执行任务的各个目标服务节点组中确定一个目标服务节点组;
向所确定的目标服务节点组发送第六消息,所述第六消息用于指示收到所述第六消息的目标服务节点组执行所述第一待执行任务。
具体地,假设本实施例中预设了20个服务节点组,其中10个显卡资源组、5个内存资源组以及5个CPU资源组,而且上述20个服务节点组均包含了10个服务节点,那么在同一时段内,当某一客户端有多个待执行任务时,或者在同一时段内,有多个客户端的多个待执行任务时,就可以根据各个待执行任务所需的硬件资源类型及大小,从20个服务节点组中并行调度多个服务节点组供各个待执行任务使用。
在获取第一待执行任务的请求信息后,首先确定所有服务节点组在预设时长内的实时可用资源;然后基于各个服务节点组当前可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定能够执行所述第一待执行任务的各个子任务的目标服务节点组;最后再从能够执行所述第一待执行任务的各个目标服务节点组中按照预设第二规则调度一个服务节点组执行所述第一待执行任务。
以上述20个服务节点组为例,假设该待执行任务是针对占用1G显卡的人脸识别模型的评测任务,其主要消耗的硬件资源是显卡,大小为1G,那么则可以从10个显卡资源组中筛选出当前资源空余大于或等于1G的服务节点组,即目标服务节点组,可能当前资源空余大于或等于1G的服务节点组有多个,此时按照预设第二规则,比如选择负载最低的一个,或者选择通信质量最高的一个,或者从负载低于预设阈值服务节点组中选择一个均可。
考虑到每个服务节点组内包含了多个服务节点,故而在选定了服务节点组之后还需要确定如何选择服务节点。在本实施例中,在选择执行所述第一待执行任务的一个服务节点组之后,还需要确定所选择的服务节点组内的各个服务节点的可用资源,然后基于各个服务节点的可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定每一个服务节点的可用资源是否足以满足每个子任务。在本实施例中,每一服务节点组包括多个提供同类资源的服务节点,在调度一个目标服务节点组执行所述第一待执行任务时,包括:
若所述目标服务节点组中,单个服务节点的可用资源满足执行所述第一待执行任务的至少一个子任务,则向所述单个服务节点发送第七消息,所述第七消息用于指示收到所述第七消息的单个服务节点执行所述第一待执行任务的至少一个子任务;
若所述目标服务节点组中,单个服务节点的可用资源不满足执行所述第一待执行任务的至少一个子任务,则向所述多个服务节点发送第八消息,所述第八消息用于指示收到所述第八消息的多个服务节点协同执行所述第一待执行任务的一个子任务。比如,在本实施例中,所选择的一个服务节点组内的存在单个服务节点的可用资源就能够满足执行至少一个子任务,那么此时就可以向该服务节点发送第七消息,以指示该服务节点单独执行第一待执行任务的一个子任务。
又比如在另一个实施例中,可能该选择的服务节点组的当前可用资源满足执行一个子任务,但是单个的服务节点不足以执行一个子任务,那么此时则可以向该服务节点组内的多个服务节点发送第八消息,以指示多个服务节点协同执行一个子任务。
又比如在另一实施例中,在确定了目标服务节点组后,若该服务节点组内的多个的服务节点的当前的可用资源均满足单独执行一个子任务,那么此时就可以向着多个服务节点发送第七消息,以并行调度这多个服务节点,分别执行一个子任务。
又比如在另一实施例中,在确定了目标服务节点组后,有部分单个服务节点的可用资源满足执行一个子任务,有部分服务节点的可用资源之和满足执行一个子任务,那么此时就可以调度单个可用资源满足执行一个子任务的服务节点分别执行至少一个子任务,另外调度组合之后满足执行一个子任务的服务节点组协同执行一个子任务。
在本实施方式的另一实施例中,该方法还包括:监测所有服务节点的状态信息,并根据所述每个服务节点的状态信息更新每个服务节点所在的服务节点组的状态信息。比如在一实施例中,所选择的目标服务节点组内共有10个服务节点,每个服务节点提供2G的显卡资源,且此时的资源空余均为2G,若用该服务节点组去执行上述人脸识别模型的子任务,恰好每个服务节点均能执行一个子任务,那么此时该服务节点组的资源空余则为0,由于该人脸识别模型具有多个子任务,而且每个子任务的完成时间也并不能保持一致,所以在最后一轮子任务处理时可能会有部分服务节点先完成,部分服务节点后完成。又或者,如果全部子任务的个数不是10的倍数,那么在最后一轮时可能部分服务节点还有子任务需要处理,而部分服务节点则没有子任务处理,此时就需要根据每个服务节点实时的资源空余状况,及时更新该服务节点组的可用资源,以方便供其他的待执行任务使用。
图7为本申请一实施例资源调度方法的流程图,如图7所示,对全部服务节点组进行可用监听,如果服务节点组当前不可用(即当前没有资源空余)则持续监听,如果某一服务节点组当前可用(若某一服务节点组中有任何一个服务节点的资源当前有空余,则该服务节点组当前可用),则获取该服务节点组的各个服务节点的状态信息,确定当前可用的服务节点,及其所提供的硬件资源的大小,并将其更新在该服务节点组的状态信息中,当响应到任一客户端的待执行任务时,从各个服务节点组状态信息中按照上述各个实施例中的方法进行调度服务节点,选定服务节点后构建镜像、生成yaml文件,并为该待执行任务的各个子任务提供服务,完成该待执行任务后,删除各个服务节点所构建的镜像,并释放各个服务节点,以供下一个待执行任务使用。需要说明的是,虽然图7中标明的是CPU资源组、GPU资源组以及内存资源组,其意思仅代表了该服务节点组是侧重提供该类型的硬件资源,比如对于内存资源组来说,代表了可以着重提供内存资源,而对于显卡和CPU可以进行常规大小的配置,并不代表该服务节点组不能提供CPU或者显卡资源,而且对于每个资源组而言均配置了能够执行一个人工智能模型的所需要的全部硬件资源。
本申请实施例所提供的资源调度方法能够充分利用每个服务节点所提供的资源,而且能够在服务节点组的层面以及每个服务节点组内的各个服务节点的层面上,同时进行并行调度,充分的利用各个服务节点的资源,面对具有大量子任务的用户请求时,具有更加的高效的处理速度。
示例性***
图2至图7中任一项所对应的实施例中所提及的任一技术特征也同样适用于本申请实施例中的图8所对应的实施例,后续类似之处不再赘述。在介绍了本申请实施例示例性实施方式的资源调度方法之后,接下来对本申请实施例示例性实施方式的资源调度***进行详细阐述。
如图8所示的一种资源调度***,可用于分布式***,该资源***能够实现资源调度方法对应于上述图2-图7中任一所对应的实施例中所执行的资源调度方法的步骤,在本实施例中该资源调度***100可以部署在上述示例性实施方式的资源调度方法的各个实施例中的控制模块内,该资源调度***100包括:
收发单元101,用于从客户端接收第一待执行任务的请求信息,所述第一待执行任务包括至少一个子任务,所述请求信息包括执行每一所述子任务需消耗的资源信息,以及
获取所述多个服务节点在预设时长内的实时可用资源;
调度单元102,被配置为:
基于各个服务节点在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,所述目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个所述目标服务节点对应至少一个子任务;
分别向各目标服务节点发送第一消息,所述第一消息用于指示收到所述第一消息的目标服务节点在所述预设时长内执行至少一个子任务。
在本实施例中,所述调度单元102还被配置为:在确定目标节点集合之后,若存在未确定目标服务节点的子任务、存在未被确定为目标服务节点的多个不饱和服务节点,且所述多个不饱和服务节点的可用资源之和满足执行至少一个所述未确定目标服务节点的子任务,则向所述多个不饱和服务节点发送第二消息,所述第二消息用于指示收到所述第二消息的多个不饱和服务节点协同执行至少一个所述未确定目标服务节点的子任务。
在本实施例中,所述调度单元102还被配置为:在向所述多个不饱和服务节点发送第二消息之前,
确定所述多个不饱和服务节点的多个候选组合策略,其中,每一个候选组合策略均能执行至少一个所述未确定目标服务节点的子任务;
按照第一预设规则从所述多个候选组合策略中确定一个目标组合策略,按照所确定的目标组合策略对所述多个不饱和服务节点进行组合;
向组合后的多个不饱和服务节点发送第三消息,所述第三消息用于指示收到所述第三消息的不饱和服务节点组协同执行至少一个所述未确定目标服务节点的子任务。
在本实施例中,所述收发模块101还被配置为:当所述多个不饱和服务节点的可用资源之和不满足执行至少一个所述未确定目标服务节点的子任务时,从待执行任务序列中获取第二待执行任务,所述第二待执行任务的至少一个子任务的资源消耗与所述多个不饱和服务节点的可用资源之和匹配,或者所述第二待执行任务的至少一个子任务的资源消耗与所述多个不饱和服务节点中的至少一个不饱和服务节点的可用资源匹配;
所述调度单元102还被配置为:当所述第二待执行任务的至少一个子任务的资源消耗与所述多个不饱和服务节点的可用资源之和匹配时,向所述多个不饱和服务节点发送第四消息,所述第四消息用于指示收到所述第四消息的多个不饱和服务节点协同执行所述第二待执行任务的至少一个子任务;
当所述第二待执行任务的至少一个子任务的资源消耗与所述多个不饱和服务节点中的至少一个不饱和服务节点的可用资源匹配时,向所述至少一个不饱和服务节点发送第五消息,所述第五消息用于指示收到所述第五消息的至少一个不饱和服务节点执行所述第二待执行任务的至少一个子任务。
在本实施例中,所述多个服务节点属于多个服务节点组,所述收取单元101还用于获取所有服务节点组在预设时长内的实时可用资源;
所述调度单元102还被配置为:
基于各个服务节点组在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定可执行所述第一待执行任务的各个目标服务节点组;
按照预设第二规则从可执行所述第一待执行任务的各个目标服务节点组中确定一个目标服务节点组;
向所确定的目标服务节点组发送第六消息,所述第六消息用于指示收到所述第六消息的目标服务节点组执行所述第一待执行任务。
在本实施例中,每一服务节点组包括多个提供同类资源的服务节点,所述调度单元还被配置为:在向所确定的目标服务节点组发送第六消息时,
当所述目标服务节点组中的单个服务节点的可用资源满足执行所述第一待执行任务的至少一个子任务时,向所述单个服务节点发送第七消息,所述第七消息用于指示收到所述第七消息的单个服务节点执行所述第一待执行任务的至少一个子任务;
当所述目标服务节点组中的单个服务节点的可用资源不满足执行所述第一待执行任务的至少一个子任务时,向所述多个服务节点发送第八消息,所述第八消息用于指示收到所述第八消息的多个服务节点协同执行所述第一待执行任务的一个子任务。
各模块、单元、节点的具体实施方法参考示例性方法中的各个实施例,在此不一一赘述。本申请实施例提供的资源调度***能够根据待执行任务中各个子任务所需的硬件资源信息,从预设的多个服务节点中选择当前资源空余能够满足各个子任务的服务节点供其使用,能够合理的全部服务节点的硬件资源,避免资源浪费。
示例性介质
在介绍了本申请实施例示例性实施方式的方法、***之后,接下来,参考图9对本申请实施例示例性实施方式的计算机可读存储介质进行说明。
请参考图9,其示出的计算机可读存储介质为光盘70,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会实现上述方法实施方式中所记载的各步骤,例如:从客户端接收第一待执行任务的请求信息,所述第一待执行任务包括至少一个子任务,所述请求信息包括执行每一所述子任务时的资源占用信息;获取所述多个服务节点在预设时长内的实时可用资源;基于各个服务节点在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,所述目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个所述目标服务节点对应至少一个子任务;分别向各目标服务节点发送第一消息,所述第一消息用于指示收到所述第一消息的目标服务节点在所述预设时长内执行至少一个子任务。各步骤的具体实现方式在此不再重复说明。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
示例性计算设备
在介绍了本申请实施例示例性实施方式的方法、***和介质之后,接下来,参考图10对本申请实施例示例性实施方式的计算设备80进行说明。
图10示出了适于用来实现本申请实施例实施方式的示例性计算设备80的框图,该计算设备80可以是计算机***或服务器。图10显示的计算设备80仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图10所示,计算设备80的组件可以包括但不限于:一个或者多个处理器或者处理单元801,***存储器802,连接不同***组件(包括***存储器802和处理单元801)的总线803。
计算设备80典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算设备80访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器802可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)8021和/或高速缓存存储器8022。计算设备70可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,ROM8023可以用于读写不可移动的、非易失性磁介质(图10中未显示,通常称为“硬盘驱动器”)。尽管未在图10中示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线803相连。***存储器802中可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块8024的程序/实用工具8025,可以存储在例如***存储器802中,且这样的程序模块8024包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块8024通常执行本申请所描述的实施例中的功能和/或方法。
计算设备80也可以与一个或多个外部设备804(如键盘、指向设备、显示器等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,计算设备80还可以通过网络适配器806与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图10所示,网络适配器806通过总线803与计算设备80的其它模块(如处理单元801等)通信。应当明白,尽管图10中未示出,可以结合计算设备80使用其它硬件和/或软件模块。
处理单元801通过运行存储在***存储器802中的程序,从而执行各种功能应用以及数据处理,例如,从客户端接收第一待执行任务的请求信息,所述第一待执行任务包括至少一个子任务,所述请求信息包括执行每一所述子任务时的资源占用信息;获取所述多个服务节点在预设时长内的实时可用资源;基于各个服务节点在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,所述目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个所述目标服务节点对应至少一个子任务;分别向各目标服务节点发送第一消息,所述第一消息用于指示收到所述第一消息的目标服务节点在所述预设时长内执行至少一个子任务。应当注意,尽管在上文详细描述中提及了资源调度***的若干单元/模块或子单元/子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请实施例的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本申请实施例方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本申请实施例的精神和原理,但是应该理解,本申请实施例并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本申请实施例旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
以上所述仅为本申请的可选实施例,并非因此限制本申请的专利范围,凡是在本申请实施例的发明构思下,利用本申请说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本申请的专利保护范围内。
Claims (8)
1.一种资源调度方法,所述方法应用于分布式***中的控制模块,所述分布式***还包括多个服务节点,所述方法包括:
从客户端接收第一待执行任务的请求信息,所述第一待执行任务包括至少一个子任务,所述请求信息包括执行每一所述子任务时的资源占用信息;
获取所述多个服务节点在预设时长内的实时可用资源;
基于各个服务节点在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,所述目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个所述目标服务节点对应至少一个子任务;
分别向各目标服务节点发送第一消息,所述第一消息用于指示收到所述第一消息的目标服务节点在所述预设时长内执行至少一个子任务;
在确定目标节点集合之后,所述方法还包括:
若存在未确定目标服务节点的子任务、存在未被确定为目标服务节点的多个不饱和服务节点,且所述多个不饱和服务节点的可用资源之和满足执行至少一个所述未确定目标服务节点的子任务,则确定所述多个不饱和服务节点的多个候选组合策略,其中,每一个候选组合策略均能执行至少一个所述未确定目标服务节点的子任务;
按照第一预设规则从所述多个候选组合策略中确定一个目标组合策略,按照所确定的目标组合策略对所述多个不饱和服务节点进行组合;
向组合后的多个不饱和服务节点发送第二消息,所述第二消息用于指示收到所述第二消息的不饱和服务节点组协同执行至少一个所述未确定目标服务节点的子任务。
2.如权利要求1所述的资源调度方法,其中,若所述多个不饱和服务节点的可用资源之和不满足执行至少一个所述未确定目标服务节点的子任务,所述方法还包括:
从待执行任务序列中获取第二待执行任务,所述第二待执行任务的至少一个子任务的资源消耗与所述多个不饱和服务节点的可用资源之和匹配,向所述多个不饱和服务节点发送第四消息,所述第四消息用于指示收到所述第四消息的多个不饱和服务节点协同执行所述第二待执行任务的至少一个子任务;或者
所述第二待执行任务的至少一个子任务的资源消耗与所述多个不饱和服务节点中的至少一个不饱和服务节点的可用资源匹配,向所述至少一个不饱和服务节点发送第五消息,所述第五消息用于指示收到所述第五消息的至少一个不饱和服务节点执行所述第二待执行任务的至少一个子任务。
3.如权利要求1所述的资源调度方法,其中,所述多个服务节点属于多个服务节点组,在获取第一待执行任务的请求信息后,所述方法还包括:
获取所有服务节点组在预设时长内的实时可用资源;
基于各个服务节点组在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定可执行所述第一待执行任务的各个目标服务节点组;
按照预设第二规则从可执行所述第一待执行任务的各个目标服务节点组中确定一个目标服务节点组;
向所确定的目标服务节点组发送第六消息,所述第六消息用于指示收到所述第六消息的目标服务节点组执行所述第一待执行任务。
4.如权利要求3所述的资源调度方法,每一服务节点组包括多个提供同类资源的服务节点,在向所确定的目标服务节点组发送第六消息时,包括:
若所述目标服务节点组中,单个服务节点的可用资源满足执行所述第一待执行任务的至少一个子任务,则向所述单个服务节点发送第七消息,所述第七消息用于指示收到所述第七消息的单个服务节点执行所述第一待执行任务的至少一个子任务;
若所述目标服务节点组中,单个服务节点的可用资源不满足执行所述第一待执行任务的至少一个子任务,则向所述多个服务节点发送第八消息,所述第八消息用于指示收到所述第八消息的多个服务节点协同执行所述第一待执行任务的一个子任务。
5.如权利要求1-4任一项所述的资源调度方法,其中,所述资源至少包括以下项中的至少一项:GPU、CPU以及内存。
6.一种资源调度***,包括:
收发单元,用于从客户端收取第一待执行任务的请求信息,所述第一待执行任务包括至少一个子任务,所述请求信息包括执行每一所述子任务需消耗的资源信息,以及
用于获取多个服务节点在预设时长内的实时可用资源;
调度单元,用于基于各个服务节点在预设时长内的实时可用资源以及第一待执行任务的各个子任务需消耗的资源信息,确定目标节点集合,所述目标节点集合包括在所述预设时长内待执行子任务的多个目标服务节点,每个所述目标服务节点对应至少一个子任务;
分别向各目标服务节点发送第一消息,所述第一消息用于指示收到所述第一消息的目标服务节点在所述预设时长内执行至少一个子任务;
在确定目标节点集合之后,若存在未确定目标服务节点的子任务、存在未被确定为目标服务节点的多个不饱和服务节点,且所述多个不饱和服务节点的可用资源之和满足执行至少一个所述未确定目标服务节点的子任务,所述调度单元还用于:向所述多个不饱和服务节点发送第二消息,所述第二消息用于指示收到所述第二消息的多个不饱和服务节点协同执行至少一个所述未确定目标服务节点的子任务;
其中,当所述多个不饱和服务节点存在多个候选组合策略,每一个候选组合策略均能执行至少一个所述未确定目标服务节点的子任务时,所述调度单元还用于:按照第一预设规则从所述多个候选组合策略中确定一个目标组合策略,按照所确定的目标组合策略对所述多个不饱和服务节点进行组合,并将组合后的多个不饱和服务节点作为接收所述第二消息的节点。
7.一种介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
8.一种计算设备,其特征在于,所述计算设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111576730.2A CN113946431B (zh) | 2021-12-22 | 2021-12-22 | 一种资源调度方法、***、介质及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111576730.2A CN113946431B (zh) | 2021-12-22 | 2021-12-22 | 一种资源调度方法、***、介质及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113946431A CN113946431A (zh) | 2022-01-18 |
CN113946431B true CN113946431B (zh) | 2022-03-04 |
Family
ID=79339234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111576730.2A Active CN113946431B (zh) | 2021-12-22 | 2021-12-22 | 一种资源调度方法、***、介质及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946431B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114710485B (zh) * | 2022-02-21 | 2023-10-27 | 联想(北京)有限公司 | 处理方法和处理装置 |
CN115640968A (zh) * | 2022-10-18 | 2023-01-24 | 中电金信软件有限公司 | 作业调度方法、装置、电子设备和存储介质 |
CN116737349B (zh) * | 2023-08-16 | 2023-11-03 | ***紫金(江苏)创新研究院有限公司 | 流式数据处理方法、***及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580396A (zh) * | 2014-12-19 | 2015-04-29 | 华为技术有限公司 | 一种任务调度方法、节点及*** |
CN106776005A (zh) * | 2016-11-23 | 2017-05-31 | 华中科技大学 | 一种面向容器化应用的资源管理***及方法 |
CN108270837A (zh) * | 2017-01-04 | 2018-07-10 | 北京京东尚科信息技术有限公司 | 一种利用闲置资源的分布式任务调度方法及*** |
WO2020019519A1 (zh) * | 2018-07-27 | 2020-01-30 | 平安科技(深圳)有限公司 | 任务分配方法及装置 |
CN112130966A (zh) * | 2019-06-24 | 2020-12-25 | 北京京东尚科信息技术有限公司 | 任务调度方法和*** |
CN113342509A (zh) * | 2021-08-03 | 2021-09-03 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113742068A (zh) * | 2021-08-27 | 2021-12-03 | 深圳市商汤科技有限公司 | 任务调度方法、装置、设备、存储介质及计算机程序产品 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9292837B2 (en) * | 2013-08-05 | 2016-03-22 | Aruba Networks, Inc. | Task processing and resource sharing in a distributed wireless system |
CN105900064B (zh) * | 2014-11-19 | 2019-05-03 | 华为技术有限公司 | 调度数据流任务的方法和装置 |
-
2021
- 2021-12-22 CN CN202111576730.2A patent/CN113946431B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580396A (zh) * | 2014-12-19 | 2015-04-29 | 华为技术有限公司 | 一种任务调度方法、节点及*** |
CN106776005A (zh) * | 2016-11-23 | 2017-05-31 | 华中科技大学 | 一种面向容器化应用的资源管理***及方法 |
CN108270837A (zh) * | 2017-01-04 | 2018-07-10 | 北京京东尚科信息技术有限公司 | 一种利用闲置资源的分布式任务调度方法及*** |
WO2020019519A1 (zh) * | 2018-07-27 | 2020-01-30 | 平安科技(深圳)有限公司 | 任务分配方法及装置 |
CN112130966A (zh) * | 2019-06-24 | 2020-12-25 | 北京京东尚科信息技术有限公司 | 任务调度方法和*** |
CN113342509A (zh) * | 2021-08-03 | 2021-09-03 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113742068A (zh) * | 2021-08-27 | 2021-12-03 | 深圳市商汤科技有限公司 | 任务调度方法、装置、设备、存储介质及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN113946431A (zh) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113946431B (zh) | 一种资源调度方法、***、介质及计算设备 | |
CN107038069B (zh) | Hadoop平台下动态标签匹配DLMS调度方法 | |
CN105718479B (zh) | 跨idc大数据处理架构下执行策略生成方法、装置 | |
CN109034396B (zh) | 用于处理分布式集群中的深度学习作业的方法和装置 | |
US9092266B2 (en) | Scalable scheduling for distributed data processing | |
CN114741207B (zh) | 一种基于多维度组合并行的gpu资源调度方法和*** | |
CN110389816B (zh) | 用于资源调度的方法、装置以及计算机可读介质 | |
US20200174844A1 (en) | System and method for resource partitioning in distributed computing | |
CN112416585B (zh) | 面向深度学习的gpu资源管理与智能化调度方法 | |
CN109783225B (zh) | 一种多租户大数据平台的租户优先级管理方法及*** | |
CN110795226B (zh) | 利用计算机***处理任务的方法、电子设备和存储介质 | |
CN114787830A (zh) | 异构集群中的机器学习工作负载编排 | |
CN109240825A (zh) | 弹性任务调度方法、装置、设备及计算机可读存储介质 | |
CN114356587B (zh) | 算力任务跨区域调度方法、***及设备 | |
CN113886034A (zh) | 任务调度方法、***、电子设备及存储介质 | |
CN112667400A (zh) | 边缘自治中心管控的边云资源调度方法、装置及*** | |
CN115543615A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN115586961A (zh) | 一种ai平台计算资源任务调度方法、装置及介质 | |
CN116010051A (zh) | 一种联邦学习多任务调度方法及装置 | |
CN115952054A (zh) | 一种仿真任务资源管理方法、装置、设备及介质 | |
Hu et al. | An optimal resource allocator of elastic training for deep learning jobs on cloud | |
CN114035919A (zh) | 基于配电网分层分布特征的任务调度***及方法 | |
CN112988383A (zh) | 一种资源分配方法、装置、设备以及存储介质 | |
CN108009074B (zh) | 一种基于模型和动态分析的多核***实时性评估方法 | |
CN111796932A (zh) | 一种gpu资源调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |