资源调度方法、装置、电子设备和存储介质与流程

文档序号:33103726发布日期:2023-02-01 01:06阅读:28来源:国知局
资源调度方法、装置、电子设备和存储介质与流程

1.本技术涉及计算机技术领域,特别是涉及一种资源调度方法、装置、电子设备和存储介质。


背景技术:

2.随着人工智能(artificial intelligence,ai)的飞速发展,ai技术逐渐应用到与人们生活密切相关的领域。ai平台承担着各种类型的任务,例如,有些任务属于交互式任务,有些任务属于推理型任务,有些任务则属于训练任务,等等,不同类型的任务对资源的要求不同。
3.现有技术中,在对任务进行资源调度的过程中,对任务分配了资源之后,直到任务完成才释放对应的资源,灵活性较差,资源利用率低。因此现有技术中亟需一种高效率的资源调度方法。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够提高资源调度效率实现系统资源的有效利用的资源调度方法、装置、电子设备、计算机可读存储介质和计算机程序产品。
5.第一方面,本技术提供了一种资源调度方法。所述方法包括:
6.获取待运行任务,所述待运行任务包括人工智能任务;
7.确定所述待运行任务的资源需求;
8.基于所述资源需求将运行平台的可用资源分配给所述待运行任务;
9.监测所述待运行任务的运行状态,若所述待运行任务暂停或运行结束,则释放分配的所述可用资源。
10.本技术实施例中提供的一种资源调度方法,可以获取待运行任务的资源需求,并基于所述资源需求将运行平台的可用资源分配给所述待运行任务。在监测所述待运行任务暂停或运行结束,可以释放绑定的所述可用资源。通过该资源调度方法可以在待运行任务运行结束或者暂停的情况下,释放绑定的可用资源,从而可以节省系统资源,实现了系统资源的有效利用,提高了资源调度的效率。
11.可选的,在本技术的一个实施例中,所述基于所述资源需求将所述待运行任务与运行平台上的可用资源进行绑定之前包括:
12.获取所述运行平台上所有每张资源卡的参数信息,所述参数信息包括当前可用资源;
13.基于每张所述资源卡的参数信息确定所述运行平台的可用资源。
14.可选的,在本技术的一个实施例中,所述确定所述待运行任务的资源需求之后包括:
15.判断所述运行平台的可用资源是否满足所述资源需求;
16.若不满足,则基于所述待运行任务返回任务创建失败提示。
17.可选的,在本技术的一个实施例中,所述确定所述待运行任务的资源需求之后还包括:
18.获取所述资源需求对应的资源卡的标识信息;
19.将所述标识信息与所述运行平台的资源卡的标识信息进行匹配;
20.若匹配失败,则基于所述待运行任务返回任务创建失败提示。
21.可选的,在本技术的一个实施例中,所述基于所述资源需求将运行平台的可用资源分配给所述待运行任务之后还包括:
22.基于所述资源需求更新所述运行平台的可用资源状态。
23.可选的,在本技术的一个实施例中,所述获取待运行任务之后包括:
24.将所述待运行任务的标识信息展示给用户;
25.所述若所述待运行任务暂停或运行结束,则释放绑定的所述可用资源之前还包括:
26.响应于用户针对所述待运行任务的标识信息的暂停指令,暂停运行所述待运行任务。
27.可选的,在本技术的一个实施例中,所述响应于用户针对所述待运行任务的标识信息的暂停指令,暂停运行所述待运行任务之后还包括:
28.响应于用户针对所述待运行任务的标识信息的切换指令,切换运行平台,并分配可用资源,继续执行所述待运行任务。
29.可选的,在本技术的一个实施例中,所述获取待运行任务之后包括:
30.基于所述待运行任务对所述运行平台上的可用资源进行锁定。
31.第二方面,本技术实施例还提供一种资源调度装置,所述装置包括:
32.待运行任务获取模块,用于获取待运行任务,所述待运行任务包括人工智能任务;
33.资源需求确定模块,用于确定所述待运行任务的资源需求;
34.资源分配模块,用于基于所述资源需求将运行平台的可用资源分配给所述待运行任务;
35.资源释放模块,用于监测所述待运行任务的运行状态,若所述待运行任务暂停或运行结束,则释放分配的所述可用资源。
36.第三方面,本技术实施例还提供一种电子设备,包括处理器以及用于存储处理器可执行指令的存储器,其中,所述处理器,用于被配置为执行所述指令时实现上述方法。
37.第四方面,本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现所述的方法。
38.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
39.图1为本技术实施例提供的资源调度方法的方法流程示意图;
40.图2为本技术实施例的资源调度方法的资源卡的数据结构示意图;
41.图3为本技术实施例的资源调度方法的资源卡的集群示意图;
42.图4为本技术实施例提供的交互界面示意图;
43.图5为本技术实施例的资源调度方法的分配资源的流程示意图;
44.图6为本技术实施例的资源调度方法的释放资源的流程示意图;
45.图7为本技术实施例的资源调度方法的各服务进程之间的交互流程示意图;
46.图8为本技术实施例提供的资源调度装置的模块结构示意图;
47.图9是本技术实施例提供的电子设备的模块结构示意图;
48.图10是本技术实施例提供的计算机程序产品的概念性局部视图。
具体实施方式
49.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
50.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
51.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指大于或者等于两个。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
52.另外,为了更好的说明本技术,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本技术同样可以实施。在一些实例中,对于本领域技术人员熟知的装置、手段、元件和电路未作详细描述,以便于凸显本技术的主旨。
53.下面结合附图对本技术所述的资源调度方法进行详细的说明。图1是本技术提供的资源调度方法的一种实施例的方法流程图。虽然本技术提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本公开实施例提供的执行顺序。
54.在一个实施例中,本技术的资源调度方法应用在人工智能任务的运行平台上,所
述运行平台可以是服务器、终端,也可以是现场可编程门阵列模块(field programmable gate array,fpga)、arm处理模块等等。其中,所述服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。所述终端可以包括但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等。所述运行平台可以承载有中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、资源调度程序、计算程序等等。可以理解的是,所述gpu的数量可以为一个也可以为多个,具体的数量可以根据实际的应用需求配置。在其他实施例中,本技术的资源调度方法还可以应用在其他平台上,此处不作具体限定。
55.具体的本技术提供的资源调度方法的一种实施例如图1所示,可以包括:
56.s101:获取待运行任务,所述待运行任务包括人工智能任务。
57.本技术实施例中,所述待运行任务可以包括普通任务、人工智能(artificial intelligence,ai)任务。所述普通任务例如可以包括文字输入任务、收发邮件任务、影音娱乐任务、网络服务任务、网络数据监测任务等等,具体的待运行任务的类型可以根据用户的任务需求确定。在不同的应用场景下,所述ai任务的任务类型不同。例如,在自动驾驶的应用场景下,所述ai任务可以包括语音识别任务、路况图像识别任务等等。其中,所述语音识别任务又可以包括语音搜索、语音输入、语音合成等。在视频会议的应用场景下,所述ai任务可以包括人脸识别任务、文字识别任务等等。其中,所述文字识别任务可以包括智能翻译、文字转换等等。当然,在本技术的一个实施例中,按照任务类型的不同,所述ai任务可以包括模型训练任务、模型推理任务或交互式任务。在本技术的一个实施例中,运行平台可以从任务队列获取所述待运行任务。
58.在实际的应用中,若同一时刻有多个待运行任务同时查询或者修改所述运行平台的资源信息,可能会造成数据的不一致性。基于此,在本技术的一个实施例中,可以在获取所述待运行任务之后以及开始创建所述待运行任务之前,为所述运行平台的资源信息进行锁定,防止其他任务访问或者修改所述运行平台的资源信息。具体来说,所述获取待运行任务之后,可以包括:
59.基于所述待运行任务对所述运行平台上的可用资源进行锁定。
60.本技术实施例中,可以利用加锁命令对所述运行平台上的可用资源进行锁定。所述加锁命令可以包括incr命令、setnx命令、set命令等等。通过在获取所述待运行任务之后以及开始创建所述待运行任务之前,对所述可用资源进行加锁,可以防止因为竞争而造成的数据不一致性。
61.示例性地,也可以将运行平台对应的整个redis缓存进行锁定,禁止其它任务进行占用资源或释放资源的操作,对缓存的数据进行修改。
62.s103:确定所述待运行任务的资源需求。
63.本技术实施例中,待运行任务在运行过程中需要为其分配一定的运行资源以及存储资源。为了保证待运行任务的正常运行,需要提前确定所述待运行任务的资源需求,以便后续为所述待运行任务分配合理的资源。具体的,在本技术的一个实施例中,可以通过获取待运行任务的任务头参数直接获取所述待运行任务的资源需求信息。在本技术的另一个实施例中,每一类型的任务所需要的资源需求大致相同,因此可以通过所述待运行任务的任务类型,确定所述任务类型的常规资源需求以此确定所述待运行任务的资源需求信息。例
如,可以在预设的任务类型资源需求库中查找提取出与所述任务类型所对应的资源需求信息。在本技术的一个实施例中,所述资源需求可以包括cpu资源占用信息、gpu资源占用信息、内存占用信息、任务执行时间等等。其中,所述gpu资源占用信息可以包括需要占用的gpu的标识信息以及需要占用的容量信息。所述标识信息可以包括所述gpu的通用唯一识别码(universally unique identifier,uuid)。
64.在实际的应用中,若所述运行平台需要运行的任务较多,则可能存在运行平台的计算资源或者存储资源不足,不能满足待运行任务的运行。基于此,在本技术的一个实施例中,可以在为待运行任务分配资源之前,统计运行平台的资源信息,以优化任务调度以及合理分配资源。具体来说,所述基于所述资源需求将所述待运行任务与运行平台上的可用资源进行绑定之前,可以包括:
65.s201:获取所述运行平台上所有每张资源卡的参数信息,所述参数信息包括当前可用资源;
66.s203:基于每张所述资源卡的参数信息确定所述运行平台的可用资源。
67.本技术实施例中,由于运行平台上可以存在多个资源卡,因此需要统计每个资源卡的参数信息。所述资源卡可以是cpu资源卡,也可以是gpu资源卡。进一步的,在本技术的一个实施例中,在所述待运行任务为ai任务的情况下,所述资源卡可以为gpu资源卡。下面以所述资源卡为gpu资源卡为例说明所述参数信息的具体内容。所述参数信息可以包括所述gpu资源卡的名称、标识信息、当前可用资源、使用资源、总资源、状态信息。例如,在一个示例中,可以确定目标gpu资源卡的名称为gpu-1、标识信息为abc、总资源8核、当前被占用gpu资源5核即使用资源为5核、当前可用资源为3核。其中,所述状态信息可以包括空闲状态、使用状态。在所述状态信息为使用状态的情况下,需要进一步确定占用所述gpu资源卡任务的任务信息。例如,可以从所述任务列表中确定占用所述gpu资源卡任务的任务信息。所述任务信息可以包括标识信息、任务类型等等。例如,在所述gpu资源卡为使用状态的情况下,可以确定目前正在占用所述gpu资源卡任务的标识信息为123、任务类型为模型推理任务。在获取所述参数信息后,可以为所述参数信息进行赋值。例如,在所述状态信息为空闲状态的情况下,可以为所述状态信息赋值为free以及为所述任务信息赋值为空列表。在本技术的一个实施例中,为了优化资源调度和资源发放,可以提高监控的资源信息的粒度,具体的,在确定每个所述资源卡的参数信息后,可以根据所述参数信息中所包含的当前可用资源确定所述运行平台的可用资源。例如,在一个示例中,运行平台a包含三个gpu资源卡分别为:gpu-1、gpu-2、gpu-3。在确定gpu-1的当前可用资源为a、gpu-2的当前可用资源为b、gpu-3的当前可用资源为c的情况下,可以确定运行平台a的可用资源为a+b+c。可以理解的是,在本技术的一个实施例中,可以在确定所述运行平台上所有每张资源卡的参数信息后,将所述参数信息存储于所述运行平台的内存或者缓存如redis缓存中。具体的,可以以图表的形式存储所述参数信息。例如,在一个示例中,如下表1所示,可以将所述参数信息以表1的形式存储于所述redis缓存中。
[0068][0069]
需要说明的是,以上仅为运行平台中gpu资源卡的使用统计信息,在本技术的其他实施例中,还可以统计所述运行平台中的cpu使用率、内存使用率、可用cpu数量、可用内存容量、磁盘剩余容量等等,具体统计信息如下表2所示。
[0070]
cpu使用率可用cpu数量内存使用率可用内存容量磁盘剩余容量80%140%4g200g
[0071]
进一步的,在本技术的一个实施例中,为了实时获取运行平台的可用资源信息,可以创建第一进程用于实时监控所述运行平台的可用资源信息。所述第一进程可以是具有独立功能的程序在数据集合上运行的过程,即所述进程可以是所述操作系统进行资源分配和调度的一个独立单元。具体的,在本技术的一个实施例中,所述运行平台可以利用进程创建函数创建进程。所述进程创建函数可以为fork函数、vfork函数等等。所述第一进程可以定时或者实时获取所述运行平台中资源卡的使用资源信息,即所述待运行任务所占用的资源卡的资源量,以实时且精准地确定所述运行平台当前可使用的资源信息。更进一步的,在本技术的一个实施例,可以针对不同的资源卡创建多个对应的第一进程,每个所述第一进程可以获取对应资源卡的使用资源信息,汇总后即可确定所述运行平台的可用资源。可以理解的是,在获取每个资源卡的使用资源信息后,可以更新每个资源卡的使用资源。
[0072]
请参阅图2,图2为本技术一实施例的资源调度方法的资源卡的数据结构示意图。在本实施例中,首先对gpu资源进行汇总,对服务器设备上的所有gpu信息进行采集。针对每一张gpu显卡,采集信息主要分为两类,一类由name、uuid、usedmem、totalmem组成,通过shell命令,直接获取到其对应值;另一类由used、status、trainidlist、inferenceidlist、***idlist等组成,需要进行初始化赋值,赋值为其对应类型的零值,其中trainidlist、inferenceidlist、***idlist为不同ai任务类型得到的任务列表,用于存放任务id。gpu卡名称代表gpu显卡的种类和类型,uuid代表gpu卡的唯一标识,usedmem代表该gpu显卡已使用的显存容量,totalmem代表该gpu显卡总共的显存容量,used代表该gpu显卡已使用的份额,用小数表示,status代表该gpu显卡的使用状态,联合used来判断是空闲状态还是使用状态,trainidlist是训练任务id列表,对应于目前正在占用该gpu资源的所有训练任务id,inferenceidlist是推理任务id列表,对应于目前正在占用该gpu资源的所有推理任务id,***idlist是某类型ai任务id列表,对应于目前正在占用该gpu资源的所有该类型的ai任务id。ai任务是需要占用gpu资源的,根据任务类型的不同,需要建立不同类型的id列表,同时与具体的gpu显卡进行绑定。
[0073]
其中,前四项信息gpu卡名称、uuid、usedmem、totalmem是通过采集获得,无须进行初始化赋值。而used、status、trainidlist、inferenceidlist、***idlist等需要在服务启动时进行初始化赋予对应数据的零值。used赋值为0,status赋值为free,trainidlist和inferenceidlist等赋值为空列表。
[0074]
进一步的,对所有的gpu显卡,重复上步骤进行信息采集。采集完成后,将所有信息进行汇总,保存至redis缓存中。
[0075]
在一个实施例中,当待运行任务暂停或运行结束时,需要对gpu资源进行释放,其中gpu资源的释放是通过更新全局gpu资源信息实现的。示例性地,先通过任务id,查询数据库中关于该任务的gpu资源占用信息,即具体gpu显卡的uuid和所使用份额used,之后获取redis缓存中gpu全局资源信息。具体的,先判断该任务的id是否存在于gpu全局资源信息中对应的任务类型列表中,若不存在,说明该任务不在当前gpu全局资源信息中,无需进行资源的释放;若存在,进行uuid的匹配,通过used减去对应任务的使用份额use,计算释放后gpu全局资源信息used的数值。若uesd数值为0,置status状态为free,同时全局gpu资源信息中对应任务类型列表中移除该任务id,完成gpu资源的释放。该任务所占用的gpu资源释放之后,再将修改的全局gpu资源信息保存至redis缓存中。
[0076]
进一步的,在ai任务的运行过程中,若接收到暂停任务的请求,会进行具体的任务暂停操作,当任务暂停后,会发布该任务已暂停的状态。示例性地,收到暂停指令后,开始对gpu资源进行释放。首先由任务id查询数据库,得到先前在创建该ai任务时的gpu资源信息,主要包括该任务占用的gpu显卡的uuid,use。再通过redis缓存获取全局gpu资源信息。根据该任务占用的gpu显卡的uuid匹配到全局gpu资源信息中的对应gpu显卡的uuid。将全局gpu资源信息中对应gpu显卡的已使用份额与该任务对应的资源份额相减,再从任务列表中移除该任务id。至此,在接收到暂停请求后,完成对gpu资源的释放。
[0077]
在实际的应用中,有可能存在待运行任务所需占用的资源超过了运行平台自身可用资源容量限制的情况,在该种情况下,运行平台并不能直接运行该运行任务,需要反馈异常信息。基于此,在本技术的一个实施例中,所述确定所述待运行任务的资源需求之后,可以包括:
[0078]
s301:判断所述运行平台的可用资源是否满足所述资源需求;
[0079]
s303:若不满足,则基于所述待运行任务返回任务创建失败提示。
[0080]
本技术实施例中,在利用上述实施例所述的可用资源确定方法确定所述运行平台的可用资源后,需要判断所述可用资源是否满足所述待运行任务的资源需求。例如,可以判断所述资源需求中所包含的cpu资源占用信息、gpu资源占用信息、内存占用信息等等是否小于所述可用资源。可以理解的是,在所述资源需求中的任一项资源需求大于所述可用资源的情况下,所述判断结果都为不满足。例如,在一个示例中,若所述待运行任务所需占用的内存容量为500m,所述运行平台的可用内存容量为400m的情况下,可以确定所述可用资源不满足所述资源需求。在本技术的一个实施例中,在确定所述可用资源不满足所述资源需求的情况下,可以返回任务创建失败提示。具体的,可以采用弹出框置于交互界面予以提示,也可以同时给予声音提示,本技术实施例对返回任务创建失败提示的方式不做具体限定。
[0081]
当然,在实际的应用中,也有可能存在待运行任务所需占用的gpu资源卡的容量不
足或者资源卡损坏的情况,在该种情况下,运行平台并不能直接运行该运行任务,需要反馈异常信息。基于此,在本技术的一个实施例中,所述确定所述待运行任务的资源需求之后,还可以包括:
[0082]
s401:获取所述资源需求对应的资源卡的标识信息;
[0083]
s403:将所述标识信息与所述运行平台的资源卡的标识信息进行匹配;
[0084]
s405:若匹配失败,则基于所述待运行任务返回任务创建失败提示。
[0085]
本技术实施例中,可以根据所述待运行任务的任务信息确定所述待运行任务需要占用的gpu的标识信息,例如可以确定所述标识信息为“gpu-2”。在确定所述标识信息后,可以将所述标识信息与所述运行平台的资源卡的标识信息进行匹配。为了提高确定匹配结果的效率以及准确性,可以将所述标识信息与所述运行平台的资源卡的标识信息的形式进行统一,例如可以确定所述资源需求对应的资源卡的uuid以及所述运行平台的资源卡的uuid。在本技术的一个实施例中,在匹配结果为失败的情况下,可以说明所述待运行任务需要占用的gpu资源卡损坏或者正在被占用等。在此种情况下,可以返回任务创建失败提示。
[0086]
可以理解的是,运行平台的数量并不止一个,多个运行平台可以构成集群。集群中的各个运行平台作为节点可以分别处理不同的任务。在本技术的一个实施例中,如图3所示,集群300可以包括管理节点301以及多个节点(运行平台)302,各个节点302中可以包括至少一个gpu资源卡。各个节点302可以统计自身的可用资源信息并上传至所述管理节点301中,所述管理节点301可以汇总各个节点302的可用资源信息得到全局gpu资源信息并存储至内存或者缓存中。基于上述应用环境,由于各个节点302在上传可用资源信息时存在网络延迟等情况,所述集群在进行资源调配的过程中,需要对所述待运行任务对应的资源卡的标识信息进行验证,以确保后续的资源分配工作顺利进行。具体的,在验证的过程中,需要首先根据所述待运行任务对应的资源卡的标识信息确定所述资源卡位于哪个目标节点中。在确定所述目标节点后,对所述目标节点的可用资源进行验证,判断所述待运行任务对应的资源卡是否位于所述目标节点中所包含的gpu资源卡中,以确定与所述待运行任务相匹配的目标gpu资源卡。更进一步的,在验证所述待运行任务对应的资源卡的标识信息后,还需要验证所述目标gpu资源卡的当前可用资源是否满足所述待运行任务的资源需求。例如,在一个示例中,可以将所述目标gpu资源卡的当前可用资源与所述待运行任务的资源需求进行相加求和,在所述和值大于1的情况下,则表明所述目标gpu资源卡的当前可用资源不足,返回任务创建失败的提示。当然,在所述和值大于1的情况下,则表明没有超出所述目标gpu资源卡的当前可用资源。基于此,所述管理节点301可以修改获取到的全局gpu资源信息,将所述目标gpu资源卡的当前可用资源修改为所述和值,并将所述目标gpu状态信息由空闲状态更改为使用状态,同时根据任务类型,将该待运行任务的标识信息,增加到全局gpu资源信息对应任务类型的列表中。
[0087]
s105:基于所述资源需求将运行平台的可用资源分配给所述待运行任务。
[0088]
本技术实施例中,待运行任务的运行或者执行需要运行平台为其分配运行资源或计算资源。为了合理分配资源,优化任务调度的效率,所述运行平台可以从所述可用资源中为所述待运行任务分配与所述资源需求相匹配的资源。也就是说,分配的这一部分资源被所述待运行任务所占用。例如,可以根据所述资源需求中包含的cpu资源占用信息、gpu资源占用信息、内存占用信息等为所述待运行任务分配运行平台的可用资源。在分配的过程中,
可以首先验证所述运行平台中的资源卡的标识信息是否与所述资源需求中所包含的资源卡的标识信息相匹配。在匹配成功的情况下,可以验证所述运行平台的可用资源是否满足所述资源需求。在满足的情况下,可以将运行平台的可用资源分配给所述待运行任务。在本技术的一个实施例中,在分配资源后即表明该待运行任务创建完成,所述运行平台在此之前可以为所述待运行任务创建主进程用于执行该待运行任务。具体的,所述主进程可以利用上述进程创建函数创建。
[0089]
在本技术的一个实施例中,由于在绑定后所述运行平台的可用资源会发生变化,这时候需要对所述可用资源进行更新以进行后续的资源验证。具体来说,所述基于所述资源需求将运行平台的可用资源分配给所述待运行任务之后,还可以包括:
[0090]
基于所述资源需求更新所述运行平台的可用资源状态。
[0091]
本技术实施例中,可以将所述资源请求中所包含的cpu资源占用信息、gpu资源占用信息、内存占用信息与所述运行平台的可用资源进行叠加,以确定更新后的可用资源。例如,在一个示例中,可以将所述运行平台的gpu资源b减去所述待运行任务所占用的gpu资源a,将差值a-b作为更新后的运行平台的可用资源,写入所述运行平台的缓存或者内存中。更进一步的,还可以将对应的gpu资源卡的状态信息设置为使用状态,并将所述待运行任务加入对应的任务列表中。
[0092]
s107:监测所述待运行任务的运行状态,若所述待运行任务暂停或运行结束,则释放分配的所述可用资源。
[0093]
本技术实施例中,待运行任务在运行过程中,其运行状态会发生变化例如由非结束状态转变为结束状态。即ai任务存在生命周期,具体可以划分为初始化、预处理、准备、下载、运行、上传、已完成、已失败、已停止、已删除等状态。其中所述非结束状态可以包括初始化、预处理、准备、下载、运行、上传。所述结束转态包括已完成、已失败、已停止、已删除。为了能够节省系统的资源,提高了整个运行平台的运行效率,在本技术的一个实施例中,可以创建第二进程用于监控所述待运行任务的运行状态或者生命周期。在本技术的一个实施例中,在所述第二进程监测到所述待运行任务的运行状态为结束状态即运行结束或者任务暂停的情况下,可以释放绑定的所述可用资源。具体的,在本技术的一个实施例中,在释放所述可用资源的过程中,可以首先从任务列表中确定对应的待运行任务,并进一步确定所述待运行任务所需的资源卡的标识信息以及使用资源。之后,可以从所述运行平台中获取所述可用资源,并所述待运行任务所需的资源卡的标识信息以及使用资源进行校验。具体的校验过程为将所述所需的资源卡的标识信息与所述运行平台的资源卡的标识信息进行匹配,在匹配成功的情况下,再判断所述待运行任务是否存在于对应任务类型的列表中。在判断结果为是的情况下,可以释放绑定的所述可用资源。为了进一步节省系统的资源,在本技术的一个实施例中,可以对所述运行平台中所述第二进程的执行情况进行监控,在所述第二进程的任务完成之后,释放所述第二进程在执行任务中所占用的系统资源。所述系统资源可以包括存储资源、计算资源等。
[0094]
需要说明的是,所述ai任务与所述普通任务有一定的区别,例如所述ai特有的异步性。具体的,任务在创建的过程中,由于耗时较长,因此需要异步创建ai任务。另外,异步ai任务在运行过程中,需要随时能够暂停、继续、漂移。为了保证不影响其他待运行任务的运行,在暂停所述ai任务时,需要有效释放绑定的可用资源。并且,在所述a任务继续运行的
情况下,需要快速恢复之前的任务进度,有效占用所述可用资源。在此基础上,在本技术的一个实施例中,可以建立所述ai任务与所述可用资源的关联关系。所述关联关系可以包括所述ai任务的标识信息与所述资源卡的关联关系。在所述ai任务暂停的情况下,可以根据所述关联关系确定所述ai任务的标识信息对应的资源卡信息如资源卡的标识信息以及使用资源。之后,可以从所述资源卡的当前可用资源中去除所述ai任务所使用的资源,并从任务列表中去除所述ai任务,以此完成对所述可用资源的释放。当然,处于暂停状态的所述ai任务可以执行继续、漂移操作,所述运行平台按照上述实施例所述的资源调度方法为所述ai任务分配资源,并恢复该ai任务在之前的运行状态和进度。
[0095]
本技术实施例中提供的一种资源调度方法,可以获取待运行任务的资源需求,并基于所述资源需求将运行平台的可用资源分配给所述待运行任务。在监测所述待运行任务暂停或运行结束,可以释放绑定的所述可用资源。通过该资源调度方法可以使得各个待运行任务都可以备分配到合理且充足的系统资源,不会被其他待运行任务抢占资源,从而确保了待运行任务的运行效率。另外,由于在待运行任务运行结束或者暂停的情况下,可以释放绑定的可用资源,从而可以节省系统资源,实现了系统资源的有效利用,提高了资源调度的效率。
[0096]
在本技术的一个实施例中,可以将待运行任务的相关系统展示给用户,以使用户可以实时获知待运行任务的运行状态以及相关信息,以及时处理应付突发情况。例如,在发现任务运行异常或者因为实际需求需要暂停或者结束该待运行任务的情况下,可以及时处理。具体的,所述获取待运行任务之后可以包括:
[0097]
将所述待运行任务的标识信息展示给用户。
[0098]
所述若所述待运行任务暂停或运行结束,则释放绑定的所述可用资源之前还可以包括:
[0099]
响应于用户针对所述待运行任务的标识信息的暂停指令,暂停运行所述待运行任务。
[0100]
本技术实施例中,可以将所述待运行任务的标识信息以及所述运行平台的资源卡信息展示给用户。具体的,可以在与所述运行平台相连接的终端的交互界面上展示给用户。其中,所述终端可以包括移动智能电话、计算机(包括笔记本电脑,台式电脑)、平板电子设备、个人数字助理(pda)等,本技术在此不做限制。所述交互界面可以包括命令界面、菜单界面、图形用户界面等等。在本技术的一个实施例中,如图4所示,所述交互界面400可以包括多个显示组件401。所述多个显示组件401可以用于显示所述待运行任务的标识信息以及所述资源卡信息。在本技术的一个实施例中,所述交互界面400还可以包括暂停控件402。用户可以根据实际的应用需求选择是否触发所述暂停控件402。所述暂停控件402可以通过触发事件触发运行并完成响应的功能。所述触发事件可以包括鼠标点击、用户手指点击等等。所述暂停控件402可以是按钮控件的形式,所述按钮控件可以包括文本方框按钮、纯图标按钮等等。然后,所述运行平台可以响应于所述触发操作,暂停运行所述待运行任务。在本技术的一个实施例中,所述显示组件401还可以用于显示所述待运行任务的运行状态。所述运行状态可以包括运行中、暂停、结束等等。在暂停运行所述待运行任务后,可以将所述运行状态为暂停状态的信息显示于所述显示组件401中。
[0101]
在一个实施例中,所述响应于用户针对所述待运行任务的标识信息的暂停指令,
暂停运行所述待运行任务之后还包括:
[0102]
响应于用户针对所述待运行任务的标识信息的切换指令,切换运行平台,并分配可用资源,继续执行所述待运行任务。
[0103]
可以理解的,用户暂停该任务后,若在一段时间后想继续运行,可以在原平台以暂停前的进度继续运行。若原平台可用资源不足或用户想切换平台继续运行,可以在用户发出切换指令后,由用户指定或随机分配的另一运行平台给该任务分配资源,并以暂停前的进度继续运行。
[0104]
请参阅图5,图5为本技术一实施例的资源调度方法的分配资源的流程示意图。在本实施例中,在服务主进程启动之后,可以开始创建ai任务,需要明确该ai任务所需的最大gpu资源,具体为明确所需gpu显卡资源的uuid和使用份额use。将ai任务参数信息保存至数据库中,便于后续的查询,同时得到任务id。另一方面,从redis缓存中获取全局gpu资源信息,获取之前需先进行加锁,只允许一个任务进行缓存数据修改,防止多个ai任务同时查询修改,造成数据的不一致性。ai任务为了有效占用gpu资源,需先进行校验,即所需gpu显卡资源的uuid和使用份额use要在全局gpu资源的可用范围内。通过校验之后,将全局gpu资源信息中的status置为used,将used+use的结果赋值给used,***idlist列表中增加任务id,修改完成之后,将其保存至redis缓存中,同时释放锁,允许下一个ai任务进行资源占用或释放操作。此时当前ai任务已有效占用gpu资源,任务也已创建成功,需进一步将任务信息下发至业务管理模块,以运行该ai任务。
[0105]
请参阅图6,图6为本技术一实施例的资源调度方法的释放资源的流程示意图。在本实施例中,业务管理模块负责开展任务的整个生命周期,同时监控并实时上报任务状态至redis通道中。任务状态可划分为两类,非结束状态和结束状态,非结束状态包括初始化、预处理、准备、下载、运行、上传,结束状态包括暂停、已完成、已失败、已停止、已删除。任务状态上报时,会携带ai任务的id、状态、详情等内容。第二进程负责监听获取任务的状态等信息,监听到非结束状态信息后,会直接根据任务id保存至数据库;监听到结束状态信息后,会先进行gpu资源的有效释放,再将信息保存至数据库。其中,gpu资源的有效释放,需要根据任务id从数据库中获取到该ai任务明确所需gpu显卡资源的uuid和使用份额use,也需加锁后从redis缓存中获取全局gpu资源信息。将任务所需gpu显卡资源的uuid和使用份额use在全局gpu资源信息中进行校验,即先匹配uuid,再判断该任务id是否存在于对应任务类型的列表中,存在则修改status、used、***idlist列表中的值。再将修改的全局gpu资源信息保存至redis缓存中,之后释放锁,允许下一个ai任务进行资源占用或释放操作,同时将该消息内容根据任务id保存至数据库。此时当前ai任务已有效释放已占用的gpu资源,任务也已结束或暂停。
[0106]
请参阅图7,图7为本技术一实施例的资源调度方法的各服务进程之间的交互流程示意图。可以理解的,本实施例中包括主进程、第一进程以及第二进程,为了进行gpu资源的有效占用和释放,首先在主进程启动之前,先对设备的gpu显卡资源进行采集汇总,将其保存至redis缓存中,称其为全局gpu资源信息。同时,主进程也负责任务的创建。其中,第一进程主要功能是定时获取所有的gpu显卡资源在某一时刻的显存容量,再从redis缓存中获取全局gpu资源信息,通过uuid匹配对应显卡,将实时获取的usedmem更新进全局gpu资源信息中。业务管理模块是接收主进程下发的ai任务信息,负责整个ai任务的生命周期,监控并上
报任务的状态等信息,并将信息发送至redis通道中。第二进程负责监听业务管理模块对应的redis通道,解析内容,判断任务的状态,将内容保存至数据库,在结束状态时,根据任务id进行gpu资源的有效释放。主进程、第一进程和第二进程都会对全局gpu资源信息进行修改,因此,在操作缓存前后需要加锁,保证数据的安全性。
[0107]
上文详细描述了本技术所提供的资源调度方法,下面将结合附图8,描述根据本技术所提供的资源调度装置800,包括:
[0108]
待运行任务获取模块801,用于获取待运行任务,所述待运行任务包括人工智能任务;
[0109]
资源需求确定模块802,用于确定所述待运行任务的资源需求;
[0110]
资源分配模块803,用于基于所述资源需求将运行平台的可用资源分配给所述待运行任务;
[0111]
资源释放模块804,用于监测所述待运行任务的运行状态,若所述待运行任务暂停或运行结束,则释放分配的所述可用资源。
[0112]
可选的,在本技术的一个实施例中,所述基于所述资源需求将所述待运行任务与运行平台上的可用资源进行绑定之前包括:
[0113]
获取所述运行平台上所有每张资源卡的参数信息,所述参数信息包括当前可用资源;
[0114]
基于每张所述资源卡的参数信息确定所述运行平台的可用资源。
[0115]
可选的,在本技术的一个实施例中,所述确定所述待运行任务的资源需求之后包括:
[0116]
判断所述运行平台的可用资源是否满足所述资源需求;
[0117]
若不满足,则基于所述待运行任务返回任务创建失败提示。
[0118]
可选的,在本技术的一个实施例中,所述确定所述待运行任务的资源需求之后还包括:
[0119]
获取所述资源需求对应的资源卡的标识信息;
[0120]
将所述标识信息与所述运行平台的资源卡的标识信息进行匹配;
[0121]
若匹配失败,则基于所述待运行任务返回任务创建失败提示。
[0122]
可选的,在本技术的一个实施例中,所述基于所述资源需求将运行平台的可用资源分配给所述待运行任务之后还包括:
[0123]
基于所述资源需求更新所述运行平台的可用资源状态。
[0124]
可选的,在本技术的一个实施例中,所述获取待运行任务之后包括:
[0125]
将所述待运行任务的标识信息展示给用户;
[0126]
所述若所述待运行任务暂停或运行结束,则释放绑定的所述可用资源之前还包括:
[0127]
响应于用户针对所述待运行任务的标识信息的暂停指令,暂停运行所述待运行任务。
[0128]
可选的,在本技术的一个实施例中,所述响应于用户针对所述待运行任务的标识信息的暂停指令,暂停运行所述待运行任务之后还包括:
[0129]
响应于用户针对所述待运行任务的标识信息的切换指令,切换运行平台,并分配
only memory,rom)或随机存储记忆体(random access memory,ram)等等。在一些实施方式中,信号承载介质501可以包含计算机可记录介质504,诸如但不限于,存储器、读/写(r/w)cd、r/w dvd、等等。在一些实施方式中,信号承载介质501可以包含通信介质505,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质501可以由无线形式的通信介质505(例如,遵守ieee 802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令502可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,诸如针对图10描述的电子设备的计算设备可以被配置为,响应于通过计算机可读介质503、计算机可记录介质504、和/或通信介质505中的一个或多个传达到计算设备的程序指令502,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。附图中的流程图和框图显示了根据本技术的多个实施例的装置、系统和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
[0139]
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件(例如电路或asic(application specific integrated circuit,专用集成电路))来实现,或者可以用硬件和软件的组合,如固件等来实现。
[0140]
尽管在此结合各实施例对本技术进行了描述,然而,在实施所要求保护的本技术过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
[0141]
以上已经描述了本技术的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1