算法部署和调度方法以及算法部署和调度装置与流程

文档序号:29219442发布日期:2022-03-12 12:19阅读:639来源:国知局
算法部署和调度方法以及算法部署和调度装置与流程

1.本技术涉及算法应用技术领域,尤其涉及算法部署方法、算法调度方法、算法部署装置、算法调度装置及可读存储介质,还涉及服务器、电子设备以及应用多算法的系统。


背景技术:

2.电子设备可以使用植入的算法实现对数据处理的智能化功能扩展。通常情况下,一台电子设备只植入一个算法,因此,电子设备所具备的扩展智能化功能是单一且固定的。
3.然而,电子设备的应用场景或用途是存在多样化需求的,单一且固定的智能化功能不能满足多样化需求。


技术实现要素:

4.本技术实施例提出算法部署方法、算法调度方法、算法部署装置、算法调度装置及可读存储介质和电子设备,以允许电子设备支持智能化功能的灵活配置。
5.在本技术的一个实施例中,提供了一种算法部署方法,包括:
6.响应于意图在目标设备部署目标算法的算法启用请求,校验所述目标设备当前的可用资源与所述目标算法所需的资源消耗的匹配度,其中,所述目标设备允许至少两种算法的并行执行,并且,所述目标算法为算法集合中尚未部署在所述目标设备的任意算法;
7.响应于所述可用资源足与所述资源消耗匹配成功的校验结果,将所述目标算法部署到所述目标设备,其中,所述可用资源足与所述资源消耗的匹配成功至少表示:所述目标设备具有足以使所述目标算法达预期性能的可用算力资源。
8.可选地,所述校验所述目标设备当前的可用资源与所述目标算法所需的资源消耗的匹配度,包括:确定所述目标算法对所述目标设备的算力资源消耗、以及所述目标设备当前的可用算力资源;确定所述算力资源消耗和所述可用算力资源的算力资源匹配度;基于所述算力资源匹配度,校验所述目标设备当前的可用资源与所述目标算法所需的资源消耗的匹配度。
9.可选地,所述算力资源消耗是根据所述目标算法的单次运行时长、所述目标算法为达预期性能而在单位时间内的期望运行次数、以及所述目标设备的总算力资源确定的。
10.可选地,所述算力资源消耗是根据:所述单次运行时长和所述期望运行次数的乘积的归一化值、以及所述总算力资源确定的。
11.可选地,所述校验所述目标设备当前的可用资源与所述目标算法所需的资源消耗的匹配度,进一步包括:确定所述目标算法对所述目标设备的算法包存储空间和内存中的至少一种存储资源的存储资源消耗、以及所述目标设备的所述存储资源中当前的可用存储资源;确定所述存储资源消耗和所述可用存储资源的存储资源匹配度;其中,对所述目标设备当前的可用资源与所述目标算法所需的资源消耗的匹配度的校验,是进一步依据所述存储资源匹配度执行的;并且,所述可用资源足与所述资源消耗的匹配成功进一步表示:所述目标设备具有足以供所述目标算法安装和运行的可用存储资源。
12.可选地,进一步包括:基于在算法数据库中的查询结果,确定所述目标算法的所述资源消耗;从所述目标设备获取所述目标设备当前的所述可用资源。
13.可选地,所述将所述目标算法部署到所述目标设备,包括:将所述目标算法的算法包下发到所述目标设备,其中,所述算法包中包含配置文件,所述配置文件中包含的配置信息用于:在所述目标设备将所述目标算法与其他已部署算法并行执行的期间内,为所述目标算法与其他已部署算法对所述目标设备的资源占用提供调度参考。
14.可选地,所述配置信息包括所述目标算法为达到预期性能而在单位时间内的期望运行次数、以及所述目标算法在并行执行期间内对算力资源的占用优先级中的至少之一。
15.可选地,所述目标算法为针对图像数据的算法;所述期望运行次数为所述目标算法对所述图像数据的期望帧率;所述占用优先级是根据所述目标算法对所述帧率的敏感度确定的。
16.可选地,所述目标设备包括处理器和智能芯片,并且,所述目标设备的算力资源包括所述智能芯片的片上系统soc提供的处理资源。
17.在本技术的另一个实施例中,提供了一种算法调度方法,所述算法调度方法包括:
18.为下发到目标设备的至少两个算法分别创建独立的线程,其中,所述至少两个算法中的每个算法,是在经过算法的资源消耗与所述目标设备的可用资源的匹配度校验后下发到所述目标设备的,并且,所述可用资源足与所述资源消耗的匹配成功至少表示:所述目标设备具有足以使每个算法达预期性能的可用算力资源;
19.在所述至少两个算法分别被不同的线程并行执行的期间内,为所述至少两个算法对所述目标设备的算力资源的占用实施调度控制。
20.可选地,所述为所述至少两个算法对所述目标设备的算力资源的占用实施调度控制,包括:以所述至少两个算法均达到预期性能为目标,对所述目标设备的算力资源的占用实施调度控制。
21.可选地,所述以所述至少两个算法均达到预期性能为目标,对所述目标设备的算力资源的占用实施调度控制,包括:根据所述至少两个算法对所述算力资源的占用优先级,对所述目标设备的算力资源的占用实施调度控制。
22.可选地,所述至少两种算法为针对图像数据的算法,并且,所述占用优先级是根据算法对为达预期性能而在单位时间内的期望运行次数的敏感度确定的。
23.可选地,所述根据所述至少两个算法对所述算力资源的占用优先级,对所述目标设备的算力资源的占用实施调度控制,包括:根据所述至少两个算法对所述算力资源的占用优先级,为执行每个算法的线程分配不同优先级的任务队列;其中,所述任务队列用于存放需要被所述算力资源处理的待处理算法任务,所述算力资源按照所述任务队列的优先级串行处理所有待处理算法任务,并且,每个待处理算法任务被所述算力资源处理后的任务数据被返回给所属算法的线程。
24.可选地,进一步包括:从所述至少两个算法的算法包包含的配置文件中,获取所述至少两个算法的所述占用优先级。
25.可选地,所述为下发到目标设备的至少两个算法分别创建独立的线程之后,进一步包括:分别为执行每个算法的线程创建数据通道,其中,为每个线程创建的数据通道用于以该线程执行的算法为达预期性能而在单位时间内的期望运行次数向该线程推送数据。
26.可选地,所述分别为执行每个算法的线程创建数据通道,包括:在所述目标设备的内存中,分别为执行每个算法的线程分配用作所述数据通道的内存空间,其中,向每个线程的推送的数据,由所述目标设备的设备固件存入至用作该线程的所述数据通道的所述内存空间内。
27.可选地,进一步包括:从所述至少两个算法的算法包包含的配置文件中,获取所述至少两个算法的所述期望运行次数。
28.可选地,所述目标设备包括处理器和智能芯片,并且,所述目标设备的算力资源包括所述智能芯片的片上系统soc提供的处理资源。
29.在本技术的另一个实施例中,提供了一种算法部署装置,所述算法部署装置包括:
30.请求校验模块,被配置为:响应于意图在目标设备部署目标算法的算法启用请求,校验所述目标设备当前的可用资源与所述目标算法所需的资源消耗的匹配度,其中,所述目标设备允许至少两种算法的并行执行,并且,所述目标算法为算法集合中尚未部署在所述目标设备的任意算法;
31.请求响应模块,被配置为:响应于所述可用资源足与所述资源消耗匹配成功的校验结果,将所述目标算法部署到所述目标设备,其中,所述可用资源足与所述资源消耗的匹配成功至少表示:所述目标设备具有足以使所述目标算法达预期性能的可用算力资源。
32.可选地,所述请求校验模块被具体配置为:确定所述目标算法对所述目标设备的算力资源消耗、以及所述目标设备当前的可用算力资源;确定所述算力资源消耗和所述可用算力资源的算力资源匹配度;基于所述算力资源匹配度,校验所述目标设备当前的可用资源与所述目标算法所需的资源消耗的匹配度。
33.可选地,所述算力资源消耗是根据所述目标算法的单次运行时长、所述目标算法为达预期性能而在单位时间内的期望运行次数、以及所述目标设备的总算力资源确定的。
34.可选地,所述算力资源消耗是根据:所述单次运行时长和所述期望运行次数的乘积的归一化值、以及所述总算力资源确定的。
35.可选地,所述请求校验模块被具体配置为进一步:确定所述目标算法对所述目标设备的算法包存储空间和内存中的至少一种存储资源的存储资源消耗、以及所述目标设备的所述存储资源中当前的可用存储资源;确定所述存储资源消耗和所述可用存储资源的存储资源匹配度;其中,对所述目标设备当前的可用资源与所述目标算法所需的资源消耗的匹配度的校验,是进一步依据所述存储资源匹配度执行的;并且,所述可用资源足与所述资源消耗的匹配成功进一步表示:所述目标设备具有足以供所述目标算法安装和运行的可用存储资源。
36.可选地,进一步包括:消耗查询模块,被配置为基于在算法数据库中的查询结果,确定所述目标算法的所述资源消耗;资源查询模块,被配置为从所述目标设备获取所述目标设备当前的所述可用资源。
37.可选地,所述请求响应模块被具体配置为:将所述目标算法的算法包下发到所述目标设备,其中,所述算法包中包含配置文件,所述配置文件中包含的配置信息用于:在所述目标设备将所述目标算法与其他已部署算法并行执行的期间内,为所述目标算法与其他已部署算法对所述目标设备的资源占用提供调度参考。
38.可选地,所述配置信息包括所述目标算法为达到预期性能而在单位时间内的期望
运行次数、以及所述目标算法在并行执行期间内对算力资源的占用优先级中的至少之一。
39.可选地,所述目标算法为针对图像数据的算法;所述期望运行次数为所述目标算法对所述图像数据的期望帧率;所述占用优先级是根据所述目标算法对所述帧率的敏感度确定的。
40.可选地,所述目标设备包括处理器和智能芯片,并且,所述目标设备的算力资源包括所述智能芯片的片上系统soc提供的处理资源。
41.在本技术的另一个实施例中,提供了一种算法调度装置,所述算法调度装置包括:
42.线程创建模块,被配置为:为下发到目标设备的至少两个算法分别创建独立的线程,其中,所述至少两个算法中的每个算法,是在经过算法的资源消耗与所述目标设备的可用资源的匹配度校验后下发到所述目标设备的,并且,所述可用资源足与所述资源消耗的匹配成功至少表示:所述目标设备具有足以使每个算法达预期性能的可用算力资源;
43.调度控制模块,被配置为:在所述至少两个算法分别被不同的线程并行执行的期间内,为所述至少两个算法对所述目标设备的算力资源的占用实施调度控制。
44.可选地,所述线程创建模块被具体配置为:以所述至少两个算法均达到预期性能为目标,对所述目标设备的算力资源的占用实施调度控制。
45.可选地,所述线程创建模块被具体配置为:根据所述至少两个算法对所述算力资源的占用优先级,对所述目标设备的算力资源的占用实施调度控制。
46.可选地,所述至少两种算法为针对图像数据的算法,并且,所述占用优先级是根据算法对所述图像数据的帧率的敏感度确定的。
47.可选地,所述调度控制模块被具体配置为:根据所述至少两个算法对所述算力资源的占用优先级,为执行每个算法的线程分配不同优先级的任务队列;其中,所述任务队列用于存放需要被所述算力资源处理的待处理算法任务,所述算力资源按照所述任务队列的优先级串行处理所有待处理算法任务,并且,每个待处理算法任务被所述算力资源处理后的任务数据被返回给所属算法的线程。
48.可选地,所述调度控制模块被配置为进一步:从所述至少两个算法的算法包包含的配置文件中,获取所述至少两个算法的所述占用优先级。
49.可选地,所述线程创建模块被配置为进一步:分别为执行每个算法的线程创建数据通道,其中,为每个线程创建的数据通道用于以该线程执行的算法为达预期性能而在单位时间内的期望运行次数向该线程推送数据。
50.可选地,所述线程创建模块被具体配置为:在所述目标设备的内存中,分别为执行每个算法的线程分配用作所述数据通道的内存空间,其中,向每个线程的推送的数据,由所述目标设备的设备固件存入至用作该线程的所述数据通道的所述内存空间内。
51.可选地,所述线程创建模块被具体配置为进一步:从所述至少两个算法的算法包包含的配置文件中,获取所述至少两个算法的所述期望运行次数。
52.可选地,所述目标设备包括处理器和智能芯片,并且,所述目标设备的算力资源包括所述智能芯片的片上系统soc提供的处理资源。
53.在本技术的另一个实施例中,提供了一种服务器,包括处理器,所述处理器用于执行如前述实施例所述的算法部署方法。
54.在本技术的另一个实施例中,提供了一种电子设备,包括处理器和智能芯片,所述
处理器用于将所述电子设备作为所述目标设备执行如前述实施例所述的算法调度方法,所述电子设备的算力资源包括所述智能芯片的片上系统soc提供的处理资源。
55.在本技术的另一个实施例中,提供了一种应用多算法的系统,包括如前述实施例所述的服务器,以及,至少一个如前述实施例所述的电子设备,其中,将每个所述电子设备中的算法包括由所述服务器根据不同的所述算法启用请求而部署的所述目标算法。
56.在本技术的另一个实施例中,提供了一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如前述实施例所述的算法部署方法、或执行如前述实施例所述的算法调度方法。
57.在本技术的另一个实施例中,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如前述实施例所述的算法部署方法、或执行如前述实施例所述的算法调度方法。
58.基于本技术的上述各实施例,算法集合中的任意算法都可以响应于算法启用请求而被部署到被指定为目标设备的电子设备,并且,被指定为目标设备的电子设备被允许并行执行至少两种算法,因此,可以实现算法在电子设备的动态部署。而且,被部署到电子设备的算法都经过算法的资源消耗与电子设备的可用资源的匹配度校验,因而有助于确保电子设备具有足以使部署的每个算法达预期性能的可用算力资源,从而,在实现算法动态部署的基础上有助于确保算法在电子设备产生预期的性能。
59.另外,电子设备能够以各算法均达到预期性能为目标,对至少两个算法对算力资源的占用实施调度控制,以通过兼顾各算法的差异化需求而协调算力资源的分配,进一步确保算法在电子设备产生预期的性能。
附图说明
60.以下附图仅对本技术做示意性说明和解释,并不限定本技术的范围:
61.图1为本技术一实施例提供的应用多算法的系统的示例性结构示意图;
62.图2为如图1所示系统中的电子设备的示例性结构示意图;
63.图3为如图1所示系统中的算法部署实例的示意图;
64.图4为如图1所示系统中的电子设备中并行运行算法的示意图;
65.图5为如图1所示系统中的电子设备对多个算法进行并行调度的实例示意图;
66.图6为本技术另一实施例提供的算法部署方法的示例性流程示意图;
67.图7为本技术另一实施例提供的算法调度方法的示例性流程示意图;
68.图8为本技术另一实施例提供的算法部署装置的示例性结构示意图;
69.图9为本技术另一实施例提供的算法调度装置的示例性结构示意图。
具体实施方式
70.为了使本技术的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本技术作进一步详细说明。
71.图1为本技术一实施例提供的应用多算法的系统的示例性结构示意图。请参见图1,该系统可以包括服务器110和电子设备120。
72.服务器110用于管理包含至少两个算法的算法集合,并且,还用于在电子设备120
部署算法。例如,该服务器110也可以被称为算法管理服务器。由服务器110管理的算法集合中的每个算法可以呈算法包的形态存放在服务器110中、或者可被服务器110访问的存储设备中。例如,算法包中可以包含算法的模型二进制文件、算法动态库文件、算法进程执行文件、算法配置文件。
73.电子设备120可以是例如摄像机、门禁终端、指纹机等前端设备,在图1中,以存在至少两台电子设备120为例,至少两台电子设备120可以是彼此相同的、或者也可以是互不相同的前端设备,并且,至少两台电子设备120可以部署在相同的物理区域(例如同一居室内部署不同类型的前端设备),或者,至少两台电子设备120也可以分别部署在不同的物理区域(例如针对不同位置的监控区域而部署的摄像机、或针对不同位置的通行区域而部署的门禁终端)。
74.电子设备120用于部署服务器110下发的算法,并且,电子设备120中允许部署至少两个算法、并且有能力并行执行至少两个算法。电子设备120通过运行部署的算法,可以实现该算法对应的智能化功能。例如,以电子设备120为摄像机为例,在其部署的算法可以包括行人检测算法、跌倒识别算法等,以助于摄像机在实现图像拍摄的基本功能的基础上进一步具有行人检测和跌倒识别等智能化功能。
75.由于提供智能化功能的算法的计算复杂度较高,因此,电子设备120在运行部署的算法时,不但需要调用例如cpu等处理器的处理资源,而且对于算法的某些计算过程还需要调用专用的算力资源。
76.图2为如图1所示系统中的电子设备的示例性结构示意图。请参见图2,电子设备120可以配备独立于处理器210的ai(artificial intelligence,人工智能)芯片220,该ai芯片220运行有soc(systemonchip,片上系统),算法的某些计算过程会由处理器210转交给ai芯片220、并由ai芯片220的soc执行例如推理等复杂处理。soc的处理能力决定了电子设备120对算法的算力水平,因此,ai芯片220的soc可以看作是电子设备120的算力资源。
77.而且,如图2所示,电子设备120还可以包括例如图像传感器和/或音频采集器等数据采集模组230、用于电子设备120与服务器110以有线或无线方式交互的通讯模组240、内存250、用于存放已部署算法的算法包的算法存储器260、以及用于存放设备主程序的非瞬时计算机可读存储介质200。其中,该内存250可以包括os(operating system,操作系统)内存和媒体内存,该算法存储器260可以是非易失性存储器,例如闪存(flash)。
78.请回看图1,在图1中还示出了客户端130,客户端130可以通过运行应用程序而访问服务器110,客户端130可以是移动终端、个人电脑等任意一种能够运行应用程序、并能够访问服务器110的处理设备。
79.并且,通过访问服务器110,客户端130可以发起算法集合中的任意算法在任意电子设备120的启用和停用。
80.对于发起任意算法在任意电子设备120的启用的情况,客户端130可以向服务器发起算法启用请求,该算法启用请求意图在目标设备部署目标算法(该算法启用请求中可以携带目标算法的算法标识和目标设备的设备标识),其中,目标设备是指客户端130在至少两台电子设备120中选定的任意电子设备,目标算法为算法集合中尚未部署在该目标设备的任意算法。并且,目标设备(即任意一台电子设备120)允许至少两种算法的并行执行,因此,客户端130可以发起至少两个算法在目标设备的启用,例如,客户端130每次发送的算法
启用请求意图在目标设备部署一个目标算法、以通过多次发起算法启用请求来实现至少两个算法在目标设备的部署,或者,客户端130单次发送的算法启用请求也可以意图在目标设备同时部署至少两个目标算法、以通过以此发起算法启用请求实现至少两个算法在目标设备的部署。
81.服务器110对于客户端130发起的算法启用请求会进行校验,以保证算法启用请求的部署意图,不会导致被选定为目标设备的电子设备120的算力资源不足以承担意图部署的目标算法对算力资源的需求。
82.而且,每个电子设备120中的算法可以包括由服务器110根据不同的算法启用请求而部署的目标算法,即,各电子设备120的算法部署是彼此独立的、且动态可调整的。
83.具体地,服务器110可以被配置为:
84.响应于意图在目标设备部署目标算法的算法启用请求,校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度,其中,该目标设备为从至少两台电子设备中选定的任意电子设备,该目标设备允许至少两种算法的并行执行,并且,该目标算法为算法集合中尚未部署在目标设备的任意算法;
85.响应于目标设备的可用资源足与目标算法的资源消耗匹配成功的校验结果,将目标算法部署到目标设备(例如,服务器110向目标设备主动下发目标算法、或者服务器110通知目标设备发起目标算法从该服务器110的下载),其中,可用资源足与资源消耗的匹配成功至少表示:目标设备具有足以使目标算法达预期性能的可用算力资源。
86.为实现目标设备当前的可用资源与目标算法所需的资源消耗的匹配度的校验,服务器110可以被具体配置为:
87.确定目标算法对目标设备的算力资源消耗、以及目标设备当前的可用算力资源;
88.确定算力资源消耗和可用算力资源的算力资源匹配度;
89.基于算力资源匹配度,校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度。
90.其中,目标算法对目标设备的算力资源消耗可以是根据目标算法的单次运行时长、目标算法为达预期性能而在单位时间内的期望运行次数、以及目标设备的总算力资源确定的。
91.例如,目标算法对目标设备的算力资源消耗可以根据:目标算法的单次运行时长和目标算法为达预期性能而在单位时间内的期望运行次数的乘积的归一化值、以及目标设备的总算力资源确定。若以目标算法在目标设备运行所需占用的算力资源消耗表示为h,目标算法运行一次消耗的单次运行时长表示为t、目标算法为达到预期性能而在单位时间内运行的期望运行次数表示为f、目标设备的总算力资源表示为h
all
,则,目标算法对目标设备的算力资源消耗的确定方式可以表示为如下的表达式:
[0092][0093]
其中,上述表达式中的“1000”表示归一化系数,该归一化系数的取值不限于1000;目标算法运行一次消耗的单次运行时长的单位可以为ms(毫秒);并且,若目标算法为针对图像数据的算法,则,目标算法为达到预期性能而在单位时间内运行的期望运行次数f可以为目标算法对图像数据的期望帧率。
[0094]
例如:一个图像算法a的单帧分析时间(即单次运行时长)为0.08s,该图像算法a达到预期性能时的期望帧率为不低于5fps(每秒传输帧数),目标设备的总算力资源为1tops(teraoperationspersecond,每秒一万亿次操作),则该图像算法a在目标设备运行所需占用的算力资源消耗为0.08
×5×
1=0.4tops。
[0095]
相应地,被选定为目标设备的电子设备120可以被配置为(以下配置可以由电子设备120的处理器210运行的算法进程来实现):
[0096]
为下发到目标设备的至少两个算法分别创建独立的线程,其中,至少两个算法中的每个算法,是在经过算法的资源消耗与目标设备的可用资源的匹配度校验后下发到目标设备的,即,至少两个算法都曾作为目标算法被服务器110执行可用资源和资源消耗的匹配度校验,并且,可用资源足与资源消耗的匹配成功至少表示:目标设备具有足以使每个算法达预期性能的可用算力资源;
[0097]
在至少两个算法分别被不同的线程并行执行的期间内,为至少两个算法对目标设备的算力资源的占用实施调度控制。
[0098]
基于上述实施例,算法集合中的任意算法都可以响应于算法启用请求而被部署到被指定为目标设备的电子设备120,并且,被指定为目标设备的电子设备120被允许并行执行至少两种算法,因此,可以实现算法在电子设备的动态部署。而且,被部署到电子设备120的算法都经过服务器110对算法的资源消耗与电子设备120的可用资源的匹配度校验,因而有助于确保电子设备120具有足以使部署的每个算法达预期性能的可用算力资源,从而,在实现算法动态部署的基础上有助于确保算法在电子设备120产生预期的性能。
[0099]
作为一种进一步的扩展,服务器110在校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度时,可以进一步考虑存储资源的匹配度,即,该校验过程可以进一步包括:
[0100]
确定目标算法对目标设备的算法包存储空间(即算法存储器260的可用存储空间)和内存中的至少一种存储资源的存储资源消耗、以及目标设备的存储资源中当前的可用存储资源;
[0101]
确定存储资源消耗和可用存储资源的存储资源匹配度;
[0102]
其中,对目标设备当前的可用资源与目标算法所需的资源消耗的匹配度的校验,是进一步依据存储资源匹配度执行的;
[0103]
在此情况下,可用资源足与资源消耗的匹配成功可以进一步表示:目标设备具有足以供目标算法安装和运行的可用存储资源。
[0104]
也就是,目标算法的资源消耗可以包括算力资源消耗、并且还可以进一步包括存储资源消耗,并且,目标设备的可用资源可以包括可用算力资源、并且还可以进一步包括可用存储资源。
[0105]
其中,为了确定目标算法的资源消耗,服务器110可以被配置为进一步基于在算法数据库中的查询结果,确定目标算法的资源消耗,其中,算法包数据库中可以为每个算法包对应地维护资源使用信息。
[0106]
每个算法包的资源使用信息中,可以包括该算法包支持的算法所需的算力资源消耗、并且可以进一步包含该算法包支持的算法所需的存储资源消耗。在前文中提到的算力资源消耗的确定方式中,涉及目标设备的总算力资源h
all
,由于不同的目标设备的总算力资
源可能是互不相同的,因此,资源使用信息中包含的算法资源消耗可以包括该算法包支持的算法针对不同总算力资源确定的算力资源消耗,以供服务器110根据检测到的目标设备的总算力资源来选择获取匹配的算法资源消耗。
[0107]
或者,每个算法包的资源使用信息中,可以用目标算法运行一次消耗的单次运行时长t、以及目标算法为达到预期性能而在单位时间内运行的期望运行次数f来替代算力资源消耗,若如此,则服务器110可以结合检测到的目标设备的总算力资源自行计算确定目标算法在目标设备的算力资源消耗h
all

