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

推理引擎的适配方法、装置及电子设备与流程

2022-02-20 05:45:05 来源:中国专利 TAG:


1.本说明书实施例涉及人工智能技术领域,更具体的,涉及一种推理引擎的适配方法、一种推理引擎的适配装置、电子设备及计算机可读存储介质。


背景技术:

2.当前,越来越多的深度学习场景应用于aiot(artificial intelligence&internet of things,人工智能物联网),为了让深度学习模型在低成本方案上取得较好的效果,各公司开发了不同的推理引擎,这些推理引擎的侧重点各有不同。
3.推理引擎是用于深度学习模型推理的程序模块。有的推理引擎支持的深度学习模型比较全面,有的推理引擎只在图形处理器(graphics processing unit,gpu)端具有出众的效果。
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.图1示出了能够用于实施一个实施例的推理引擎的适配方法的一种终端设备的组成结构示意图;
34.图2是根据本说明书实施例的推理引擎的适配方法的流程示意图;
35.图3是可用于实施本说明书实施例的推理引擎的适配方法的架构图;
36.图4是可用于实施本说明书实施例的推理引擎的动态适配方法的流程图;
37.图5是可用于本说明书实施例的推理引擎的动态适配装置的原理框图;
38.图6是可用于实施本说明书实施例的电子设备的原理框图。
具体实施方式
39.现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本
发明的范围。
40.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
41.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
42.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
43.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
44.《应用场景》
45.随着手机算力的不断提升,以及深度学习的快速发展,特别是小网络模型不断成熟,原本在云端执行的推理预测就可以转移到端上来做。端智能即在端侧部署运行ai算法,相比服务端智能,端智能具有低延时、兼顾数据隐私、节省云端资源等优势。目前端智能已经在ai摄像、视觉特效等场景发挥了巨大价值。
46.在端侧加载深度神经网络模型以进行推理预测的深度神经网络推理引擎,目前已广泛应用多种应用程序中,覆盖了直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等应用场景,此外,在aiot等场景下也有若干应用。具体的,深度神经网络推理引擎在端侧负责加载网络模型,执行推理预测并返回相关结果,整个推理过程可以分为模型的加载解析、计算图的调度、在异构后端上高效运行三个阶段。
47.可知,端侧推理引擎是端侧智能应用的核心模块,需要在有限算力、有限内存等条件的限制下,高效地利用有限的资源,快速完成推理预测。基于此,本说明书实施例通过在端侧设置推理接口,并使该推理接口获取待推理数据;根据预设引擎适配策略,静态或动态地确定用于对所述待推理数据进行推理计算的推理引擎;然后调用所述推理引擎完成推理计算,输出推理结果数据。从而可以通过统一的推理接口实现深度学习模型的推理,而不用针对不同的推理引擎分别设计推理引擎接口,实现了推理接口的复用。
48.《硬件设备》
49.图1示出了能够用于实施一个实施例的推理引擎的适配方法的一种终端设备的组成结构示意图。
50.如图1所示,本实施例的终端设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800,等等。
51.其中,处理器1100用于执行程序指令,该程序指令可以采用比如x86、arm、risc、mips、sse等架构的指令集。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括usb接口、耳机接口等。通信装置1400例如能够进行有线或无线通信。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。扬声器1700用于输出语音信息。麦克风1800用于采集语音信息。
52.终端设备1000可以是智能手机、便携式电脑、台式计算机、平板电脑等任意设备。
53.本实施例中,终端设备1000的存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以支持实现根据本说明书任意实施例的推理引擎的适配方法。技术人
员可以根据本说明书所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
54.本领域技术人员应当理解,尽管在图1中示出了终端设备1000的多个装置,但是,本说明书实施例的终端设备1000可以仅涉及其中的部分装置,例如,只涉及处理器1100、存储器1200、显示装置1500、输入装置1600等。
55.图1所示的终端设备1000仅是解释性的,并且决不是为了要限制本说明书、其应用或用途。
56.《方法实施例》
57.图2是根据本说明书实施例的推理引擎的适配方法的流程示意图,该方法可以由终端设备实施,该终端设备例如是图1所示的终端设备1000。
58.如图2所示,本实施例的推理引擎的适配方法可以包括如下步骤2100~2300:
59.步骤2100,获取待推理数据。
60.具体的,该待推理数据例如可以是深度神经网络模型。
61.在本步骤之前,该终端设备1000可以先初始化多个待选择的推理引擎。例如图3中所示的,该待选择的推理引擎例如可以是用于深度学习推理优化的编译栈(tensor virtual machine,tvm)引擎,neuropliot引擎,或其他现有的推理引擎。
62.步骤2200,根据预设引擎适配策略,确定用于对所述待推理数据进行推理计算的推理引擎。
63.在本步骤中,该终端设备1000可以静态或动态的从多个待选择的推理引擎中选择不同的推理引擎,以执行推理计算。
64.在静态选择推理引擎的场景中,该待推理数据中可以根据先验知识指定使用特定的推理引擎,即,该终端设备1000具体可以将所述待推理数据所指定的推理引擎确定为用于对所述待推理数据进行推理计算的推理引擎。在该应用场景中,该终端设备使用指定的推理引擎完成推理计算。
65.例如,该待推理数据中指定使用tvm引擎进行推理计算,则该终端设备1000调用tvm引擎完成推理计算,输出推理结果数据。
66.在动态选择推理引擎的场景中,具体可以根据推理引擎类型或推理引擎的当前性能指标确定用于进行推理计算的推理引擎。
67.在一个例子中,该终端设备1000具体可以根据推理引擎类型确定用于对所述待推理数据进行推理计算的推理引擎。
68.例如,该终端设备1000可以从多个待选择的推理引擎中随机选择其中的一种推理引擎,例如选择neuropliot引擎进行推理计算。本实施例对此不作具体限定。
69.在另一个例子中,该终端设备1000具体可以根据推理引擎的当前性能指标,确定用于对所述待推理数据进行推理计算的推理引擎。其中,所述推理引擎的当前性能指标至少包括:所述推理引擎的当前推理速度,和/或,所述推理引擎的当前负载大小。
70.例如,有多个待选择的推理引擎,若该终端设备1000确定tvm引擎的推理速度比neuropliot引擎的推理速度快,则该终端设备1000可以将tvm引擎确定为用于对待推理数据进行推理计算的推理引擎。
71.又例如,有多个待选择的推理引擎,若该终端设备1000确定tvm引擎的负载比
neuropliot引擎的负载大,则该终端设备1000可以将neuropliot引擎确定为用于对待推理数据进行推理计算的推理引擎。
72.又例如,有多个待选择的推理引擎,若该终端设备1000确定tvm引擎的负载比neuropliot引擎的负载大,且tvm引擎的推理速度低于neuropliot引擎,从整体性能上来说,该neuropliot引擎的性能优于tvm引擎的性能,则该终端设备1000可以将neuropliot引擎确定为用于对待推理数据进行推理计算的推理引擎。
73.步骤2300,调用所述推理引擎完成推理计算,输出推理结果数据。
74.在确定好用于对所述待推理数据进行推理计算的推理引擎后,该终端设备1000调用所确定的推理引擎完成推理计算,从而输出推理结果数据。例如,可以通过调用命令来调用所确定的推理引擎完成推理计算,以商户处推理结果数据。
75.进一步地,在实际应用中,对于动态选择推理引擎的场景,该终端设备1000在调用所述推理引擎完成推理计算的过程,还可以实时监测各所述待选择的推理引擎的性能指标;若根据所述性能指标,确定出存在性能优于当前进行推理计算的推理引擎的新的推理引擎,则调用所述新的推理引擎继续进行推理计算;直至完成推理计算过程。
76.也就是说,该终端设备1000在进行推理计算的过程中,若发现待选择的推理引擎中除了当前推理引擎之外,还存在当前性能更优的推理引擎,则可以动态地切换推理引擎。
77.如图4所示,终端设备1000中推理引擎调度(inference dispatcher)先获取可用推理引擎,例如通过调用getavaiableinference函数获取可用推理引擎,然后调用对应的推理引擎,将待推理数据输入张量(tensor),例如通过调用getinputtensor函数导入待推理数据,由推理引擎(inference engine)进行推理计算(run),此时,进行推理计算的推理引擎(inference engine)可以是一开始所调用的推理引擎(inference engine),也可以在推理计算过程中,根据各推理引擎(inference engine)的性能指标动态的切换为其他推理引擎(inference engine),以完成推理计算。在完成推理计算后,输出推理结果数据,例如,通过调用函数获取输出张量(getonputtensor)获取推理结果数据,并通过推理引擎接口返回该推理结果数据。
78.本实施例中,通过设置推理接口,该推理接口获取待推理数据;根据预设引擎适配策略,静态或动态地确定用于对所述待推理数据进行推理计算的推理引擎;然后调用所述推理引擎完成推理计算,输出推理结果数据。由于在本实施例中统一了推理接口,算法实现方可以使用统一的推理接口实现深度学习模型的推理,而不用关注各推理引擎的细节,实现推理接口的复用;另一方面,推理引擎方只需要实现统一的引擎接口,即可支持已有的推理方案。
79.《装置实施例》
80.在本实施例中,还提供一种推理引擎的适配装置,该推理引擎的适配装置例如可以设置在如图1所示的终端设备1000中。
81.如图5所示,该推理引擎的适配装置5000包括获取模块5100、确定模块5200和调用模块5300。
82.其中,获取模块5100,用于获取待推理数据。
83.确定模块5200,用于根据预设引擎适配策略,确定用于对所述待推理数据进行推理计算的推理引擎。
84.调用模块5300,用于调用所述推理引擎完成推理计算,输出推理结果数据。
85.在一个例子中,所述确定模块5200具体可以用于将所述待推理数据所指定的推理引擎确定为用于对所述待推理数据进行推理计算的推理引擎。
86.在另一个例子中,所述确定模块5200具体可以用于根据推理引擎类型确定用于对所述待推理数据进行推理计算的推理引擎。
87.在又一个例子中,所述确定模块5200具体可以用于根据推理引擎的当前性能指标,确定用于对所述待推理数据进行推理计算的推理引擎。
88.其中,所述推理引擎的当前性能指标至少包括:所述推理引擎的当前推理速度,和/或,所述推理引擎的当前负载大小。
89.进一步地,所述推理引擎的适配装置还可以包括初始化模块,用于初始化多个待选择的推理引擎。
90.在一个可行的实施方式中,所述调用模块5300具体可以用于实时监测各所述待选择的推理引擎的性能指标;若根据所述性能指标,确定出存在性能优于当前进行推理计算的推理引擎的新的推理引擎,则调用所述新的推理引擎继续进行推理计算;直至完成推理计算过程。
91.本实施例的推理引擎的适配装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
92.《设备实施例》
93.本实施例中,还提供一种电子设备,该电子设备包括本说明书装置实施例中描述的推理引擎的适配装置5000;或者,该电子设备为图6所示的电子设备6000,包括:
94.存储器6100,用于存储可执行命令。
95.处理器6200,用于在存储器6100存储的可执行命令的控制下,执行本说明书任意方法实施例中描述的方法。
96.在电子设备根据所执行的方法实施例的实施主体,可以是服务器,也可以是终端设备。
97.《计算机可读存储介质实施例》
98.本实施例提供一种计算机可读存储介质,该存储介质中存储有可执行命令,该可执行命令被处理器执行时,执行本说明书任意方法实施例中描述的方法。
99.本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
100.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输
的电信号。
101.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
102.用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
103.这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
104.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
105.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
106.附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或
流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
107.以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
再多了解一些

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

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

相关文献