推理框架、推理方法、装置、设备及存储介质与流程

文档序号:31226568发布日期:2022-08-23 19:46阅读:74来源:国知局
推理框架、推理方法、装置、设备及存储介质与流程

1.本公开涉及但不限于人工智能技术领域,尤其涉及一种推理框架、推理方法、装置、设备及存储介质。


背景技术:

2.人工智能(artificial intelligence,ai)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的技术科学,在人工智能领域,可以在不同的推理设备中通过部署推理模型以实现对应的功能。但是,在推理模型部署过程中,针对不同的推理设备均需要了解对应的设备管理、模型推理、前处理和后处理技术,然后把这些技术结合起来,才能在实现完整的推理过程,增加了人工智能相关应用的开发难度。


技术实现要素:

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.又一方面,本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。
35.基于上述实施例,由于该推理框架通过插件定义模块将不同推理设备的推理过程封装为对应的内部插件接口,并且,通过该基础功能模块定义不同推理设备对应的统一的外部插件接口,在执行推理任务的过程中,可以基于该外部插件接口接收推理请求,并调用该目标推理设备对应的内部插件接口实现对应的推理过程,可以降低不同推理设备的推理功能与推理框架之间的耦合度,提升了推理框架的稳定性;同时,由于不同推理设备的推理功能是以功能插件的形式部署在该插件定义模块中,在需要新增推理设备的情况下,仅需要定义该推理设备对应的功能插件,即定义该推理设备对应的内部插件接口,就可以支持对该推理设备的推理功能;且由于变更的是内部插件接口,对于框架使用者而言并不需要变更框架上层代码,在减少了开发难度的同时,还可以节省开发成本,提升了框架的应用范围。
36.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
附图说明
37.此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
38.图1为本公开实施例提供的一种推理框架的框架示意图;
39.图2为本公开实施例提供的一种推理框架的框架示意图;
40.图3为本公开实施例提供的一种推理框架的框架示意图;
41.图4为本公开实施例提供的一种推理框架的框架示意图;
42.图5为本公开实施例提供的一种推理框架的框架示意图;
43.图6为本公开实施例提供的一种推理方法的实现流程示意图;
44.图7为本公开实施例提供的一种推理方法的实现流程示意图;
45.图8为本公开实施例提供的一种系统架构示意图;
46.图9为本公开实施例提供的一种功能插件、基础功能模块和接口之间的关联关系示意图;
47.图10为本公开实施例提供的一种推理过程中的接口调用示意图;
48.图11为本公开实施例提供的一种推理装置的组成结构示意图;
49.图12为本公开实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
50.为了使本公开的目的、技术方案和优点更加清楚,下面结合附图和实施例对本公开的技术方案进一步详细阐述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
51.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
52.除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开的目的,不是旨在限制本公开。
53.图1为本公开实施例提供的一种推理框架的框架示意图,如图1所示,该推理框架100包括插件定义模块110和基础功能模块120,其中,
54.所述插件定义模块110包括多个推理设备中每一所述推理设备对应的功能插件;所述功能插件用于将推理过程封装为内部插件接口;
55.所述基础功能模块120用于对每一所述推理设备对应的内部插件接口嵌套组合生成对应的外部插件接口;所述外部插件接口用于响应于基于目标推理设备的推理请求,调用所述目标推理设备对应的内部插件接口将待推理数据转换为业务数据。
56.其中,推理过程可以包括以下环节:初始化、前处理、执行推理、后处理和回收资源
等过程,上述功能插件可以将该推理过程封装为内部插件接口。
57.在一些实施例中,可以按照推理过程中的不同环节将推理过程封装为至少一个内部插件接口。在该内部插件接口为一个的情况下,该功能插件可以将上述初始化、前处理、执行推理、后处理和回收资源封装在一起,得到一个内部插件接口;在该内部插件接口为三个的情况下,该功能插件可以将上述初始化过程和回收资源过程封装为第一个内部插件接口,将上述前处理过程和后处理过程封装为第二个内部插件接口,将上述执行推理过程作为第三个内部插件接口;在该内部插件接口为五个的情况下,可以分别将上述每一过程封装为一个内部插件接口。当前,还可以将推理过程封装为两个、四个或其他数量个,本公开不一一列举说明。
58.在一些实施例中,该推理框架中的插件定义模块可以包括多个推理设备中每一推理设备对应的功能模块,即该推理框架包括每一推理设备对应的内部插件接口。其中,该多个推理设备包括不同推理引擎对应的推理设备。
59.在一些实施例中,本公开实施例中的插件是动态插入的,而不是在编程的时候静态写入的,插件是功能组件的一种,凡是在应用程序中已经预留接口的功能组件为插件。
60.需要说明的是,由于本公开实施例通过各个推理设备对应的功能插件实现每一推理设备对应的推理过程,因此,在需要新增推理设备至该推理架构的情况下,可以通过新增该推理设备对应的功能插件,进而实现该推理架构对该推理设备的支持。
61.在一些实施例中,该推理框架还包括基础功能模块120,该基础功能模块120提供外部插件接口,其中,该外部插件接口与每一推理设备对应的内部插件接口存在对应关系,在该外部插件接口接收到基于目标推理设备的推理请求之后,可以从该多个推理设备对应的内部插件接口中,调用目标推理设备对应的内部插件接口对该推理请求进行处理。
62.示例性的,该推理框架支持第一推理设备、第二推理设备和第三推理设备的推理过程,即,该推理框架中的插件定义模块包括该第一推理设备对应的第一功能插件、第二推理设备对应的第二功能插件和第三推理设备对应的第三功能插件。基于上述每一推理设备对应的功能插件,该插件定义模块可以提供第一内部插件接口、第二内部插件接口和第三内部插件接口,相应地,该基础功能模块120可以提供该第一内部插件接口、第二内部插件接口和第三内部插件接口对应的一个外部插件接口,在该外部插件接口接收到基于第一推理设备的推理请求之后,可以调用该第一内部插件接口对该推理请求进行处理;在该外部插件接口接收到基于第二推理设备的推理请求之后,可以调用该第二内部插件接口对该推理请求进行处理;在该外部插件接口接收到基于第三推理设备的推理请求之后,可以调用该第三内部插件接口对该推理请求进行处理。其中,本公开实施例还可以支持其他数量的推理设备。
63.在另一些实施例中,每一推理设备对应的功能插件可以包括多个功能子插件,即针对每一推理设备,可以通过该推理设备对应的多个功能子插件实现基于该推理设备的推理过程。相应地,针对每一功能子模块,该基础功能模块可以提供每一功能子模块对应的外部插件接口,该外部插件接口可以调用每一推理设备的功能子模块。
64.示例性的,在该推理框架支持第一推理设备、第二推理设备和第三推理设备的推理过程,且功能插件包括第一功能子插件、第二功能子插件和第三功能子插件的情况下,该插件定义模块可以提供三类内部插件接口,包括第一功能子插件对应的第一类内部插件接
口、第二功能子插件对应的第二类内部插件接口、第三功能子插件对应的第三类内部插件接口,其中,该第一类内部插件接口包括每一推理设备对应的第一内部插件接口、该第二类内部插件接口包括每一推理设备对应的第二内部插件接口、该第三类内部插件接口包括每一推理设备对应的第三内部插件接口。相应地,该基础功能模块120可以提供该第一类内部插件接口对应的第一外部插件接口、该第二类内部插件接口对应的第二外部插件接口和该第三类内部插件接口对应的第三外部插件接口。在接收到基于第一推理设备的推理请求之后,该推理请求可以包括第一子请求、第二子请求和第三子请求,其中,可以通过第一外部插件接口接收该第一子请求,进而调用该第一推理设备对应的第一内部插件接口对该第一子请求进行处理;通过第二外部插件接口接收该第二子请求,进而调用该第一推理设备对应的第二内部插件接口对该第二子请求进行处理;通过第三外部插件接口接收该第三子请求,进而调用该第一推理设备对应的第三内部插件接口对该第三子请求进行处理。其中,本公开实施例还可以支持其他数量的推理设备,且功能插件可以包括其他数量个功能子插件。
65.基于上述实施例,由于该推理框架通过插件定义模块将不同推理设备的推理过程封装为对应的内部插件接口,并且,通过该基础功能模块定义不同推理设备对应的统一的外部插件接口,在执行推理任务的过程中,可以基于该外部插件接口接收推理请求,并调用该目标推理设备对应的内部插件接口实现对应的推理过程,可以降低不同推理设备的推理功能与推理框架之间的耦合度,提升了推理框架的稳定性;同时,由于不同推理设备的推理功能是以功能插件的形式部署在该插件定义模块中,在需要新增推理设备的情况下,仅需要定义该推理设备对应的功能插件,即定义该推理设备对应的内部插件接口,就可以支持对该推理设备的推理功能;且由于变更的是内部插件接口,对于框架使用者而言并不需要变更框架上层代码,在减少了开发难度的同时,还可以节省开发成本,提升了框架的应用范围。
66.图2为本公开实施例提供的一种推理框架的框架示意图,如图2所示,该推理框架100包括插件定义模块110和基础功能模块120,其中,所述功能插件包括用于的提供内部设备接口的设备插件111,所述内部插件接口包括内部设备接口,所述外部插件接口包括外部设备接口,其中,所述基础功能模块对所述内部设备接口嵌套组合生成外部设备接口;在所述推理请求包括针对所述目标推理设备的设备管理请求的情况下,所述外部设备接口用于基于所述设备管理请求调用所述目标推理设备对应的内部设备接口,对所述目标推理设备进行管理。
67.基于上述实施例,由于通过基础功能模块对外提供外部设备接口,该外部设备接口可以调用设备插件提供的多个推理设备的内部设备接口,由此,可以在框架层面隔离硬件差异,在支持多个推理设备的同时,对外提供统一的外部设备接口,进而为软件产业的大规模生产提供支持,缩短了研发周期、节约研发成本;同时,由于通过插件定义模块包括的设备插件提供各推理设备的内部设备接口,可以在新设备接入时,仅需要定义该推理设备对应的设备插件,即定义该推理设备对应的内部设备接口,就可以支持对该新设备的管理,且由于变更的是内部设备接口,对于框架使用者而言并不需要变更框架上层代码,进一步节省了开发成本,提升了框架的应用范围。
68.在一些实施例中,所述内部设备接口包括设备绑定子接口、设备状态获取子接口
和设备内存操作子接口;其中:所述设备绑定子接口用于获取推理设备的标识信息;所述设备状态获取子接口用于获取推理设备的设备状态;所述设备内存操作子接口用于操作设备内存。
69.基于上述实施例,由于该设备插件可以针对推理设备提供不同功能的子接口,可以在针对该推理设备进行设备管理的接口定义的过程中,分离推理设备管理的各个功能,有效的降低了不同功能子接口之间的耦合度,保证了推理过程中设备管理的稳定性;同时在利用推理设备处理推理任务的过程中,若发生推理错误的问题,可以快速定位问题位置,而且开发人员仅需要针对当前问题出现的子接口进行重新定义,降低了开发成本。
70.图3为本公开实施例提供的一种推理框架的框架示意图,如图3所示,该推理框架100包括插件定义模块110和基础功能模块120,其中,所述功能插件包括用于的提供内部处理接口的处理插件112,所述内部插件接口包括内部处理接口,所述外部插件接口包括外部处理接口;其中,所述基础功能模块对所述内部处理接口嵌套组合生成外部处理接口;在所述推理请求包括前处理请求的情况下,所述外部处理接口用于基于所述前处理请求调用所述目标推理设备对应的内部处理接口,将待推理数据转换为推理模型的输入数据;在所述推理请求包括后处理请求的情况下,所述外部处理接口用于基于所述后处理请求调用所述目标推理设备对应的内部处理接口,将推理模型的输出数据转换为业务数据。
71.基于上述实施例,由于通过基础功能模块对外提供外部处理接口,该外部处理接口可以调用处理插件提供的多个推理设备的内部处理接口,由此,可以在框架层面隔离硬件差异,在支持多个推理设备的同时,对外提供统一的外部处理接口,进而缩短了研发周期、节约研发成本;同时,由于通过插件定义模块包括的处理插件提供各推理设备的内部处理接口,可以在新设备接入时,仅需要定义该推理设备对应的处理插件,即定义该推理设备对应的内部处理接口,就可以利用该推理设备完成推理过程的数据处理,提升了推理框架的扩展性和部署效率。
72.在一些实施例中,所述内部设备接口包括前处理子接口和后处理子接口;所述前处理子接口用于将待推理数据转换为推理模型的输入数据;所述后处理子接口用于将所述推理模型的输出数据转换为业务数据。
73.基于上述实施例,由于该处理插件可以针对推理设备提供不同功能的子接口,可以在针对该推理设备进行处理过程的接口定义的过程中,分离推理过程中的前处理过程和后处理过程,有效的降低了不同功能子接口之间的耦合度,保证了推理过程中数据处理过程的稳定性;同时在利用推理设备处理推理任务的过程中,若出现推理错误的情况,可以快速定位问题位置;在进行问题消除的过程中,开发人员仅需要针对当前问题出现的子接口进行重新定义,降低了开发成本。
74.图4为本公开实施例提供的一种推理框架的框架示意图,如图4所示,该推理框架100包括插件定义模块110和基础功能模块120,其中,所述功能插件包括用于的提供内部推理接口的推理插件113,所述内部插件接口包括内部推理接口,所述外部插件接口包括外部推理接口;其中,所述基础功能模块对所述内部推理接口嵌套组合生成外部设备接口;在所述推理请求包括针对所述目标推理设备的模型推理请求的情况下,所述外部推理接口用于基于所述模型推理请求调用所述目标推理设备对应的内部推理接口,基于推理模型将输入数据转换为输出数据。
75.基于上述实施例,由于通过基础功能模块对外提供外部推理接口,该外部推理接口可以调用推理插件提供的多个推理设备的内部推理接口,由此,可以在框架层面隔离硬件差异,在支持多个推理设备的同时,对外提供统一的外部推理接口,进而缩短了研发周期、节约研发成本;同时,由于通过插件定义模块包括的推理插件提供各推理设备的内部推理接口,可以在新设备接入时,仅需要定义该推理设备对应的推理插件,即定义该推理设备对应的内部推理接口,就可以利用该推理设备执行推理过程,提升了推理框架的扩展性和部署效率。
76.在一些实施例中,所述内部推理接口包括至少一个推理模型对应的内部推理接口;所述外部推理接口用于基于针对所述目标推理设备的模型推理请求调用所述目标推理设备对应的目标内部推理接口,基于目标推理模型将输入数据转换为输出数据;所述推理请求用于调用所述至少一个推理模型中的所述目标推理模型,所述目标推理接口用于管理所述目标推理模型的推理过程。
77.基于上述实施例,由于通过基础功能模块对外提供外部处理接口,该外部处理接口可以调用处理插件提供的至少一个推理模型对应的内部处理接口,由此,可以在框架层面隔离模型差异,在支持多个推理设备和推理模型的同时,对外提供统一的外部推理接口,进而缩短了研发周期、节约研发成本;同时,由于通过插件定义模块包括的推理插件提供各推理模型对应的内部推理接口,可以在需要适配新的推理模型的情况下,仅需要定义该新的推理模型对应的推理插件,即定义该新的推理模型对应的内部处理接口,就可以基于该新的推理模型进行将输入数据转换为输出数据,提升了推理框架的扩展性和部署效率。
78.在一些实施例中,所述内部推理接口包括:解析模型子接口、模型配置子接口、模型推理子接口和获取结果子接口;其中,所述解析模型子接口,用于获取模型文件,并进行解析;所述模型配置子接口,用于对解析后的模型进行配置,得到配置后的模型;所述模型推理子接口,用于基于配置后的模型完成模型推理过程;所述获取结果子接口,用于获取模型推理过程的推理结果。
79.基于上述实施例,由于该推理插件可以针对推理设备提供不同功能的子接口,可以在针对该推理设备进行推理过程的接口定义的过程中,分离推理过程中的模型解析、模型配置、模型推理和获取接口各个过程,有效的降低了不同功能子接口之间的耦合度,保证了基于推理模型执行推理过程的稳定性;同时在利用推理设备处理推理任务的过程中,若出现推理错误的情况,可以快速定位问题位置;在进行问题消除的过程中,开发人员仅需要针对当前问题出现的子接口进行重新定义,降低了开发成本。
80.在一些实施例中,基于上述任一实施例所述的推理框架,所述基础功能模块用于提供至少一个业务函数;所述业务函数被调用的情况下执行以下至少之一:在所述业务函数被所述内部推理接口调用的情况下,将所述输入数据转换为所述输出数据;在所述业务函数被所述内部处理接口调用的情况下,将待推理数据转换为推理模型的输入数据;在所述业务函数被所述内部处理接口调用的情况下,将所述推理模型的输出数据转换为业务数据。
81.基于上述实施例,由于通过功能函数提供的业务函数,可以使得各个内部功能插件对该业务函数进行复用,提升了代码复用率的同时,也可以降低开发难度。
82.在一些实施例中,基于上述任一实施例所述的推理框架,所述基础功能模块用于
提供每一所述推理设备对应的交换数据结构;所述推理请求用于将第一数据结构的待推理数据转换为第二数据结构的业务数据;所述内部处理接口被调用的情况下,还用于将所述第一数据结构的待推理数据转换为第三数据结构的待推理数据;所述内部处理接口被调用的情况下,还用于将第四数据结构的业务数据转换为所述第二数据结构的业务数据;所述第三数据结构和所述第四数据结构为所述目标推理设备支持的数据结构。
83.基于上述实施例,由于该基础功能模块提供了每一推理设备对应的交换数据接口,在利用不同推理设备进行数据处理的过程中,框架使用者可以输入统一数据结构的待推理数据(第一数据结构),推理框架可以基于实际部署的推理设备将该待推理数据转换为该推理设备支持的数据结构(第三数据结构);同时,在推理框架输出第四数据结构的业务数据之后,还可以转换为所述第二数据结构的业务数据;由此,对于框架使用者而言,可以基于统一的上层代码,即使用统一的数据结构,推理框架可以通过基础功能模块将统一的数据结构转换为不同推理设备支持的交换数据结构,提高了软件开发的并行性。
84.在一些实施例中,基于上述任一实施例所述的推理框架,所述基础功能模块用于提供每一所述推理模型对应的模型数据结构;所述内部推理接口被调用的情况下,还用于将所述第五数据结构的输入数据转换为第六数据结构的输入数据;所述内部推理接口用于基于所述目标推理模型将所述第六数据结构的输入数据转换为第七数据结构的输出数据;所述内部推理接口被调用的情况下,还用于将第七数据结构的输出数据转换为所述第八数据结构的业务数据。
85.基于上述实施例,由于该基础功能模块提供了每一所述推理模型对应的模型数据结构,在利用不同推理模型进行模型推理的过程中,框架使用者可以输入统一数据结构的输入数据,推理框架可以基于实际部署的推理模型将该输入数据转换为该推理模型支持的数据结构;同时,在推理框架输出第七数据结构的输出数据之后,还可以转换为第八数据结构的业务数据;由此,对于框架使用者而言,可以基于统一的上层代码,即使用统一的数据结构,推理框架可以通过基础功能模块将统一的数据结构转换为不同推理模型支持的模型数据结构,提高了软件开发的并行性。
86.图5为本公开实施例提供的一种推理框架的框架示意图,如图5所示,该推理框架100包括插件定义模块110和基础功能模块120,其中,所述基础功能模块120包括以下组件的至少之一:跨平台函数组件121、插件管理组件122和日志管理组件123,其中:
87.所述跨平台函数组件121,用于提供多个系统函数中每一所述系统函数的函数库;所述函数库包括至少一个系统平台对应的所述系统函数。
88.在一些实施例中,该系统函数可以包括读函数、写函数等通用的函数。针对每一系统函数,该跨平台函数组件可以提供该系统函数在每一系统平台对应的系统函数,在该推理框架被部署到任意系统平台中之后,通过该跨平台函数组件可以提供该任意系统平台对应的系统函数,进而实现对多系统平台的适配。
89.所述插件管理组件122,用于对所述插件定义模块的插件进行生命周期管理。
90.在一些实施例中,该插件管理组件可以基于推理设备维度对该插件定义模块中的插件进行生命周期的管理,即,该插件管理组件可以为每一推理设备对应的功能插件设置对应的生命周期,进而对每一推理设备对应的所有功能插件进行统一的管理。
91.示例性的,该推理框架包括第一推理设备对应的功能插件和第二推理设备对应的
插件,功能插件可以包括第一功能子插件和第二功能子插件。基于上述实施例,该插件管理组件可以基于推理设备对该插件定义模块中的插件进行生命周期的管理,即,插件管理组件可以为第一推理设备对应的第一功能子插件和第二功能子插件设置统一的生命周期,为第二推理设备对应的第一功能子插件和第二功能子插件设置统一的生命周期,进而实现推理设备维度的生命周期的管理。
92.在一些实施例中,该插件管理组件可以基于功能插件维度对该插件定义模块中的插件进行生命周期的管理,即,该插件管理组件可以为每一类功能插件设置对应的生命周期,进而对每一推理设备对应的该类功能插件进行统一的管理。
93.示例性的,该推理框架包括第一推理设备对应的功能插件和第二推理设备对应的插件,功能插件可以包括第一功能子插件和第二功能子插件。基于上述实施例,该插件管理组件可以基于功能子插件对该插件定义模块中的插件进行生命周期的管理,即,插件管理组件可以为第一推理设备对应的第一功能子插件和第二推理设备对应的第一功能子插件设置统一的生命周期,为第一推理设备对应的第二功能子插件和第二推理设备对应的第二功能子插件设置统一的生命周期,进而实现功能插件维度的生命周期的管理。
94.在一些实施例中,该插件管理组件可以同时基于推理设备维度和功能插件维度对该插件定义模块中的插件进行生命周期的管理,即,该插件管理组件可以为每一个功能子插件设置对应的生命周期,进而对不同推理设备中不同功能子插件进行精确的生命周期管理。
95.示例性的,该推理框架包括第一推理设备对应的功能插件和第二推理设备对应的插件,功能插件可以包括第一功能子插件和第二功能子插件。基于上述实施例,插件管理组件可以为第一推理设备对应的第一功能子插件设置对应的生命周期;为第二推理设备对应的第一功能子插件设置对应的生命周期;为第一推理设备对应的第二功能子插件设置对应的生命周期;为第二推理设备对应的第二功能子插件设置对应的生命周期,进而实现对不同推理设备中不同功能子插件进行精确的生命周期管理。
96.所述日志管理组件123,用于对监测所述插件定义模块中插件的生命周期变化事件,并基于所述生命周期变化事件生成对应的日志。
97.在一些实施例中,日志管理组件123可以用于监测上述插件定义模块中每一功能插件对应的生命周期变化事件,该生命周期变化事件为响应于生命周期管理请求生成的,该生命周期管理请求用于对每一功能插件的生命周期进行管理,包括但不限于是延长操作、缩短操作等。响应于该生命周期变化事件,该日志管理组件可以记录该生命周期变化事件的系统时间,操作的功能插件的插件标识,生命周期变化情况等。
98.基于上述实施例,由于提供了多个系统函数中每一所述系统函数的函数库,可以在该推理框架被部署到任意系统平台中之后,通过该跨平台函数组件可以提供该任意系统平台对应的系统函数,进而实现对多系统平台的适配;同时,通过该插件管理组件可以为每一推理设备对应的功能插件设置对应的生命周期,进而对每一推理设备对应的所有功能插件进行统一的管理;同时,通过该日志管理组件可以记录该生命周期变化事件的系统时间,操作的功能插件的插件标识,生命周期变化情况等操作事件,便于问题追溯。
99.本公开实施例提供一种推理方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移
动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。
100.图6为本公开实施例提供的一种推理方法的实现流程示意图,如图6所示,该方法包括如下步骤s601至步骤s602:
101.步骤s601,接收基于目标推理设备的推理请求。
102.步骤s602,响应于所述推理请求,通过所述推理框架提供的外部插件接口,在所述推理框架提供的多个推理设备的内部插件接口中调用所述目标推理设备对应的内部插件接口将所述待推理数据转换为业务数据。
103.在一些实施例中,该推理框架可以包括多个推理设备中每一推理设备对应的内部插件接口,其中,内部插件接口为推理框架中的插件定义模块包括的功能插件将推理过程进行封装后得到的接口,该外部插件接口为推理框架中的基础功能模块对内部插件接口嵌套组合生成的。其中,推理过程可以包括以下环节:初始化、前处理、执行推理、后处理和回收资源等过程,上述功能插件可以将该推理过程封装为内部插件接口。
104.在一些实施例中,可以按照推理过程中的不同环节将推理过程封装为至少一个内部插件接口。在该内部插件接口为一个的情况下,该功能插件可以将上述初始化、前处理、执行推理、后处理和回收资源封装在一起,得到一个内部插件接口;在该内部插件接口为三个的情况下,该功能插件可以将上述初始化过程和回收资源过程封装为第一个内部插件接口,将上述前处理过程和后处理过程封装为第二个内部插件接口,将上述执行推理过程作为第三个内部插件接口;在该内部插件接口为五个的情况下,可以分别将上述每一过程封装为一个内部插件接口。当前,还可以将推理过程封装为两个、四个或其他数量个,本公开不一一列举说明。
105.在一些实施例中,该推理框架中的插件定义模块可以包括多个推理设备中每一推理设备对应的功能模块,即该推理框架包括每一推理设备对应的内部插件接口。其中,该多个推理设备包括不同推理引擎对应的推理设备。
106.在一些实施例中,本公开实施例中的插件是动态插入的,而不是在编程的时候静态写入的,插件是功能组件的一种,凡是在应用程序中已经预留接口的功能组件为插件。
107.在一些实施例中,该外部插件接口包括以下至少之一:外部设备接口、外部处理接口和外部推理接口。
108.在该外部插件接口包括外部设备接口的情况下,该外部设备接口为上述基础功能模块对内部设备接口嵌套组合生成的,该内部设备接口为上述插件定义模块中包括的设备插件提供的接口。即,该推理框架中的插件定义模块可以提供每一推理设备对应的内部设备接口,同时可以通过推理框架中的基础功能模块提供外部设备接口,该外部设备接口可以在接收到针对所述目标推理设备的设备管理请求的情况下,在多个推理设备对应的内部设备接口中确定目标推理设备对应的内部设备接口,并基于该目标推理设备对应的内部设备接口处理该针对所述目标推理设备的设备管理请求。
109.在一些实施例中,该内部设备接口包括以下子接口中的至少之一:设备绑定子接口、设备状态获取子接口和设备内存操作子接口。其中,在该设备管理请求用于获取推理设备的标识信息的情况下,可以调用该推理框架的设备绑定子接口获取该推理设备的标识信息;在该设备管理请求用于获取推理设备的设备状态的情况下,可以调用该推理框架的设
备状态获取子接口获取该推理设备的设备状态;在该设备管理请求用于管理推理设备的内存的情况下,可以调用该推理框架的设备内存操作子接口操作该推理设备的内存。
110.示例性的,在推理过程中的初始化过程中,可以基于该内部设备接口确定需要初始化的推理设备的设备标识,并基于上述设备绑定子接口在多个推理设备中确定需要初始化的推理设备,同时,可以基于上述设备内存操作子接口将推理模型加载至该推理设备的内存中。在一些实施例中,还可以基于上述设备状态获取子接口获取该推理设备的设备状态,在该设备状态表征该推理设备当前无法处理该推理请求的情况下,可以反馈相应地提示信息。
111.示例性的,在推理过程中的资源释放过程中,可以基于该内部设备接口确定需要资源释放的推理设备的设备标识,并基于上述设备绑定子接口在多个推理设备中确定需要资源释放的推理设备,同时,可以基于上述设备内存操作子接口将加载该推理模型的内存释放。在一些实施例中,还可以基于上述设备状态获取子接口获取该推理设备的设备状态,在该设备状态表征该推理设备当前正在执行推理过程的情况下,可以反馈当前推理进度。
112.在该外部插件接口包括外部推理接口的情况下,该外部推理接口为上述基础功能模块对内部推理接口嵌套组合生成的,该内部推理接口为上述插件定义模块中包括的推理插件提供的接口。即,该推理框架中的插件定义模块可以提供每一推理设备对应的内部推理接口,同时可以通过推理框架中的基础功能模块提供外部推理接口,该外部推理接口可以在接收到针对所述目标推理设备的模型推理请求的情况下,在多个推理设备对应的内部推理接口中确定目标推理设备对应的内部推理接口,并基于该目标推理设备对应的内部推理接口处理该针对所述目标推理设备的模型推理请求。
113.在一些实施例中,所述内部推理接口包括至少一个推理模型对应的内部推理接口。上述针对所述目标推理设备的模型推理请求可以包括针对该至少一个推理模型中目标推理模型的模型推理请求,相应地,在基于该外部推理接口针对目标推理模型的模型推理请求之后,可以在多个推理模型对应的内部推理接口中确定该目标推理模型对应的内部推理接口,并调用该目标推理模型对应的内部推理接口处理该针对所述目标推理设备的模型推理请求。
114.在一些实施例中,该内部设备接口包括以下子接口中的至少之一:解析模型子接口、模型配置子接口、模型推理子接口和获取结果子接口。其中,在该模型推理请求用于解析推理模型的情况下,可以调用该推理框架的解析模型子接口获取该推理模型的模型文件,并进行解析;在该模型推理请求用于配置推理模型的情况下,可以调用该推理框架的模型配置子接口对解析后的模型进行配置,得到配置后的模型;在该设备管理请求用于执行推理过程的情况下,可以调用该推理框架的模型推理子接口基于配置后的模型完成模型推理过程;在该设备管理请求用于获取推理结果的情况下,可以调用该推理框架的获取结果子接口获取模型推理过程的推理结果。
115.示例性的,在执行推理过程中,可以基于该解析模型子接口获取目标推理模型的模型文件,并进行解析,之后通过该模型配置子接口对解析后的模型进行配置,得到配置后的模型,在通过该模型推理子接口控制配置后的模型完成模型推理过程,最后通过该获取结果子接口获取推理过程的推理结果。
116.图7是本公开实施例提供的推理方法的一个可选的流程示意图,该方法可以由计
算机设备的处理器执行。该外部插件接口包括外部设备接口、外部处理接口和外部推理接口;基于图6,图6中的s602可以包括为s701至s703,将结合图7示出的步骤进行说明。
117.步骤s701、基于所述推理框架提供的外部设备接口,调用所述推理框架中所述目标推理设备对应的内部设备接口,在所述目标推理设备中加载推理模型;
118.步骤s702、基于所述推理框架提供的外部处理接口,调用所述推理框架中所述目标推理设备对应的内部处理接口,对所述待推理数据进行处理得到输入数据,并将所述输入数据输入所述推理模型;
119.步骤s703、基于所述推理框架提供的外部推理接口,调用所述推理框架中所述目标推理设备对应的内部推理接口,利用所述推理模型将所述输入数据转换为输出数据;
120.步骤s704、基于所述推理框架提供的外部处理接口,调用所述推理框架中所述目标推理设备对应的内部处理接口,将所述输出数据转换为所述业务数据;
121.步骤s705、基于所述推理框架提供的外部设备接口,调用所述推理框架中所述目标推理设备对应的内部设备接口,在所述目标推理设备中释放推理模型。
122.下面说明本公开实施例提供的推理方法在实际场景中的应用,以一种用于协作开发快速实现模型推理功能可扩展架构的系统为例进行说明。
123.现有的推理框架,所有的设备管理和模型推理逻辑在一起,每种功能对外都提供不同的接口,不易替换和维护。本方案通过插件系统解耦设备硬件和模型推理,调用者不需要了解内部接口,可以使用统一接口调用不同的功能,降低设计开发难度,提高软件开发的并行性。
124.请参阅图8,其示出了一种系统架构示意图。如图8所示,在推理框架层800之上可以包括插件定义模块810和基础功能模块820。其中,该插件定义模块810可以用于提供三类接口,包括设备管理插件接口811(对应上述实施例中的内部设备接口)、模型推理插件接口812(对应上述实施例中的内部推理接口)和通用功能插件接口813(对应上述实施例中的内部处理接口);该基础功能模块820可以包括插件管理组件821、跨平台库组件822和日志管理组件823。
125.在一些实施例中,该基础功能模块820可以同于提供:业务维度的常用函数(对应上述实施例中的至少一个业务函数)、人工智能行业通用数据结构和通用数据交换格式(对应上述实施例中的每一所述推理设备对应的交换数据结构)。进而可以使得开发人员同开发平台解耦,通过自定义数据交换格式和操作,实现数据高效流动。
126.其中,业务维度的常用函数为不同插件之间可以通用的常用函数,该常用函数与业务类别相关。示例性的,若存在插件1、插件2、插件3,且这三个插件均是都是针对图像处理的插件,此时,该业务维度的常用函数可以为缩放和颜色转换之类的函数,可以将上述常用函数放到基础功能模块中,插件1、插件2、插件3都可以使用该函数,相应地,各个插件就不用重新定义这些常用函数。又例如,在插件1、插件2、插件3都是针对线性处理的插件,此时,该业务维度的常用函数可以为线性代数相关的函数,进而可以将线性代数相关的函数放到基础功能模块中。
127.其中,该通用数据交换格式为不同推理设备支持的输入数据结构和输出数据结构。示例性的,在将原始数据结构的数据输入至推理设备之前,可以将该原始数据结构的数据转换为该推理设备支持的输入数据结构之后,再将该数据输入至该推理设备;相对应的,
在推理设备得到输出数据结构的数据之后,输出该数据之前,可以将该输出数据结构的数据转换为外部接口需要的目标数据结构的数据。基于此,针对不同推理设备的推理过程,从推理框架使用者的角度而言,输入的数据均未原始数据结构的数据,推理框架中的基础功能模块可以提供每一推理设备支持的输入数据接口,进而可以基于使用的目标推理设备,将该原始数据结构的数据转换为目标推理设备支持的输入数据结构的数据;在目标推理设备得到输出数据结构的数据之后,同样也可以将不同推理设备得到的不同输出数据结构的数据转换为统一数据结构的数据,并输出,从推理框架使用者的角度而言,无需关注各个推理设备支持的数据结构,即可完成基于不同推理设备的推理过程。
128.在一些实施例中,该设备管理插件接口811为用于设备管理和内存操作的通用接口,进而实现不同推理设备的快速接入。
129.其中,该设备管理插件接口811可以包括设备绑定子接口、设备状态获取子接口和设备内存操作子接口;其中:所述设备绑定子接口用于获取推理设备的标识信息;所述设备状态获取子接口用于获取推理设备的设备状态;所述设备内存操作子接口用于操作设备内存。
130.在一些实施例中,该模型推理插件接口812为不同推理设备的模型推理接口,用于实现不同推理设备的快速接入。
131.其中,该模型推理插件接口812可以包括解析模型子接口、模型配置子接口、模型推理子接口和获取结果子接口;其中,所述解析模型子接口,用于获取模型文件,并进行解析;所述模型配置子接口,用于对解析后的模型进行配置,得到配置后的模型;所述模型推理子接口,用于基于配置后的模型完成模型推理过程;所述获取结果子接口,用于获取模型推理过程的推理结果。
132.在一些实施例中,该通用功能插件接口813为用于模型前处理和模型后处理通用接口。
133.其中,该通用功能插件接口813可以包括前处理子接口和后处理子接口;所述前处理子接口用于将待推理数据转换为推理模型的输入数据;所述后处理子接口用于将所述推理模型的输出数据转换为业务数据。
134.请参阅图9,图9示出了一种功能插件、基础功能模块和接口之间的关联关系示意图。可以看出,本公开实施例提供的推理框架可以包括模型推理插件910、通用功能插件920和设备管理插件930共三个功能插件。相应地,每一功能插件用于提供对应的内部接口,例如,该模型推理插件910提供模型推理接口911、通用功能插件920提供通用功能接口921、设备管理插件930提供设备管理接口931。该推理框架还可以包括基础功能模块940,该基础功能模块940可以调用该模型推理接口911对外提供外部的模型推理接口(对应上述实施例中的外部推理接口),进而实现模型推理功能;该基础功能模块940可以调用该通用功能接口921对外提供外部的通用功能接口(对应上述实施例中的外部处理接口),进而实现数据处理功能;该基础功能模块940可以调用该设备管理接口931对外提供外部的设备管理接口(对应上述实施例中的外部设备接口),进而实现设备管理功能。
135.在一些实施例中,由于该基础功能模块940可以提供业务维度的常用函数人工智能行业通用数据结构和通用数据交换格式,进而模型推理插件910和通用功能插件920在实现对应功能的过程中,可以使用基础功能模块940提供的函数和/或数据结构。
136.在一些实施例中,推理过程可以包括初始化、前处理、执行推理、后处理和回收资源等过程。请参阅图10,其示出了推理过程中的接口调用示意图。
137.其中,上述推理过程可以包括:
138.步骤s1001、初始化过程。
139.步骤s1002、前处理过程。
140.步骤s1003、执行推理过程。
141.步骤s1004、后处理过程。
142.步骤s1005、回收资源过程。
143.相应地,上述基础功能模块可以提供框架外部接口(对应上述实施例中的外部插件接口),如图10中的框架外部接口1010,该框架外部接口1010可以包括外部设备接口1011、外部推理接口1012和外部处理接口1013。在一些实施例中,该框架外部接口1010还可以基础数据功能及功能模块,用于提供上述业务维度的常用函数人工智能行业通用数据结构和通用数据交换格式。
144.在一些实施例中,步骤s1001中的初始化过程可以通过调用该外部设备接口1011实现;步骤s1002中的前处理过程可以通过调用该外部处理接口1013实现;步骤s1003中的执行推理过程可以通过调用该外部推理接口1012实现;步骤s1004中的后处理过程可以通过调用该外部处理接口1013实现;步骤s1005中的回收资源过程可以通过调用该外部设备接口1011实现。
145.其中,推理框架中的插件定义模块可以提供设备管理插件1021、通用功能插件1022和模型推理插件1023,相应地,该设备管理插件1021可以提供多个推理设备对应的内部设备接口1031、通用功能插件1023可以提供多个推理设备对应的内部处理接口1033、模型推理插件1022可以提供多个推理设备对应的内部推理接口1032。如图10所示,该基础功能模块可以对多个推理设备的内部设备接口1031嵌套组合生成外部设备接口1011、还可以对多个推理设备的内部处理接口1033嵌套组合生成外部处理接口1013、还可以对多个推理设备的内部推理接口1032嵌套组合生成外部推理接口1013。
146.基于上述实施例,可以对推理设备和推理模型进行抽象,隔离了平台和硬件差异,提供统一交换的数据结构,提高软件的复用度和软件开发的并行性,为软件产业的大规模生产提供支持,同时,还可以缩短软件的研发周期、节约研发成本,带给程序开发人员更多的灵活性,产品在软件发布以后还可以添加新的插件和完善已有的功能。
147.在一些实施场景中,不同开发者可以进行协同开发,提升了开发效率。例如,设备管理开发者可以基于定义好的设备管理接口,实现相应平台的设备管理功能,不需要了解推理相关的技术和业务;模型推理开发者可以基于定义好的推理接口,实现相应平台的推理功能;通用功能开发者可以基于通用功能接口和基础功能,实现不同业务功能,不需要关注平台和硬件差异;框架使用者可以使用上述统一稳定的接口,通过不同配置实现不同的新功能。在有新硬件适配的情况下,只需要设备管理开发者和模型推理开发者编写相应的代码;在有新的模型网络接口的情况下只需要的通用功能开发者适配;在有新硬件或者模型网络结构更新的情况下,只需要框架使用者修改对应的配置。
148.基于前述的实施例,本公开实施例提供一种推理装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具
体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(central processing unit,cpu)、微处理器(microprocessor unit,mpu)、数字信号处理器(digital signal processor,dsp)或现场可编程门阵列(field programmable gate array,fpga)等。
149.图11为本公开实施例提供的一种推理装置的组成结构示意图,所述推理装置应用于推理框架,所述推理框架提供外部插件接口,如图11所示,推理装置1100包括:接收模块1110、推理模块1120,其中:
150.接收模块1110,用于接收基于目标推理设备的推理请求;
151.推理模块1120,用于响应于所述推理请求,通过所述推理框架提供的外部插件接口,在所述推理框架提供的多个推理设备的内部插件接口中调用所述目标推理设备对应的内部插件接口将所述待推理数据转换为业务数据。
152.在一些实施例中,所述推理模块1120,还用于基于所述推理框架提供的外部设备接口,调用所述推理框架中所述目标推理设备对应的内部设备接口,在所述目标推理设备中加载推理模型;基于所述推理框架提供的外部处理接口,调用所述推理框架中所述目标推理设备对应的内部处理接口,对所述待推理数据进行处理得到输入数据,并将所述输入数据输入所述推理模型;基于所述推理框架提供的外部推理接口,调用所述推理框架中所述目标推理设备对应的内部推理接口,利用所述推理模型将所述输入数据转换为输出数据;基于所述推理框架提供的外部处理接口,调用所述推理框架中所述目标推理设备对应的内部处理接口,将所述输出数据转换为所述业务数据;基于所述推理框架提供的外部设备接口,调用所述推理框架中所述目标推理设备对应的内部设备接口,在所述目标推理设备中释放推理模型。
153.以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本公开装置实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
154.需要说明的是,本公开实施例中,如果以软件功能模块的形式实现上述的推理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本公开实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
155.本公开实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
156.本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
157.本公开实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代
码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
158.本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
159.这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
160.图12为本公开实施例提供的一种推理设备的硬件实体示意图,如图12所示,该推理设备1200的硬件实体包括:处理器1201和存储器1202,其中,存储器1202存储有可在处理器1201上运行的计算机程序,处理器1201执行程序时实现上述任一实施例的方法中的步骤。
161.存储器1202存储有可在处理器上运行的计算机程序,存储器1202配置为存储由处理器1201可执行的指令和应用,还可以缓存待处理器1201以及推理设备1200中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(random access memory,ram)实现。
162.处理器1201执行程序时实现上述任一项的推理方法的步骤。处理器1201通常控制推理设备1200的总体操作。
163.本公开实施例提供一种计算机存储介质,计算机存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一实施例的推理方法的步骤。
164.这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开存储介质和设备实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
165.上述处理器可以为目标用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本公开实施例不作具体限定。
166.上述计算机存储介质/存储器可以是只读存储器(read only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性随机存取存储
器(ferromagnetic random access memory,fram)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(compact disc read-only memory,cd-rom)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
167.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本公开的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
168.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
169.在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
170.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
171.另外,在本公开各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
172.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。
173.或者,本公开上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
174.以上所述,仅为本公开的实施方式,但本公开的保护范围并不局限于此,任何熟悉
本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1