[0108]
对于目标设备当前的可用资源,服务器110可以从目标设备获取。例如,服务器110可以通过api(application programming interface,应用程序接口)调用的方式获取目标设备的可用资源。
[0109]
图3为如图1所示系统中的算法部署实例的示意图。请参见图3,对于生产出的每个算法来说,其算法包可以被发布到算法包数据库300中,该算法包数据库300可以布置在如图1所示的服务器110内、或者也可以布置在独立于服务器110之外的存储设备内,并且,在算法包数据库300中存储有算法包的所有算法,可以认为是前文提及的算法集合。另外,随着算法包的发布,对应算法的资源消耗也可以以资源使用信息的形式报备至算法包数据库300中。
[0110]
仍参见图3,在s310,服务器110可以获取到客户端130发起的算法启用请求(其可以表示使用客户端130的用户下发的算法部署任务);在s320,响应于客户端130每次发起的算法启用请求,服务器110可以基于从算法包服务器300的查询结果,确定目标算法的资源消耗;在s330,服务器110可以从目标设备(即任意一台电子设备120)查询其当前的可用资源;然后,服务器110校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度。
[0111]
若校验结果表示目标设备的可用资源足与目标算法的资源消耗匹配成功,例如目标设备的每种可用资源均不低于目标算法对该种资源的资源消耗,则,在s340,将该目标算法部署到目标设备。
[0112]
若校验结果表示目标设备的可用资源足与目标算法的资源消耗匹配失败,例如目标设备的至少一种可用资源均低于目标算法对该种资源的资源消耗,则,在s350,向客户端130返回失败响应,并且,该失败响应可以进一步提示失败的原因为资源不足,以供使用客户端130的用户通过停用算法的方式增加目标设备的可用资源、或放弃目标算法在目标设备的部署。
[0113]
在需要在任意电子设备120停用算法的情况下,客户端130可以以该电子设备120为目标设备、并以待停用的算法为目标算法,向服务器110发出意图在算法停用请求(该算法停用请求中可以携带目标算法的算法标识和目标设备的设备标识)。
[0114]
以目标设备的可用资源足与目标算法的资源消耗匹配为条件的校验,是为了确保在被选定为目标设备的每台电子设备120部署的所有算法的资源消耗不会超过该电子设备120所能够提供的可用资源的资源量,理论上,只要对算法的数据供应满足该算法为达预期性能而在单位时间内的期望运行次数,就可以保证电子设备120部署的所有算法都能够产生预期性能。
[0115]
其中,对算法的数据供应满足该算法为达预期性能而在单位时间内的期望运行次数,电子设备120(例如处理器210运行的主线程)进一步被配置为:在为下发到该电子设备
120的至少两个算法分别创建独立的线程之后,分别为执行每个算法的线程创建数据通道,其中,为每个线程创建的数据通道用于以该算法为达预期性能而在单位时间内的期望运行次数向该线程推送数据,例如,对于数据为图像数据的情况,该算法为达预期性能而在单位时间内的期望运行次数可以为期望帧率。
[0116]
图4为如图1所示系统中的电子设备中并行运行算法的示意图。请参见图4,电子设备120的处理器210中可以运行设备固件400、算法进程410以及由算法进程410为并行执行至少两个算法而创建的线程420。可以理解的是,图4中仅仅是以分别执行4个算法(即算法a~d)的4个线程420为例,但如图4所示的数量并不构成算法数量、以及与算法数量相同的线程数量的不必要的限定。
[0117]
其中,设备固件400用于提供加载算法包、通知算法线程410启停算法、为算法(即线程420)提供待分析的数据、算法(即线程420)分析结果的上报、以及诸如音视频编解码等媒体处理的各类基础能力;算法进程420用于与设备固件400进行进程间交互,并通过对线程420的控制实施对多个算法的调度;每一个算法在算法进程410创建的一个线程420中执行,从而允许多个算法的并行执行。
[0118]
基于上述的架构,为每个线程420创建的数据通道可以是设备固件400和该线程420之间用于为算法提供待分析的数据的通道。并且,为了分别为执行每个算法的线程420创建数据通道,电子设备120(例如处理器210运行的主线程)可以被具体配置为:在该电子设备120的内存250中,分别为执行每个算法的线程420分配用作数据通道的内存空间,其中,向每个线程420的推送的数据(例如图像数据),由该电子设备120的设备固件400存入至用作该线程的数据通道的内存空间内。
[0119]
但在实际应用中,由于受到带宽、处理器(例如cpu)使用率等因素的影响,即便对算法的数据供应满足该算法为达预期性能而在单位时间内的期望运行次数,至少两个算法在电子设备120的运行可能会偏离于理想状态,由此导致至少两个算法在电子设备的并行执行存在对算力资源的竞争(例如并行执行的至少两个算法的数据推理由ai芯片220的soc串行处理),并且,这样的竞争可能导致其中的某些算法的性能无法达到预期水平。
[0120]
例如,算法a的分析速度比算法b的分析速度慢,并且,算法a的性能对帧率的敏感度高于算法b的性能对帧率的敏感度,在并行执行的算法a和算法b存在对算力资源的竞争的情况下,分析速度更快的算法b可能比算法a更容易抢占算力资源(例如串行处理推理需求的soc),导致算法a的处理速度受算法b对算力资源的抢占而进一步变慢,由此导致算法a的处理速度达不到期望帧率,从而导致对帧率更为敏感的算法a的性能达不到预期水平。
[0121]
为了解决由于可能存在的竞争而导致算法的性能达不到预期水平的问题,在本技术的实施例中,电子设备120(例如处理器210运行的主线程)为至少两个算法对该电子设备120的算力资源的占用实施的调度控制,以至少两个算法均达到预期性能为目标。
[0122]
若电子设备120能够以各算法均达到预期性能为目标,对至少两个算法对算力资源的占用实施调度控制,则,可以通过兼顾各算法的差异化需求而协调算力资源的分配,以进一步确保算法在电子设备产生预期的性能。
[0123]
具体地,为了以至少两个算法均达到预期性能为目标,对电子设备120的算力资源的占用实施调度控制,电子设备120(例如运行于处理器210的算法进程)可以被具体配置为:根据至少两个算法对算力资源的占用优先级,对电子设备120的算力资源的占用实施调
度控制。
[0124]
其中,每个算法对算力资源的占用优先级,可以是根据该算法为达预期性能而在单位时间内的期望运行次数的敏感度确定的。例如,若算法为针对图像数据的图像算法,则,该算法对算力资源的占用优先级可以是根据该算法对图像数据的帧率的敏感度确定的。
[0125]
例如,电子设备120(例如运行于处理器210的算法进程)可以被具体配置为:
[0126]
根据至少两个算法对算力资源的占用优先级,为执行每个算法的线程分配不同优先级的任务队列;
[0127]
其中,任务队列用于存放需要被算力资源处理的待处理算法任务,算力资源按照任务队列的优先级串行处理所有待处理算法任务,并且,每个待处理算法任务被算力资源处理后的任务数据被返回给所属算法的线程。
[0128]
图5为如图1所示系统中的电子设备对多个算法进行并行调度的实例示意图,如图5所示,以电子设备120的运行于处理器210的算法进程创建了两个任务队列为例,两个任务队列包括:第一任务队列510和第二任务队列520,其中,第一任务队列510的队列优先级高于第二任务队列520的任务优先级。
[0129]
在图5中,还以该电子设备120并行执行处理数据为图像数据的4个算法为例,这4个算法分别为:算法a~d。
[0130]
其中,算法a和算法d对帧率的敏感度高于算法b和算法c对帧率的敏感度,因此,算法a和算法d对算力资源的占用优先级高于算法b和算法c,并且,算法a和算法d被分配了优先级更高的第一任务队列510。由此,在算法a~d被并行执行的期间,算法a和算法d的数据处理任务将被放入高优先级的第一任务队列510;并且,算法b和算法c对帧率的敏感度相对低、并且具有比算法a和算法d更低的占用优先级,因此,在算法a~d被并行执行的期间,算法b和算法c的数据处理任务将被放入低优先级的第二任务队列520。
[0131]
相应地,ai芯片220的soc每当处理完当前的数据处理任务,都会先轮询高优先级的第一任务队列510,只要高优先级的第一任务队列510中有待处理的数据处理任务,就处理(例如硬件加速处理)第一任务队列510中的数据处理任务,只有高优先级的第一任务队列510中没有待处理的数据处理任务时,ai芯片220的soc才会处理低优先级的第二任务队列520中待处理的数据处理任务。
[0132]
例如:行人检测算法属于对多帧连续性要求不高的目标检测类算法,对帧率的敏感相对低(10fps或者5fps对检测结果影响不大);跌倒识别算法属于有时序的行为类算法,对帧率的敏感度相对高(一般要求不低于12fps,当低于8fps时,跌倒识别指标下降严重,严重时造成算法失效)。假如行人检测算法和跌倒识别算法同时在电子设备120中并行运行,并且,为执行行人检测算法的线程创建的数据通道满足期望帧率5fps、为执行跌倒识别算法的线程的数据通道满足期望帧率12.5fps,则:
[0133]
行人检测算法产生的用于行人检测的数据处理任务将进入到低优先级的第二任务队列520、跌倒识别算法产生的用于跌倒识别的数据处理任务将进入到高优先级的第一任务队列510,ai芯片220的soc在取数据处理任务时会先取高优先级的第一任务队列510中用于跌倒识别的数据处理任务,只有当高优先级的第一任务队列510中没有待处理的数据处理任务时,ai芯片220的soc才会取低优先级的第二任务队列520中用于行人检测的数据
处理任务。
[0134]
在一个优选实例中,每个算法的算法包中可以包括配置文件,该配置文件的配置信息中出了包含算法版本号之外,还可以进一步包含目标算法为达到预期性能而在单位时间内的期望运行次数(例如期望帧率)、以及目标算法在并行执行期间内对算力资源的占用优先级中的至少之一。
[0135]
相应地,服务器110为了将目标算法部署到作为目标设备的任意一台电子设备120,可以将目标算法的算法包下发到被选定为目标设备的该电子设备120,其中,算法包中包含配置文件,配置文件中包含的配置信息用于:在该电子设备120将目标算法与其他已部署算法并行执行的期间内,为目标算法与其他已部署算法对该电子设备120的资源占用提供调度参考。
[0136]
并且,电子设备120(例如运行于处理器210的算法进程)可以被具体配置为:
[0137]
从至少两个算法的算法包包含的配置文件中,获取至少两个算法为达到预期性能而在单位时间内的期望运行次数(例如期望帧率);
[0138]
从至少两个算法的算法包包含的配置文件中,获取至少两个算法对算力资源的占用优先级。
[0139]
图6为本技术另一实施例提供的算法部署方法的示例性流程示意图。请参见图6,该实施例中的算法部署方法可以适用于如图1所示的服务器,并且,该算法部署方法可以包括:
[0140]
s610:响应于意图在目标设备部署目标算法的算法启用请求,校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度,其中,目标设备允许至少两种算法的并行执行,并且,目标算法为算法集合中尚未部署在目标设备的任意算法。
[0141]
本步骤为了实施校验,可以进一步:
[0142]
从目标设备获取目标设备当前的可用资源;以及
[0143]
基于在算法数据库中的查询结果,确定目标算法对目标设备的资源消耗,其中,目标算法对目标设备的算力资源消耗可以是根据目标算法的单次运行时长、目标算法为达预期性能而在单位时间内的期望运行次数、以及目标设备的总算力资源确定的。例如,算力资源消耗是根据单次运行时长和期望运行次数的乘积的归一化值、以及总算力资源确定的,具体可以参见前述实施例中的表达式,此处不再赘述。
[0144]
s630:响应于目标设备的可用资源足与目标算法的资源消耗匹配成功的校验结果,将目标算法部署到目标设备,其中,可用资源足与资源消耗的匹配成功至少表示:目标设备具有足以使目标算法达预期性能的可用算力资源。
[0145]
例如,若目标设备包括处理器和智能芯片,则,目标设备的算力资源可以包括智能芯片的片上系统soc提供的处理资源。
[0146]
若校验结果表示目标设备的可用资源足与目标算法的资源消耗匹配失败,例如目标设备的至少一种可用资源均低于目标算法对该种资源的资源消耗,则,s630可以进一步返回失败响应,并且,该失败响应可以进一步提示失败的原因为资源不足,以提示用户通过停用算法的方式增加目标设备的可用资源、或放弃目标算法在目标设备的部署。
[0147]
基于如图6所示的流程,算法集合中的任意算法都可以响应于算法启用请求而被部署到被指定为目标设备的电子设备,并且,被指定为目标设备的电子设备被允许并行执
行至少两种算法,因此,可以实现算法在电子设备的动态部署。而且,被部署到电子设备的算法都经过算法的资源消耗与电子设备的可用资源的匹配度校验,因而有助于确保电子设备具有足以使部署的每个算法达预期性能的可用算力资源,从而,在实现算法动态部署的基础上有助于确保算法在电子设备产生预期的性能。
[0148]
作为一种可能的实施方式,如图6所示流程中的s610可以具体包括:
[0149]
确定目标算法对目标设备的算力资源消耗、以及目标设备当前的可用算力资源;
[0150]
确定算力资源消耗和可用算力资源的算力资源匹配度;
[0151]
基于算力资源匹配度,校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度。
[0152]
作为另一种可能的实施方式,如图6所示流程中的s610可以包括:
[0153]
确定目标算法对目标设备的算力资源消耗、以及目标设备当前的可用算力资源,并且,进一步确定目标算法对目标设备的算法包存储空间和内存中的至少一种存储资源的存储资源消耗、以及目标设备的存储资源中当前的可用存储资源;
[0154]
确定算力资源消耗和可用算力资源的算力资源匹配度,并且,进一步确定存储资源消耗和可用存储资源的存储资源匹配度;
[0155]
基于算力资源匹配度和存储资源匹配度,校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度。
[0156]
也就是,s610对目标设备当前的可用资源与目标算法所需的资源消耗的匹配度的校验,可以是进一步依据存储资源匹配度执行的,在此情况下,可用资源足与资源消耗的匹配成功进一步表示:目标设备具有足以供目标算法安装和运行的可用存储资源。
[0157]
对于同时基于算力资源匹配度和存储资源匹配度实施校验的情况:
[0158]
若目标设备的每种可用资源均不低于目标算法对该种资源的资源消耗,则,s610得到的校验结果表示目标设备的可用资源足与目标算法的资源消耗匹配成功;
[0159]
若目标设备的至少一种可用资源均低于目标算法对该种资源的资源消耗,则,s610得到的校验结果表示目标设备的可用资源足与目标算法的资源消耗匹配失败。
[0160]
另外,如图6所示的s630可以具体包括:将目标算法的算法包下发到目标设备,其中,算法包中包含配置文件,配置文件中包含的配置信息用于:
[0161]
在目标设备将目标算法与其他已部署算法并行执行的期间内,为目标算法与其他已部署算法对目标设备的资源占用提供调度参考。
[0162]
例如,算法包的配置信息可以包括目标算法为达到预期性能而在单位时间内的期望运行次数、以及目标算法在并行执行期间内对算力资源的占用优先级中的至少之一。
[0163]
若目标算法为针对图像数据的算法,则,期望运行次数可以为目标算法对图像数据的期望帧率,并且,目标算法在并行执行期间内对算力资源的占用优先级可以是根据目标算法对期望运行次数(例如帧率)的敏感度确定的。
[0164]
图7为本技术另一实施例提供的算法调度方法的示例性流程示意图。请参见图7,该实施例中的算法调度方法可以适用于如图2所示的电子设备120的处理器210中运行的算法进程(例如图4中示出的算法进程410),并且,该算法调度方法可以包括:
[0165]
s710:为下发到目标设备的至少两个算法分别创建独立的线程,其中,至少两个算法中的每个算法,是在经过算法的资源消耗与目标设备的可用资源的匹配度校验后下发到
目标设备的,并且,可用资源足与资源消耗的匹配成功至少表示:目标设备具有足以使每个算法达预期性能的可用算力资源。
[0166]
s730:在至少两个算法分别被不同的线程并行执行的期间内,为至少两个算法对目标设备的算力资源的占用实施调度控制。
[0167]
例如,若目标设备包括处理器和智能芯片,则,目标设备的算力资源可以包括智能芯片的片上系统soc提供的处理资源。
[0168]
基于如图7所示的流程,电子设备可以作为被选定的目标设备而被动态地部署算法,并且,电子设备被允许并行执行至少两种算法,因此,可以实现算法在电子设备的动态部署。而且,被部署到电子设备的算法都经过算法的资源消耗与电子设备的可用资源的匹配度校验,因而有助于确保电子设备具有足以使部署的每个算法达预期性能的可用算力资源,从而,在实现算法动态部署的基础上有助于确保算法在电子设备产生预期的性能。
[0169]
作为一种可能的实施方式,如图7所示流程中的s710可以在为下发到目标设备的至少两个算法分别创建独立的线程之后,进一步包括:分别为执行每个算法的线程创建数据通道,其中,为每个线程创建的数据通道用于以该线程执行的算法为达预期性能而在单位时间内的期望运行次数(例如期望帧率)向该线程推送数据(例如图像数据)。若算法包的配置文件中包含算法为达预期性能而在单位时间内的期望运行次数(例如期望帧率),则,s710可以从至少两个算法的算法包包含的配置文件中获取至少两个算法在单位时间内的期望运行次数(例如期望帧率)。
[0170]
例如,s710可以在目标设备的内存中,分别为执行每个算法的线程分配用作数据通道的内存空间,其中,向每个线程的推送的数据,由目标设备的设备固件存入至用作该线程的数据通道的内存空间内。
[0171]
可选地,进一步包括:从至少两个算法的算法包包含的配置文件中,获取至少两个算法的期望帧率。
[0172]
若如图7所示流程中的s730以至少两个算法均达到预期性能为目标,对目标设备的算力资源的占用实施调度控制,则,被选定目标设备的电子设备能够以各算法均达到预期性能为目标,对至少两个算法对算力资源的占用实施调度控制,以通过兼顾各算法的差异化需求而协调算力资源的分配,进一步解决算法之间对算力资源的竞争问题,以确保算法在电子设备产生预期的性能。
[0173]
为此,如图7所示流程中的s730可以包括:根据至少两个算法对算力资源的占用优先级,对目标设备的算力资源的占用实施调度控制。
[0174]
其中,每个算法对算力资源的占用优先级,可以是根据该算法为达预期性能而在单位时间内的期望运行次数的敏感度确定的。例如,若算法为针对图像数据的图像算法,则,该算法对算力资源的占用优先级可以是根据该算法对图像数据的帧率的敏感度确定的。若算法包的配置文件中包含算法对算力资源的占用优先级,则,s730可以从至少两个算法的算法包包含的配置文件中,获取至少两个算法的占用优先级。
[0175]
例如,如图7所示流程中的s730可以具体包括:根据至少两个算法对算力资源的占用优先级,为执行每个算法的线程分配不同优先级的任务队列;其中,任务队列用于存放需要被算力资源处理的待处理算法任务,算力资源按照任务队列的优先级串行处理所有待处理算法任务,并且,每个待处理算法任务被算力资源处理后的任务数据被返回给所属算法
的线程。
[0176]
图8为本技术另一实施例提供的算法部署装置的示例性结构示意图。请参见图8,该实施例中的算法部署装置可以包括请求校验模块810和请求响应模块830。
[0177]
请求校验模块810可以被配置为:响应于意图在目标设备部署目标算法的算法启用请求,校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度,其中,目标设备允许至少两种算法的并行执行,并且,目标算法为算法集合中尚未部署在目标设备的任意算法。
[0178]
在一种可能的实施方式中,请求校验模块810为了实施校验,可以被具体配置为:
[0179]
从目标设备获取目标设备当前的可用资源;以及
[0180]
基于在算法数据库中的查询结果,确定目标算法对目标设备的资源消耗,其中,目标算法对目标设备的算力资源消耗可以是根据目标算法的单次运行时长、目标算法为达预期性能而在单位时间内的期望运行次数、以及目标设备的总算力资源确定的。例如,算力资源消耗是根据单次运行时长和期望运行次数的乘积的归一化值、以及总算力资源确定的,具体可以参见前述实施例中的表达式,此处不再赘述。
[0181]
请求响应模块830可以被配置为:响应于可用资源足与资源消耗匹配成功的校验结果,将目标算法部署到目标设备,其中,可用资源足与资源消耗的匹配成功至少表示:目标设备具有足以使目标算法达预期性能的可用算力资源。例如,若目标设备包括处理器和智能芯片,则,目标设备的算力资源可以包括智能芯片的片上系统soc提供的处理资源。
[0182]
若校验结果表示目标设备的可用资源足与目标算法的资源消耗匹配失败,例如目标设备的至少一种可用资源均低于目标算法对该种资源的资源消耗,则,请求响应模块830可以进一步返回失败响应,并且,该失败响应可以进一步提示失败的原因为资源不足,以提示用户通过停用算法的方式增加目标设备的可用资源、或放弃目标算法在目标设备的部署。
[0183]
基于如图8所示的算法部署装置,算法集合中的任意算法都可以响应于算法启用请求而被部署到被指定为目标设备的电子设备,并且,被指定为目标设备的电子设备被允许并行执行至少两种算法,因此,可以实现算法在电子设备的动态部署。而且,被部署到电子设备的算法都经过算法的资源消耗与电子设备的可用资源的匹配度校验,因而有助于确保电子设备具有足以使部署的每个算法达预期性能的可用算力资源,从而,在实现算法动态部署的基础上有助于确保算法在电子设备产生预期的性能。
[0184]
作为一种可能的实施方式,如图8所示流程中的请求校验模块810可以被具体配置为:
[0185]
确定目标算法对目标设备的算力资源消耗、以及目标设备当前的可用算力资源;
[0186]
确定算力资源消耗和可用算力资源的算力资源匹配度;
[0187]
基于算力资源匹配度,校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度。
[0188]
作为另一种可能的实施方式,如图8所示流程中的请求校验模块810可以被具体配置为:
[0189]
确定目标算法对目标设备的算力资源消耗、以及目标设备当前的可用算力资源,并且,进一步确定目标算法对目标设备的算法包存储空间和内存中的至少一种存储资源的
存储资源消耗、以及目标设备的存储资源中当前的可用存储资源;
[0190]
确定算力资源消耗和可用算力资源的算力资源匹配度,并且,进一步确定存储资源消耗和可用存储资源的存储资源匹配度;
[0191]
基于算力资源匹配度和存储资源匹配度,校验目标设备当前的可用资源与目标算法所需的资源消耗的匹配度。
[0192]
也就是,请求校验模块810对目标设备当前的可用资源与目标算法所需的资源消耗的匹配度的校验,可以是进一步依据存储资源匹配度执行的,在此情况下,可用资源足与资源消耗的匹配成功进一步表示:目标设备具有足以供目标算法安装和运行的可用存储资源。
[0193]
对于同时基于算力资源匹配度和存储资源匹配度实施校验的情况:
[0194]
若目标设备的每种可用资源均不低于目标算法对该种资源的资源消耗,则,请求校验模块810得到的校验结果表示目标设备的可用资源足与目标算法的资源消耗匹配成功;
[0195]
若目标设备的至少一种可用资源均低于目标算法对该种资源的资源消耗,则,请求校验模块810得到的校验结果表示目标设备的可用资源足与目标算法的资源消耗匹配失败。
[0196]
另外,如图8所示的请求应答模块830可以被具体配置为:将目标算法的算法包下发到目标设备,其中,算法包中包含配置文件,配置文件中包含的配置信息用于:
[0197]
在目标设备将目标算法与其他已部署算法并行执行的期间内,为目标算法与其他已部署算法对目标设备的资源占用提供调度参考。
[0198]
例如,算法包的配置信息可以包括目标算法为达到预期性能而在单位时间内的期望运行次数、以及目标算法在并行执行期间内对算力资源的占用优先级中的至少之一。
[0199]
若目标算法为针对图像数据的算法,则,期望运行次数可以为目标算法对图像数据的期望帧率,并且,目标算法在并行执行期间内对算力资源的占用优先级可以是根据目标算法对期望运行次数(例如帧率)的敏感度确定的。
[0200]
图9为本技术另一实施例提供的算法调度装置的示例性结构示意图。请参见图9,该实施例中的算法调度装置可以包括线程创建模块910和调度控制模块930。
[0201]
线程创建模块910可以被配置为:为下发到目标设备的至少两个算法分别创建独立的线程,其中,至少两个算法中的每个算法,是在经过算法的资源消耗与目标设备的可用资源的匹配度校验后下发到目标设备的,并且,可用资源足与资源消耗的匹配成功至少表示:目标设备具有足以使每个算法达预期性能的可用算力资源。
[0202]
调度控制模块930可以被配置为:在至少两个算法分别被不同的线程并行执行的期间内,为至少两个算法对目标设备的算力资源的占用实施调度控制。例如,若目标设备包括处理器和智能芯片,则,目标设备的算力资源可以包括智能芯片的片上系统soc提供的处理资源。
[0203]
基于如图9所示的算法调度装置,电子设备可以作为被选定的目标设备而被动态地部署算法,并且,电子设备被允许并行执行至少两种算法,因此,可以实现算法在电子设备的动态部署。而且,被部署到电子设备的算法都经过算法的资源消耗与电子设备的可用资源的匹配度校验,因而有助于确保电子设备具有足以使部署的每个算法达预期性能的可
用算力资源,从而,在实现算法动态部署的基础上有助于确保算法在电子设备产生预期的性能。
[0204]
作为一种可能的实施方式,如图9所示的线程创建模块910可以被进一步配置为:在为下发到目标设备的至少两个算法分别创建独立的线程之后,分别为执行每个算法的线程创建数据通道,其中,为每个线程创建的数据通道用于以该线程执行的算法为达预期性能而在单位时间内的期望运行次数(例如期望帧率)向该线程推送数据(例如图像数据)。若算法包的配置文件中包含算法为达预期性能而在单位时间内的期望运行次数(例如期望帧率),则,线程创建模块910可以从至少两个算法的算法包包含的配置文件中获取至少两个算法在单位时间内的期望运行次数(例如期望帧率)。
[0205]
例如,线程创建模块910可以在目标设备的内存中,分别为执行每个算法的线程分配用作数据通道的内存空间,其中,向每个线程的推送的数据,由目标设备的设备固件存入至用作该线程的数据通道的内存空间内。
[0206]
可选地,进一步包括:从至少两个算法的算法包包含的配置文件中,获取至少两个算法的期望帧率。
[0207]
若如图9所示的调度控制模块930以至少两个算法均达到预期性能为目标,对目标设备的算力资源的占用实施调度控制,则,被选定目标设备的电子设备能够以各算法均达到预期性能为目标,对至少两个算法对算力资源的占用实施调度控制,以通过兼顾各算法的差异化需求而协调算力资源的分配,进一步解决算法之间对算力资源的竞争问题,以确保算法在电子设备产生预期的性能。
[0208]
为此,如图9所示的调度控制模块930可以被具体配置为:根据至少两个算法对算力资源的占用优先级,对目标设备的算力资源的占用实施调度控制。
[0209]
其中,每个算法对算力资源的占用优先级,可以是根据该算法为达预期性能而在单位时间内的期望运行次数的敏感度确定的。例如,若算法为针对图像数据的图像算法,则,该算法对算力资源的占用优先级可以是根据该算法对图像数据的帧率的敏感度确定的。若算法包的配置文件中包含算法对算力资源的占用优先级,则,调度控制模块930可以从至少两个算法的算法包包含的配置文件中,获取至少两个算法的占用优先级。
[0210]
例如,如图9所示的调度控制模块930可以被具体配置为:根据至少两个算法对算力资源的占用优先级,为执行每个算法的线程分配不同优先级的任务队列;其中,任务队列用于存放需要被算力资源处理的待处理算法任务,算力资源按照任务队列的优先级串行处理所有待处理算法任务,并且,每个待处理算法任务被算力资源处理后的任务数据被返回给所属算法的线程。
[0211]
在本技术的另一个实施例中,提供了一种服务器,该服务器可以用作如图1所示的服务器110、并且可以包括处理器,该处理器用于执行如前述实施例中如图6所示的算法部署方法。
[0212]
在本技术的另一个实施例中,提供了一种电子设备,该电子设备可以被用作如图1所示的电子设备120,并且,该电子设备包括处理器(例如如图2所示的处理器210)和智能芯片(例如如图2所示的ai芯片220),该处理器用于将电子设备作为目标设备执行如前述实施例中如图7所示的算法调度方法,并且,该电子设备的算力资源包括智能芯片的片上系统soc提供的处理资源。
[0213]
在本技术的另一个实施例中,提供了一种非瞬时计算机可读存储介质,非瞬时计算机可读存储介质存储指令,指令在由处理器执行时使得处理器执行如前述实施例中如图6所示的算法部署方法、或执行如前述实施例中如图7所示的算法调度方法。
[0214]
在本技术的另一个实施例中,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现如前述实施例中如图6所示的算法部署方法、或执行如前述实施例中如图7所示的算法调度方法。
[0215]
以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1