CN116126365A - 一种模型部署的方法、系统、存储介质及电子设备 - Google Patents

一种模型部署的方法、系统、存储介质及电子设备 Download PDF

Info

Publication number
CN116126365A
CN116126365A CN202310413623.0A CN202310413623A CN116126365A CN 116126365 A CN116126365 A CN 116126365A CN 202310413623 A CN202310413623 A CN 202310413623A CN 116126365 A CN116126365 A CN 116126365A
Authority
CN
China
Prior art keywords
model
target
information
module
hardware
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
Application number
CN202310413623.0A
Other languages
English (en)
Other versions
CN116126365B (zh
Inventor
王宏升
陈�光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202310413623.0A priority Critical patent/CN116126365B/zh
Publication of CN116126365A publication Critical patent/CN116126365A/zh
Application granted granted Critical
Publication of CN116126365B publication Critical patent/CN116126365B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本说明书公开了一种模型部署的方法、系统、存储介质及电子设备,包括:响应于用户的输入操作,确定待部署模型的部署信息。先根据待部署模型的模型信息,将待部署模型转换为中间表示模型。再根据用户选择的目标部署引擎的引擎信息,对中间表示模型进行转换,生成目标部署引擎支持的目标模型。使得待部署模型可以由不同的目标部署引擎进行模型部署,从而在后续过程中,只需对目标模型进行编译,得到可执行文件。再在目标硬件上运行可执行文件,以对待部署模型进行部署。

Description

一种模型部署的方法、系统、存储介质及电子设备
技术领域
本说明书涉及计算机技术领域,尤其涉及一种模型部署的方法、系统、存储介质及电子设备。
背景技术
随着科技的不断发展,深度学习模型应用的越来越广泛。通常,需要在模型框架中离线训练深度学习模型,在深度学习模型训练完成之后,再将深度学习模型部署到硬件设备上,以运行深度学习模型执行业务。
目前对深度学习模型研究方向主要集中在模型训练上,但是对于如何部署模型,即让训练完成的深度学习模型在特定的硬件环境中运行,仍是重要的问题。
基于此,本说明书提供一个模型部署的方法及系统。
发明内容
本说明书提供一种模型部署的方法、系统、存储介质及电子设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种模型部署的方法,包括:
响应于用户的输入操作,确定待部署模型的部署信息,其中,所述部署信息至少包括所述待部署模型的模型信息、所述用户选择的目标部署引擎的引擎信息和所述用户选择的目标硬件的硬件信息;
根据所述模型信息,将所述待部署模型转换为中间表示模型;
根据所述目标部署引擎的引擎信息,对所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型;
对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件;
对所述可执行文件进行解析,根据解析结果,在所述目标硬件上运行所述可执行文件。
可选地,根据所述模型信息,将所述待部署模型转换为中间表示模型,具体包括:
根据所述模型信息,确定所述待部署模型的计算图;
响应于所述用户的优化选择操作,确定所述用户选择的优化方式,并根据确定出的优化方式,对所述待部署模型的计算图进行优化;
根据第一转换规则,对优化后的计算图进行转换,得到中间表示的计算图;
根据所述中间表示的计算图,确定中间表示模型。
可选地,根据所述目标部署引擎的引擎信息,对所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型,具体包括:
根据所述目标部署引擎的引擎信息,确定所述目标部署引擎支持的数据格式,其中,所述数据格式包括模型参数的格式、张量的格式和算子的格式中的至少一种;
根据第二转换规则和所述数据格式,对所述中间表示模型进行转换,生成符合所述数据格式的目标模型。
可选地,对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件,具体包括:
根据所述目标硬件的硬件信息,确定运行所述待部署模型的目标硬件;
确定运行所述待部署模型的目标硬件对应的格式规范,并根据所述格式规范对所述目标模型进行编译,得到可执行文件。
可选地,根据解析结果,在所述目标硬件上运行所述可执行文件,具体包括:
根据解析结果,确定所述目标模型中各算子之间的依赖关系;
根据所述依赖关系,确定所述目标模型运行时各算子的算子执行序列;
按照所述算子执行序列,在所述目标硬件上运行所述可执行文件。
可选地,响应于用户的输入操作,确定待部署模型的部署信息,具体包括:
响应于用户发送的编译指令,根据待部署模型文件的位置,确定所述待部署模型的模型信息,其中,所述编译指令包括所述待部署模型文件的位置、所述用户选择的目标硬件的硬件信息、所述用户选择的目标部署引擎的引擎信息和编译后文件的位置;
对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件,具体包括:
对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件,并根据所述编译指令中包含的编译后文件的位置,将所述可执行文件保存。
可选地,对所述可执行文件进行解析,具体包括:
响应于所述用户发送的运行指令,根据所述可执行文件的位置,确定所述可执行文件,并对所述可执行文件进行解析,其中,所述运行指令包括所述可执行文件的位置。
可选地,根据解析结果,在所述目标硬件上运行所述可执行文件,具体包括:
响应于所述用户发送的业务数据,根据解析结果以及所述业务数据,在所述目标硬件上运行所述可执行文件,判断是否得到运行结果;
若是,确定所述待部署模型部署成功;
否则,确定所述待部署模型部署失败。
本说明书提供了一种模型部署的系统,所述系统包括:信息管理模块、编译器和执行器,其中:
所述信息管理模块用于响应于用户的输入操作,确定待部署模型的部署信息,其中,所述部署信息至少包括所述待部署模型的模型信息、所述用户选择的目标部署引擎的引擎信息和所述用户选择的目标硬件的硬件信息;
所述编译器用于根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述模型信息,将所述待部署模型转换为中间表示模型,并根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述目标部署引擎的引擎信息,对所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型,对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件;
所述执行器用于对所述编译器生成的所述可执行文件进行解析,根据解析结果,在所述目标硬件上运行所述可执行文件。
可选地,所述编译器包括格式定义模块、中间表示编译器、目标表示编译器和可执行文件生成模块;
所述格式定义模块用于存储第一转换规则、第二转换规则和格式规范;
所述中间表示编译器用于根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述模型信息,采用从所述格式定义模块获取的第一转换规则,将所述待部署模型转换为中间表示模型;
所述目标表示编译器用于根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述引擎信息,采用从所述格式定义模块获取的第二转换规则,对所述中间表示编译器得到的所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型;
所述可执行文件生成模块用于采用从所述格式定义模块获取的格式规范,对所述目标表示编译器得到的所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件。
可选地,所述执行器包括硬件抽象模块、推理模块和数据支持模块;
所述硬件抽象模块用于存储通用执行环境,根据所述系统中存储的硬件信息和所述通用执行环境,生成各硬件分别对应的执行环境;
所述数据支持模块用于存储基础数据的数据结构和所述基础数据的使用方法,其中,所述基础数据至少包括字符串、引用计数和张量;
所述推理模块用于在所述硬件抽象模块存储的执行环境中,确定所述目标硬件的执行环境,并对所述可执行文件生成模块生成的所述可执行文件进行解析,根据解析结果,利用所述数据支持模块存储的基础数据的数据结构和所述基础数据的使用方法,在所述目标硬件的执行环境中运行所述可执行文件。
可选地,所述信息管理模块还用于响应于所述用户的优化选择操作,确定所述用户选择的优化方式;
所述编译器还包括优化模块;
所述优化模块用于根据所述信息管理模块确定出的所述用户选择的优化方式,对所述待部署模型进行优化。
可选地,所述中间表示编译器具体用于,根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述模型信息,确定所述待部署模型的计算图,并发送给所述优化模块,以使所述优化模块根据所述信息管理模块确定出的优化方式,对所述待部署模型的计算图进行优化,并返回给所述中间表示编译器,采用从所述格式定义模块获取的第一转换规则,对优化后的计算图进行转换,得到中间表示的计算图,根据所述中间表示的计算图,确定中间表示模型。
可选地,所述目标表示编译器具体用于,根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述引擎信息,确定所述目标部署引擎支持的数据格式,采用从所述格式定义模块获取的所述数据格式对应的第二转换规则,对所述中间表示编译器得到的所述中间表示模型进行转换,生成符合所述数据格式的目标模型,其中,所述数据格式包括模型参数的格式、张量的格式和算子的格式中的至少一种。
可选地,所述可执行文件生成模块具体用于,根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述硬件信息,确定运行所述待部署模型的目标硬件,采用从所述格式定义模块获取的所述目标硬件对应的格式规范,对所述目标表示编译器得到的所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件。
可选地,所述推理模块包括解析子模块和序列管理子模块;
所述解析子模块用于对可执行文件生成模块生成的可执行文件进行解析;
所述序列管理子模块用于根据所述解析子模块解析得到的解析结果和所述信息管理模块确定的所述待部署模型的部署信息中包含的所述模型信息,确定所述目标模型中各算子之间的依赖关系,根据所述依赖关系,确定所述目标模型运行时各算子的算子执行序列。
可选地,所述推理模块还包括信息传输子模块和运行子模块;
所述信息传输子模块用于在所述可执行文件运行过程中,进行信息传输;
所述运行子模块用于在硬件抽象模块存储的执行环境中,确定目标硬件的执行环境,按照所述序列管理子模块确定的所述算子执行序列,利用所述数据支持模块存储的基础数据的数据结构和所述基础数据的使用方法,以及通过所述信息传输子模块进行信息传输,在所述目标硬件的执行环境中运行所述可执行文件。
可选地,所述信息管理模块具体用于,响应于用户发送的编译指令,根据待部署模型文件的位置,确定所述待部署模型的模型信息,其中,所述编译指令包括所述待部署模型文件的位置、所述用户选择的目标硬件的硬件信息、所述用户选择的目标部署引擎的引擎信息和编译后文件的位置;
所述可执行文件生成模块具体用于,采用从所述格式定义模块获取的格式规范,对所述目标表示编译器得到的所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件,并根据所述编译指令中包含的编译后文件的位置,将所述可执行文件保存。
可选地,所述推理模块具体用于,响应于所述用户发送的运行指令,根据所述可执行文件的位置,确定所述可执行文件生成模块生成的所述可执行文件,并对所述可执行文件进行解析,其中,所述运行指令包括所述可执行文件的位置。
可选地,所述推理模块具体用于,响应于所述用户发送的业务数据,根据解析结果以及所述业务数据,在所述目标硬件上运行所述可执行文件,判断是否得到运行结果,若是,确定所述待部署模型部署成功,否则,确定所述待部署模型部署失败。
可选地,所述系统还包括硬件模块,所述硬件模块包括通用信息子模块和新增硬件子模块;
所述通用信息子模块用于存储增加硬件所需的信息以及各信息对应的调用接口;
所述新增硬件子模块用于响应于所述用户发送的新增硬件的硬件信息,调用所述通用信息子模块存储的调用接口,生成所述新增硬件,并将所述新增硬件的硬件信息发送给所述硬件抽象模块,以使所述硬件抽象模块根据所述新增硬件的硬件信息和所述通用执行环境,生成所述新增硬件对应的执行环境。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述模型部署的方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述模型部署的方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
本说明书提供的模型部署的方法,响应于用户的输入操作,确定待部署模型的部署信息。之后,根据待部署模型的模型信息,将待部署模型转换为中间表示模型。再根据用户选择的目标部署引擎的引擎信息,对中间表示模型进行转换,生成目标部署引擎支持的目标模型。然后,对目标模型进行编译,得到在目标硬件上运行的可执行文件。对可执行文件进行解析,并根据解析结果,在目标硬件上运行可执行文件。
从上述方法中可以看出,本申请在进行模型部署时,通过先根据待部署模型的模型信息,将待部署模型转换为中间表示模型。再根据用户选择的目标部署引擎的引擎信息,将中间表示模型转换为目标部署引擎支持的目标模型的方式,使得待部署模型可以由不同的目标部署引擎进行模型部署,从而在后续过程中,只需对目标模型进行编译,得到可执行文件。再在目标硬件上运行可执行文件,以对待部署模型进行部署。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中提供的一种模型部署的方法的流程示意图;
图2为本说明书中提供的一种模型部署的总体系统的示意图;
图3为本说明书中提供的一种编译器的结构的示意图;
图4为本说明书中提供的一种执行器的结构的示意图;
图5为本说明书中提供的一种模型部署的系统的示意图;
图6为本说明书提供的一种对应于图1的电子设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的一种模型部署的方法的流程示意图,包括以下步骤:
S100:响应于用户的输入操作,确定待部署模型的部署信息,其中,所述部署信息至少包括所述待部署模型的模型信息、所述用户选择的目标部署引擎的引擎信息和所述用户选择的目标硬件的硬件信息。
在本说明书中,用于进行模型部署的设备可以响应于用户的输入操作,确定待部署模型的部署信息,其中,用于进行模型部署的设备可以是服务器,也可以是诸如台式电脑、笔记本电脑等电子设备。为了便于描述,下面仅以服务器为执行主体,对本说明书提供的模型部署的方法进行说明。
部署信息至少包括待部署模型的模型信息、用户选择的目标部署引擎的引擎信息和用户选择的目标硬件的硬件信息。其中,模型信息可以包括模型参数、模型结构、模型权重和算子等信息。引擎信息至少包括部署引擎标识,硬件信息至少包括硬件标识。部署引擎用于运行自身能够支持的格式的模型,以将模型部署到硬件上,比如TensorRT,ONNXRuntime,OpenVINO,ncnn,MNN等多种部署引擎。硬件可以为芯片、手机和电脑等多种类型的硬件设备。
具体的,用户可以在客户端输入待部署模型的模型信息,以及选择部署引擎和硬件。其中,用户选择的部署引擎作为目标部署引擎,对应的用户选择的硬件作为目标硬件。服务器响应于用户的输入操作,确定待部署模型的部署信息。在用户选择部署引擎和硬件时,用户可以选择多个部署引擎或者多个硬件,本说明书不做具体限定。相应的,服务器确定出的待部署模型的部署信息中可以包含多个目标部署引擎的引擎信息或者包含多个目标硬件的硬件信息,还可以同时包含多个目标部署引擎的引擎信息和多个目标硬件的硬件信息。
S102:根据所述模型信息,将所述待部署模型转换为中间表示模型。
服务器可以根据模型信息,采用第一转换规则,将待部署模型转换为中间表示模型,其中,第一转换规则为预先定义好的转换关系,包含待部署模型的模型信息和中间表示模型的模型信息之间的转换关系,模型信息为模型参数、张量和算子等信息,比如可以根据第一转换规则,将待部署模型的算子1转换为中间表示模型中与算子1的功能相同的算子2,算子1和算子2为功能相同数据格式不同的算子。中间表示模型为通用格式的模型,便于后续直接将通用的中间表示模型转换为各种不同部署引擎支持的数据格式的模型。
为了提高后续运行目标模型的速度,减少运行目标模型的运行成本,降低运行目标模型的能耗,服务器可以对待部署模型进行优化,比如可以对待部署模型的计算图进行优化。服务器也可以对将待部署模型进行转换后的中间表示模型进行优化。具体的,服务器可以根据模型信息,将待部署模型转换为中间表示模型,确定中间表示模型的计算图。之后,响应于用户的优化选择操作,确定用户选择的优化方式,并根据确定出的优化方式,对中间表示模型的计算图进行优。再根据优化后的计算图,确定优化后的中间表示模型。后续将优化后的中间表示模型转换为目标模型,并在目标硬件上运行。
另外,为了便于后续过程将待部署模型转换为中间表示模型,节省转换成本,提升转换效率,服务器可以先对待部署模型进行优化,再将优化后的模型转换为中间表示模型。因此,服务器可以根据待部署模型的模型信息,确定待部署模型的计算图。之后,响应于用户的优化选择操作,确定用户选择的优化方式,并根据确定出的优化方式,对待部署模型的计算图进行优化。然后,根据第一转换规则,对优化后的计算图进行转换,得到中间表示的计算图。再根据中间表示的计算图,确定中间表示模型。
其中,对模型进行优化的方式可以有图优化、计算优化、数据传输优化和内存优化等多种优化方式。图优化包括算子融合和子图变换等多种优化方式,计算优化包括量化,数据传输优化为在数据通信时所进行的优化,可以为任意已有的优化方式进行优化,比如数据同步时可以采用已有的集合通信手段进行数据同步。内存优化为对内存的调整和释放的优化。
在根据待部署模型的模型信息,确定待部署模型的计算图时,可以采用待部署模型对应的深度学习框架自带的编译器,确定待部署模型的计算图。也可以采用任意已有的手段确定待部署模型的计算图,本说明书不做具体限定。
在本说明书中,用户可以选择多种优化方式对待部署模型进行优化,以及对待部署模型哪一部分进行优化。比如待部署模型具有3层网络结构,用户可以选择对待部署模型的第二层进行任意选择的优化方式进行优化。再比如用户也可以选择对待部署模型的第二层的算子进行算子融合。再比如用户还可以选择对待部署模型的第一层和第二层的算子进行算子融合以及量化。
另外,用户还可以在步骤S100的客户端输入选择的优化方式,服务器可以按照选择的优化方式,确定如何对待部署模型进行优化。故待部署模型的部署信息还包括用户选择的优化方式的优化信息,对于用户通过何种方式在何时将优化方式发送给服务器,本说明书不做具体限定。
S104:根据所述目标部署引擎的引擎信息,对所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型。
服务器可以根据目标部署引擎的引擎信息,采用第二转换规则,对中间表示模型进行转换,生成目标部署引擎支持的目标模型。其中,第二转换规则为预先定义好的转换关系,包含中间表示模型的模型信息与各部署引擎支持的数据格式的模型的模型信息之间的转换关系,模型信息为模型参数、张量和算子等信息,比如可以根据第二转换规则,将中间表示模型的算子1转换为目标模型中与算子1的功能相同的算子2,算子1和算子2为功能相同数据格式不同的算子。目标模型为经过中间表示模型转换的,且目标部署引擎支持的数据格式的模型。
具体的,服务器可以根据目标部署引擎的引擎信息,确定目标部署引擎支持的数据格式。再根据第二转换规则和数据格式,对中间表示模型进行转换,生成符合数据格式的目标模型,其中,数据格式至少包括模型参数的格式、张量的格式和算子的格式中的至少一种。
S106:对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件。
服务器可以采用预先定义的格式规范,对目标模型进行编译,得到在目标硬件上运行的可执行文件。其中,格式规范包括可执行文件的规范以及属性设置规范,格式规范定义了描述模型参数、张量和算子等信息的可执行文件的格式。具体的,服务器可以根据目标硬件的硬件信息,确定运行待部署模型的目标硬件。然后,确定运行待部署模型的目标硬件对应的格式规范,并根据格式规范对目标模型进行编译,得到可执行文件。
S108:对所述可执行文件进行解析,根据解析结果,在所述目标硬件上运行所述可执行文件。
服务器可以对可执行文件进行解析,根据解析结果,在目标硬件上运行可执行文件。其中,可以采用任意已有手段对可执行文件进行解析,得到可执行文件的语义信息。具体的,服务器可以对可执行文件进行解析,并根据解析结果,确定目标模型中各算子之间的依赖关系。根据依赖关系,确定目标模型运行时各算子的算子执行序列,按照算子执行序列,在目标硬件上运行可执行文件。当可以在目标硬件上运行可执行文件时,则确定待部署模型部署成功,否则,确定待部署模型部署失败。
从上述方法中可以看出,本申请在进行模型部署时,先根据待部署模型的模型信息,将待部署模型转换为中间表示模型。再根据用户选择的目标部署引擎的引擎信息,将中间表示模型转换为目标部署引擎支持的目标模型。之后,对目标模型进行编译,得到可执行文件,再在目标硬件上运行可执行文件,以对待部署模型进行部署,使得待部署模型可以由不同的目标部署引擎进行模型部署。同时,在将待部署模型转换为中间表示模型时,可以对待部署模型进行优化,提高了后续运行模型时的计算速率。另外,可以先对待部署模型进行优化,再将优化后的模型转换为中间表示模型,降低了模型转换的成本,提高了转换速率。
在上述步骤S100响应于用户的输入操作,确定待部署模型的部署信息时,服务器可以响应于用户发送的编译指令,根据待部署模型文件的位置,确定待部署模型的模型信息,其中,编译指令包括待部署模型文件的位置、用户选择的目标硬件的硬件信息、用户选择的目标部署引擎的引擎信息和编译后文件的位置。待部署模型文件的位置为待部署模型文件的存储位置,编译后文件的位置为对待部署模型进行编译后得到的可执行文件的存储位置。
基于此,在上述步骤S106对目标模型进行编译,得到在所述目标硬件上运行的可执行文件时,服务器可以对目标模型进行编译,得到在目标硬件上运行的可执行文件,并根据编译指令中包含的编译后文件的位置,将可执行文件保存。
相应的,在上述步骤S108对可执行文件进行解析时,服务器可以响应于用户发送的运行指令,根据可执行文件的位置,确定可执行文件,并对可执行文件进行解析,其中,运行指令包括可执行文件的位置。
在上述步骤S108根据解析结果,在目标硬件上运行可执行文件时,服务器可以响应于用户发送的业务数据,根据解析结果以及业务数据,在目标硬件上运行可执行文件,判断是否得到运行结果,若是,确定待部署模型部署成功,否则,确定待部署模型部署失败。其中,业务数据为可以作为待部署模型的输入的数据,不同的待部署模型对应的业务可能不同,对应的业务数据也可能不同。故业务数据可以根据待部署模型实际应用的业务进行确定,也可以将对待部署模型进行训练时的训练样本或者测试样本作为业务数据。比如待部署模型为图像分类模型,用于判断图像中的动物是否为猫,那么业务数据可以为包含猫的图像。
进一步地,为了确定在目标硬件上运行的待部署模型的输出的结果,即运行结果,是否符合预期。服务器可以将测试样本作为业务数据,确定运行结果与测试样本的标注是否一致,若是,则确定运行结果符合预期,待部署模型达到预期要求。否则,待部署模型未能达到预期要求,可以重新对待部署模型进行部署,或者在重新部署待部署模型时,对待部署模型进行优化。
本说明书中提供了一种模型部署的系统,如图2所示,图2为本说明书中提供的一种模型部署的整体系统的示意图,图2所示的系统包括信息管理模块200、编译器201和执行器202。
信息管理模块200用于响应于用户的输入操作,确定待部署模型的部署信息,其中,部署信息至少包括待部署模型的模型信息、用户选择的目标部署引擎的引擎信息和用户选择的目标硬件的硬件信息。模型信息可以包括模型参数、模型结构、模型权重和算子等信息。引擎信息至少包括部署引擎标识,硬件信息至少包括硬件标识。
具体的,用户可以在客户端输入待部署模型的模型信息,以及选择部署引擎和硬件。其中,用户选择的部署引擎作为目标部署引擎,对应的用户选择的硬件作为目标硬件。然后,信息管理模块200响应于用户的输入操作,确定待部署模型的部署信息。在用户选择部署引擎和硬件时,用户可以选择多个部署引擎或者多个硬件,本说明书不做具体限定。相应的,服务器确定出的待部署模型的部署信息中可以包含多个目标部署引擎的引擎信息或者包含多个目标硬件的硬件信息,还可以同时包含多个目标部署引擎的引擎信息和多个目标硬件的硬件信息。
编译器201用于根据信息管理模块确定的待部署模型的部署信息中包含的模型信息,将待部署模型转换为中间表示模型,并根据信息管理模块确定的待部署模型的部署信息中包含的目标部署引擎的引擎信息,对中间表示模型进行转换,生成目标部署引擎支持的目标模型,对目标模型进行编译,得到在目标硬件上运行的可执行文件。具体的,如图3所示,图3为本说明书中提供的一种编译器的结构的示意图,图3中的编译器201包括格式定义模块2011、中间表示编译器2012、目标表示编译器2013和可执行文件生成模块2014。
格式定义模块2011用于存储第一转换规则、第二转换规则和格式规范,其中,第一转换规则为预先定义好的转换关系,包含待部署模型的模型信息和中间表示模型的模型信息之间的转换关系,第二转换规则为预先定义好的转换关系,包含中间表示模型的模型信息与各部署引擎支持的数据格式的模型的模型信息之间的转换关系。格式规范包括以浮点缓存区的形式定义的可执行文件的规范以及属性设置规范,该格式规范用于确定描述模型参数、张量和算子等信息的可执行文件的格式。
中间表示编译器2012用于根据信息管理模块200确定的待部署模型的部署信息中包含的模型信息,采用从格式定义模块2011获取的第一转换规则,将待部署模型转换为中间表示模型。其中,中间表示模型为通用格式的模型,适用于后续转换为各种不同部署引擎支持的数据格式的模型。
为了提高后续运行目标模型的速度,减少运行目标模型的运行成本,服务器可以对待部署模型进行优化,也可以对中间表示模型进行优化。但是,为了便于后续过程将待部署模型转换为中间表示模型,节省转换成本,提升转换效率。故可以先对待部署模型进行优化,再将优化后的模型转换为中间表示模型。因此,在中间表示编译器2012将待部署模型转换为中间表示模型之前,信息管理模块200还用于响应于用户的优化选择操作,确定用户选择的优化方式。其中,对模型进行优化的方式可以有图优化、计算优化、数据传输优化和内存优化等多种优化方式。用户可以选择一种或者多种优化方式对待部署模型进行优化,以及对待部署模型哪一部分或者哪几部分进行优化,本说明书不做具体限定。
编译器201还可以包括优化模块2015,优化模块2015用于根据信息管理模块200确定出的用户选择的优化方式,对待部署模型进行优化。
基于此,中间表示编译器2012可以根据信息管理模块200确定的待部署模型的部署信息中包含的模型信息,确定待部署模型的计算图,并发送给优化模块2015,以使优化模块2015根据信息管理模块200确定出的优化方式,对待部署模型的计算图进行优化,并返回给中间表示编译器2012。然后,中间表示编译器2012采用从格式定义模块2011获取的第一转换规则,对优化后的计算图进行转换,得到中间表示的计算图,根据中间表示的计算图,确定中间表示模型。
目标表示编译器2013用于根据信息管理模块200确定的待部署模型的部署信息中包含的引擎信息,采用从格式定义模块2011获取的第二转换规则,对中间表示编译器2012得到的中间表示模型进行转换,生成目标部署引擎支持的目标模型。其中,目标模型为经过中间表示模型转换的,且目标部署引擎支持的数据格式的模型。
具体的,目标表示编译器2013根据信息管理模块200确定的待部署模型的部署信息中包含的引擎信息,确定目标部署引擎支持的数据格式,采用从格式定义模块2011获取的数据格式对应的第二转换规则,对中间表示编译器2012得到的中间表示模型进行转换,生成符合数据格式的目标模型,其中,数据格式包括模型参数的格式、张量的格式和算子的格式中的至少一种。
可执行文件生成模块2014用于采用从格式定义模块2011获取的格式规范,对目标表示编译器2013得到的目标模型进行编译,得到在目标硬件上运行的可执行文件。具体的,可执行文件生成模块2014根据信息管理模块200确定的待部署模型的部署信息中包含的硬件信息,确定运行待部署模型的目标硬件,采用从格式定义模块2011获取的目标硬件对应的格式规范,对目标表示编译器2013得到的目标模型进行编译,得到在目标硬件上运行的可执行文件。
执行器202用于对编译器生成的可执行文件进行解析,根据解析结果,在目标硬件上运行可执行文件。具体的,如图4所示,图4为本说明书中提供的一种执行器的结构的示意图,图4所示的执行器202包括硬件抽象模块2021、推理模块2022和数据支持模块2023。
硬件抽象模块2021用于存储通用执行环境,根据系统中存储的硬件信息和通用执行环境,生成各硬件分别对应的执行环境。其中,硬件信息可以包括硬件类型、硬件标识、硬件名称以及硬件对应的驱动信息等硬件信息。
硬件抽象模块2021可以包括驱动子模块20211、硬件管理子模块20212和执行环境生成子模块20213,由驱动子模块20211和硬件管理子模块20212确定通用执行环境,也就是确定不同硬件都支持的执行环境。执行环境生成子模块20213用于根据系统中存储的硬件信息和由驱动子模块20211和硬件管理子模块20212确定的通用执行环境,生成各硬件分别对应的执行环境。
驱动子模块20211用于表示和管理通用执行环境所需的驱动,包括驱动版本、设备类型以及设备标识。同一种硬件设备对应相同的设备类型,可以使用同一种驱动创建,同一种驱动可以创建多个相同设备类型的硬件设备。
硬件管理子模块20212用于表示和管理通用执行环境所需的硬件设备,包括硬件设备的增加、删除、修改和查询以及硬件设备的相关的业务操作。硬件设备相关的业务操作包含硬件设备的内存分配和回收、创建在硬件设备上运行的算子、查询硬件设备编号和硬件设备名称、事件管理和任务流管理。事件管理包括对硬件设备上的事件进行增加、删除、修改和查询等管理操作。任务流管理包括对硬件设备上的任务流进行增加、删除、修改、查询、同步以及清空等管理操作。
数据支持模块2023用于存储基础数据的数据结构和基础数据的使用方法,其中,基础数据至少包括字符串、引用计数和张量。使用方法为基于基础数据的使用方法,比如确定字符串的长度的方法。
推理模块2022用于在硬件抽象模块2021存储的执行环境中,确定目标硬件的执行环境,并对可执行文件生成模块2014生成的可执行文件进行解析,根据解析结果,利用数据支持模块存储的基础数据的数据结构和基础数据的使用方法,在目标硬件的执行环境中运行可执行文件。
具体的,推理模块2022包括解析子模块20221、序列管理子模块20222和运行子模块20223,解析子模块20221用于对可执行文件生成模块2014生成的可执行文件进行解析。序列管理子模块20222用于根据解析子模块20221得到的解析结果和信息管理模块200确定的待部署模型的部署信息中包含的模型信息,确定目标模型中各算子之间的依赖关系,根据依赖关系,确定目标模型运行时各算子的算子执行序列。故运行子模块20223先在硬件抽象模块2021存储的执行环境中,确定目标硬件的执行环境,按照序列管理子模块20222确定的算子执行序列,利用数据支持模块2023存储的基础数据的数据结构和基础数据的使用方法,在目标硬件的执行环境中运行可执行文件。当可以在目标硬件上运行可执行文件时,则确定待部署模型部署成功,否则,确定待部署模型部署失败。
从上述模型部署的系统中可以看出,信息管理模块200先确定待部署模型的部署信息,中间表示编译器2012根据待部署模型的模型信息,将待部署模型转换为中间表示模型。然后,目标表示编译器2013根据用户选择的目标部署引擎的引擎信息,将中间表示模型转换为目标部署引擎支持的目标模型。之后,可执行文件生成模块2014对目标模型进行编译,得到可执行文件。执行器202在目标硬件上运行可执行文件,以对待部署模型进行部署,使得待部署模型可以由不同的目标部署引擎进行模型部署。同时,在将待部署模型转换为中间表示模型时,优化模块2015可以对待部署模型进行优化,提高了后续运行模型时的计算速率。另外,可以先对待部署模型进行优化,再将优化后的模型转换为中间表示模型,降低了模型转换的成本,提高了转换速率。
在上述模型部署的系统中,推理模块2022还包括信息传输子模块20224,信息传输子模块20224用于在可执行文件运行过程中,进行信息传输。故在根据解析结果,利用数据支持模块2023存储的基础数据的数据结构和基础数据的使用方法,在目标硬件的执行环境中运行可执行文件时,运行子模块20223可以按照序列管理子模块20222确定的算子执行序列,利用数据支持模块2023存储的基础数据的数据结构和基础数据的使用方法,以及通过信息传输子模块20224进行信息传输,在目标硬件的执行环境中运行可执行文件。
在上述模型部署的系统中,信息管理模块200可以用于响应于用户发送的编译指令,根据待部署模型文件的位置,确定待部署模型的模型信息,其中,编译指令包括待部署模型文件的位置、用户选择的目标硬件的硬件信息、用户选择的目标部署引擎的引擎信息和编译后文件的位置。基于此,可执行文件生成模块2014可以用于采用从格式定义模块2011获取的格式规范,对目标表示编译器2013得到的目标模型进行编译,得到在目标硬件上运行的可执行文件,并根据编译指令中包含的编译后文件的位置,将可执行文件保存。
相应的,推理模块2022中的解析子模块20221在对可执行文件生成模块2014生成的可执行文件进行解析时,可以响应于用户发送的运行指令,根据可执行文件的位置,确定可执行文件生成模块2014生成的可执行文件,并对可执行文件进行解析,其中,运行指令包括可执行文件的位置。
在上述模型部署的系统中,推理模块2022中的运行子模块20223在根据解析结果,利用数据支持模块2023存储的基础数据的数据结构和基础数据的使用方法,在目标硬件的执行环境中运行可执行文件时,可以响应于用户发送的业务数据,根据解析结果以及业务数据,在目标硬件上运行可执行文件,判断是否得到运行结果,若是,确定待部署模型部署成功,否则,确定待部署模型部署失败。
另外,为了确定待部署模型是否在目标硬件上准确的运行,可以根据业务数据对应的标注,确定运行结果是否准确,若是,确定待部署模型部署成功,否则,确定待部署模型部署失败。
为了避免系统中不存在用户选择的目标硬件,本说明书提供的模型部署的系统可以支持用户自定义目标硬件,满足用户对于特定硬件的个性化需求。故该系统还包括硬件模块203,硬件模块203包括通用信息模块2031和新增硬件模块2032。通用信息模块2031用于存储增加硬件所需的信息以及各信息对应的调用接口。新增硬件模块2032用于响应于用户发送的新增硬件的硬件信息,调用通用信息模块2031存储的调用接口,生成新增硬件,并将新增硬件的硬件信息发送给硬件抽象模块2021,以使硬件抽象模块2021根据新增硬件的硬件信息和通用执行环境,生成新增硬件对应的执行环境。
其中,增加硬件所需的信息包括硬件设备信息、驱动信息以及算子信息。硬件设备信息对应的调用接口包括获取设备类型的接口、获取设备标识的接口、销毁设备的接口、在指定设备上创建事件对象的接口、在指定设备上创建流对象的接口、在指定设备上分配内存的接口以及在指定设备上释放内存的接口。获取设备类型的接口包括输入的设备对象和输出的设备类型两个参数。获取设备标识的接口包括输入的设备对象和输出的设备编号两个参数。销毁设备的接口包括待销毁设备对象参数。在指定设备上创建事件对象的接口包括输入的设备对象和输出的事件对象两个参数。在指定设备上创建流对象的接口包括输入的设备对象和输出的流对象两个参数。在指定设备上分配内存的接口包括输入的设备对象、待申请的内存大小和输出的流对象三个参数。在指定设备上释放内存的接口包括输入的设备对象和待释放内存的首地址两个参数。
驱动信息对应的调用接口包括创建驱动的接口、销毁驱动的接口、驱动查询的接口、创建指定驱动的设备的接口以及注册驱动的接口。创建驱动的接口包括输入的驱动类型和输出驱动对象两个参数。销毁驱动的接口包括待销毁驱动对象参数。驱动查询的接口包括输入的待查询的驱动和输出驱动识别编号两个参数。创建指定驱动的设备的接口包括输入待查询的驱动、指定设备的识别编号和输出返回的设备对象三个参数。注册驱动的接口包括输入待注册的驱动类型和输入待注册驱动的工厂对象两个参数。
算子信息对应的调用接口包括创建算子的接口、销毁算子的接口以及执行算子的接口。创建算子的接口包括待创建算子时所指定的设备对象、算子信息、以及输出返回的算子对象这三个参数。销毁算子的接口包括待销毁的算子对象这一参数。执行算子的接口包括待执行的算子对象、算子的输入和算子的输出这三个参数。
新增硬件模块2032根据用户发送的新增硬件的硬件信息,调用通用信息模块2031存储的调用接口,生成新增硬件,可以降低添加新硬件的难度,使得添加新硬件的过程与系统内其他过程隔离,不会影响系统中已有的硬件。
在上述模型部署的系统中,数据支持模块2023可以包括字符串支持子模块20231、引用计数支持子模块20232、张量支持子模块20233、抽象内存管理子模块20234和异常处理子模块20235。字符串支持子模块20231用于存储字符串的基础数据结构,为推理模块2022运行可执行文件时提供支持。引用计数支持子模块20232用于存储引用计数的基础数据结构,对系统内的动态资源进行自动管理,为推理模块2022运行可执行文件提供支持。张量支持子模块20233用于存储张量的信息,管理张量内存布局和张量基础属性,为推理模块2022运行可执行文件提供支持。管理张量内存布局为表示和管理张量的不同底层放置方式。抽象内存管理子模块20234用于存储管理内存的通用方法,根据系统中存储的硬件信息和通用方法,生成各硬件分别对应的管理内存的方法。其中,通用方法为根据各硬件的内存调用接口和内存管理方法,确定的通用方法的模板。异常处理子模块20235用于记录日志,并向用户发送异常提醒。
本说明书中整个模型部署的系统的示意图,如图5所示,图5为本说明书中提供的一种模型部署的系统的示意图,图5所示的系统包括信息管理模块200、编译器201、执行器202和硬件模块203。其中,编译器201包括格式定义模块2011、中间表示编译器2012、目标表示编译器2013、可执行文件生成模块2014和优化模块2015。
执行器202包括硬件抽象模块2021、推理模块2022和数据支持模块2023。硬件抽象模块2021包括驱动子模块20211、硬件管理子模块20212和执行环境生成子模块20213。推理模块2022包括解析子模块20221、序列管理子模块20222、运行子模块20223和信息传输子模块20224。数据支持模块2023包括字符串支持子模块20231、引用计数支持子模块20232、张量支持子模块20233、抽象内存管理子模块20234和异常处理子模块20235。
硬件模块203包括通用信息模块2031和新增硬件模块2032。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的一种模型部署的方法。
本说明书还提供了图6所示的一种对应于图1的电子设备的示意结构图。如图6所示,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的模型部署的方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (23)

1.一种模型部署的方法,其特征在于,包括:
响应于用户的输入操作,确定待部署模型的部署信息,其中,所述部署信息至少包括所述待部署模型的模型信息、所述用户选择的目标部署引擎的引擎信息和所述用户选择的目标硬件的硬件信息;
根据所述模型信息,将所述待部署模型转换为中间表示模型;
根据所述目标部署引擎的引擎信息,对所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型;
对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件;
对所述可执行文件进行解析,根据解析结果,在所述目标硬件上运行所述可执行文件。
2.如权利要求1所述的方法,其特征在于,根据所述模型信息,将所述待部署模型转换为中间表示模型,具体包括:
根据所述模型信息,确定所述待部署模型的计算图;
响应于所述用户的优化选择操作,确定所述用户选择的优化方式,并根据确定出的优化方式,对所述待部署模型的计算图进行优化;
根据第一转换规则,对优化后的计算图进行转换,得到中间表示的计算图;
根据所述中间表示的计算图,确定中间表示模型。
3.如权利要求1所述的方法,其特征在于,根据所述目标部署引擎的引擎信息,对所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型,具体包括:
根据所述目标部署引擎的引擎信息,确定所述目标部署引擎支持的数据格式,其中,所述数据格式包括模型参数的格式、张量的格式和算子的格式中的至少一种;
根据第二转换规则和所述数据格式,对所述中间表示模型进行转换,生成符合所述数据格式的目标模型。
4.如权利要求1所述的方法,其特征在于,对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件,具体包括:
根据所述目标硬件的硬件信息,确定运行所述待部署模型的目标硬件;
确定运行所述待部署模型的目标硬件对应的格式规范,并根据所述格式规范对所述目标模型进行编译,得到可执行文件。
5.如权利要求1所述的方法,其特征在于,根据解析结果,在所述目标硬件上运行所述可执行文件,具体包括:
根据解析结果,确定所述目标模型中各算子之间的依赖关系;
根据所述依赖关系,确定所述目标模型运行时各算子的算子执行序列;
按照所述算子执行序列,在所述目标硬件上运行所述可执行文件。
6.如权利要求1所述的方法,其特征在于,响应于用户的输入操作,确定待部署模型的部署信息,具体包括:
响应于用户发送的编译指令,根据待部署模型文件的位置,确定所述待部署模型的模型信息,其中,所述编译指令包括所述待部署模型文件的位置、所述用户选择的目标硬件的硬件信息、所述用户选择的目标部署引擎的引擎信息和编译后文件的位置;
对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件,具体包括:
对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件,并根据所述编译指令中包含的编译后文件的位置,将所述可执行文件保存。
7.权利要求1所述的方法,其特征在于,对所述可执行文件进行解析,具体包括:
响应于所述用户发送的运行指令,根据所述可执行文件的位置,确定所述可执行文件,并对所述可执行文件进行解析,其中,所述运行指令包括所述可执行文件的位置。
8.如权利要求1所述的方法,其特征在于,根据解析结果,在所述目标硬件上运行所述可执行文件,具体包括:
响应于所述用户发送的业务数据,根据解析结果以及所述业务数据,在所述目标硬件上运行所述可执行文件,判断是否得到运行结果;
若是,确定所述待部署模型部署成功;
否则,确定所述待部署模型部署失败。
9.一种模型部署的系统,其特征在于,所述系统包括:信息管理模块、编译器和执行器,其中:
所述信息管理模块用于响应于用户的输入操作,确定待部署模型的部署信息,其中,所述部署信息至少包括所述待部署模型的模型信息、所述用户选择的目标部署引擎的引擎信息和所述用户选择的目标硬件的硬件信息;
所述编译器用于根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述模型信息,将所述待部署模型转换为中间表示模型,并根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述目标部署引擎的引擎信息,对所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型,对所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件;
所述执行器用于对所述编译器生成的所述可执行文件进行解析,根据解析结果,在所述目标硬件上运行所述可执行文件。
10.如权利要求9所述的系统,其特征在于,所述编译器包括格式定义模块、中间表示编译器、目标表示编译器和可执行文件生成模块;
所述格式定义模块用于存储第一转换规则、第二转换规则和格式规范;
所述中间表示编译器用于根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述模型信息,采用从所述格式定义模块获取的第一转换规则,将所述待部署模型转换为中间表示模型;
所述目标表示编译器用于根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述引擎信息,采用从所述格式定义模块获取的第二转换规则,对所述中间表示编译器得到的所述中间表示模型进行转换,生成所述目标部署引擎支持的目标模型;
所述可执行文件生成模块用于采用从所述格式定义模块获取的格式规范,对所述目标表示编译器得到的所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件。
11.如权利要求10所述的系统,其特征在于,所述执行器包括硬件抽象模块、推理模块和数据支持模块;
所述硬件抽象模块用于存储通用执行环境,根据所述系统中存储的硬件信息和所述通用执行环境,生成各硬件分别对应的执行环境;
所述数据支持模块用于存储基础数据的数据结构和所述基础数据的使用方法,其中,所述基础数据至少包括字符串、引用计数和张量;
所述推理模块用于在所述硬件抽象模块存储的执行环境中,确定所述目标硬件的执行环境,并对所述可执行文件生成模块生成的所述可执行文件进行解析,根据解析结果,利用所述数据支持模块存储的基础数据的数据结构和所述基础数据的使用方法,在所述目标硬件的执行环境中运行所述可执行文件。
12.如权利要求10所述的系统,其特征在于,所述信息管理模块还用于响应于所述用户的优化选择操作,确定所述用户选择的优化方式;
所述编译器还包括优化模块;
所述优化模块用于根据所述信息管理模块确定出的所述用户选择的优化方式,对所述待部署模型进行优化。
13.如权利要求12所述的系统,其特征在于,所述中间表示编译器具体用于,根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述模型信息,确定所述待部署模型的计算图,并发送给所述优化模块,以使所述优化模块根据所述信息管理模块确定出的优化方式,对所述待部署模型的计算图进行优化,并返回给所述中间表示编译器,采用从所述格式定义模块获取的第一转换规则,对优化后的计算图进行转换,得到中间表示的计算图,根据所述中间表示的计算图,确定中间表示模型。
14.如权利要求10所述的系统,其特征在于,所述目标表示编译器具体用于,根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述引擎信息,确定所述目标部署引擎支持的数据格式,采用从所述格式定义模块获取的所述数据格式对应的第二转换规则,对所述中间表示编译器得到的所述中间表示模型进行转换,生成符合所述数据格式的目标模型,其中,所述数据格式包括模型参数的格式、张量的格式和算子的格式中的至少一种。
15.如权利要求10所述的系统,其特征在于,所述可执行文件生成模块具体用于,根据所述信息管理模块确定的所述待部署模型的部署信息中包含的所述硬件信息,确定运行所述待部署模型的目标硬件,采用从所述格式定义模块获取的所述目标硬件对应的格式规范,对所述目标表示编译器得到的所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件。
16.如权利要求11所述的系统,其特征在于,所述推理模块包括解析子模块和序列管理子模块;
所述解析子模块用于对可执行文件生成模块生成的可执行文件进行解析;
所述序列管理子模块用于根据所述解析子模块解析得到的解析结果和所述信息管理模块确定的所述待部署模型的部署信息中包含的所述模型信息,确定所述目标模型中各算子之间的依赖关系,根据所述依赖关系,确定所述目标模型运行时各算子的算子执行序列。
17.如权利要求16所述的系统,其特征在于,所述推理模块还包括信息传输子模块和运行子模块;
所述信息传输子模块用于在所述可执行文件运行过程中,进行信息传输;
所述运行子模块用于在硬件抽象模块存储的执行环境中,确定目标硬件的执行环境,按照所述序列管理子模块确定的所述算子执行序列,利用所述数据支持模块存储的基础数据的数据结构和所述基础数据的使用方法,以及通过所述信息传输子模块进行信息传输,在所述目标硬件的执行环境中运行所述可执行文件。
18.如权利要求10所述的系统,其特征在于,所述信息管理模块具体用于,响应于用户发送的编译指令,根据待部署模型文件的位置,确定所述待部署模型的模型信息,其中,所述编译指令包括所述待部署模型文件的位置、所述用户选择的目标硬件的硬件信息、所述用户选择的目标部署引擎的引擎信息和编译后文件的位置;
所述可执行文件生成模块具体用于,采用从所述格式定义模块获取的格式规范,对所述目标表示编译器得到的所述目标模型进行编译,得到在所述目标硬件上运行的可执行文件,并根据所述编译指令中包含的编译后文件的位置,将所述可执行文件保存。
19.如权利要求11所述的系统,其特征在于,所述推理模块具体用于,响应于所述用户发送的运行指令,根据所述可执行文件的位置,确定所述可执行文件生成模块生成的所述可执行文件,并对所述可执行文件进行解析,其中,所述运行指令包括所述可执行文件的位置。
20.如权利要求11所述的系统,其特征在于,所述推理模块具体用于,响应于所述用户发送的业务数据,根据解析结果以及所述业务数据,在所述目标硬件上运行所述可执行文件,判断是否得到运行结果,若是,确定所述待部署模型部署成功,否则,确定所述待部署模型部署失败。
21.如权利要求11所述的系统,其特征在于,所述系统还包括硬件模块,所述硬件模块包括通用信息子模块和新增硬件子模块;
所述通用信息子模块用于存储增加硬件所需的信息以及各信息对应的调用接口;
所述新增硬件子模块用于响应于所述用户发送的新增硬件的硬件信息,调用所述通用信息子模块存储的调用接口,生成所述新增硬件,并将所述新增硬件的硬件信息发送给所述硬件抽象模块,以使所述硬件抽象模块根据所述新增硬件的硬件信息和所述通用执行环境,生成所述新增硬件对应的执行环境。
22.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~8任一项所述的方法。
23.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~8任一项所述的方法。
CN202310413623.0A 2023-04-18 2023-04-18 一种模型部署的方法、系统、存储介质及电子设备 Active CN116126365B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310413623.0A CN116126365B (zh) 2023-04-18 2023-04-18 一种模型部署的方法、系统、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310413623.0A CN116126365B (zh) 2023-04-18 2023-04-18 一种模型部署的方法、系统、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN116126365A true CN116126365A (zh) 2023-05-16
CN116126365B CN116126365B (zh) 2023-07-28

Family

ID=86299511

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310413623.0A Active CN116126365B (zh) 2023-04-18 2023-04-18 一种模型部署的方法、系统、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN116126365B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116306856A (zh) * 2023-05-17 2023-06-23 之江实验室 一种基于搜索的深度学习模型部署方法及装置
CN116362336A (zh) * 2023-06-02 2023-06-30 之江实验室 一种模型推理交互方法、电子设备、可读存储介质
CN117075918A (zh) * 2023-10-13 2023-11-17 之江实验室 一种模型部署方法、装置、存储介质及电子设备
CN117372846A (zh) * 2023-10-17 2024-01-09 湖南苏科智能科技有限公司 基于嵌入式平台的目标检测方法、平台、装置及设备
CN117455015A (zh) * 2023-12-20 2024-01-26 摩尔线程智能科技(成都)有限责任公司 一种模型优化的方法、装置、存储介质及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290762A (zh) * 2020-01-19 2020-06-16 深圳云天励飞技术有限公司 一种深度学习网络的部署方法、装置及终端设备
CN113377464A (zh) * 2021-08-12 2021-09-10 苏州浪潮智能科技有限公司 一种基于多推理引擎系统的应用部署方法、装置及设备
CN113919490A (zh) * 2020-07-10 2022-01-11 阿里巴巴集团控股有限公司 推理引擎的适配方法、装置及电子设备
CN113934410A (zh) * 2021-10-19 2022-01-14 北京航空航天大学 支持自定义算子的多硬件目标深度模型优化部署架构
CN114186687A (zh) * 2022-02-17 2022-03-15 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
CN114217825A (zh) * 2021-12-16 2022-03-22 中国建设银行股份有限公司 用于决策引擎的方法、装置、机器可读存储介质及处理器
US11494493B1 (en) * 2019-09-23 2022-11-08 Amazon Technologies, Inc. Software verification for network-accessible applications
CN115794128A (zh) * 2022-12-01 2023-03-14 浙江中控信息产业股份有限公司 软件部署方法、装置、计算机设备和计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494493B1 (en) * 2019-09-23 2022-11-08 Amazon Technologies, Inc. Software verification for network-accessible applications
CN111290762A (zh) * 2020-01-19 2020-06-16 深圳云天励飞技术有限公司 一种深度学习网络的部署方法、装置及终端设备
CN113919490A (zh) * 2020-07-10 2022-01-11 阿里巴巴集团控股有限公司 推理引擎的适配方法、装置及电子设备
CN113377464A (zh) * 2021-08-12 2021-09-10 苏州浪潮智能科技有限公司 一种基于多推理引擎系统的应用部署方法、装置及设备
CN113934410A (zh) * 2021-10-19 2022-01-14 北京航空航天大学 支持自定义算子的多硬件目标深度模型优化部署架构
CN114217825A (zh) * 2021-12-16 2022-03-22 中国建设银行股份有限公司 用于决策引擎的方法、装置、机器可读存储介质及处理器
CN114186687A (zh) * 2022-02-17 2022-03-15 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
CN115794128A (zh) * 2022-12-01 2023-03-14 浙江中控信息产业股份有限公司 软件部署方法、装置、计算机设备和计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PENGHAO SUN,等: "DeepMigration: Flow Migration for NFV with Graph-based Deep Reinforcement Learning", 《ICC 2020 - 2020 IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS (ICC)》, pages 1 - 5 *
林志文;林志贤;郭太良;林珊玲;: "基于FPGA加速的卷积神经网络识别系统", 电子技术应用, no. 02, pages 30 - 33 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116306856A (zh) * 2023-05-17 2023-06-23 之江实验室 一种基于搜索的深度学习模型部署方法及装置
CN116306856B (zh) * 2023-05-17 2023-09-05 之江实验室 一种基于搜索的深度学习模型部署方法及装置
CN116362336A (zh) * 2023-06-02 2023-06-30 之江实验室 一种模型推理交互方法、电子设备、可读存储介质
CN116362336B (zh) * 2023-06-02 2023-08-22 之江实验室 一种模型推理交互方法、电子设备、可读存储介质
CN117075918A (zh) * 2023-10-13 2023-11-17 之江实验室 一种模型部署方法、装置、存储介质及电子设备
CN117075918B (zh) * 2023-10-13 2024-01-09 之江实验室 一种模型部署方法、装置、存储介质及电子设备
CN117372846A (zh) * 2023-10-17 2024-01-09 湖南苏科智能科技有限公司 基于嵌入式平台的目标检测方法、平台、装置及设备
CN117455015A (zh) * 2023-12-20 2024-01-26 摩尔线程智能科技(成都)有限责任公司 一种模型优化的方法、装置、存储介质及电子设备
CN117455015B (zh) * 2023-12-20 2024-04-02 摩尔线程智能科技(成都)有限责任公司 一种模型优化的方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN116126365B (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
CN116126365B (zh) 一种模型部署的方法、系统、存储介质及电子设备
CN111400681B (zh) 数据权限处理方法、装置及设备
CN108415695A (zh) 一种基于可视化组件的数据处理方法、装置和设备
CN111309294B (zh) 一种业务处理方法、装置及电子设备和存储介质
CN110032409B (zh) 一种客户端屏幕适配方法、装置及电子设备
CN117075930B (zh) 一种计算框架管理系统
CN110888736A (zh) 一种基于容器云平台的应用管理方法、系统及相关组件
CN114168114A (zh) 一种算子注册方法、装置以及设备
CN116483859A (zh) 数据查询方法及装置
CN116341642B (zh) 一种数据处理的方法、装置、存储介质及电子设备
CN112486461B (zh) 一种基于springboot框架的信息处理系统
CN110704742A (zh) 一种特征提取方法及装置
CN116755862B (zh) 一种算子优化调度模型的训练方法、装置、介质及设备
CN115269562B (zh) 一种数据库管理方法、装置、存储介质及电子设备
CN112527387B (zh) 应用处理方法和装置
CN111966479B (zh) 业务处理、风险识别业务处理方法、装置及电子设备
CN116644090B (zh) 一种数据查询方法、装置、设备及介质
CN110019034A (zh) 表单文件加载方法和装置
CN114968457B (zh) 应用于子程序的表单处理方法及装置
CN117032739B (zh) 一种镜像生成的方法、系统、存储介质及电子设备
CN117591217A (zh) 一种信息展示方法、装置、设备及存储介质
CN117592517A (zh) 一种模型的训练方法及装置
CN111984720A (zh) 一种数据获取方法、装置、电子设备和接口适配装置
CN117196509A (zh) 一种业务表单的审批意见展示方法、设备及介质
CN117591107A (zh) 一种前端界面的快速渲染方法、设备及介质

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