一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

人工智能模型的算子调度方法、装置、设备及存储介质与流程

2022-07-13 20:22:05 来源:中国专利 TAG:


1.本技术涉及数据处理技术领域,尤其涉及一种人工智能模型的算子调度方法、装置、设备及存储介质。


背景技术:

2.目前,对人工智能模型的算子进行调度采取的策略大多根据算子队列中的已有的算子数量将目标算子放入队列中,该调度策略的缺陷是当算子队列中某个算子的运行时间比队列中其他算子的运行时间较长时,该算子将会导致该队列中位于该算子后面的其他算子的有较长的等待时间,从而增大后续所有算子的推理延迟,且由于一个app中的深度学习神经网络的多个算子可能会分布到多个不同的队列中,一个网络中多个算子之间可能还有依赖关系,如果算子之间还做了同步的话,一个需要较长时间完成的算子不仅会阻塞本队列中的算子任务,可能还会阻塞其他队列中的算子任务,从而造成大部分网络的推理延迟增加。
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.本技术提出的人工智能模型的算子调度方法、装置、设备及存储介质,将深度学习推理模型的每个目标算子的参考运行时长纳入调度的考虑范围,根据算子队列的预期排队时间以及每个目标的参考运行时长进行调度,可以最大限度的均衡各个算子队列中的算子,从而最大限度的均衡各个推理引擎上的推理负载,让各个app对应的模型推理延迟趋于均衡,有效地避免了按照算子队列中的算子数量进行调度导致的推理延迟扩散问题,减少了每个目标算子的等待时间,提高了整个系统的ai推理效率。
附图说明
35.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
36.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
37.图1为本技术人工智能模型的算子调度方法较佳实施例的流程图示意图;
38.图2为本技术人工智能模型的算子调度装置较佳实施例的模块示意图;
39.图3为本技术电子设备较佳实施例的示意图;
40.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
41.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
42.本技术提供一种人工智能模型的算子调度方法。参照图1所示,为本技术人工智能模型的算子调度方法的实施例的方法流程示意图。该方法可以由一个电子设备执行,该电子设备可以由软件和/或硬件实现。人工智能模型的算子调度方法包括:
43.步骤s10:获取模型对应的每个目标算子的参考运行时长;
44.步骤s20:基于预先构建的多个算子队列中的算子数量及算子的预期排队时长,计算每个算子队列的预期排队时间;
45.步骤s30:基于所述参考运行时长及每个算子队列的预期排队时间,将每个目标算子分别添加至预期排队时间最短的算子队列。
46.ai推理芯片一般集成了cpu、gpu、video decoder/encoder、ai engine等多种硬件资源,由于目前推理应用的复杂性以及ai engine设计的复杂性,一般会选择先设计ai engine的ip核,然后在soc级别例化多个ip核,从而达到灵活配置ai算力以及简化ip设计的目的。
47.ai推理芯片根据算力需求会配置多个ai engine。当一个soc芯片上有多个ai engine时,为了最大效率地利用每个ai engine,会有一个负责调度的呈现出负责调度,调度是在op层次,即算子层次进行的,在人工智能领域中,深度学习推理模型的卷积是一个算子,pooling是一个算子,relu也是一个算子。ai engine是硬件推理引擎,算子队列是某个ai engine的任务队列。
48.本实施例中,一个深度学习推理模型有对应的多个目标算子,获取每个目标算子对应的参考运行时长可以是将每个目标算子在测试环境的运行时间作为参考运行时长,也可以将模型初次在相关平台的运行时间作为参考运行时间。再根据预先构建的多个算子队列中的算子数量来计算每个算子队列的预期排队时间,算子队列中可以有多个待执行的等待算子,每个等待算子可以有对应的运行时间,根据等待算子的运行时间相加可以作为算子队列的预期排队时间,最后根据目标算子的参考运行时长及每个算子队列的预期排队时
间,将每个目标算子分别添加至预期排队时间最短的算子队列。
49.本技术将深度学习推理模型的每个目标算子的参考运行时长纳入调度的考虑范围,根据算子队列的预期排队时间以及每个目标的参考运行时长进行调度,能够最大限度的均衡各个ai engine上的推理负载,让各个app对应的模型推论延迟趋于均衡,有效地避免了按照算子队列中的算子数量进行调度导致的推理延迟扩散问题,减少了每个目标算子的等待时间,提高了整个系统的ai推理效率。
50.在一个实施例中,所述获取模型对应的每个目标算子的参考运行时长,包括:
51.获取所述模型在预设运行环境中的运行数据,从所述运行数据中读取所述模型对应的目标算子的运行时间作为目标算子的参考运行时长。
52.获取深度学习推理模型的每个目标算子的参考运行时长可以是模型初次在平台运行时,获取到每个目标算子的运行时间作为参考运行时间。具体地,利用ai编译器将通用平台训练的模型转换为平台专用的模型表示,准备只有一个app、一个网络运行的运行环境,将平台专用的模型输入至该运行环境中,可以收集模型每个目标算子的运行数据,从运行数据中读取目标算子的运行时间作为参考运行时长,进一步地,还可以汇总每个目标算子的参考运行时长,将汇总数据填充到平台专用模型的对应部分,生成带有目标算子参考运行时间的平台专用模型。
53.在一个实施例中,所述基于预先构建的多个算子队列中的算子数量及算子的预期排队时长,计算每个算子队列的预期排队时间,包括:
54.为每个算子队列赋予初始等待时间值,将算子队列中每个算子的预期等待时长与算子队列的初始等待时间值相加,得到算子队列的预期排队时间。
55.每个算子队列中包括多个等待的算子,在计算每个算子队列的预期排队时间时,可以为每个算子队列赋予相同或不同的初始等待时间值,将算子队列中每个等待的算子的预期等待时长与该算子队列的初始等待时间值相加,可以得到该算子队列的预期排队时间。模型的目标算子加入算子队列时,可以将该目标算子的参考运行时长增加到该算子队列的预期排队时间。算子队列中的等待算子被执行离开队列后,可以将该算子队列的预期排队时间中减去等待算子的运行时间。
56.在一个实施例中,所述基于所述参考运行时长及每个算子队列的预期排队时间,将每个目标算子分别添加至预期排队时间最短的算子队列,包括:
57.基于每个算子队列的预期排队时间,对每个算子队列执行排序操作得到排序结果;
58.从所述排序结果中选取预期排队时间最短的算子队列;
59.添加一个目标算子至预期排队时间最短的算子队列。
60.根据每个算子队列的预期排队时间的长短,将每个算子队列的预期排队时间由小到大进行排序,可以从排序结果中选取预期排队时间最短的算子队列,将一个目标算子至添加至预期排队时间最短的算子队列中,可以减少目标算子的等待时间,提高系统的ai推论效率。例如,算子队列a、算子队列b和算子队列c的预期排队时间分别为70ms、80ms和100ms,则添加一个目标算子至预期排队时间最短的算子队列a中。
61.在一个实施例中,在将任意一个目标算子添加至预期排队时间最短的算子队列之后,所述方法还包括:
62.根据添加的目标算子的参考运行时长及每个算子队列中等待算子的执行情况,更新所有算子队列的预期排队时间;
63.从更新预期排队时间后的算子队列中选取出预期排队时间最短的算子队列;
64.添加一个目标算子至预期排队时间最短的算子队列,重复上述步骤直至将所有目标算子添加至算子队列。
65.由于算子队列中添加了目标算子,以及算子队列中的等待算子会被执行后离开队列,会使得算子队列的预期排队时间会发生变化,如果要将所有目标算子添加至队列中,在算子队列中添加了目标算子后,或者算子队列中的等待算子被执行离开队列后,均需要计算出预期排队时间最短的算子队列,因此可以根据添加的目标算子的参考运行时长及每个算子队列中等待算子的执行情况,更新所有算子队列的预期排队时间,即目标算子加入算子队列时,将该目标算子的参考运行时长增加到该算子队列的预期排队时间,算子队列中的等待算子被执行离开队列后,将该算子队列的预期排队时间中减去等待算子的运行时间。
66.再从更新预期排队时间后的算子队列中选取出预期排队时间最短的算子队列,添加一个目标算子至预期排队时间最短的算子队列,重复上述步骤直至将所有目标算子添加至算子队列。
67.由于每次将目标算子添加至目标队列时,均是将目标算子添加至当前预期排队时间最短的算子队列,可以最大限度的均衡各个算子队列中的算子,从而均衡各个ai engine上的推理负载,让各个app对应的深度学习网络的推理延迟趋于均衡,避免了按照队列长度进行调度导致的推理延迟的问题。
68.在一个实施例中,所述根据添加的目标算子的参考运行时长及每个算子队列中等待算子的执行情况,更新所有算子队列的预期排队时间,包括:
69.若算子队列中添加了目标算子,将目标算子的参考运行时长加上该算子队列未添加目标算子时的预期排队时间,作为该算子队列更新后的预期排队时间,例如,目标算子的参考运行时长为10ms,算子队列的预期排队时间50ms,目标算子加入该算子队列后,该算子队列更新后的预期排队时间为60ms。
70.若算子队列中有等待算子被执行,将该算子队列中未执行等待算子时的预期排队时间减去被执行的等待算子的运行时间,作为该算子队列更新后的预期排队时间,例如,等待算子的运行时间为10ms,算子队列的预期排队时间50ms,等待算子被执行离开出队列后,则该算子队列更新后的预期排队时间为40ms。
71.在一个实施例中,将模型的每个目标算子均添加至算子队列后,继续等待新的添加算子至算子队列的任务。
72.参照图2所示,为本技术人工智能模型的算子调度装置100的功能模块示意图。
73.本技术所述人工智能模型的算子调度装置100可以安装于电子设备中。根据实现的功能,所述人工智能模型的算子调度装置100可以包括获取模块110、计算模块120及调度模块130。本技术所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
74.在本实施例中,关于各模块/单元的功能如下:
75.获取模块110:用于获取模型对应的每个目标算子的参考运行时长;
76.计算模块120:用于基于预先构建的多个算子队列中的算子数量及算子的预期排队时长,计算每个算子队列的预期排队时间;
77.调度模块130:用于基于所述参考运行时长及每个算子队列的预期排队时间,将每个目标算子分别添加至预期排队时间最短的算子队列。
78.在一个实施例中,所述获取模型对应的每个目标算子的参考运行时长,包括:
79.获取所述模型在预设运行环境中的运行数据,从所述运行数据中读取所述模型对应的目标算子的运行时间作为目标算子的参考运行时长。
80.在一个实施例中,所述基于预先构建的多个算子队列中的算子数量及算子的预期排队时长,计算每个算子队列的预期排队时间,包括:
81.为每个算子队列赋予初始等待时间值,将算子队列中每个算子的预期等待时长与算子队列的初始等待时间值相加,得到算子队列的预期排队时间。
82.在一个实施例中,所述基于所述参考运行时长及每个算子队列的预期排队时间,将每个目标算子分别添加至预期排队时间最短的算子队列,包括:
83.基于每个算子队列的预期排队时间,对每个算子队列执行排序操作得到排序结果;
84.从所述排序结果中选取预期排队时间最短的算子队列;
85.添加一个目标算子至预期排队时间最短的算子队列。
86.在一个实施例中,调度模块140还用于:
87.根据添加的目标算子的参考运行时长及每个算子队列中等待算子的执行情况,更新所有算子队列的预期排队时间;
88.从更新预期排队时间后的算子队列中选取出预期排队时间最短的算子队列;
89.添加一个目标算子至预期排队时间最短的算子队列,重复上述步骤直至将所有目标算子添加至算子队列。
90.在一个实施例中,所述根据添加的目标算子的参考运行时长及每个算子队列中等待算子的执行情况,更新所有算子队列的预期排队时间,包括:
91.若算子队列中添加了目标算子,将目标算子的参考运行时长加上该算子队列未添加目标算子时的预期排队时间,作为该算子队列更新后的预期排队时间。
92.在一个实施例中,所述根据添加的目标算子的参考运行时长及每个算子队列中等待算子的执行情况,更新所有算子队列的预期排队时间,包括:
93.若算子队列中有等待算子被执行,将该算子队列中未执行等待算子时的预期排队时间减去被执行的等待算子的运行时间,作为该算子队列更新后的预期排队时间。
94.参照图3所示,为本技术电子设备1较佳实施例的示意图。
95.该电子设备1包括但不限于:存储器11、处理器12、显示器13及网络接口14。所述电子设备1通过网络接口14连接网络,获取原始数据。其中,所述网络可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(global system of mobile communication,gsm)、宽带码分多址(wideband code division multiple access,wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi、通话网络等无线或有线网络。
96.其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访
问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述电子设备1的内部存储单元,例如该电子设备1的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述电子设备1的外部存储设备,例如该电子设备1配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,所述存储器11还可以既包括所述电子设备1的内部存储单元也包括其外部存储设备。本实施例中,存储器11通常用于存储安装于所述电子设备1的操作系统和各类应用软件,例如人工智能模型的算子调度程序10的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
97.处理器12在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述电子设备1的总体操作,例如执行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行人工智能模型的算子调度程序10的程序代码等。
98.显示器13可以称为显示屏或显示单元。在一些实施例中显示器13可以是led显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(organic light-emitting diode,oled)触摸器等。显示器13用于显示在电子设备1中处理的信息以及用于显示可视化的工作界面,例如显示数据统计的结果。
99.网络接口14可选地可以包括标准的有线接口、无线接口(如wi-fi接口),该网络接口14通常用于在所述电子设备1与其它电子设备之间建立通信连接。
100.图3仅示出了具有组件11-14以及人工智能模型的算子调度程序10的电子设备1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
101.可选地,所述电子设备1还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(organic light-emitting diode,oled)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
102.该电子设备1还可以包括射频(radio frequency,rf)电路、传感器和音频电路等等,在此不再赘述。
103.在上述实施例中,处理器12执行存储器11中存储的人工智能模型的算子调度程序10时可以实现如下步骤:
104.获取模型对应的每个目标算子的参考运行时长;
105.基于预先构建的多个算子队列中的算子数量及算子的预期排队时长,计算每个算子队列的预期排队时间;
106.基于所述参考运行时长及每个算子队列的预期排队时间,将每个目标算子分别添加至预期排队时间最短的算子队列。
107.所述存储设备可以为电子设备1的存储器11,也可以为与电子设备1通讯连接的其它存储设备。
108.关于上述步骤的详细介绍,请参照上述图2关于人工智能模型的算子调度装置100实施例的功能模块图以及图1关于人工智能模型的算子调度方法实施例的流程图的说明。
109.此外,本技术实施例还提出一种计算机可读存储介质,所述计算机可读存储介质可以是非易失性的,也可以是易失性的。该计算机可读存储介质可以是硬盘、多媒体卡、sd卡、闪存卡、smc、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器等等中的任意一种或者几种的任意组合。所述计算机可读存储介质中包括存储数据区和存储程序区,存储程序区存储有人工智能模型的算子调度程序10,所述人工智能模型的算子调度程序10被处理器执行时实现如下操作:
110.获取模型对应的每个目标算子的参考运行时长;
111.基于预先构建的多个算子队列中的算子数量及算子的预期排队时长,计算每个算子队列的预期排队时间;
112.基于所述参考运行时长及每个算子队列的预期排队时间,将每个目标算子分别添加至预期排队时间最短的算子队列。
113.本技术之计算机可读存储介质的具体实施方式与上述人工智能模型的算子调度方法的具体实施方式大致相同,在此不再赘述。
114.需要说明的是,上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
115.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,电子装置,或者网络设备等)执行本技术各个实施例所述的方法。
116.以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献