CN116362336A - 一种模型推理交互方法、电子设备、可读存储介质 - Google Patents
一种模型推理交互方法、电子设备、可读存储介质 Download PDFInfo
- Publication number
- CN116362336A CN116362336A CN202310645642.6A CN202310645642A CN116362336A CN 116362336 A CN116362336 A CN 116362336A CN 202310645642 A CN202310645642 A CN 202310645642A CN 116362336 A CN116362336 A CN 116362336A
- Authority
- CN
- China
- Prior art keywords
- reasoning
- model
- deep learning
- learning model
- engine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 167
- 230000003993 interaction Effects 0.000 title claims abstract description 31
- 238000003860 storage Methods 0.000 title claims abstract description 8
- 238000013136 deep learning model Methods 0.000 claims abstract description 76
- 238000011068 loading method Methods 0.000 claims abstract description 48
- 230000006870 function Effects 0.000 claims description 37
- 230000008569 process Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 abstract description 6
- 230000008901 benefit Effects 0.000 abstract description 5
- 238000013459 approach Methods 0.000 description 7
- 238000010276 construction Methods 0.000 description 5
- 238000011423 initialization method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010792 warming Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种模型推理交互方法、电子设备、可读存储介质,所述方法应用于服务端,包括如下步骤:接收推理请求信息,从包括多个中间表示形式的深度学习模型的模型仓库中加载所述推理请求信息中指定的深度学习模型;根据所述推理请求信息从包括多个推理引擎的推理引擎库中加载指定的推理引擎,将中间表示形式的深度学习模型转换为与所述推理引擎匹配的形式;采用所述推理引擎对所述深度学习模型进行推理,发送与所述推理请求信息要求的形式相匹配的输出张量信息。与现有技术相比,本发明能够实现基于服务端的,针对深度学习模型的高效和灵活推理,同时具有安全性高、吞吐量大、调用方便、响应速度快等优点。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种模型推理交互方法、电子设备、可读存储介质。
背景技术
随着人工智能技术的不断发展,越来越多的企业和机构开始使用机器学习模型来解决各种问题。然而,将机器学习模型部署到生产环境中并不是一件容易的事情。传统的模型部署方法通常需要大量的手动配置和调试,而且往往需要针对不同的硬件和软件环境进行适配。这些问题导致了模型部署的效率低下、灵活性差、易用性差等问题。
中国申请号CN202210850520.6提供了一种多模型热更新方法及装置,该多模型热更新方法包括:预先定义模型服务CRD资源和AI模型的CRD资源;运行模型服务CRD资源对应的AI推理模型服务;检查AI推理模型服务是否正常运行;如果是,则通过AI推理模型服务申请AI模型的CRD资源;对AI模型的CRD资源进行实例化,得到推理服务实例;获取待更新版本的目标多模型并装载;在推理服务实例中运行目标多模型,以及根据目标多模型在推理服务实例中进行模板版本的更新。
上述申请能够支持多模型服务的运行和热更新,减小资源浪费。但是,上述方法并未实现基于服务端的,针对深度学习模型的高效和灵活推理。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种模型推理交互方法、设备、介质,以实现基于服务端的,针对深度学习模型的高效和灵活推理。
本发明的目的可以通过以下技术方案来实现:
本发明的一个方面,提供了一种模型推理交互方法,应用于服务端,包括如下步骤:
接收推理请求信息,从包括多个中间表示形式的深度学习模型的模型仓库中加载所述推理请求信息中指定的深度学习模型;
根据所述推理请求信息,从包括多个推理引擎的推理引擎库中加载指定的推理引擎,将中间表示形式的深度学习模型转换为与所述推理引擎匹配的形式;
采用所述推理引擎对所述深度学习模型进行推理,发送与所述推理请求信息要求的形式相匹配的输出张量信息。
作为优选的技术方案,加载所述的深度学习模型的过程包括如下步骤:
在预设的模型仓库中检测所述推理请求信息中指定的深度学习模型是否已经加载,若是,得到用于调用模型的指针,结束深度学习模型的加载过程,若否,通过使用预置的解析器对指定的深度学习模型进行解析,将深度学习模型转换为包括多个输入计算图和多个输出计算图的中间表示形式,并保存至所述模型仓库中,得到用于调用模型的指针。
作为优选的技术方案,所述的推理引擎的加载过程包括如下步骤:
在所述推理引擎库中检测指定的推理引擎是否已经加载,若是,结束推理引擎的加载过程,若否,通过继承定义有通用接口和功能的基类,以工厂模式创建新的推理引擎并注册到所述推理引擎库中。
作为优选的技术方案,所述的推理引擎的加载过程还包括如下步骤:
根据所述深度学习模型的框架结构和硬件创建用于反映在设备上运行时所需的资源和状态的执行上下文信息,并根据所述推理请求信息,基于所述执行上下文信息对所述深度学习模型进行预热。
作为优选的技术方案,采用推理引擎对深度学习模型进行推理的过程包括如下步骤:
根据所述的推理请求信息,获取输入张量信息并转换为与所述推理引擎匹配的格式,基于指定的深度学习模型,通过前向传播计算得到所述输出张量信息。
作为优选的技术方案,在对所述深度学习模型进行推理之前,还包括:
根据预设的规则,针对推理必需的输入张量和输出张量,检查的张量的尺寸和所占空间大小是否与指定的深度学习模型相匹配。
作为优选的技术方案,以异步形式接收多个模型推理请求,以异步形式发送多个输出张量信息。
本发明的另一个方面,提供了一种模型推理交互设备,包括:
深度学习模型解析和加载模块,用于接收模型推理请求信息,从预设的模型仓库中加载所述推理请求信息中指定的深度学习模型并转换为预设的中间表示形式;
推理引擎选择模块,用于根据所述推理请求信息从推理引擎库中加载指定的推理引擎,将中间表示形式的深度学习模型转换为与所述推理引擎匹配的形式;
推理请求处理模块,用于采用所述推理引擎对所述深度学习模型进行推理,以异步形式发送与所述模型推理请求信息要求的形式相匹配的输出张量信息;
推理服务管理模块,用于实现服务端的启动、部署和管理过程。
本发明的另一个方面,提供了一种电子设备,包括:一个或多个处理器以及存储器,所述存储器内储存有一个或多个程序,所述一个或多个程序包括用于执行上述模型推理交互方法的指令。
本发明的另一个方面,提供了一种计算机可读存储介质,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行上述模型推理交互方法的指令。
与现有技术相比,本发明具有以下优点:
(1)实现基于服务端的,针对深度学习模型的高效和灵活推理:本发明提供的模型推理交互方法支持多种模型格式和多种推理引擎,效率高,深度学习模型可以存储在本地文件系统或云端,本方法能够支持多种远程过程调用框架的协议,易于部署。
(2)屏蔽底层推理引擎逻辑,提高安全性:在构建新的推理引擎时,通过继承定义有通用接口和功能的基类,以工厂模式创建新的推理引擎并注册到所述推理引擎库中,由于基类中定义有通用的接口和功能,用户无需针对不同地推理引擎调用不同的接口,能够屏蔽底层逻辑的同时,提高安全性。
(3)吞吐量大:支持多种模型格式和多种推理引擎,可并行执行多个深度学习模型,用户可以根据需求定制推理引擎,以满足不同场景下的需求,使用异步输入输出机制,在等待期间可以处理其他推理请求,从而提高吞吐量。
(4)调用方便,节省空间:对于首次调用的深度学习模型,会将其加入模型库中,并返回指向模型本身的指针,在以后的调用中,可以通过指针直接调用深度学习模型,无需重新加载,从而能够方便地进行调用深度学习模型。
(5)深度学习模型的响应速度快:在推理引擎的加载过程中,能够根据用户的选择对深度学习模型进行预热,预热是一种优化技术,通过在模型开始处理实际请求之前执行一些样本请求,以便在实际使用模型之前将模型加载到内存中,从而提高模型的响应速度,可以提高模型的性能。
附图说明
图1为实施例1中模型推理交互方法的流程图;
图2为实施例1中深度学习模型的加载过程的流程图;
图3为实施例1中推理引擎的加载过程的流程图;
图4为实施例1中执行推理请求的流程图;
图5为实施例2中模型推理交互设备的结构示意图,
其中,1、深度学习模型解析和加载模块,2、推理引擎选择模块,3、推理请求处理模块,4、推理服务管理模块。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
实施例1
为解决现有技术存在的问题,本实施例提供了一种高效、灵活、易于使用和定制的模型推理交互方法。该方法支持多种模型格式和多后端,可并行执行多个模型,支持多种调度和批处理算法,以提高吞吐量。用户还可以根据需求定制后端,将多个模型的输入输出相连接组成一个流水线,以满足不同场景下的需求。此外,该方法还支持多种硬件加速器,多种模型管理模式,包括隐式和显式模型加载,无需重启服务。模型可以存储在本地文件系统或云端。该方法支持谷歌远程过程调用框架的协议,易于部署。
参见图1,模型推理交互方法包括如下步骤:
步骤S1,模型解析和加载:接收模型推理请求信息,从预设的模型仓库中加载推理请求信息中指定的深度学习模型并转换为预设的中间表示形式。
具体的,本步骤首先需要解析和加载深度学习模型。使用不同的解析器来解析不同格式的模型,并将其转换为统一的模型表示方式。模型表示为一个包含多个输入和输出的计算图。每个输入和输出都有一个名称、数据类型和形状。
构建模型仓库管理模块:模型仓库管理模块用于实现模型解析和加载的逻辑。该类包含了处理模型加载和卸载所需的所有信息和函数,包括模型名称、模型路径、模型配置和依赖项。模型仓库管理模块包含加载模型方法、卸载模型方法和卸载依赖项方法。
参见图2,加载模型方法具体为:首先使用相应的解析器解析模型,并将其转换为统一模型表示方式。首先检查模型是否已经加载。如果模型已经加载,则返回错误。然后,创建模型仓库并加载模型。最后,将模型仓库添加到仓库映射中,并卸载依赖项。对于首次调用的深度学习模型,会将其加入模型库中,并返回指向模型本身的指针,在以后的调用中,可以通过指针直接调用深度学习模型,无需重新加载,从而能够方便地进行调用深度学习模型。下面是详细解析实现过程:
步骤S101,加载模型方法会检查模型是否已经被加载。如果模型已经被加载,则直接返回,否则继续执行下一步。
步骤S102,加载模型方法会使用相应的解析器解析模型,并将其转换为统一模型表示方式。模型表示为一个包含多个输入和输出的计算图。每个输入和输出都有一个名称、数据类型和形状。
步骤S103,加载模型方法会将模型添加到模型仓库中,以便后续使用。在模型仓库中,每个模型都有一个唯一的名称和版本号。如果已经存在相同名称和版本号的模型,则会覆盖原有的模型。
步骤S104,加载模型方法会返回一个指向已加载模型的指针,以便后续使用。
卸载模型方法:首先查找模型仓库。如果找不到模型仓库,则返回错误。然后,卸载模型并从仓库映射中删除模型仓库。
步骤S2,推理引擎选择:根据推理请求信息从推理引擎库中加载指定的推理引擎,将中间表示形式的深度学习模型转换为与推理引擎匹配的形式。
本步骤支持多种推理引擎(后文称后端),使用后端来执行模型推理。后端选择和优化的实现过程包括检查指定名称的后端是否已经被加载、使用相应的后端工厂创建一个新的后端、将模型转换为后端所需的格式并对模型进行优化以及返回指向已选择后端的指针等多个步骤。这些步骤的实现使得可以高效、灵活地选择和使用多个后端。
后端可以在运行时动态选择,这使得用户可以根据自己的需求选择最适合自己的后端。在选择后端之后,将模型转换为后端所需的格式,并对模型进行优化,以提高推理性能。首先构建一个后端类型,该类负责管理所有可用的后端。
设计后端类:后端类是所有后端的基类,它定义了一些通用的接口和功能。具体的后端实现将继承自这个基类,并实现特定于框架的功能。下面是后端类的主要部分及其功能:
定义获取后端方法:在后端类型中,构造获取后端的方法,该方法用于获取指定名称的后端。在获取后端的方法中,首先检查是否已经加载了指定名称的后端。如果没有加载,则使用相应的后端工厂创建一个新的后端,并将其添加到后端类型中。然后,将模型转换为后端所需的格式,并对模型进行优化,以提高推理性能。在构建新的推理引擎时,通过继承定义有通用接口和功能的基类,以工厂模式创建新的推理引擎并注册到所述推理引擎库中,由于基类中定义有通用的接口和功能,用户无需针对不同地推理引擎调用不同的接口,能够屏蔽底层逻辑的同时,提高安全性。参见图3是推理引擎的加载过程的流程:
步骤S201,检查指定名称的后端是否已经被加载。如果已经被加载,则直接返回,否则继续执行下一步。
步骤S202,使用相应的后端工厂创建一个新的后端,并将其添加到后端类型中。每个后端都有一个唯一的名称和版本号。
步骤S203,将模型转换为后端所需的格式,并对模型进行优化,以提高推理性能。后端可以在运行时动态选择,这使得用户可以根据自己的需求选择最适合自己的后端。
步骤S204,返回一个指向已选择后端的指针,以便后续使用。
设计构造函数:构造函数接受一个所需最小计算能力的参数,表示后端所需的最低计算能力。这个参数主要用于确定后端是否可以在具有特定计算能力的硬件上运行。具体的后端构造函数将这个参数传递给基类后端的构造函数。当用户指定了推理引擎时,则选用用户指定的推理引擎,否则,根据最低计算能力选择适当的推理引擎。
设计配置方法:配置方法返回后端的配置信息。这些配置信息包括后端的名称、版本、扩展名等。具体的后端实现将提供这些信息。
设计创建具体后端方法:创建具体后端方法用于创建一个新的具体后端对象。它接受一个基类后端类指针、模型路径、平台名称和最低计算能力作为参数。这个方法首先创建一个新的具体后端对象,然后从模型配置文件中加载模型配置,接着设置模型配置,最后创建执行上下文。
创建设置模型配置方法:用于设置模型的配置信息。它接受模型的路径、配置对象和平台名称作为参数。这个方法首先调用创建具体后端方法来创建一个新的配置对象,然后将其存储在配置成员变量中。
设计根据模型实例组创建执行上下文方法:用于根据模型实例组创建执行上下文。方法是一个虚拟方法,用于根据模型实例组创建执行上下文。具体的后端实现需要重写这个方法,以便根据其特定框架和硬件需求创建执行上下文。方法遍历模型实例组,对于每个实例,创建一个新的具体后端执行上下文对象,初始化执行上下文,然后将执行上下文添加到上下文成员变量的列表中。这个方法的主要目的是根据模型实例组创建执行上下文,以便在不同的硬件设备上运行模型。
定义预热方法:用于对模型进行预热。预热是一种优化技术,通过在模型开始处理实际请求之前执行一些样本请求,可以提高模型的性能。具体的后端实现需要重写这个方法,以便根据其特定框架和硬件需求执行预热操作。这个方法首先获取预热设置,如果没有预热设置,则直接返回成功。然后遍历预热设置,对于每个设置,创建一个新的推理请求对象,设置输入数据,然后执行预热请求。这个方法的主要目的是在模型加载后立即执行一些推理请求,以便在实际使用模型之前将模型加载到内存中,从而提高模型的响应速度。
执行预热请求方法:用于执行预热请求。这个方法首先获取一个可用的执行上下文,然后调用执行上下文的运行方法执行预热请求。
设计创建执行上下文的方法:创建执行上下文的方法是用于创建执行上下文。执行上下文是模型在特定设备上运行时所需的资源和状态。这个方法接受一个包含模型实例组的向量作为参数。具体的后端实现将重写这个方法,以便根据其特定框架和硬件需求创建执行上下文。方法首先调用根据模型实例组创建执行上下文方法创建执行上下文,然后调用预热方法对模型进行预热。方法的主要目的是将创建执行上下文和预热模型的过程组合在一起,以便在创建后端时一次性完成这两个任务。
定义设置输入数据方法:用于设置预热请求的输入数据。这个方法遍历预热设置中的输入数据,对于每个输入数据,获取输入数据的名称和数据,创建一个新的推理请求类型的输入对象,设置输入数据的维度和数据类型,将输入数据添加到请求中,然后设置输入数据的内容。
步骤S3,推理请求处理:采用推理引擎对深度学习模型进行推理,以异步形式发送与模型推理请求信息要求的形式相匹配的输出张量信息。
具体的,推理请求处理模块提供推理服务器的推理请求处理逻辑的全面实现。它处理设置输入张量数据、检索输出张量数据和执行推理请求,确保所有必需的输入和输出张量都得到正确处理。首先,使用谷歌开发的远程过程调用框架作为推理协议,客户端可以通过远程过程调用框架的协议发送推理请求,其中推理请求是指推理上下文。每个推理上下文包含一个或多个输入张量和一个或多个输出张量。在处理推理请求时,首先将输入张量转换为后端所需的格式,并将其传递给后端进行推理。然后,将后端返回的输出张量转换为远程过程调用框架的协议所需的格式,并将其返回给客户端。
定义推理请求类型,该类负责管理推理请求。同时,模块中的推理请求类实现了推理请求的处理逻辑。定义推理请求类型的输入张量和输出张量、批处理大小和请求识别号、推理请求状态、推理请求执行器、推理请求执行器的状态成员变量。定义该类的用于设置输入张量数据方法、获取输出张量数据方法和执行推理请求方法。
定义设置输入张量数据方法:首先获取输入张量,然后将输入数据复制到输入张量缓冲区的适当位置。最后,将输入张量标记为已设置。
定义获取输出张量数据方法:首先获取输出张量,然后将输出数据从输出张量缓冲区的适当位置复制到输出缓冲区。同时,将实际输出数据的大小存储在获取输出张量数据的变量参数中。
定义执行推理请求方法:在推理请求类中,定义一个执行推理请求方法,该方法用于处理推理请求。首先将输入张量转换为后端所需的格式,并将其传递给后端进行推理。然后,将后端返回的输出张量转换为远程过程调用框架的协议所需的格式,并将其返回给客户端。参见图4,执行推理请求方法的过程包括:
步骤S301,检查推理请求是否合法。如果推理请求不合法,则返回错误信息,否则继续执行下一步。
步骤S302,将输入张量转换为后端所需的格式,并将其传递给后端进行推理。每个后端都有一个唯一的名称和版本号。
步骤S303,首先检查是否已设置所有必需的输入张量并请求了所有必需的输出张量。具体的,根据预设的规则检查张量所占的存储空间和尺寸与选定的深度学习网络是否匹配。
步骤S304,调用推理请求执行器执行推理。
步骤S305,等待后端返回推理结果。在等待期间,使用异步输入输出机制,以便在等待期间可以处理其他推理请求。
步骤S306,将推理结果存储在输出张量中。将后端返回的输出张量转换为远程过程调用框架的协议所所需的格式,并将其返回给客户端。将推理请求执行器的状态存储在推理请求执行器状态成员变量中。
在模型推理交互方法执行过程中需要进行推理服务管理,具体的,推理服务管理模块实现推理服务器的启动、部署和管理过程。首先解析命令行参数,然后获取后端模型的初始化函数,创建服务器实例并启动服务器,最后等待服务器退出。
解析命令行参数:包含以下过程:
步骤1,定义推理服务命令行解析类型。使用推理服务命令行解析类解析命令行参数,用于解析命令行参数并生成配置文件。
步骤2,定义推理服务器配置选项类型。将解析结果存储在推理服务器配置选项类型的服务器选项成员变量中。推理服务器配置选项类型包含推理服务器的配置选项成员变量,例如服务器的监听地址、端口号、后端模型的目录等。
创建和启动推理服务:获取后端模型的初始化函数。在服务器启动时,调用后端模型的初始化函数初始化后端模型。扫描指定目录下的所有后端模型,并获取它们的初始化函数。获取后端模型的初始化函数包含以下过程:
步骤1,定义后端初始化方法,用于将后端名称映射到初始化函数列表的字典。
步骤2,定义返回支持的后端名称的方法:返回已经支持的后端名称的集合。
步骤3,定义后端初始化方法:后端初始化方法是一个函数指针类型,指向一个函数,该函数接受一个后端对象作为输入,并返回一个以指示初始化是否成功的状态对象。在推理服务器启动时,将后端初始化方法添加到与后端名称关联的初始化函数列表中,将调用与每个后端名称关联的初始化函数列表中的每个函数,以初始化与后端相关的资源。
步骤4,将初始化函数添加到与后端名称关联的初始化函数列表中:将后端初始化方法的函数指针添加到与后端名称关联的初始化函数列表中。
步骤5,定义获取与指定后端名称关联的初始化函数列表的方法。方法接受一个后端名称作为参数,并返回与该后端名称关联的初始化函数列表。该方法查找与后端名称关联的初始化函数列表并返回与后端名称关联的初始化函数列表。定义方法返回的初始化函数列表变量类型为引用类型,因此返回的初始化函数列表可以直接用于调用函数。
步骤6,定义检查是否是已支持后端的方法:检查指定的后端名称是否支持。
步骤7,定义添加到已支持后端集合中的方法:将支持的后端名称添加到已支持后端集合中。
定义推理服务类型:推理服务类型类是推理服务器的主要类,它包含推理服务器的核心功能。该类定义了推理服务器的构造函数、启动和停止推理服务器、获取推理服务器的状态、处理推理请求、处理控制请求、处理远程过程调用框架协议请求等方法。包含以下过程:
步骤1,定义服务器成员变量。该变量是推理服务器的配置。在推理服务器启动时,将使用服务器成员变量创建推理服务器的实例。
步骤2,定义推理服务的成员方法。包含以下过程:
步骤2.1,定义推理服务类型对象构造方法。将推理服务器配置选项类型和后端初始化函数作为参数传递给构造函数。
步骤2.2,启动推理方法。启动推理方法负责启动服务器并开始监听来自客户端的请求。它使用远程过程调用框架协议来处理客户端请求,并将请求路由到适当的处理程序。启动推理方法使用远程过程调用框架协议的服务器构建类启动服务器,并将服务器的IP地址、端口号、线程数作为参数传递给远程过程调用框架协议的服务器构建类的构造函数。最后,调用远程过程调用框架协议的服务器类对象的等待方法,将阻塞当前线程,直到服务器停止。包含如下过程:
步骤2.2.1,定义远程过程调用框架协议的服务器构建类:用于构建和配置谷歌远程过程调用框架协议的服务器。并用于配置服务器的监听端口、线程池等。包含如下成员方法:
添加监听端口方法:将服务器的IP地址和端口号绑定到远程过程调用框架协议的服务器构建类对象上,以便在客户端请求到达时进行处理。
注册服务方法:将服务实现类注册到远程过程调用框架协议的服务器构建类对象中,以便在客户端请求到达时进行处理。
步骤2.2.2,利用远程过程调用框架协议的服务器构建类对象的添加监听端口方法将服务器的IP地址和端口号绑定到远程过程调用框架协议的服务器构建类对象上。
步骤2.2.3,将推理服务实现类的远程过程调用框架协议服务的成员变量注册到远程过程调用框架协议的服务器构建类对象中,以便在客户端请求到达时进行处理。
步骤2.2.4,启动远程过程调用框架协议的服务。将远程过程调用框架协议的服务类对象封装在一个智能指针中,以便在函数结束时自动释放资源。调用远程过程调用框架协议的服务类对象的等待方法,将阻塞当前线程,直到服务器停止。
步骤2.3,处理远程过程调用框架协议请求方法。首先,接受表示推理请求类型的参数,使用推理请求类型对象的成员变量获取推理请求的相关信息,例如模型名称、输入张量、输出张量等。 接下来,使用模型名称从模型管理器中获取模型实例。然后,执行推理请求。而且接受一个表示推理响应的参数,使用模型实例的推理引擎执行推理请求,并将结果存储在表示推理响应的参数中。
本实施例提供的一种模型推理交互方法,旨在提供一种高效、灵活、易于使用和定制的模型部署服务方法,以满足不同场景下的需求。具体而言,本发明提供的方法支持多后端,可并行执行多个模型,支持多种调度和批处理算法,以提高吞吐量。用户可以根据需求定制后端,将多个模型的输入输出相连接组成一个流水线,以满足不同场景下的需求。此外,该方法还支持多种硬件加速器,多种模型管理模式,包括隐式和显式模型加载,无需重启服务。模型可以存储在本地文件系统或云端。该方法支持谷歌远程过程调用框架的协议,易于部署。
本发明的有益之处在于提供了一种高效、灵活地选择和使用多个后端的方法,同时提供了推理请求处理和推理服务管理的全面实现。这使得深度学习模型的推理过程更加高效和灵活,同时可以提高推理服务器的性能和可管理性。具体来说,本发明的有益之处包括:
(1)支持多种推理引擎:本发明提供了一种方法,可以使用不同的推理引擎来执行模型推理。这种方法可以使得推理过程更加高效和灵活,同时可以提高推理服务器的性能和可扩展性。
(2)提供推理请求处理的全面实现:本发明提供了一种推理请求处理模块,可以处理设置输入张量数据、检索输出张量数据和执行推理请求,确保所有必需的输入和输出张量都得到正确处理。这种方法可以使得推理过程更加可靠和稳定。
(3)提供推理服务管理的全面实现:本发明提供了一种推理服务管理模块,可以实现推理服务器的启动、部署和管理过程。这种方法可以使得推理服务器的管理更加方便和高效。
综上,本发明的有益之处在于提供了一种高效、灵活、可靠和易于管理的深度学习模型推理方法,可以提高推理服务器的性能和可管理性,同时可以满足不同应用场景的需求。
实施例2
如图5,本实施例提供了一种模型推理交互设备,包括:
深度学习模型解析和加载模块1,用于接收模型推理请求信息,从预设的模型仓库中加载推理请求信息中指定的深度学习模型并转换为预设的中间表示形式;
推理引擎选择模块2,用于根据推理请求信息从推理引擎库中加载指定的推理引擎,将中间表示形式的深度学习模型转换为与推理引擎匹配的形式;
推理请求处理模块3,用于采用推理引擎对深度学习模型进行推理,以异步形式发送与模型推理请求信息要求的形式相匹配的输出张量信息;
推理服务管理模块4,用于实现服务端的启动、部署和管理过程。
本实施例提供的模型推理交互设备,包括模型解析和加载模块、推理引擎选择模块、推理请求处理模块和推理服务管理模块。这些模块相互协作,实现了一种高效、灵活、易于使用和定制的模型推理交互设备,交互设备具有高效、灵活、易于使用和定制的特点,可广泛应用于各种场景。
实施例3
本实施例提供了一种电子设备,包括:一个或多个处理器以及存储器,所述存储器内储存有一个或多个程序,所述一个或多个程序包括用于执行如实施例1所述模型推理交互方法的指令。
实施例4
本实施例提供了一种计算机可读存储介质,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行如实施例1所述模型推理交互方法的指令。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种模型推理交互方法,其特征在于,应用于服务端,包括如下步骤:
接收推理请求信息,从包括多个中间表示形式的深度学习模型的模型仓库中加载所述推理请求信息中指定的深度学习模型;
根据所述推理请求信息,从包括多个推理引擎的推理引擎库中加载指定的推理引擎,将中间表示形式的深度学习模型转换为与所述推理引擎匹配的形式;
采用所述推理引擎对所述深度学习模型进行推理,发送与所述推理请求信息要求的形式相匹配的输出张量信息。
2.根据权利要求1所述的一种模型推理交互方法,其特征在于,加载所述的深度学习模型的过程包括如下步骤:
在预设的模型仓库中检测所述推理请求信息中指定的深度学习模型是否已经加载,若是,得到用于调用模型的指针,结束深度学习模型的加载过程,若否,通过使用预置的解析器对指定的深度学习模型进行解析,将深度学习模型转换为包括多个输入计算图和多个输出计算图的中间表示形式,并保存至所述模型仓库中,得到用于调用模型的指针。
3.根据权利要求1所述的一种模型推理交互方法,其特征在于,所述的推理引擎的加载过程包括如下步骤:
在所述推理引擎库中检测指定的推理引擎是否已经加载,若是,结束推理引擎的加载过程,若否,通过继承定义有通用接口和功能的基类,以工厂模式创建新的推理引擎并注册到所述推理引擎库中。
4.根据权利要求3所述的一种模型推理交互方法,其特征在于,所述的推理引擎的加载过程还包括如下步骤:
根据所述深度学习模型的框架结构和硬件创建用于反映在设备上运行时所需的资源和状态的执行上下文信息,并根据所述推理请求信息,基于所述执行上下文信息对所述深度学习模型进行预热。
5.根据权利要求1所述的一种模型推理交互方法,其特征在于,采用推理引擎对深度学习模型进行推理的过程包括如下步骤:
根据所述的推理请求信息,获取输入张量信息并转换为与所述推理引擎匹配的格式,基于指定的深度学习模型,通过前向传播计算得到所述输出张量信息。
6.根据权利要求1所述的一种模型推理交互方法,其特征在于,在对所述深度学习模型进行推理之前,还包括:
根据预设的规则,针对推理必需的输入张量和输出张量,检查的张量的尺寸和所占空间大小是否与指定的深度学习模型相匹配。
7.根据权利要求1所述的一种模型推理交互方法,其特征在于,以异步形式接收多个模型推理请求,以异步形式发送多个输出张量信息。
8.一种模型推理交互设备,其特征在于,包括:
深度学习模型解析和加载模块,用于接收推理请求信息,从预设的模型仓库中加载所述推理请求信息中指定的深度学习模型并转换为预设的中间表示形式;
推理引擎选择模块,用于接收推理请求信息,从包括多个中间表示形式的深度学习模型的模型仓库中加载所述推理请求信息中指定的深度学习模型;
推理请求处理模块,用于根据所述推理请求信息从包括多个推理引擎的推理引擎库中加载指定的推理引擎,将中间表示形式的深度学习模型转换为与所述推理引擎匹配的形式;
推理服务管理模块,采用所述推理引擎对所述深度学习模型进行推理,发送与所述推理请求信息要求的形式相匹配的输出张量信息。
9.一种电子设备,其特征在于,包括:一个或多个处理器以及存储器,所述存储器内储存有一个或多个程序,所述一个或多个程序包括用于执行如权利要求1-7任一所述模型推理交互方法的指令。
10.一种计算机可读存储介质,其特征在于,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行如权利要求1-7任一所述模型推理交互方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310645642.6A CN116362336B (zh) | 2023-06-02 | 2023-06-02 | 一种模型推理交互方法、电子设备、可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310645642.6A CN116362336B (zh) | 2023-06-02 | 2023-06-02 | 一种模型推理交互方法、电子设备、可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116362336A true CN116362336A (zh) | 2023-06-30 |
CN116362336B CN116362336B (zh) | 2023-08-22 |
Family
ID=86913875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310645642.6A Active CN116362336B (zh) | 2023-06-02 | 2023-06-02 | 一种模型推理交互方法、电子设备、可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116362336B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116723191A (zh) * | 2023-08-07 | 2023-09-08 | 深圳鲲云信息科技有限公司 | 利用加速装置执行数据流加速计算的方法和系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112270410A (zh) * | 2020-10-19 | 2021-01-26 | 北京达佳互联信息技术有限公司 | 在线推理服务系统、提供在线推理服务的方法及装置 |
CN112329945A (zh) * | 2020-11-24 | 2021-02-05 | 广州市网星信息技术有限公司 | 一种模型部署及推理的方法和装置 |
US20210150389A1 (en) * | 2019-11-14 | 2021-05-20 | Axell Corporation | Inference system, inference device, and inference method |
CN112966824A (zh) * | 2021-01-28 | 2021-06-15 | 北京百度网讯科技有限公司 | 推理库的部署方法、装置和电子设备 |
CN113780536A (zh) * | 2021-10-29 | 2021-12-10 | 平安科技(深圳)有限公司 | 一种云端深度学习模型转换方法、系统、设备及介质 |
CN113835695A (zh) * | 2021-11-25 | 2021-12-24 | 之江实验室 | 基于统一后端引擎的深度学习框架与硬件设备适配方法 |
US20220358375A1 (en) * | 2021-05-04 | 2022-11-10 | International Business Machines Corporation | Inference of machine learning models |
CN115358404A (zh) * | 2022-09-02 | 2022-11-18 | 京东科技控股股份有限公司 | 基于机器学习模型推理的数据处理方法、装置及设备 |
CN116126365A (zh) * | 2023-04-18 | 2023-05-16 | 之江实验室 | 一种模型部署的方法、系统、存储介质及电子设备 |
-
2023
- 2023-06-02 CN CN202310645642.6A patent/CN116362336B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210150389A1 (en) * | 2019-11-14 | 2021-05-20 | Axell Corporation | Inference system, inference device, and inference method |
CN112270410A (zh) * | 2020-10-19 | 2021-01-26 | 北京达佳互联信息技术有限公司 | 在线推理服务系统、提供在线推理服务的方法及装置 |
CN112329945A (zh) * | 2020-11-24 | 2021-02-05 | 广州市网星信息技术有限公司 | 一种模型部署及推理的方法和装置 |
CN112966824A (zh) * | 2021-01-28 | 2021-06-15 | 北京百度网讯科技有限公司 | 推理库的部署方法、装置和电子设备 |
US20220358375A1 (en) * | 2021-05-04 | 2022-11-10 | International Business Machines Corporation | Inference of machine learning models |
CN113780536A (zh) * | 2021-10-29 | 2021-12-10 | 平安科技(深圳)有限公司 | 一种云端深度学习模型转换方法、系统、设备及介质 |
CN113835695A (zh) * | 2021-11-25 | 2021-12-24 | 之江实验室 | 基于统一后端引擎的深度学习框架与硬件设备适配方法 |
CN115358404A (zh) * | 2022-09-02 | 2022-11-18 | 京东科技控股股份有限公司 | 基于机器学习模型推理的数据处理方法、装置及设备 |
CN116126365A (zh) * | 2023-04-18 | 2023-05-16 | 之江实验室 | 一种模型部署的方法、系统、存储介质及电子设备 |
Non-Patent Citations (2)
Title |
---|
ESHRATIFAR AE 等: "JointDNN: An Efficient Training and Inference Engine for Intelligent Mobile Cloud Computing Services", 《IEEE TRANSACTIONS ON MOBILE COMPUTING》, vol. 20, no. 02, pages 565 - 576, XP011831063, DOI: 10.1109/TMC.2019.2947893 * |
周立君 等: "使用TensorRT进行深度学习推理", 《应用光学》, vol. 41, no. 02, pages 337 - 341 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116723191A (zh) * | 2023-08-07 | 2023-09-08 | 深圳鲲云信息科技有限公司 | 利用加速装置执行数据流加速计算的方法和系统 |
CN116723191B (zh) * | 2023-08-07 | 2023-11-10 | 深圳鲲云信息科技有限公司 | 利用加速装置执行数据流加速计算的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116362336B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304201B (zh) | 对象更新方法、装置及设备 | |
JP6192534B2 (ja) | 仮想アプリケーション拡張ポイント | |
US7058954B1 (en) | System and method for facilitating dynamic loading of stub information to enable a program operating in one address space to invoke processing of a remote method or procedure in another space | |
US10970194B2 (en) | Systems and methods for initializing test environments | |
US8464242B2 (en) | Virtualization of configuration settings | |
JPH07146844A (ja) | 製造装置の制御および調整を行う統合オートメーション開発システムおよび方法 | |
CN112256444B (zh) | 基于dag的业务处理方法、装置、服务器及存储介质 | |
CN116362336B (zh) | 一种模型推理交互方法、电子设备、可读存储介质 | |
US7805711B2 (en) | Redirection interface system and method for CIM object manager provider | |
CN113504916B (zh) | 一种代码更新方法和装置、计算机设备及介质 | |
CN117076096A (zh) | 任务流程的执行方法、装置、计算机可读介质及电子设备 | |
CN116192784B (zh) | 一种基于广播机器人的消息通知方法、装置及设备 | |
CN118331574A (zh) | 插件实现方法以及相关设备 | |
JPH11249919A (ja) | 手続き呼出しの処理方法およびスタブ生成方法 | |
CN118466991A (zh) | 节点管理组件升级方法、装置、电子设备及存储介质 | |
Fowler | The shell as a service | |
CN118886068A (zh) | 数据处理的方法、装置、电子设备和存储介质 | |
CN118057306A (zh) | 安装包的生成方法、装置、服务器、介质和程序产品 | |
CN113032094A (zh) | 一种cad容器化方法、装置及电子设备 | |
CN118733465A (zh) | 页面代码的开发调试方法和装置 | |
CN117573758A (zh) | 基于bi平台的数据流编排方法 | |
CN117762564A (zh) | 函数处理方法及装置、电子设备和计算机可读存储介质 | |
CN118227160A (zh) | 服务更新方法及相关产品 | |
CN117252750A (zh) | 医疗机器人图像算法部署方法、调度方法、装置及系统 | |
CN117111894A (zh) | 基于低代码开发的etl模块进行数据转换的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |