1.本技术涉及智能应用技术领域,尤其涉及一种资源调度方法、电子设备及存储介质。
背景技术:2.智能应用是指以人工智能应用为主,以大数据智能化为引领的智能化技术与管理的应用。建立智能应用模型数据库,将常用的智能应用模型存储在数据库中,在不同的智能应用场景(例如,智能家居、智能交通、智能教育、智能零售等)下直接调用数据库中对应的智能应用模型,而无需重复智能应用模型的创建过程,从而能够加快智能应用的部署,对于智能应用的部署和推广具有重要意义。
3.然而,对智能应用模型的调用需占用一定的系统资源(例如,cpu核数、gpu、内存、芯片资源等),已知的智能应用模型部署在系统资源有限的设备上,由于设备系统资源有限,容易产生智能应用模型部署灵活性差、设备整体的运行效率较低、影响设备现有功能模块运行等问题。
技术实现要素:4.本技术实施例提供了一种资源调度方法、电子设备及存储介质,能够自适应地调度系统资源,利用系统的空闲资源调用智能应用模型,提高资源利用率,从而有效提升智能应用模型部署的灵活性和设备整体的运行效率,并且不影响设备现有功能模块的运行。
5.第一方面,本技术实施例提供了一种资源调度方法,包括:
6.获取智能应用处理请求;
7.获取当前的资源使用信息;
8.根据智能应用处理请求匹配智能应用实例;
9.根据资源使用信息和智能应用实例创建任务,以处理智能应用处理请求。
10.第二方面,本技术实施例提供了一种电子设备,电子设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的程序,程序被处理器执行时,实现本技术第一方面一些实施例的资源调度方法。
11.第三方面,本技术实施例提供了一种存储介质,用于计算机可读存储,存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现本技术第一方面一些实施例的资源调度方法。
12.本技术实施例包括:获取智能应用处理请求;获取当前的资源使用信息;根据智能应用处理请求匹配智能应用实例;根据所述资源使用信息和所述智能应用实例创建任务,以处理所述智能应用处理请求。本技术实施例能够自适应地调度系统资源,利用系统的空闲资源调用智能应用模型,提高资源利用率,从而有效提升智能应用模型部署的灵活性和设备整体的运行效率,并且不影响设备现有功能模块的运行。
13.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变
得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
14.图1是本技术一实施例提供的资源调度的流程图;
15.图2是图1中步骤s0130之前的一实施例的流程图;
16.图3是图2中步骤s0220的一实施例的流程图;
17.图4是图1中步骤s0130之前的另一实施例的流程图;
18.图5是图3中步骤s0330的一实施例的流程图;
19.图6是图1中步骤s0140的一实施例的流程图;
20.图7是图6中步骤s0640的一实施例的流程图;
21.图8是图1中步骤s0140之前的一实施例的流程图;
22.图9是图1中步骤s0140之前的另一实施例的流程图;
23.图10是本技术一实施例提供的资源调度系统的系统框图;
24.图11是图10中资源监控单元的功能示意图。
具体实施方式
25.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。不冲突的情况下,本技术中的实施例及实施例中的特征可以相互任意组合。
26.需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
27.在本技术实施例中,智能应用模型包括人脸/指纹识别模型、图像/文件分类模型、网络流量/数据流量/话务量控制模型等。例如,若智能应用处理请求为人脸识别的应用需求,则根据人脸识别的应用需求在模型数据库中查询相应的人脸识别模型或者直接查询该人脸识别模型对应的实例,利用系统空闲的计算资源运行人脸识别的实例,创建一个人脸识别的任务,进而通过人脸识别的任务进行人脸识别。
28.随着人工智能、深度学习在各行各业的应用场景越来越广泛,智能应用能够完成的任务类型也越来越多,通常涉及多个模型的多个服务(解决不同场景、不同算法的问题)。
29.相关技术中,智能应用模型一般部署在系统资源“无限的”(可以动态扩展)的设备上,如服务器,这种方式存在时延大、灵活性差、智能应用服务管理难、数据安全风险高等问题。例如,在服务器、基站组成的cs架构,常见的部署智能应用的方式是利用核心网现有的服务器(比如服务器)上的系统资源,在其上增加一个或者多个针对特定模型的智能应用服务,而基站等边缘设备通过网络接口发送推理(预测)等请求,服务器进行处理并返回结果。这种方式存在以下缺点:
30.1)时延大。基站到服务器存在一定的通信开销,对于某些对推理时延要求比较高、或者数据量比较大的场景,效果不能尽如人意。
31.2)灵活性差。将所有模型都部署在服务器上,灵活性不足,比如在某些基站上,可能存在需要根据实际情况灵活调整模型的部署方式和运行情况的需求(比如调整模型支持的并发请求数),这种方案中不能灵活调整,即不能做到个性化。
32.3)智能应用服务管理难。基站作为真正的数据产生“源”,负责产生训练和推理请求,但产生的请求类型并不是单一的,通常涉及多个模型的多个服务(解决不同场景、不同算法的问题),采用这种方式给基站带来了一定的设计难度和复杂性,管理上也存在一定不便。
33.4)数据安全风险高。更为重要的是,在当前数据隐私比较看重的情况下,如果基站和服务器属于不同的服务商,存在暴露用户数据的风险。
34.而在资源受限的设备中,由于设备系统资源有限,容易产生智能应用模型部署灵活性差、设备整体的运行效率较低、影响设备现有功能模块运行等问题。例如,在服务器、基站组成的cs架构,如将智能应用模型部署在基站(资源受限设备)中,存在以下问题:
35.1)部署灵活性差。基站等设备上虽然有“空闲”的资源,但这也是有上限的,如果也是单个模型单个部署,后续任务运行时就必然会受到影响,任务存在严重的“排队”现象。
36.2)基站整体的运行效率较低。服务器上的模型之间是互不影响的,各自可以独立调度,但是在基站上因为是在有限的资源条件下,模型间独立调度会存在资源抢占的问题,导致需求频繁的模型不能及时执行任务,而需求少的模型又一直占着资源不释放,系统整体的运行效率较低;
37.3)影响基站现有功能模块。基站本身提供的功能很多,其上已经驻留了很多功能模块,智能系统部署得不当,极限情况下会影响现有功能模块的运行,反而带来了隐患。
38.基于此,本技术实施例提供了一种资源调度方法、电子设备及存储介质,能够自适应地调度系统资源,利用系统的空闲资源调用智能应用模型,提高资源利用率,从而有效提升智能应用模型部署的灵活性和设备整体的运行效率,并且不影响设备现有功能模块的运行。
39.第一方面,本技术实施例提供了一种资源调度方法,参照图1,方法包括如下具体步骤:
40.s0110.获取智能应用处理请求;
41.s0120.获取当前的资源使用信息;
42.s0130.根据智能应用处理请求匹配智能应用实例;
43.s0140.根据资源使用信息和智能应用实例创建任务,以处理智能应用处理请求。
44.在一些实施例中,一个任务仅能处理一个智能应用处理请求,一个智能应用实例在某一时刻仅能处理一个任务。获取一个智能应用处理请求,为该智能应用处理请求匹配一个相应的智能应用实例,获取该智能应用实例的资源需求和当前的资源使用信息,如果当前存在空闲资源,且空闲资源量不小于该智能应用实例的资源预估量,则利用该智能应用模型创建一个任务,该任务用于处理该智能应用处理请求。其中,资源使用信息包括系统正在使用的资源信息和当前的空闲资源信息。一个智能应用实例的资源需求为运行该智能应用实例所需占用的资源量,即该智能应用实例的资源预估量。该资源预估量如果是未知的,则需要在运行该智能应用实例时,记录该智能应用实例实际占用的资源量,将该资源量作为资源预估量,资源预估量可以是运行一次该智能应用实例时记录的实际资源量,也可
以是运行多次该智能应用实例时,根据每一次记录的实际资源量计算得到的平均资源量、最低资源量或最高资源量。
45.在一些实施例中,参照图1和图2,步骤s0130之前还包括如下步骤:
46.s0210.根据智能应用处理请求获取至少一个智能应用模型;
47.s0220.根据智能应用模型、智能应用模型对应的资源需求和资源使用信息创建至少一个智能应用实例。
48.获取一个智能应用处理请求,为该智能应用处理请求匹配一个相应的智能应用实例,如果当前不存在相应的智能应用实例,则需要创建一个智能应用实例。创建一个智能应用实例,需获取一个智能应用模型,通过遍历模型数据库为该智能应用处理请求匹配一个相应的智能应用模型,获取该智能应用模型的资源需求和当前的资源使用信息,如果当前存在空闲资源,且空闲资源量不小于该智能应用模型的资源预估量,则利用该智能应用模型创建一个智能应用实例,该智能应用实例用于创建一个任务。其中,资源使用信息包括系统正在使用的资源信息和当前的空闲资源信息。一个智能应用模型的资源需求为运行该智能应用模型所需占用的资源量,即该智能应用模型的资源预估量。该资源预估量如果是未知的,则需要在运行该智能应用模型时,记录该智能应用模型实际占用的资源量,将该资源量作为资源预估量,资源预估量可以是运行一次该智能应用模型时记录的实际资源量,也可以是运行多次该智能应用模型时,根据每一次记录的实际资源量计算得到的平均资源量、最低资源量或最高资源量。在一些实施例中,根据智能应用处理请求遍历一次模型数据库,能够找到对应的至少一个智能应用模型,利用每一个智能应用模型创建对应的智能应用实例。如果有并发处理任务的需求,则需要额外创建智能应用实例。通过第二次遍历模型数据库,重新执行与智能应用处理请求相匹配的智能应用模型,再次利用每一个智能应用模型创建对应的智能应用实例。在遍历模型数据库的过程中,每一次遍历可以仅创建一个智能应用实例,也可以通过一次遍历创建多个智能应用实例。当需要处理并发任务时,可以通过一次遍历,根据一个智能应用模型创建多个智能应用实例,也可以通过多次遍历,每一次遍历中每一个智能应用模型只创建一个对应的智能应用实例。在一些实施例中,根据智能应用模型还可以获取模型的网络拓扑架构、训练得到的权重、数据信息等。每个模型至少存在一个与之对应的实例,模型总数满足下列条件:模型总数不大于实例总数,且每个模型都可以对外提供服务和功能。每个任务都有一个与之对应的实例,活动的任务数满足下列条件:活动的任务总数不大于活动的模型实例总数。
49.在一些实施例中,参照图2和图3,步骤s0220包括如下步骤:
50.s0310.根据智能应用模型对应的资源需求获取第一资源预估量;
51.s0320.根据资源使用信息获取当前的空闲资源量;
52.s0330.比较第一资源预估量和空闲资源量,如果第一资源预估量不大于空闲资源量,则执行步骤s0340;如果第一资源预估量大于空闲资源量,则执行步骤s0350;
53.s0340.根据智能应用模型创建至少一个智能应用实例;
54.s0350.缓存智能应用处理请求。
55.创建一个智能应用实例,需获取一个智能应用模型,为该智能应用处理请求匹配一个相应的智能应用模型,获取该智能应用模型的资源需求和当前的资源使用信息,如果当前存在空闲资源,且空闲资源量不小于该智能应用模型的第一资源预估量,则利用该智
能应用模型创建一个智能应用实例,该智能应用实例用于创建一个任务。如果当前不存在空闲资源,则将该智能应用处理请求缓存在队列中,等待队列的调度。队列的数目不小于模型单元存储的智能应用模型的数目,队列的调度可采用round robin轮询调度算法或按照先进先出的规则进行调度。
56.在另一些实施例中,参照图1和图4,步骤s0130之前还包括如下步骤:
57.s0410.对模型数据库中的智能应用模型进行优先级排序,获取优先级信息;
58.s0420.根据智能应用处理请求和优先级信息获取一个智能应用模型;
59.s0430.根据智能应用模型、智能应用模型对应的资源需求和资源使用信息创建至少一个智能应用实例。
60.对模型数据库中的智能应用模型进行优先级排序,优先级高的智能应用模型被优先使用。高优先级的模型在初次资源分配上占有优势,初始化优先级可以采取默认或者人为配置。优先级可以根据各个智能应用模型的使用频率进行设置,使用频率高的智能应用模型被设置为高优先级。如果多个智能应用模型的优先级相同,则在其中随机选取一个智能应用模型进行调用。获取一个智能应用处理请求,根据智能应用模型的优先级信息为该智能应用处理请求匹配一个相应的智能应用模型,获取该智能应用模型的资源需求和当前的资源使用信息,如果当前存在空闲资源,且空闲资源量不小于该智能应用模型的第一资源预估量,则利用该智能应用模型创建一个智能应用实例,该智能应用实例用于创建一个任务。
61.在一些实施例中,参照图4和图5,步骤s0430包括如下步骤:
62.s0510.根据优先级信息获取智能应用模型的调度信息;
63.s0520.根据调度信息确定待调度智能应用模型;
64.s0530.根据待调度智能应用模型的资源需求获取第二资源预估量;
65.s0540.根据资源使用信息获取当前的空闲资源量;
66.s0550.比较第二资源预估量和空闲资源量,如果第二资源预估量不大于空闲资源量,则执行步骤s0560;如果第二资源预估量大于空闲资源量,则执行步骤s0570;
67.s0560.根据待调度智能应用模型创建至少一个智能应用实例;
68.s0570.缓存智能应用处理请求。
69.创建一个智能应用实例,需获取一个智能应用模型。根据智能应用模型的优先级排序获取智能应用模型的调度顺序,按照调度顺序从前到后为该智能应用处理请求匹配一个相应的智能应用模型,即待调度智能应用模型,获取待调度智能应用模型的资源需求和当前的资源使用信息,如果当前存在空闲资源,且空闲资源量不小于该智能应用模型的第二资源预估量,则利用待调度智能应用模型创建一个智能应用实例,该智能应用实例用于创建一个任务。如果当前不存在空闲资源,则将该智能应用处理请求缓存在队列中,等待队列的调度。队列的数目不小于模型单元存储的智能应用模型的数目,队列的调度可采用round robin轮询调度算法或按照先进先出的规则进行调度。如果当前不存在空闲资源,则将该智能应用处理请求缓存在队列中,等待队列的调度。队列的数目不小于模型单元存储的智能应用模型的数目,队列的调度可采用round robin轮询调度算法或按照先进先出的规则进行调度。
70.在一些实施例中,参照图1,步骤s0140之前还包括:根据当前的待处理请求信息将
智能应用处理请求与当前的待处理请求进行合并、缓存或排序。
71.获取一个智能应用处理请求,如果当前没有空闲资源,则需将该智能应用处理请求缓存到队列中,队列中可以缓存多个待处理智能应用处理请求。待处理请求信息包括队列中缓存的待处理智能应用处理请求的数目、队列的调度顺序和每个待处理智能应用处理请求的数据信息。如果队列中存在相同或相同类型的多个待处理智能应用处理请求,则可以将多个待处理智能应用处理请求合并成为一个待处理智能应用处理请求。
72.在一些实施例中,参照图1和图6,步骤s0140包括如下具体步骤:
73.s0610.获取智能应用实例的状态信息;
74.s0620.获取当前的任务并发信息;
75.s0630.根据智能应用实例、智能应用实例的状态信息和任务并发信息创建任务。
76.任务并发信息包括任务并发数,任务并发数是指同时进行处理的任务数。智能应用实例的状态信息是指智能应用实例是处于空闲状态还是运行状态。一个智能应用实例当前的状态信息取决于当前的资源使用信息和该智能应用实例的资源需求,当前的资源使用信息受到当前的任务并发数的影响,当前的任务并发数越大,正在使用的资源就越多,相应的空闲资源就越少。获取一个智能应用处理请求,如果当前没有空闲资源,则需将该智能应用处理请求缓存到队列中,队列中可以缓存多个待处理智能应用处理请求。根据队列的调度顺序确定该智能应用处理请求的处理顺序。该智能应用处理请求对应一个智能应用实例,在队列开始调度该智能应用处理请求时,如果当前该智能应用实例处于空闲状态,则可以利用该智能应用实例创建一个任务,该任务用于对该智能应用处理请求进行处理。如果当前该智能应用实例处于运行状态,则继续在队列中缓存该智能应用处理请求。
77.在一些实施例中,参照图6和图7,步骤s0640包括如下具体步骤:
78.s0710.根据任务并发信息获取任务并发数;
79.s0720.比较任务并发数和最大任务并发数,如果任务并发数不大于最大任务并发数,则执行步骤s0730;如果任务并发数大于最大任务并发数,则执行步骤s0740。
80.s0730.根据智能应用实例和智能应用实例的状态信息创建一个任务;
81.s0740.继续缓存智能应用处理请求。
82.一个智能应用实例当前的状态信息取决于当前的资源使用信息和该智能应用实例的资源需求,当前的资源使用信息受到当前的任务并发数的影响,当前的任务并发数越大,正在使用的资源就越多,相应的空闲资源就越少。在确定智能应用实例的状态信息之前需确认当前的资源使用信息,可以获取最大任务并发数,最大任务并发数是任务并发数的上限,该上限受限于系统资源量。如果当前的任务并发数不大于最大任务并发数,则认为当前存在空闲资源;如果当前的任务并发数大于最大任务并发数,则认为当前没有可供调度的空闲资源。获取一个智能应用处理请求,如果当前没有空闲资源,则需将该智能应用处理请求缓存到队列中,队列中可以缓存多个待处理智能应用处理请求。根据队列的调度顺序确定该智能应用处理请求的处理顺序。该智能应用处理请求对应一个智能应用实例,如果当前的任务并发数不大于最大任务并发数,则表示当前存在空闲资源,在队列开始调度该智能应用处理请求时,如果当前该智能应用实例处于空闲状态,则可以利用该智能应用实例创建一个任务,该任务用于对该智能应用处理请求进行处理。如果当前该智能应用实例处于运行状态,则继续在队列中缓存该智能应用处理请求。通过比较当前的任务并发数和
最大任务并发数,能够得知当前的资源使用信息,进而根据当前的资源使用信息和智能应用实例的资源需求获取该智能应用实例的状态信息。
83.在一些实施例中,参照图7,步骤s0720之前还包括:获取当前的等待任务数,若当前的等待任务数大于预设的等待任务数阈值,则根据当前的最大任务并发数、系统上限任务数和预设的调整因子调整最大任务并发数。
84.等待任务数是指队列中缓存任务的数量,如果某一时刻,队列中缓存任务的数量超过缓存数量的上限,即当前的等待任务数大于预设的等待任务数阈值,则需要调整当前的最大任务并发数。使用式(1)调整最大任务并发数:
85.t
t+1
=min(t
t
(1+a),t
top
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
86.其中,t
t
表示t时刻最大任务并发数,t
t+1
表示t+1时刻最大任务并发数,t
top
表示系统上限任务数,系统上限任务数受限于系统资源量。a表示调整因子,a为自然数。利用调整因子调整当前的最大任务并发数,比较调整后的最大任务并发数和系统上限任务数,如果调整后的最大任务并发数大于系统上限任务数,则将系统上限任务数确定为下一时刻的最大任务并发数;如果调整后的最大任务并发数小于系统上限任务数,则将调整后的最大任务并发数确定为下一时刻的最大任务并发数;如果调整后的最大任务并发数和系统上限任务数相等,则可以将调整后的最大任务并发数或系统上限任务数确定为下一时刻的最大任务并发数。
87.在一些实施例中,参照图1和图8,步骤s0140之前还包括如下具体步骤:
88.s0810.根据智能应用实例获取对应的智能应用模型;
89.s0820.获取缓存队列中智能应用模型对应的待处理请求数;
90.s0830.根据待处理请求数调整智能应用模型的实例并发数。
91.一个智能应用模型可以创建至少一个智能应用实例,一个智能应用实例可以创建至少一个任务,一个任务用于处理一个智能应用处理请求,因此一个智能应用实例存在对应的一个智能应用模型,一个智能应用处理请求存在对应的一个智能应用实例,也就是说,一个智能应用模型可以被用于处理至少一个智能应用处理请求。可以从待处理请求信息中提取一个智能应用模型对应的全部待处理请求,从而得知该智能应用模型对应的待处理请求数。实例并发数是同时运行的实例数,实例并发数的设置受限于系统资源量。当前的资源使用信息受到实例并发数的影响,当前的实例并发数越大,运行实例所占用的资源就越多,可供调度的空闲资源就越少。如果某一时刻,某个智能应用模型对应的待处理请求的数量达到缓存数量的上限,则需要调大当前该智能应用模型对应的实例并发数。如果某一时间段,某个智能应用模型对应的智能应用实例一直处于空闲状态,即该智能应用模型对应的待处理请求一直未被处理,则需要调小当前该智能应用模型对应的实例并发数。
92.在一些实施例中,参照图1和图9,步骤s0140之前还包括如下具体步骤:
93.s0910.根据当前并发的智能应用实例获取至少两个对应的智能应用模型;
94.s0920.获取缓存队列中每个智能应用模型对应的待处理请求数;
95.s0930.获取智能应用模型的优先级信息;
96.s0940.根据每个智能应用模型对应的待处理请求数获取智能应用模型对应的权重信息;
97.s0950.根据优先级信息和权重信息调整智能应用模型的优先级;
98.s0960.根据智能应用模型的优先级和待处理请求数调整智能应用模型对应的实例并发数。
99.如果某一时刻,缓存队列中的待处理请求的数量达到缓存数量的上限,则需要调大当前的实例并发数,如果当前并发的智能应用实例涉及到多个不同的智能应用模型,则需要确定每个智能应用模型的优先级,按照优先级的顺序调整每个智能应用模型对应的实例并发数。每个智能应用模型存在初始优先级,初始优先级并未考虑缓存队列中的待处理请求。初始优先级是对模型数据库中的全部智能应用模型进行优先级排序所确定的,优先级高的智能应用模型被优先使用。初始优先级可以根据各个智能应用模型的使用频率进行设置,使用频率高的智能应用模型被设置为高优先级。如果多个智能应用模型的优先级相同,则在其中随机选取一个智能应用模型进行调用。可以获取每个智能应用模型的初始优先级信息。可以从待处理请求信息中提取每一个智能应用模型对应的待处理请求,从而能够得到每一个智能应用模型对应的待处理请求数和全部待处理请求数,进而能够获取一个智能应用模型对应的待处理请求数占全部待处理请求数的权重信息。权重信息可以根据该智能应用模型对应的待处理请求的重要程度或紧急程度或数据量大小进行设置。根据一个智能应用模型的初始优先级信息和该智能应用模型对应的权重信息调整该智能应用模型的优先级,进而能够获取每个智能应用模型的优先级,按照优先级的顺序调整每个智能应用模型对应的实例并发数。使用式(2)调整智能应用模型的优先级:
[0100][0101]
其中,p
i
表示模型i原来的优先级,p
i
'表示模型i更新后的优先级。b表示更新优先级时的权重因子,权重因子b为模型i对应的待处理请求数占全部待处理请求数的权重,b为自然数。cache
i
表示模型i在一段时间内的待处理请求数,cache
j
表示在该段时间内所有模型的待处理请求数。
[0102]
在本技术实施例中,通过对模型、实例、任务的逐层控制,能够自适应地调度系统资源,利用系统的空闲资源调用智能应用模型,提高资源利用率,进而快速、有效地处理智能应用处理请求,提高智能应用的处理效率,提升智能应用模型部署的灵活性和设备整体的运行效率,并且不影响设备现有功能模块的运行。可以动态调节计算资源和计算任务之间的关系,达到二者之间的平衡。在执行模型的推理和训练时,由于数据处理仅在设备内部进行,并不与其它设备进行数据交互,从而能够保护用户数据、降低任务处理时延。
[0103]
在一些实施例中,参照图10和图11,示出了一种资源调度系统1000,资源调度系统1000能够执行上述实施例的资源调度方法,其包括:模型单元1010,被用于储存至少一个智能应用模型、记录每个智能应用模型的第一资源需求和第一并发需求;实例单元1020,连接模型单元1010,被用于存储至少一个智能应用实例、记录每个智能应用实例的第二资源需求和第二并发需求;任务单元1030,连接实例单元1020,被用于获取至少一个智能应用处理请求并对智能应用处理请求进行处理;资源监控单元1040,分别连接模型单元1010、实例单元1020和任务单元1030,被用于实时监控资源调度系统1000的资源使用情况并获取资源使用信息。
[0104]
模型单元中,一个智能应用模型的第一资源需求为运行该智能应用模型所需占用的资源量,即该智能应用模型的资源预估量。该资源预估量如果是未知的,则需要在运行该
智能应用模型时,记录该智能应用模型实际占用的资源量,将该资源量作为资源预估量,资源预估量可以是运行一次该智能应用模型时记录的实际资源量,也可以是运行多次该智能应用模型时,根据每一次记录的实际资源量计算得到的平均资源量、最低资源量或最高资源量。一个智能应用模型的第一并发需求为期望同时运行该智能应用模型的模型数,该模型数预设为1,可根据实际任务请求进行调整。
[0105]
实例单元中,一个智能应用实例的第二资源需求为运行该智能应用实例所需占用的资源量,即该智能应用实例的资源预估量。该资源预估量如果是未知的,则需要在运行该智能应用实例时,记录该智能应用实例实际占用的资源量,将该资源量作为资源预估量,资源预估量可以是运行一次该智能应用实例时记录的实际资源量,也可以是运行多次该智能应用实例时,根据每一次记录的实际资源量计算得到的平均资源量、最低资源量或最高资源量。一个智能应用实例的第二并发需求为期望同时运行该智能应用实例的实例数,该实例数预设为1,可根据实际任务请求进行调整。
[0106]
任务单元中,一个任务仅能处理一个智能应用处理请求,如果没有足够的资源处理全部的智能应用处理请求,则未处理的智能应用处理请求被缓存在队列中,队列的数目不小于模型单元存储的智能应用模型的数目,队列的调度可采用round robin轮询调度算法或按照先进先出的规则进行调度。创建一个任务,需找到能够处理该任务的一个实例,如果该实例的资源预估量不大于当前的空闲资源量,则根据该实例创建一个任务;如果该实例的资源预估量大于当前的空闲资源量,则相应的智能应用处理请求被缓存在队列中,等待队列的调度。
[0107]
资源监控单元实时监控资源调度系统的资源使用情况,将资源使用信息实时同步到模型单元、实例单元和任务单元,用于进一步调整资源和运行情况之间的关系。资源使用信息包括系统正在使用的资源信息和当前的空闲资源信息。对于任一请求,资源监控单元查找其请求的对应模型是否存在活动的且空闲状态的实例,如果存在,则使用该请求和实例创建出任务并分配资源运行,否则根据策略,决定是缓存请求并等待还是直接返回失败。在系统的运行过程中,资源监控单元会动态跟踪任务运行情况以及实例的活动状态,必要时对实例个数、任务个数的上限进行调整,即在系统资源占用、分配之间建立起一个闭环,达到通过动态调整模型并发数、任务并发数,实现合理利用资源的目的。在一些实施例中,如图11所示,系统将活动任务数、等待任务数、活动实例数或缓存请求数上报,资源监控单元进行运行监控,并输出调整活动任务数、等待任务数、活动实例数或缓存请求数。
[0108]
在一些实施例中,模型单元还被用于设置智能应用模型的优先级,优先级高的智能应用模型被优先使用。高优先级的模型在初次资源分配上占有优势,初始化优先级可以采取默认或者人为配置。优先级可以根据各个智能应用模型的使用频率进行设置,使用频率高的智能应用模型被设置为高优先级。如果多个智能应用模型的优先级相同,则在其中随机选取一个智能应用模型进行调用。在另一些实施例中,模型单元还被用于存储每个智能应用模型的网络拓扑结构、权重和数据信息。
[0109]
在一些实施例中,实例单元还被用于根据智能应用模型、智能应用模型对应的资源需求和当前的资源使用信息创建智能应用实例。一个智能应用模型可以被用于创建至少一个智能应用实例,一个智能应用实例可以被用于创建至少一个任务,一个任务仅能处理一个智能应用处理请求。在某一时刻,一个智能应用实例仅能处理一个任务,因此任务并发
数不大于实例并发数。任务并发数是指同时进行处理的任务数,实例并发数是指同时运行的实例数。
[0110]
在系统上电时,根据当前资源情况、模型个数、模型的资源预估量以及模型预期并发数,确定对应的活动模型实例数,为每个模型创建出对应数量的运行实例。在系统运行过程中,对于某个模型的具体训练或推理请求,根据对应实例的空闲、活动情况,确定是创建任务准备执行还是缓存数据。对于创建出的任务,根据当前系统的任务并发情况,确定任务是立即处理还是等待。在处理任务时,对实例的活动运行状态,任务的分时运行情况,以及数据的缓存情况进行统计和评估,确定是动态加载实例还是释放实例的资源。在一些实施例中,系统在上电启动时创建模型实例,对模型数据库中的模型按照优先级从高到低排序,初始时模型的优先级可以采取默认或者人为配置。准备开始第一次遍历所有模型,令i=0,对于第i个模型,准备为其创建第一个运行实例,判断模型i请求的资源是否小于系统空闲资源,如果是则为模型i创建实例,否则结束上电流程。为模型i创建实例,然后如果模型i已知自己资源的需求情况,则判断是否遍历完仓库中的所有模型,否则将模型启动实例所需的最低资源量记录下来,便于系统后续启动时的评估计算。判断是否遍历完仓库中的所有模型,如果是则准备第二次遍历模型数据库,否则执行下一个模型继续遍历。第二次遍历模型数据库,重新执行第一个模型,对于模型i,模型i如果有并发处理任务的需求,则认为其需要额外创建活动实例(即对于模型i,实例总数>=2)。如果需要创建额外的活动实例,则判断模型i请求的资源是否小于系统空闲资源,如果是则为模型i创建新的实例,否则判断是否遍历完所有模型。如果不需要创建额外的活动实例,则判断是否遍历完所有模型。判断是否遍历完所有模型,如果是则结束整个流程,否则指向下一个模型,继续遍历。系统保证在上电时对系统资源和模型进行了初次平衡,如果全部模型都上电成功,则意味着所有模型都可以对外提供基础服务,至少存在一个活动的实例,并且不会对现有系统造成影响;否则,则优先级高的模型首先创建实例成功,对外只能提供部分模型的服务功能。
[0111]
在本技术实施例中,每个模型至少存在一个与之对应的实例,模型总数满足下列条件:模型总数不大于实例总数,且每个模型都可以对外提供服务和功能。每个任务都有一个与之对应的实例,活动的任务数满足下列条件:活动的任务总数不大于活动的模型实例总数。资源调度系统通过对模型、实例、任务的逐层控制,来保证在提供所需推理、训练功能的同时,最大化资源使用效率。在不影响原有功能的基础上,利用现有的空闲计算资源即可以搭建出需要的智能推理、训练系统。模型之间可以做到灵活部署和调度,做到资源的充分利用,不浪费,可以动态调节计算资源和计算任务之间的关系,达到二者之间的平衡。在执行模型的推理和训练时,由于数据处理仅在设备内部进行,并不与其它设备进行数据交互,从而能够保护用户数据、降低任务处理时延。
[0112]
第二方面,本技术实施例提供了一种电子设备,电子设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的程序,程序被处理器执行时,实现本技术第一方面一些实施例的资源调度方法。
[0113]
在一些实施例中,电子设备可以为移动终端设备,也可以为非移动终端设备。移动终端设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载终端设备、可穿戴设备、超级移动个人计算机、上网本、个人数字助理等;非移动终端设备可以为个人计算机、电视机、柜员机或者自助机等;本技术实施方案不作具体限定。
[0114]
第三方面,本技术实施例提供了一种存储介质,用于计算机可读存储,存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现本技术第一方面一些实施例的资源调度方法。
[0115]
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
[0116]
在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
[0117]
以上是对本技术的较佳实施例进行了具体说明,但本技术并不局限于上述实施方式,熟悉本领域的技术人员在不违背本技术精神的前提下还可做出各种各样的等同变形或替换,这些等同的变形或替换均包含在本技术权利要求所限定的范围内。