CN115496217B - 一种推理验证方法、装置、电子设备和存储介质 - Google Patents
一种推理验证方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115496217B CN115496217B CN202211431631.XA CN202211431631A CN115496217B CN 115496217 B CN115496217 B CN 115496217B CN 202211431631 A CN202211431631 A CN 202211431631A CN 115496217 B CN115496217 B CN 115496217B
- Authority
- CN
- China
- Prior art keywords
- file
- graph
- compiling unit
- frame
- intermediate file
- 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.)
- Active
Links
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
- G06N5/045—Explanation of inference; Explainable artificial intelligence [XAI]; Interpretable artificial intelligence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种推理验证方法、装置、电子设备和存储介质。所述方法包括:获取初始图文件;获取预设的编译器框架,根据所述节点的输入输出属性和所述编译器框架中设定编译单元的输入输出属性,将所述初始图文件转换为第一中间文件;获取预设系统框架和预设的待验证后端,将所述目标编译单元映射至所述预设系统框架中的框架接口算子的调用得到第二中间文件,并将所述目标编译单元映射至所述待验证后端中的后端接口算子的调用得到第三中间文件;在调用接口算子结束后,根据所述第二中间文件中和所述第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功。本申请提高了待验证后端验证的准确性。
Description
技术领域
本申请涉及验证技术领域,尤其涉及一种推理验证方法、装置、电子设备和存储介质。
背景技术
人工智能神经网络推理平台在实现算子功能和网络推理时,需要参考其它成熟平台的推理结果来验证本平台推理的正确性。
目前人工智能推理平台的验证通常是基于算子级别的,将算子实现当成一个黑盒子,通过构建输入数据,获得输出数据,并将其与成熟平台的推理结果进行对比,验证算子实现的正确性。
由于当前是基于算子级别进行验证,割裂了前后连接的算子之间的联系,导致验证结果不准确。
发明内容
本申请实施例的目的在于提供一种推理验证方法、装置、电子设备和存储介质,以解决验证结果不准确的问题。具体技术方案如下:
第一方面,提供了一种推理验证方法,所述方法包括:
获取初始图文件,其中,所述初始图文件中包含至少两个节点,每个所述节点具有输入输出属性,所述输入输出属性指示所述节点接收前邻节点的输出数据,并输入数据至后继节点;
获取预设的编译器框架,根据所述节点的输入输出属性和所述编译器框架中设定编译单元的输入输出属性,将所述初始图文件转换为第一中间文件,其中,所述第一中间文件中具有和所述设定编译单元相同类别的目标编译单元,所述第一中间文件支持对所述目标编译单元的映射;
获取预设系统框架和预设的待验证后端,将所述目标编译单元映射至所述预设系统框架中的框架接口算子的调用得到第二中间文件,并将所述目标编译单元映射至所述待验证后端中的后端接口算子的调用得到第三中间文件;
在调用接口算子结束后,根据所述第二中间文件中和所述第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功。
可选地,获取预设的编译器框架,根据所述节点的输入输出属性和所述编译器框架中设定编译单元的输入输出属性,将所述初始图文件转换为第一中间文件包括:
获取预设的编译器框架,其中,所述编译器框架中包括至少两个设定编译单元,所述设定编译单元具有和所述节点相同的输入输出属性和相同的数量;
读取所述初始图文件,在读取所述初始图文件的过程中,将所述初始图文件中的每个节点分别映射至一个所述设定编译单元得到所述第一中间文件,其中,所述第一中间文件是由每个所述目标编译单元和所述目标编译单元之间的输入输出关系构成的图结构。
可选地,所述得到第二中间文件之后,所述方法还包括:
根据所述第二中间文件,构建实时系统图结构;
通过即时编译器将所述实时系统图结构序列化为目标文件,其中,所述目标文件用于在所述接口算子中反序列化并执行,或在所述预设系统框架中加载并执行。
可选地,根据所述第二中间文件中和所述第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功之前,所述方法还包括:
在构建所述实时系统图结构的过程中,在所述第二中间文件中插入预设函数;
采用所述预设函数,将所述第二中间文件中目标编译单元的输出数据保存至外部文件,其中,所述外部文件独立于所述第二中间文件存在,所述外部文件的名称对应所述第二中间文件中的目标编译单元。
可选地,将所述第二中间文件中目标编译单元的输出数据保存至外部文件后,所述方法还包括:
根据预设类型的目标编译单元,确定对应的外部文件和所述待验证后端中的相应文件,其中,所述外部文件中包含所述目标编译单元在所述预设系统框架运行中的输出数据,所述相应文件中包括所述目标编译单元在所述待验证后端运行中的输出数据;
将所述外部文件中的数据和所述相应文件中的数据进行比对。
可选地,所述获取初始图文件包括:
获取神经网络模型,其中,所述神经网络模型是采用深度学习框架训练得到的;
通过转换工具将所述神经网络模型转换为初始图文件,其中,所述初始图文件是一个由节点和连接边构成的图结构文件,所述节点具有所述神经网络模型的数据输入输出功能,所述连接边由相邻节点连接得到,所述连接边指示数据流走向。
可选地,所述实时系统图结构为动态图,所述目标文件为静态图,通过即时编译器将所述实时系统图结构序列化为目标文件包括:
采用编译器框架的即时编译器,通过预先定义好的张量追踪动态图的构建过程,得到构建出来的动态图;
将所述动态图转换为静态图,其中,所述静态图采用中间表示进行描述。
第二方面,提供了一种推理验证装置,所述装置包括:
获取模块,用于获取初始图文件,其中,所述初始图文件中包含至少两个节点,每个所述节点具有输入输出属性,所述输入输出属性指示所述节点接收前邻节点的输出数据,并输入数据至后继节点;
转换模块,用于获取预设的编译器框架,根据所述节点的输入输出属性和所述编译器框架中设定编译单元的输入输出属性,将所述初始图文件转换为第一中间文件,其中,所述第一中间文件中具有和所述设定编译单元相同类别的目标编译单元,所述第一中间文件支持对所述目标编译单元的映射;
映射模块,用于获取预设系统框架和预设的待验证后端,将所述目标编译单元映射至所述预设系统框架中的框架接口算子的调用得到第二中间文件,并将所述目标编译单元映射至所述待验证后端中的后端接口算子的调用得到第三中间文件;
比对模块,用于在调用接口算子结束后,根据所述第二中间文件中和所述第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功。
第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现任一所述的推理验证方法步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现任一所述的推理验证方法步骤。
本申请实施例有益效果:
本申请实施例提供了一种推理验证方法,将编译器框架作为一个中间的文件再映射到特定设备,该特定设备包括预设系统框架和待验证后端,采用编译器框架可以实现对初始图文件的整体转换,采用预设系统框架可以验证待验证后端的准确性,目前尚无其他技术人员想到采用编译器框架实现对初始图文件的整体转换,相对于现有技术仅进行算子级别的验证,本申请进行整体级别的转换和验证,考虑了算子之间数据的输入输出关系,提高了待验证后端验证的准确性。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种推理验证方法流程图;
图2为本申请实施例提供的神经网络模型转换为目标文件的流程示意图;
图3为本申请实施例提供的一种推理验证装置的结构示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
为了解决背景技术中提及的问题,根据本申请实施例的一方面,提供了一种推理验证方法的实施例。
以下为说明书中英文名称的解释:
Pytorch是一个基于BSD License的开源的机器学习的框架;
tensorflow:一种神经网络框架;
onnx:一种神经网络框架;
SG:Stream Graph::一种protobuf的存储格式文件;
SGNode:节点;
SGEdge:连接边;
SGGraph:存储格式文件的图结构;
MLIR,Multi-Level Intermediate Representation,一种新型的用于构建可复用、可扩展的编译器框架;
MLIR Module:编译器框架的模块;
Dialect:数据库方言;
Op:Op 是MLIR中各种Operation类(例如ConstantOp)的基类,同时它还是Operation *的wrapper;
libtorch:PyTorch的C++接口;
Jit Graph:Just In Time Graph,实时生产系统表格;
Jit Module:实时生产系统的模块;
*.pt:torch保存的一种序列化文件。
本申请实施例提供了一种推理验证方法,可以应用于终端或服务器,用于提供验证准确性。
下面将结合具体实施方式,以应用于服务器为例,对本申请实施例提供的一种推理验证方法进行详细的说明,如图1所示,具体步骤如下:
步骤101:获取初始图文件。
其中,初始图文件中包含至少两个节点,每个节点具有输入输出属性,输入输出属性指示节点接收前邻节点的输出数据,并输入数据至后继节点。
在本申请实施例中,服务器获取初始图文件,其中,初始图文件是一种数据流图文件。初始图文件可以是根据神经网络模型转换得到的,也可以是直接从终端获取的。初始图文件为一个由节点和连接边构成的图结构,初始图文件中包括至少两个节点,每个节点接收前邻节点的输出数据,并输入数据至后继节点,相邻的节点按照数据流向连接起来构成连接边,连接边指示从数据流向。示例性地,初始图文件为SG,也可以为其他数据流图文件,本申请对初始图文件的具体格式不做限定。
步骤102:获取预设的编译器框架,根据节点的输入输出属性和编译器框架中设定编译单元的输入输出属性,将初始图文件转换为第一中间文件。
其中,第一中间文件中具有和设定编译单元相同类别的目标编译单元,第一中间文件支持对目标编译单元的映射。
在本申请实施例中,服务器获取预设的编译器框架,编译器框架中包括至少两个设定编译单元,可以理解的是,设定编译单元的数量与初始图文件中的节点数量对应;设定编译单元也具有输入输出属性,即每个设定编译单元接收前邻设定编译单元的输出数据,并输入数据至后继设定编译单元。
其中,技术人员事先将数据库获取的编译器框架下载到服务器中作为预设的编译器框架。
初始图文件中的节点和编译器框架中的设定编译单元都具有输入输出属性,因此,服务器在读取初始图文件的过程中,可以将初始图文件中的每个节点对应至编译器框架中的一个设定编译单元,从而将初始图文件转换为第一中间文件,第一中间文件中具有和设定编译单元相同类别的目标编译单元,第一中间文件是由目标编译节点和目标编译节点之间的输入输出关系构成的图结构。
示例性的,本申请中的编译器框架为MLIR或LLVM(Low Level Virtual Machine,编译工具链框架),也可以为其他包含至少两个编译单元的编译器框架。
步骤103:获取预设系统框架和预设的待验证后端,将目标编译单元映射至预设系统框架中的框架接口算子的调用得到第二中间文件,并将目标编译单元映射至待验证后端中的后端接口算子的调用得到第三中间文件。
在本申请实施例中,预设系统框架中具有框架接口算子,第一中间文件本身支持在不同的数据库方言间对目标编译单元进行映射或改写,因此可以将第一中间文件的目标编译单元映射为对预设系统框架中框架接口算子的调用,得到第二中间文件。待验证后端也采用步骤101至步骤102生成第一中间文件,然后将第一中间文件的目标编译单元映射至待验证后端中后端接口算子的调用,得到第三中间文件。
其中,技术人员事先将数据库获取的编译器框架下载到服务器中作为预设系统框架,预设待验证后端是等待验证的后端。
步骤104:在调用接口算子结束后,根据第二中间文件中和第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功。
第一中间文件将目标编译单元映射为预设系统框架中的框架接口算子的调用,得到第二中间文件,此时在第二中间文件中插入预设函数,通过该预设函数将该第二中间文件中每一类目标编译单元的输出数据进行保存。
第一中间文件将目标编译单元映射为待验证后端中的后端接口算子的调用,得到第三中间文件,此时在第三中间文件中插入预设函数,通过该预设函数将该第三中间文件中每一类目标编译单元的输出数据进行保存。
待验证后端的代码实现逻辑和预设系统框架的代码实现逻辑可能存在不同,或待验证后端的代码有误。因此,目标编译单元的输出数据是可能存在不同的。
本申请以调用框架接口算子的第二中间文件的输出数据为标准,对调用后端接口算子的第三中间文件的输出数据进行验证,从而根据对比结果确定是否验证成功。其中,预设系统框架可以根据实际情况确定,可以为神经网络框架,也可以为软件框架等,本申请不做具体限制。示例性地,预设系统框架为Pytorch。
具体的,服务器确定预设类型的目标编译单元,其中,预设类型的目标编译单元可以是神经网络中任意一层的算子,然后将不同中间文件中同一类型的目标编译单元的输出数据进行比对,如果对比结果相同,表示待验证后端的推理正确,验证成功;如果对比结果不同,表示待验证后端出现推理错误,验证失败,那么采用自动化脚本确定输出数据对应的异常编译单元,以分析该异常编译单元出现的原因。
在本申请中,采用编译器框架将初始图文件整体转换为第一中间文件,第一中间文件中包含目标编译单元,将目标编译单元映射至预设系统框架中框架接口算子的调用,并将目标编译单元映射至待验证后端中后端接口算子的调用,在接口算子调用后,对于调用框架接口算子的第二中间文件,确定其编译单元的输出数据,对于调用后端接口算子的第三中间文件,也确定其编译单元的输出数据,根据同一类别的目标编译单元的输出数据的对比结果确定是否验证成功。
本申请中,将编译器框架作为一个中间的文件再映射到特定设备,该特定设备包括预设系统框架和待验证后端,采用编译器框架可以实现对初始图文件的整体转换,采用预设系统框架可以验证待验证后端的准确性,目前尚无其他技术人员想到采用编译器框架实现对初始图文件的整体转换,相对于现有技术仅进行算子级别的验证,本申请进行整体级别的转换和验证,考虑了算子之间数据的输入输出关系,提高了待验证后端验证的准确性。
另外,神经网络模型的精度评价都有公开的测试数据集,现有技术通过单算子来验证,单算子是没办法接收原始测试数据的,因此构建的测试数据难以覆盖各种各样的情况。本申请是基于整个模型进行验证,通过运行完整的测试数据集,能够完整覆盖各种测试边界。
示例性地,对于一类算子,其作用是对输入数据加1,再把负数改成0。现有技术的单算子测试容易漏掉负数输入的情况,而基于完整测试集的模型级别的测试,能保证对于测试数据集结果都能验证到。
作为一种可选地实施方式,得到第二中间文件之后,方法还包括:根据第二中间文件,构建实时系统图结构;通过即时编译器将实时系统图结构序列化为目标文件,其中,目标文件用于在接口算子中反序列化并执行,或在预设系统框架中加载并执行。
在本申请中,服务器在目标编译单元的改写流程中插入映射逻辑,映射逻辑指目标编译单元和预设系统框架中框架接口算子的调用之间的映射,那么每个目标编译单元映射至框架接口算子的调用,根据该调用后的第二中间文件构建实时系统图结构,实时系统图结构为一种图结构。然后通过即时编译器将实时系统图结构序列化为目标文件,其中,目标文件能够在接口算子中反序列化并执行,或在预设系统框架中加载并执行。
作为一种可选地实施方式,根据第二中间文件中和第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功之前,方法还包括:服务器在构建实时系统图结构的过程中,在第二中间文件中插入预设函数,服务器采用该预设函数,将第二中间文件中目标编译单元的输出数据保存至外部文件,其中,外部文件独立于中间文件存在,外部文件的名称对应第二中间文件中的目标编译单元。
示例性的,预设函数为DumpData(备份数据)算子,在构图时,将每一个算子的输出Tensor(张量),传递给一个DumpData算子,DumpData算子将参数aten::Tensor(CaffeTensor Library,C++11张量运算库)保存到指定的外部文件string(编程语言的一种)里。
作为一种可选地实施方式,将第二中间文件中目标编译单元的输出数据保存至外部文件后,服务器确定预设类型的目标编译单元,确定该目标编译单元对应的外部文件和待验证后端中的相应文件,外部文件中包含该预设类型的目标编译单元在预设系统框架运行中的输出数据,相应文件中包括该预设类型的目标编译单元在待验证后端运行中的输出数据,服务器将外部文件中的数据和相应文件中的数据进行比对。
作为一种可选地实施方式,获取初始图文件包括:获取神经网络模型,其中,神经网络模型是采用深度学习框架训练得到的;通过转换工具将神经网络模型转换为初始图文件,其中,初始图文件是一个由节点和连接边构成的图结构文件,节点具有神经网络模型的输入输出关系,连接边由相邻节点连接得到,连接边指示数据流走向。
初始图文件是由神经网络模型转换得到的,具体的,服务器通过深度学习框架训练得到神经网络模型,神经网络模型的每层神经单元具有数据输入和输出功能,服务器通过转换工具将神经网络模型转换为初始图文件,初始图文件的每个节点保存有神经网络模型中一个神经单元的数据输入输出功能,相邻节点连接得到连接边,连接边指示数据流走向。
作为一种可选地实施方式,实时系统图结构为动态图,目标文件为静态图,通过即时编译器将实时系统图结构序列化为目标文件包括:采用编译器框架的即时编译器,通过预先定义好的张量,追踪动态图的构建过程,得到构建出来的动态图;将动态图转换为可以优化和序列化的静态图,静态图可以被保存,并且被编译器框架其他的前端支持,其中,静态图采用中间表示法描述最后得到的图。
在以下示例中,假设初始图文件为SG,编译器框架为MLIR,第一中间文件为MLIRModule,实时系统图结构为JitModule,目标文件为*.pt文件。
图2为神经网络模型转换为目标文件的流程示意图。
步骤201:获取tensorflow,onnx等深度学习框架训练出来的模型。
步骤202:使用python编写的转换工具Rbcompiler,将tensorflow,onnx等深度学习框架训练的模型解析和转换为SG。
SG每个节点SGNode会保存原始模型的数据输入输出功能,SGNode连接起来的边SGEdge指示SGNode之间的输入输出关系,所有的SGNode和SGEdge构成一个SGGraph表示神经网络模型的图结构。
步骤203:读取SG文件时,将里面的SGNode对应到MLIR的Op,将SGGraph转换成一个MLIR Module。
MLIR的Op也有输入输出属性,和SGNode的输入输出属性对应,读取SG文件时,将里面的SGNode对应到MLIR的Op,SGEdge用于指示MLIR Op间的输入输出关系,最终将SGGraph转换成一个MLIR Module(即多个MLIR Op其及MLIR Op之间的输入输出关系构成的图结构)。
步骤204:将MLIR的Op映射为libtorch的调用,使用libtorch的Jit Graph构建对应的图结构Jit Module。
MLIR Module本身支持在不同的Dialect间对Op进行映射,即Op的Match AndRewrite。通过在MLIR Module的Op改写流程中插入映射逻辑,将Op对应地映射为libtorch的调用,使用libtorch的Jit Graph构建对应的图结构Jit Module。通过在MLIR Module的Op改写流程中插入映射逻辑,将Op对应地映射为后端接口算子的调用。
步骤205:将Jit Module序列化为*.pt文件。
该文件后续可以在libtorch中反序列化并执行,也可以在Pytorch中加载并执行。
其中,在构图时,将每一个算子的输出Tensor(张量),传递给一个DumpData算子,DumpData算子将参数aten::Tensor(Caffe Tensor Library,C++11张量运算库)保存到指定的外部文件string(编程语言的一种)里。
Jit Graph是Pytorch的即时编译器模块,这个模块存在的意义是把Pytorch的动态图转换成可以优化和序列化的静态图,其主要工作原理是通过输入预先定义好的张量,追踪整个动态图的构建过程,得到最终构建出来的动态图,然后转换为静态图(通过中间表示,即IntermediateRepresentation,来描述最后得到的图)。通过JIT得到的静态图可以被保存,并且被Pytorch其他的前端(如C++语言的前端)支持。
本申请通过对神经网络模型进行编译转换,利用LLVM或MLIR的Dialect或Op,将神经网络模型中的神经单元通过MLIR中的Op转换和映射功能,将神经单元实现直接转换为对libtorch(PyTorch的C++接口)算子的调用,直接使用Torch这个成熟的平台作为本推理平台的参考标准,并将每次调用libtorch的输出数据保存下来,用以验证本推理平台其他后端的实现逻辑。
基于相同的技术构思,本申请实施例还提供了一种推理验证装置,如图3所示,该装置包括:
获取模块301,用于获取初始图文件,其中,初始图文件中包含至少两个节点,每个节点具有输入输出属性,输入输出属性指示节点接收前邻节点的输出数据,并输入数据至后继节点;
转换模块302,用于获取预设的编译器框架,根据节点的输入输出属性和编译器框架中设定编译单元的输入输出属性,将初始图文件转换为第一中间文件,其中,第一中间文件中具有和设定编译单元相同类别的目标编译单元,第一中间文件支持对目标编译单元的映射;
映射模块303,用于获取预设系统框架和预设的待验证后端,将目标编译单元映射至预设系统框架中的框架接口算子的调用得到第二中间文件,并将目标编译单元映射至待验证后端中的后端接口算子的调用得到第三中间文件;
比对模块304,用于在调用接口算子结束后,根据第二中间文件中和第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功。
可选地,转换模块302用于:
获取预设的编译器框架,其中,编译器框架中包括至少两个设定编译单元,设定编译单元具有和节点相同的输入输出属性和相同的数量;
读取初始图文件,在读取初始图文件的过程中,将初始图文件中的每个节点分别映射至一个设定编译单元得到第一中间文件,其中,第一中间文件是由每个目标编译单元和目标编译单元之间的输入输出关系构成的图结构。
可选地,该装置还用于:
根据第二中间文件,构建实时系统图结构;
通过即时编译器将实时系统图结构序列化为目标文件,其中,目标文件用于在接口算子中反序列化并执行,或在预设系统框架中加载并执行。
可选地,该装置还用于:
在构建实时系统图结构的过程中,在第二中间文件中插入预设函数;
采用预设函数,将第二中间文件中目标编译单元的输出数据保存至外部文件,其中,外部文件独立于第二中间文件存在,外部文件的名称对应目标编译单元。
可选地,该装置还用于:
根据预设类型的目标编译单元,确定对应的外部文件和待验证后端中的相应文件,其中,外部文件中包含目标编译单元在预设系统框架运行中的输出数据,相应文件中包括目标编译单元在待验证后端运行中的输出数据;
将外部文件中的数据和相应文件中的数据进行比对。
可选地,获取模块301用于:
获取神经网络模型,其中,神经网络模型是采用深度学习框架训练得到的;
通过转换工具将神经网络模型转换为初始图文件,其中,初始图文件是一个由节点和连接边构成的图结构文件,节点具有神经网络模型的数据输入输出功能,连接边由相邻节点连接得到,连接边指示数据流走向。
可选地,实时系统图结构为动态图,目标文件为静态图,该装置还用于:
采用编译器框架的即时编译器,通过预先定义好的张量追踪动态图的构建过程,得到构建出来的动态图;
将动态图转换为静态图,其中,静态图采用中间表示进行描述。
根据本申请实施例的另一方面,本申请提供了一种电子设备,如图4所示,包括存储器403、处理器401、通信接口402及通信总线404,存储器403中存储有可在处理器401上运行的计算机程序,存储器403、处理器401通过通信接口402和通信总线404进行通信,处理器401执行计算机程序时实现上述方法的步骤。
上述电子设备中的存储器、处理器通过通信总线和通信接口进行通信。所述通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
根据本申请实施例的又一方面还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质。
可选地,在本申请实施例中,计算机可读介质被设置为存储用于所述处理器执行上述方法的程序代码。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本申请实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种推理验证方法,其特征在于,所述方法包括:
获取初始图文件,其中,所述初始图文件是一个由节点和连接边构成的图结构文件,所述初始图文件中包含至少两个节点,每个所述节点具有输入输出属性,所述输入输出属性指示所述节点接收前邻节点的输出数据,并输入数据至后继节点;
获取预设的编译器框架,根据所述节点的输入输出属性和所述编译器框架中设定编译单元的输入输出属性,将所述初始图文件转换为第一中间文件,其中,所述第一中间文件中具有和所述设定编译单元相同类别的目标编译单元,所述第一中间文件支持对所述目标编译单元的映射;
获取预设系统框架和预设的待验证后端,将所述目标编译单元映射至所述预设系统框架中的框架接口算子,再调用所述框架接口算子得到第二中间文件,并将所述目标编译单元映射至所述待验证后端中的后端接口算子,再调用所述后端接口算子得到第三中间文件;
在调用接口算子结束后,根据所述第二中间文件中和所述第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功。
2.根据权利要求1所述的方法,其特征在于,获取预设的编译器框架,根据所述节点的输入输出属性和所述编译器框架中设定编译单元的输入输出属性,将所述初始图文件转换为第一中间文件包括:
获取预设的编译器框架,其中,所述编译器框架中包括至少两个设定编译单元,所述设定编译单元具有和所述节点相同的输入输出属性和相同的数量;
读取所述初始图文件,在读取所述初始图文件的过程中,将所述初始图文件中的每个节点分别映射至一个所述设定编译单元得到所述第一中间文件,其中,所述第一中间文件是由每个所述目标编译单元和所述目标编译单元之间的输入输出关系构成的图结构。
3.根据权利要求1所述的方法,其特征在于,所述得到第二中间文件之后,所述方法还包括:
根据所述第二中间文件,构建实时系统图结构;
通过即时编译器将所述实时系统图结构序列化为目标文件,其中,所述目标文件用于在所述接口算子中反序列化并执行,或在所述预设系统框架中加载并执行。
4.根据权利要求3所述的方法,其特征在于,根据所述第二中间文件中和所述第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功之前,所述方法还包括:
在构建所述实时系统图结构的过程中,在所述第二中间文件中插入预设函数;
采用所述预设函数,将所述第二中间文件中目标编译单元的输出数据保存至外部文件,其中,所述外部文件独立于所述第二中间文件存在,所述外部文件的名称对应所述第二中间文件中的目标编译单元。
5.根据权利要求4所述的方法,其特征在于,将所述第二中间文件中目标编译单元的输出数据保存至外部文件后,所述方法还包括:
根据预设类型的目标编译单元,确定对应的外部文件和所述待验证后端中的相应文件,其中,所述外部文件中包含所述预设类型的目标编译单元在所述预设系统框架运行中的输出数据,所述相应文件中包括所述预设类型的目标编译单元在所述待验证后端运行中的输出数据;
将所述外部文件中的数据和所述相应文件中的数据进行比对。
6.根据权利要求1所述的方法,其特征在于,所述获取初始图文件包括:
获取神经网络模型,其中,所述神经网络模型是采用深度学习框架训练得到的;
通过转换工具将所述神经网络模型转换为初始图文件,其中,所述初始图文件是一个由节点和连接边构成的图结构文件,所述节点具有所述神经网络模型的数据输入输出功能,所述连接边由相邻节点连接得到,所述连接边指示数据流走向。
7.根据权利要求3所述的方法,其特征在于,所述实时系统图结构为动态图,所述目标文件为静态图,通过即时编译器将所述实时系统图结构序列化为目标文件包括:
采用编译器框架的即时编译器,通过预先定义好的张量追踪动态图的构建过程,得到构建出来的动态图;
将所述动态图转换为静态图,其中,所述静态图采用中间表示进行描述。
8.一种推理验证装置,其特征在于,所述装置包括:
获取模块,用于获取初始图文件,其中,所述初始图文件是一个由节点和连接边构成的图结构文件,所述初始图文件中包含至少两个节点,每个所述节点具有输入输出属性,所述输入输出属性指示所述节点接收前邻节点的输出数据,并输入数据至后继节点;
转换模块,用于获取预设的编译器框架,根据所述节点的输入输出属性和所述编译器框架中设定编译单元的输入输出属性,将所述初始图文件转换为第一中间文件,其中,所述第一中间文件中具有和所述设定编译单元相同类别的目标编译单元,所述第一中间文件支持对所述目标编译单元的映射;
映射模块,用于获取预设系统框架和预设的待验证后端,将所述目标编译单元映射至所述预设系统框架中的框架接口算子,再调用所述框架接口算子得到第二中间文件,并将所述目标编译单元映射至所述待验证后端中的后端接口算子,再调用所述后端接口算子得到第三中间文件;
比对模块,用于在调用接口算子结束后,根据所述第二中间文件中和所述第三中间文件中同一类别的目标编译单元的输出数据的对比结果,确定是否验证成功。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211431631.XA CN115496217B (zh) | 2022-11-16 | 2022-11-16 | 一种推理验证方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211431631.XA CN115496217B (zh) | 2022-11-16 | 2022-11-16 | 一种推理验证方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115496217A CN115496217A (zh) | 2022-12-20 |
CN115496217B true CN115496217B (zh) | 2023-03-24 |
Family
ID=85115824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211431631.XA Active CN115496217B (zh) | 2022-11-16 | 2022-11-16 | 一种推理验证方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115496217B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114298284A (zh) * | 2021-12-29 | 2022-04-08 | 浙江大华技术股份有限公司 | 网络模型的转换方法、装置、系统、存储介质及电子装置 |
WO2022142986A1 (zh) * | 2020-12-30 | 2022-07-07 | 华为技术有限公司 | 一种人工智能系统中数据处理方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352906B2 (en) * | 2007-12-28 | 2013-01-08 | Cadence Design Systems, Inc. | Method, system, and computer program product for implementing external domain independent modeling framework in a system design |
US20190392296A1 (en) * | 2019-06-28 | 2019-12-26 | John Brady | Hardware agnostic deep neural network compiler |
CN111275199A (zh) * | 2020-01-17 | 2020-06-12 | 深圳壹账通智能科技有限公司 | 一种深度学习模型文件的转换方法、系统、计算机设备及计算机可读存储介质 |
US20220292390A1 (en) * | 2021-03-10 | 2022-09-15 | International Business Machines Corporation | Uniform artificial intelligence model conversion |
CN115034402A (zh) * | 2022-06-20 | 2022-09-09 | 寒武纪行歌(南京)科技有限公司 | 模型推理性能的优化方法、装置及相关产品 |
-
2022
- 2022-11-16 CN CN202211431631.XA patent/CN115496217B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022142986A1 (zh) * | 2020-12-30 | 2022-07-07 | 华为技术有限公司 | 一种人工智能系统中数据处理方法及装置 |
CN114298284A (zh) * | 2021-12-29 | 2022-04-08 | 浙江大华技术股份有限公司 | 网络模型的转换方法、装置、系统、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115496217A (zh) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8495568B2 (en) | System and method of identifying and tracking software pattern software recipes | |
US11307975B2 (en) | Machine code analysis for identifying software defects | |
US7895575B2 (en) | Apparatus and method for generating test driver | |
Rose et al. | A comparison of model migration tools | |
DE102021133809A1 (de) | Verfahren und vorrichtung zur automatischen detektion von softwarefehlern | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
US20210311729A1 (en) | Code review system | |
CN112181411A (zh) | 一种菜单生成方法、菜单生成装置及诊断设备 | |
CN117113347A (zh) | 一种大规模代码数据特征提取方法及系统 | |
CN114968817A (zh) | 代码改动影响范围的评估方法、装置、设备及存储介质 | |
US11593076B2 (en) | Method for merging architecture data | |
CN118113271A (zh) | 基于大模型的代码生成方法、系统、终端及介质 | |
CN115496217B (zh) | 一种推理验证方法、装置、电子设备和存储介质 | |
CN117113080A (zh) | 数据处理和代码处理方法、装置、一体机和存储介质 | |
CN117407312A (zh) | 应用测试方法、装置、计算机设备及存储介质 | |
CN111240681A (zh) | 一种不同编程语言的转换方法及装置 | |
CN109597638B (zh) | 基于实时计算引擎解决数据处理、设备联动的方法及装置 | |
CN112328281A (zh) | 一种服务器固件刷新方法和装置 | |
US10997056B1 (en) | Generation of explanatory and executable repair examples | |
US12061868B2 (en) | Automated calculation predictions with explanations | |
CN112418930B (zh) | 一种测试方法、系统及计算机设备 | |
US20230376296A1 (en) | Installation script auto-generation to create source code runtime environment | |
CN114610648A (zh) | 一种测试方法、装置及设备 | |
CN118445198A (zh) | 一种判空检测方法、装置、终端设备和存储介质 | |
CN107679040B (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 |