1.本发明涉及计算机技术领域,尤其涉及一种任务调度方法、调度模块、推理节点和协同作业系统。
背景技术:
2.随着云端多路神经网络应用场景的广泛开展,云端多路神经网络的应用从最初的离线识别延伸为实时在线,从单一网络的应用转变为多网络协同工作。在这一过程中,不仅需满足吞吐量的需求,还要满足对任务响应时间的要求。
3.目前,对于单一神经网络的应用场景,通常通过增大任务的数据拼接单元的数目来提升设备使用效率以及满足整体任务吞吐量的需求,但是,上述方法限制了任务的复杂度,只对单一神经网络的任务有效,无法对多个神经网络协同工作的任务进行调度推理。
技术实现要素:
4.本发明提供一种任务调度方法、调度模块、推理节点和协同作业系统,用以解决现有技术中无法对多个神经网络协同工作的任务进行调度推理的缺陷。
5.本发明提供一种任务调度方法,应用于调度模块,包括:
6.获取各推理节点的待处理信息,所述各推理节点协同作业,所述待处理信息包括对应推理节点下的待处理任务数量和/或各待处理任务的任务类型;
7.基于所述各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,所有目标节点进行任务处理所需的计算资源总和小于等于额定计算量;
8.向所述目标节点发送任务处理指令,以触发所述目标节点进行任务处理。
9.根据本发明提供的一种任务调度方法,所述基于所述各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,包括:
10.基于各推理节点的待处理信息,确定各推理节点下的优先任务数量,优先任务为任务类型为优先类型的待处理任务;
11.基于各推理节点下的优先任务数量,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点。
12.根据本发明提供的一种任务调度方法,所述基于各推理节点下的优先任务数量,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,包括:
13.若存在优先推理节点,则基于各优先推理节点的待处理任务数量和协同作业权重,确定各优先推理节点的推理优先级;
14.基于各优先推理节点的推理优先级,确定目标节点;
15.所述优先推理节点为优先任务数量大于0的推理节点,所述协同作业权重是基于对应推理节点在协同作业中的重要性确定的。
16.根据本发明提供的一种任务调度方法,所述基于各优先推理节点的推理优先级,
确定目标节点,包括:
17.若优先推理节点的数量大于等于第一预设数量,则选取所述第一预设数量个推理优先级最高的优先推理节点作为目标节点;
18.否则,将所有优先推理节点作为目标节点,并选取第二预设数量个推理优先级最高的非优先推理节点作为目标节点;
19.所述第一预设数量是基于各推理节点进行任务处理所需的计算资源与所述额定计算量确定的目标节点数量阈值,所述第二预设数量是所述第一预设数量和所述优先推理节点的数量差值,所述非优先推理节点为优先任务数量为0的推理节点。
20.根据本发明提供的一种任务调度方法,所述基于各优先推理节点的推理优先级,确定目标节点,包括:
21.基于所述推理优先级从大到小的顺序,逐个将各优先推理节点确定为所述目标节点,直至下一待确定为目标节点的优先推理节点与所有目标节点进行任务处理所需的计算资源总和大于所述额定计算量;
22.若所有优先推理节点进行任务处理所需的计算资源总和小于所述额定计算量,则基于所述推理优先级从大到小的顺序,逐个将各非优先推理节点确定为所述目标节点,直至下一待确定为目标节点的非优先推理节点与所有目标节点进行任务处理所需的计算资源总和大于所述额定计算量;
23.所述非优先推理节点为优先任务数量为0的推理节点。
24.本发明还提供一种任务调度方法,应用于推理节点,包括:
25.将本端的待处理信息发送至调度模块,以供所述调度模块基于各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,并向所述目标节点下发任务处理指令;
26.若接收到所述任务处理指令,则进行任务处理;
27.其中,本端与其他各推理节点协同作业,所述待处理信息包括本端的待处理任务数量和/或各待处理任务的任务类型。
28.本发明还提供一种调度模块,包括:
29.信息获取单元,用于获取各推理节点的待处理信息,所述各推理节点协同作业,所述待处理信息包括对应推理节点下的待处理任务数量和/或各待处理任务的任务类型;
30.目标选取单元,用于基于所述各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,所有目标节点进行任务处理所需的计算资源总和小于等于额定计算量;
31.指令发送单元,用于向所述目标节点发送任务处理指令,以触发所述目标节点进行任务处理。
32.本发明还提供一种推理节点,包括:
33.发送单元,用于将本端的待处理信息发送至调度模块,以供所述调度模块基于各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,并向所述目标节点下发任务处理指令;其中,本端与其他各推理节点协同作业,所述待处理信息包括本端的待处理任务数量和/或各待处理任务的任务类型;
34.任务处理单元,用于若接收到所述任务处理指令,则进行任务处理。
35.本发明还提供一种协同作业系统,包括上述所述的调度模块,以及多个上述所述的推理节点。
36.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述的任务调度方法的步骤。
37.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的任务调度方法的步骤。
38.本发明提供的任务调度方法、调度模块、推理节点和协同作业系统,从各推理节点中选取目标节点时,兼顾了各推理节点的待处理信息以及各推理节点在协同作业中的重要性,使得选取出的目标节点在进行任务处理时,不仅能够满足整体吞吐量的需求,还满足了对任务响应时间的要求,解决了单一神经网络的调度推理方案无法对多个神经网络协同工作的任务进行调度推理的问题,实现了复杂场景下的调度推理。
附图说明
39.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1是本发明实施例提供的任务调度方法的流程示意图之一;
41.图2是本发明实施例提供的任务调度方法中步骤120的流程示意图;
42.图3是本发明实施例提供的任务调度方法中步骤122的流程示意图;
43.图4是本发明实施例提供的任务调度方法中步骤122
‑
2的流程示意图;
44.图5是本发明实施例提供的任务调度方法的流程示意图之二;
45.图6是本发明实施例提供的任务调度方法应用于多路任务场景的示意图;
46.图7是本发明提供的调度模块的结构示意图;
47.图8是本发明提供的推理节点的结构示意图;
48.图9是本发明提供的协同作业系统的结构示意图;
49.图10是本发明提供的电子设备的结构示意图。
具体实施方式
50.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.目前,在云端多路神经网络的应用场景中,针对单一神经网络的调度推理,通常是在神经网络外部对来自多路的任务进行分析,并根据一定规则进行数据拼接,将拼接后的数据再输入神经网络推理引擎进行推理计算,得到神经网络输出的结果。
52.但是,上述方案的限制了任务的复杂度,只对单一神经网络的任务有效。当任务中涉及到多个神经网络,且需通过此多个神经网络协同作用共同完成推理任务时,上述方案
很难满足需求。
53.针对上述情况,为解决单一神经网络的调度推理方案无法对多个神经网络协同工作的任务进行调度推理的问题,本发明提供一种任务调度方法,图1是本发明实施例提供的任务调度方法的流程示意图之一,如图1所示,该方法应用于调度模块,该方法包括:
54.步骤110,获取各推理节点的待处理信息,各推理节点协同作业,待处理信息包括对应推理节点下的待处理任务数量和/或各待处理任务的任务类型。
55.具体地,协同作业场景下,可以包含多个推理节点。此处,推理节点为协同作业场景下用于执行独立任务或者用于执行协同任务中的部分任务的推理引擎节点,推理节点可以包含单个神经网络,也可以包含多个顺序执行的神经网络。
56.例如在人机交互场景下,可以通过3个推理节点进行协同作业,其中推理节点a为语音识别节点,用于对用户输入的语音进行语音转写,推理节点b为文字识别节点,用于将用户输入的图像中包含的文字识别出来形成文本,推理节点c为试题推荐节点,用于根据语音转写所得的文本和/或对图像做文字识别所得的文本进行试题推荐。其中,推理节点a可以包括两个顺序执行的神经网络,具体在执行过程中先通过神经网络a1进行语音降噪,再通过神经网络a2对降噪后的语音进行转写。推理节点b和c可以分别通过单个神经网络实现。
57.考虑到多推理节点的协同作业场景下,推理节点之间仅存在执行逻辑上的通信联系,例如上述人机交互场景下,推理节点a和推理节点b的输出为推理节点c的输入。但是各推理节点之间并不会相互传输自身待处理的信息状态,因此,本发明实施例在协同作业场景下,额外设置一个调度模块,调度模块可与每个推理节点进行通信,从而可以根据每个推理节点的待处理信息,实现协同作业的任务调度。
58.调度模块在调度各个推理节点进行任务处理之前,需获取各推理节点的待处理信息,此处的待处理信息用于表示需要推理节点进行处理的任务的相关信息,例如可以包括待处理任务的数量,也可以包括每个待处理任务的任务类型,或者还可以既包含待处理任务的数量,也包含每个待处理任务的任务类型,本发明实施例对此不作具体限定。
59.针对于待处理任务的数量,考虑到单次调度推理节点进行任务处理时,待处理任务的数量越大,执行该推理节点的计算设备利用率更高,计算资源的浪费越少,因此可以优先调度待处理任务数量更大的推理节点。
60.针对于待处理任务的任务类型,待处理任务的任务类型可以是根据待处理任务的重要程度划分的,例如重要程度越高的任务,越需要优先调度对应推理节点进行处理;任务类型也可以是根据待处理任务对于响应速度的要求划分的,例如响应速度的要求越高的任务,越需要优先调度对应推理节点进行处理;任务类型还可以是根据用户自定义的处理方式划分的,例如用户预先定义了某些类型的任务需要优先处理,则需要优先调度此类任务对应的推理节点进行处理。
61.步骤120,基于各推理节点的待处理信息,以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点,所有目标节点进行任务处理所需的计算资源总和小于等于额定计算量;
62.具体地,协同作业场景中,每个推理节点都承担着协同处理的任务,具备其在协同作业中的重要性。但是由于不同推理节点在协同作业中对响应时间的影响程度,其维度增
大时的加速效率、对计算设备的占用程度、各推理节点对i/o设备的占用程度均不同,因此各推理节点在协同作业中的重要性也不同。
63.调度模块获取到各推理节点的待处理信息后,可根据获取到的各推理节点的待处理信息,以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点。此处,目标节点即需要优先调度处理的推理节点。例如,可以结合每个推理节点的待处理信息和在协同作业中的重要性,确定每个推理节点的调度优先级,从而根据优先级高低选取目标节点。又例如,可以根据每个推理节点的待处理信息选取目标节点,在此过程中针对待处理信息类似的推理节点,可以根据其在协同作业中的重要性划分优先级以确定目标节点。
64.各推理节点的待处理信息和各推理节点在协同作业中的重要性相结合的目标节点选取方式,保证了选取出的目标节点兼顾了待处理信息和重要性两个维度的信息,从而使得调度模块调度选取出的目标节点进行任务处理时不仅能够满足吞吐量的需求,还保证了对任务响应时间的要求。
65.需要说明的是,考虑到各推理节点所运行的设备的计算资源是有限的,因而,从各推理节点中选取目标节点时,还需使选取出的所有目标节点在进行任务处理时,所需的计算资源总和小于等于额定计算量,从而避免过多推理节点同时计算造成的抢占式开销。
66.步骤130,向目标节点发送任务处理指令,以触发目标节点进行任务处理。
67.具体地,从各推理节点中选取得到目标节点后,调度模块可向选取出的目标节点发送任务处理指令,此处的任务处理指令即调度模块发送的控制目标节点进行任务处理的指令,目标节点接收到调度模块发送的任务处理指令后,进行任务处理,任务处理包括对待处理任务进行数据拼接和推理计算。
68.需要说明的是,未进行任务处理的推理节点可继续接收待处理任务,增加待处理任务数量,从而增大了被选为目标节点的可能性,进而避免了某一推理节点被频繁调用造成的batch_size(批尺寸)过小的问题,同时也避免了某一节点在较长时间内可能无法被调度的现象,保证了吞吐和响应的平衡。
69.本发明实施例提供的任务调度方法,从各推理节点中选取目标节点时,兼顾了各推理节点的待处理信息以及各推理节点在协同作业中的重要性,使得选取出的目标节点在进行任务处理时,不仅能够满足整体吞吐量的需求,还满足了对任务响应时间的要求,解决了单一神经网络的调度推理方案无法对多个神经网络协同工作的任务进行调度推理的问题,实现了复杂场景下的调度推理。
70.基于上述实施例,图2是本发明实施例提供的任务调度方法中步骤120的流程示意图,如图2所示,步骤120包括:
71.步骤121,基于各推理节点的待处理信息,确定各推理节点下的优先任务数量,优先任务为任务类型为优先类型的待处理任务;
72.步骤122,基于各推理节点下的优先任务数量,以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点。
73.具体地,各推理节点下的待处理任务的任务类型分为优先类型和非优先类型,任务类型为优先类型的任务为优先任务,优先任务即各推理节点下的已推送结束的任务,例如优先类型的任务可以是用户录入完成的任务。考虑到在实际进行任务处理的过程中,用户对于各推理节点对优先任务的响应时间的追求,在进行任务处理时优先任务的优先级应
高于非优先任务,因此,步骤121中,在得到各推理节点的待处理信息的基础上,需进一步确定各推理节点下的各待处理任务的任务类型,得到任务类型为优先类型的任务数量,即优先任务数量。
74.进一步地,确定各推理节点下的优先任务数量后,即可基于各推理节点下的优先任务数量,以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点,以供调度模块调度选取出的目标节点进行任务处理。例如,可以结合每个推理节点下的优先任务数量和在协同作业中的重要性,确定每个推理节点的调度优先级,从而根据优先级高低选取目标节点。又例如,可以根据每个推理节点下的优先任务数量选取目标节点,在此过程中针对优先任务数量相同的推理节点,可以根据其在协同作业中的重要性划分优先级以确定目标节点。
75.基于上述实施例,图3是本发明实施例提供的任务调度方法中步骤122的流程示意图,如图3所示,步骤122包括:
76.步骤122
‑
1,若存在优先推理节点,则基于各优先推理节点的待处理任务数量和协同作业权重,确定各优先推理节点的推理优先级;优先推理节点为优先任务数量大于0的推理节点,协同作业权重是基于对应推理节点在协同作业中的重要性确定的;
77.步骤122
‑
2,基于各优先推理节点的推理优先级,确定目标节点。
78.具体地,在步骤121确定各推理节点下的优先任务数量后,可对各推理节点进行分类,将优先任务数量大于0的推理节点确定为优先推理节点,将优先任务数量等于0的推理节点确定为非优先推理节点,优先推理节点即进行任务处理时调度模块需优先调度进行任务处理的推理节点。
79.确定各推理节点的节点类型后,步骤122
‑
1中,判定各推理节点中是否存在优先推理节点,即是否存在优先任务数量大于0的推理节点,若存在优先推理节点,则需确定各优先推理节点的推理优先级,此处的推理优先级即表征各优先推理节点在任务处理时被调度模块调度的优先顺序。
80.各优先推理节点的推理优先级具体可根据各优先推理节点的待处理任务数量和协同作业权重确定,例如,可根据各优先推理节点的待处理任务数量和协同作业权重的乘积,确定各优先推理节点的推理优先级。又例如,可对各优先推理节点的待处理任务数量和协同作业权重进行加权,根据加权所得的结果确定各优先推理节点的推理优先级。
81.此处的各推理节点的协同作业权重可以根据各推理节点在协同作业中的重要性确定,对应推理节点在协同作业中越重要,其协同作业权重越大;反之,其协同作业权重越小。
82.步骤122
‑
2中,确定各推理节点的推理优先级后,可根据各推理节点的推理优先级,从各推理节点中选取目标节点。例如,可按照各优先推理节点的推理优先级从高到低的顺序,从各推理节点中选取目标节点,所选取的各目标节点进行任务处理时所需的计算资源总和不超过额定计算量。
83.本发明实施例提供的任务调度方法,以是否存在优先推理节点为依据,进行目标节点的选取,从而保证了存在优先处理任务的推理节点能够优先被调度,大大提升了设备对优先任务的响应时间。
84.基于上述实施例,步骤122
‑
2包括:
85.若优先推理节点的数量大于等于第一预设数量,则选取第一预设数量个推理优先级最高的优先推理节点作为目标节点;
86.否则,将所有优先推理节点作为目标节点,并选取第二预设数量个推理优先级最高的非优先推理节点作为目标节点;
87.第一预设数量是基于各推理节点进行任务处理所需的计算资源与额定计算量确定的目标节点数量阈值,第二预设数量是第一预设数量和优先推理节点的数量差值,非优先推理节点为优先任务数量为0的推理节点。
88.具体地,考虑到需要保证选取出的各目标节点进行任务处理所需的计算资源总和不能超过额定计算量,可以预先设置一个目标节点数量阈值,来控制设备中同一时刻运行的推理节点的数量。
89.确定存在优先推理节点后,可确定优先推理节点的数量,若优先推理节点的数量大于等于目标节点数量阈值,表明所有优先推理节点进行任务处理时所需的计算资源总和超过额定计算量,此处的目标节点数量阈值即第一预设数量,可根据各推理节点进行任务处理时所需的计算资源和额定计算量确定,第一预设数量限定了同一时刻可在设备上运行的推理节点的数量。
90.若优先推理节点的数量大于等于第一预设数量,则目标节点的选取范围仅限制在优先推理节点中,可以按照各优先推理节点的推理优先级从高到低的顺序依次选取第一预设数量个优先推理节点作为目标节点,以保证选取出的所有目标节点同时进行任务处理时所占用的计算资源总和不超过额定计算量,从而保证设备的正常运行。
91.相应地,若优先推理节点的数量小于第一预设数量,表明所有优先推理节点进行任务处理时所需的计算资源总和未超过额定计算量,则将所有优先推理节点作为目标节点,并从非优先推理节点中选取出第二预设数量个非优先推理节点作为目标节点,选取出的目标节点不仅包含优先推理节点,还包含了非优先推理节点。需要说明的是,第二预设数量和优先推理节点的数量之和等于第一预设数量。
92.从非优先推理节点中选取出第二预设数量个非优先推理节点作为目标节点,具体可以是按照各非优先推理节点的推理优先级从高到低的顺序依次选取第二预设数量个非优先推理节点,将选取出的非优先推理节点作为目标节点。
93.例如,调度模块感知到第一推理节点、第二推理节点和第三推理节点中均存在任务类型为优先类型的任务,第四推理节点和第五推理节点中不存在任务类型为优先类型的任务,即第一推理节点、第二推理节点和第三推理节点为优先推理节点,第四推理节点和第五推理节点为非优先推理节点。其中,第一推理节点的待处理任务数量为20,第二推理节点,第三推理节点的待处理任务数量为10,第四推理节点的待处理任务数量为20,第五推理节点的待处理任务数量为10。
94.较之其余推理节点,由于第二推理节点对协同作业的任务响应时间的影响更为关键,因而第二推理节点的协同作业权重为1.5,第一推理节点和第三推理节点的协同作用权重为1,第四推理节点和第五推理节点的协同作用权重为0.8。计算得到当前时刻此五个推理节点的推理优先级参数分别为20、22.5、10、16和8。优先推理节点中第二推理节点的推理优先级高于第一推理节点的推理优先级,第一推理节点的推理优先级高于第三推理节点的推理优先级。非优先推理节点中第四推理节点的推理优先级高于第五推理节点的推理优先
级。若第一预设数量为1,则将优先推理节点中推理优先级最高的第二推理节点作为目标节点。
95.若第一预设数量为4,则将所有优先推理节点,即第一推理节点、第二推理节点和第三推理节点确定为目标节点,并将非优先推理节点中推理优先级最高的第四推理节点作为目标节点。
96.本发明实施例提供的任务调度方法,结合各推理节点进行任务处理时所需的计算资源和额定计算量进行目标节点的选取,保证了选取出的各目标节点进行任务处理时所需的计算资源总和不会超过额定计算量,不仅满足了大吞吐需求,还提升了设备的使用效率,同时也避免了过多的推理节点同时进行任务处理造成的抢占式开销,从而保证了设备的正常运行。
97.基于上述实施例,图4是本发明实施例提供的任务调度方法中步骤122
‑
2的流程示意图,如图4所示,步骤122
‑
2包括:
98.步骤122
‑
21,基于推理优先级从大到小的顺序,逐个将各优先推理节点确定为目标节点,直至下一待确定为目标节点的优先推理节点与所有目标节点进行任务处理所需的计算资源总和大于额定计算量;
99.步骤122
‑
22,若所有优先推理节点进行任务处理所需的计算资源总和小于额定计算量,则基于推理优先级从大到小的顺序,逐个将各非优先推理节点确定为目标节点,直至下一待确定为目标节点的非优先推理节点与所有目标节点进行任务处理所需的计算资源总和大于额定计算量;非优先推理节点为优先任务数量为0的推理节点。
100.具体地,考虑到需要保证选取出的各目标节点进行任务处理时所需的计算资源总和不能超过额定计算量,可以在选取的过程中同步判断选取出的各目标节点进行任务处理所需的计算资源是否超过额定计算量。
101.确定各优先推理节点的推理优先级后,若所有优先推理节点进行任务处理时所需的计算资源总和超过额定计算量,则按照推理优先级从大到小的顺序,逐个将优先推理节点确定为目标节点,例如按照推理优先级从高到低的顺序,将第i个优先推理节点确定为目标节点,此时已确定为目标节点的前i个优先推理节点进行任务处理所需的计算资源的总和为m,m小于额定计算量m,第i 1个优先推理节点进行任务处理所需的计算资源为n,若m n大于等于m,则表明已确定为目标节点的前i个优先按推理节点进行任务处理所需的计算资源,与下一待确定为目标节点的第i 1个优先推理节点进行任务处理所需的计算资源的总和超过额定计算量,则将前i个优先推理节点确定为目标节点。
102.相应地,若m n小于m,则表明已确定为目标节点的前i个优先按推理节点进行任务处理所需的计算资源,与下一待确定为目标节点的第i 1个优先推理节点进行任务处理所需的计算资源的总和未超过额定计算量,此时,可继续将第i 1个优先推理节点确定为目标节点,并判断第i 2个优先推理节点进行任务处理所需的计算资源,与前i 1个优先推理节点进行任务处理所需的计算资源总和是否超过额定计算量,根据判断结果确定是否需将第i 2个优先推理节点作为目标节点,重复上述过程,直至已确定为目标节点的各优先按推理节点进行任务处理所需的计算资源,与下一待确定为目标节点的优先推理节点进行任务处理所需的计算资源的总和超过额定计算量。
103.若所有优先推理节点进行任务处理所需的计算资源总和未超过额定计算量,则将
所有优先推理节点均作为目标节点,例如,若优先推理节点的数量为k,k个优先推理节点进行任务处理所需的计算资源总和a小于额定计算量m,则将k个优先推理节点均作为目标节点。并按照各非优先推理节点的推理优先级从高到低的顺序,逐个将非优先推理节点确定为目标节点,例如,按照各非优先推理节点的推理优先级从高到低的顺序,判断第1个非优先推理节点进行任务处理所需的计算资源b与a之和是否小于等于m,若b a小于等于m,则将第1个非优先推理节点作为目标节点,并继续判断第2个非优先推理节点进行任务处理所需的计算资源,与已确定为目标节点的k个优先推理节点和第1个非优先推理节点进行任务处理所需的计算资源总和是否超过额定计算量,根据判断结果确定是否需将第2个非优先推理节点作为目标节点,重复上述过程,直至已确定的目标节点进行任务处理所需的计算资源,与下一待确定为目标节点的非优先推理节点进行任务处理所需的计算资源的总和大于额定计算量。
104.若b a大于m,则表明额定计算量中,除k个优先推理节点进行任务处理占用的计算资源后,剩余的计算资源并不足以支撑优先推理级最高的第1个非优先推理节点进行任务处理,此时,将k个优先推理节点确定为目标节点即可。
105.本发明实施例提供的任务调度方法,结合各推理节点进行任务处理时所需的计算资源和额定计算量进行目标节点的选取,保证了选取出的各目标节点进行任务处理时所需的计算资源总和不会超过额定计算量,不仅满足了大吞吐需求,还提升了设备的使用效率,同时也避免了过多的推理节点同时进行任务处理造成的抢占式开销,从而保证了设备的正常运行。
106.图5是本发明是实施例提供的任务调度方法的流程示意图之二,如图5所示,该方法的应用于推理节点,该方法包括:
107.步骤510,将本端的待处理信息发送至调度模块,以供调度模块基于各推理节点的待处理信息,以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点,并向目标节点下发任务处理指令;其中,本端与其他各推理节点协同作业,待处理信息包括本端的待处理任务数量和/或各待处理任务的任务类型。
108.具体地,考虑到多推理节点的协同作业场景下,推理节点之间仅存在执行逻辑上的通信联系,例如上述人机交互场景下,推理节点a和推理节点b的输出为推理节点c的输入。但是各推理节点之间并不会相互传输自身待处理的信息状态,因此,本发明实施例在协同作业场景下,额外设置一个调度模块,调度模块可与每个推理节点进行通信,从而可以根据每个推理节点的待处理信息,实现协同作业的任务调度。
109.调度模块在调度各个推理节点进行任务处理之前,各推理节点需将本端的待处理信息发送至调度模块,此处的待处理信息用于表示需要推理节点进行处理的任务的相关信息,例如可以包括待处理任务的数量,也可以包括每个待处理任务的任务类型,或者还可以既包含待处理任务的数量,也包含每个待处理任务的任务类型,本发明实施例对此不作具体限定。
110.针对于待处理任务的数量,考虑到单次调度推理节点进行任务处理时,待处理任务的数量越大,执行该推理节点的计算设备利用率更高,计算资源的浪费越少,因此可以优先调度待处理任务数量更大的推理节点。
111.针对于待处理任务的任务类型,待处理任务的任务类型可以是根据待处理任务的
重要程度划分的,例如重要程度越高的任务,越需要优先调度对应推理节点进行处理;任务类型也可以是根据待处理任务对于响应速度的要求划分的,例如响应速度的要求越高的任务,越需要优先调度对应推理节点进行处理;任务类型还可以是根据用户自定义的处理方式划分的,例如用户预先定义了某些类型的任务需要优先处理,则需要优先调度此类任务对应的推理节点进行处理。
112.调度模块接收到各推理节点的待处理信息后,可根据接收到的各推理节点的待处理信息,以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点。此处,目标节点即需要优先调度处理的推理节点。
113.协同作业场景中,每个推理节点都承担着协同处理的任务,具备其在协同作业中的重要性。但是由于不同推理节点在协同作业中对响应时间的影响程度,其维度增大时的加速效率、对计算设备的占用程度、各推理节点对i/o设备的占用程度均不同,因此各推理节点在协同作业中的重要性也不同。
114.例如,可以结合每个推理节点的待处理信息和在协同作业中的重要性,确定每个推理节点的调度优先级,从而根据优先级高低选取目标节点。又例如,可以根据每个推理节点的待处理信息选取目标节点,在此过程中针对待处理信息类似的推理节点,可以根据其在协同作业中的重要性划分优先级以确定目标节点。
115.各推理节点的待处理信息和各推理节点在协同作业中的重要性相结合的目标节点选取方式,保证了选取出的目标节点兼顾了待处理信息和重要性两个维度的信息,从而使得调度模块调度选取出的目标节点进行任务处理时不仅能够满足吞吐量的需求,还保证了对任务响应时间的要求。
116.需要说明的是,考虑到各推理节点所运行的设备的计算资源是有限的,因而,从各推理节点中选取目标节点时,还需使选取出的所有目标节点在进行任务处理时,所需的计算资源总和小于等于额定计算量,从而避免过多推理节点同时计算造成的抢占式开销。
117.确定目标节点后,调度模块还需向目标节点发送任务处理指令,此处的任务处理指令即调度模块发送的控制目标节点进行任务处理的指令。
118.步骤520,若接收到任务处理指令,则进行任务处理。
119.具体地,目标节点接收到调度模块发送的任务处理指令后,进行任务处理,任务处理包括对待处理任务进行数据拼接和推理计算。
120.需要说明的是,未进行任务处理的推理节点可继续接收待处理任务,增加待处理任务数量,从而增大被选为目标节点的可能性,进而避免了某一推理节点被频繁调用造成的batch_size(批尺寸)过小的问题,同时也避免了某一节点在较长时间内可能无法被调度的现象,保证了吞吐和响应的平衡。
121.本发明实施例提供的任务调度方法,各推理节点将本端的待处理信息发送至调度模块,调度模块结合各推理节点的待处理信息以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点,使得选取出的目标节点在进行任务处理时,不仅能够满足整体吞吐量的需求,还满足了对任务响应时间的要求,解决了单一神经网络的调度推理方案无法对多个神经网络协同工作的任务进行调度推理的问题,实现了复杂场景下的调度推理。
122.基于上述实施例,图6是本发明实施例提供的任务调度方法应用于多路任务场景
的示意图,图6中的t和r表示对应推理节点外部的待处理任务,每一个t或每一个r对应一路会话,图6中的batch1、exe1和exe2对应第一推理节点,batch2、exe3和exe4对应第二推理节点,batch3和exe5对应第三推理节点。其中,batch表示推理节点中的数据拼接节点,exe表示推理节点中执行推理的推理引擎节点,schedule为调度模块。实线箭头表示数据传输以及数据传输的方向,虚线箭头表示调度模块的调度过程。每一batch完成如下功能:
123.(1)在进行任务处理时,推理引擎对处理数据的尺寸有一定的要求,而外部输入的数据可能无法满足该尺寸要求,并且由于推理引擎不具备保存数据和管理数据这一能力,因而,batch实现该功能,即每一数据拼接节点保存本端的待处理任务;
124.(2)协助调度模块进行整体任务的调度派发,每一batch对本端管理的待处理任务进行分析,明确本端的待处理信息,并将本端的待处理信息发送至调度模块,协助调度模块进行调度管理。
125.在本发明实施例提供的应用场景中,针对单路任务的执行流程包括如下步骤:
126.步骤s1,用户将多个数据(data0,data1,
…
,datan)输入至exe1进行推理计算;
127.步骤s2,exe1输出计算结果,将exe1输出的计算结果输入至exe2进行推理计算,与此同时将exe1输出的计算结果中的回写数据回输至batch1;
128.步骤s3,用户将多个数据(data0,data1,
…
,datan)输入至exe3进行推理计算;
129.步骤s4,exe3输出计算结果,将exe3输出的计算结果输入至exe4进行推理计算,与此同时将输出结果中的回写数据回输至batch2;
130.步骤s5,exe2和exe4的推理计算过程执行完成后,将exe2和exe4输出的计算结果输入至exe5进行最终的推理计算,得到exe5输出的计算结果。
131.每一单路任务按照exe1至exe2,exe3至exe4,exe2 exe4至exe5的时序执行。
132.如图6所示,针对多路任务的执行流程包括:
133.(1)使用调度模块统一管理所有batch,即图中的batch1、batche2和batch3,将连续的推理引擎节点在逻辑上视为同一节点,例如将exe1和exe2视为同一节点,将exe3和exe4视为同一节点;
134.(2)调度模块获取各推理节点的待处理信息,即获取第一推理节点、第二推理节点和第三推理节点的待处理信息,获取的待处理信息包括对应推理节点下的待处理任务数量和/或各待处理任务的任务类型,当推理节点中存在待处理任务时,将存在待处理任务的信息反馈至调度模块;
135.(3)调度模块感知到当前管理的推理节点中存在待处理任务时,可根据各推理节点的待处理信息,以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点,并调度目标节点进行数据拼接,并将拼接后的数据输入至推理引擎节点进行推理计算。
136.多路任务场景下的合理调度策略以及有效的引擎组合,可保证任务吞吐的最大化和设备的高利用率。
137.下面对本发明提供的调度模块进行描述,下文描述的调度模块与上文描述的任务调度方法可相互对应参照。
138.图7是本发明提供的调度模块的结构示意图。如图7所示,该模块包括:
139.信息获取单元710,用于获取各推理节点的待处理信息,所述各推理节点协同作业,所述待处理信息包括对应推理节点下的待处理任务数量和/或各待处理任务的任务类
型;
140.目标选取单元720,用于基于所述各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,所有目标节点进行任务处理所需的计算资源总和小于等于额定计算量;
141.指令发送单元730,用于向所述目标节点发送任务处理指令,以触发所述目标节点进行任务处理。
142.本发明提供的调度模块,从各推理节点中选取目标节点时,兼顾了各推理节点的待处理信息以及各推理节点在协同作业中的重要性,使得选取出的目标节点在进行任务处理时,不仅能够满足整体吞吐量的需求,还满足了对任务响应时间的要求,解决了单一神经网络的调度推理方案无法对多个神经网络协同工作的任务进行调度推理的问题,实现了复杂场景下的调度推理。
143.基于上述实施例,目标选取单元720用于:
144.基于各推理节点的待处理信息,确定各推理节点下的优先任务数量,优先任务为任务类型为优先类型的待处理任务;
145.基于各推理节点下的优先任务数量,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点。
146.基于上述实施例,目标选取单元720用于:
147.若存在优先推理节点,则基于各优先推理节点的待处理任务数量和协同作业权重,确定各优先推理节点的推理优先级;
148.基于各优先推理节点的推理优先级,确定目标节点;
149.所述优先推理节点为优先任务数量大于0的推理节点,所述协同作业权重是基于对应推理节点在协同作业中的重要性确定的。
150.基于上述实施例,目标选取单元720用于:
151.若优先推理节点的数量大于等于第一预设数量,则选取所述第一预设数量个推理优先级最高的优先推理节点作为目标节点;
152.否则,将所有优先推理节点作为目标节点,并选取第二预设数量个推理优先级最高的非优先推理节点作为目标节点;
153.所述第一预设数量是基于各推理节点进行任务处理所需的计算资源与所述额定计算量确定的目标节点数量阈值,所述第二预设数量是所述第一预设数量和所述优先推理节点的数量差值,所述非优先推理节点为优先任务数量为0的推理节点。
154.基于上述实施例,目标选取单元720用于:
155.基于所述推理优先级从大到小的顺序,逐个将各优先推理节点确定为所述目标节点,直至下一待确定为目标节点的优先推理节点与所有目标节点进行任务处理所需的计算资源总和大于所述额定计算量;
156.若所有优先推理节点进行任务处理所需的计算资源总和小于所述额定计算量,则基于所述推理优先级从大到小的顺序,逐个将各非优先推理节点确定为所述目标节点,直至下一待确定为目标节点的非优先推理节点与所有目标节点进行任务处理所需的计算资源总和大于所述额定计算量;
157.所述非优先推理节点为优先任务数量为0的推理节点。
158.图8是本发明提供的推理节点的结构示意图。如图8所示,该节点包括:
159.发送单元810,用于将本端的待处理信息发送至调度模块,以供所述调度模块基于各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,并向所述目标节点下发任务处理指令;其中,本端与其他各推理节点协同作业,所述待处理信息包括本端的待处理任务数量和/或各待处理任务的任务类型;
160.任务处理单元820,用于若接收到所述任务处理指令,则进行任务处理。
161.本发明提供的推理节点,各推理节点将本端的待处理信息发送至调度模块,调度模块结合各推理节点的待处理信息以及各推理节点在协同作业中的重要性,从各推理节点中选取目标节点,使得选取出的目标节点在进行任务处理时,不仅能够满足整体吞吐量的需求,还满足了对任务响应时间的要求,解决了单一神经网络的调度推理方案无法对多个神经网络协同工作的任务进行调度推理的问题,实现了复杂场景下的调度推理。
162.图9是本发明提供的协同作业系统的结构示意图,如图9所示,该系统包括调度模块700,以及多个推理节点800。
163.图10示例了一种电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(communications interface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行任务调度方法,该方法应用于调度模块,该方法包括:获取各推理节点的待处理信息,所述各推理节点协同作业,所述待处理信息包括对应推理节点下的待处理任务数量和/或各待处理任务的任务类型;基于所述各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,所有目标节点进行任务处理所需的计算资源总和小于等于额定计算量;向所述目标节点发送任务处理指令,以触发所述目标节点进行任务处理。
164.此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read
‑
only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
165.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的任务调度方法,该方法应用于调度模块,该方法包括:获取各推理节点的待处理信息,所述各推理节点协同作业,所述待处理信息包括对应推理节点下的待处理任务数量和/或各待处理任务的任务类型;基于所述各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,所有目标节点进行任务处理所需的计算资源总和小于等于额定计算量;向所述目标节点发送任务处理指令,以触发所述目标节点进行任务处理。
166.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程
序,该计算机程序被处理器执行时实现以执行上述各提供的任务调度方法,该方法应用于调度模块,该方法包括:获取各推理节点的待处理信息,所述各推理节点协同作业,所述待处理信息包括对应推理节点下的待处理任务数量和/或各待处理任务的任务类型;基于所述各推理节点的待处理信息,以及所述各推理节点在协同作业中的重要性,从所述各推理节点中选取目标节点,所有目标节点进行任务处理所需的计算资源总和小于等于额定计算量;向所述目标节点发送任务处理指令,以触发所述目标节点进行任务处理。
167.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
168.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
169.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
转载请注明原文地址:https://doc.8miu.com/index.php/read-1722318.html