CN112819153B - 一种模型转化方法及装置 - Google Patents
一种模型转化方法及装置 Download PDFInfo
- Publication number
- CN112819153B CN112819153B CN202011622615.XA CN202011622615A CN112819153B CN 112819153 B CN112819153 B CN 112819153B CN 202011622615 A CN202011622615 A CN 202011622615A CN 112819153 B CN112819153 B CN 112819153B
- Authority
- CN
- China
- Prior art keywords
- operator
- network model
- original network
- operators
- target
- 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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种模型转化方法及装置,涉及人工智能技术领域,包括:获得基于原始深度学习框架生成的原始网络模型;识别所述原始网络模型中的第一类算子;提取所述第一类算子的算法逻辑,根据所述算法逻辑生成目标平台支持的目标逻辑代码,并获得所述第一类算子的参数列表,其中,所述目标平台为:用于部署转化后原始网络模型的推理平台;按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,在待转化的算子为第一类算子的情况下,按照目标框架所支持的参数格式对该算子的参数列表中的参数进行转化。应用上述方案可以提高模型转化效率。
Description
技术领域
本申请涉及人工智能技术领域,特别是涉及一种模型转化方法及装置。
背景技术
通常基于深度学习框架生成网络模型,为便于表述将上述网络模型称为原始网络模型,然后将原始网络模型部署在推理平台上运行。由于推理平台所接入的深度学习框架与生成原始网络模型时采用的深度学习框架可能并不相同,因此需要对原始网络模型进行转化,以使得转化后的网络模型能够在上述推理平台上运行。
网络模型一般包括多个算子,在对原始网络模型进行转化时,需要对原始网络模型中的各个算子进行转化。原始网络模型中可能存在用户自行定义的算子,即私有算子,通常需要用户手动对上述私有算子进行转化,从而导致模型转化的效率较低。
发明内容
本申请实施例的目的在于提供一种模型转化方法及装置,以提高模型转化效率。具体技术方案如下:
第一方面,本申请实施例提供了一种模型转化方法,所述方法包括:
获得基于原始深度学习框架生成的原始网络模型;
识别所述原始网络模型中的第一类算子,其中,所述第一类算子为:不支持利用预设的映射关系进行转化的算子,所述映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;
提取所述第一类算子的算法逻辑,根据所述算法逻辑生成目标平台支持的目标逻辑代码,并获得所述第一类算子的参数列表,其中,所述目标平台为:用于部署转化后原始网络模型的推理平台;
按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,其中,在待转化的算子为第一类算子的情况下,按照目标框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述目标框架为:所述目标平台部署的深度学习框架。
本申请的一个实施例中,所述方法还包括:
在待转化的算子为第二类算子的情况下,利用所述映射关系对该算子进行转化,其中,所述第二类算子为:支持利用所述映射关系进行转化的算子。
本申请的一个实施例中,所述按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,包括:
按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,其中,在待转化的算子为第一类算子的情况下,按照中间框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述中间框架所支持的参数格式下的网络模型支持进行量化;
对转化后的原始网络模型进行量化;
将量化后的原始网络模型的模型格式转化为所述目标框架所支持的模型格式,实现对所述原始网络模型的转化。
本申请的一个实施例中,所述提取所述第一类算子的算法逻辑,包括:
从预设的单元算子中,选择用于通过组合的方式描述所述第一类算子的候选单元算子;
根据所选择的候选单元算子的逻辑描述文件,构建所述第一类算子的算法逻辑。
本申请的一个实施例中,所述根据所述算法逻辑生成目标平台支持的目标逻辑代码,包括:
基于预设的通用逻辑描述方式描述所述算法逻辑,得到中间逻辑描述,其中,所述预设的通用逻辑描述方式为:多个推理平台支持的逻辑描述方式,所述多个推理平台包含所述目标平台;
生成所述中间逻辑描述对应的语法结构;
按照目标平台支持的代码语言对所述语法结构进行编码,得到目标逻辑代码。
本申请的一个实施例中,在所述获得所述第一类算子的参数列表步骤之后,所述方法还包括:
利用预设的接口封装模板对所述目标逻辑代码的接口进行封装,以使得存在接口访问需求时,通过预设的接口访问模板对封装后的接口进行访问,其中,所述接口封装模板为:所述目标框架支持的接口封装方式;和/或
根据所述参数列表中参数的信息,对预设的参数调用模板进行设置,以使得存在参数调用需求时,通过设置后的参数调用模板调用所述参数列表中的参数,其中,所述参数调用模板为:所述目标框架支持的参数调用方式。
本申请的一个实施例中,所述识别所述原始网络模型中的第一类算子,包括:
识别所述原始网络模型中的各个算子,将未出现在所述支持算子列表中的算子确定为第一类算子,其中,所述支持算子列表反映:各个支持利用所述映射关系进行转化的算子;和/或
通过以下方式识别所述原始网络模型中的第二类算子:
将出现在所述支持算子列表中的算子确定为第二类算子。
本申请的一个实施例中,所述识别所述原始网络模型中的第一类算子,包括:
按照所述数据处理流向,依次识别所述原始网络模型中的各个算子是否为第一类算子;
针对识别到的第一类算子,判断该算子是否可拆分,若为是,对该算子进行拆分,识别拆分后的算子是否为第一类算子,返回所述针对识别到的第一类算子,判断该算子是否可拆分的步骤,直至所识别的第一类算子不可拆分。
本申请的一个实施例中,在满足以下任一条件的情况下,判断所识别的第一类算子不可拆分:
用于定义第一类算子的定义标识表征该第一类算子的粒度大小满足预设的不可拆分粒度要求;
所识别的第一类算子所调用的算子均为第一类算子;
在所述原始网络模型的拓扑文件中,所识别的第一类算子的标识标记有预设的不可拆分标识。
本申请的一个实施例中,在所述识别所述原始网络模型中的第一类算子步骤之后,所述方法还包括:
从所述第一类算子中,确定算子的输入数据与所述原始网络模型的外部输入数据不相关的算子;
对所确定的算子进行预计算;
针对预计算后的算子中的第一类算子,根据所述数据处理流向,对该第一类算子、及与该第一类算子相关的第一类算子进行合并,得到合并后的第一类算子。
本申请的一个实施例中,所述获得基于原始深度学习框架生成的原始网络模型,包括:
基于代码性质的网络拓扑文件,获得基于原始深度学习框架生成的原始网络模型。
本申请的一个实施例中,所述方法还包括:
将转化后原始网络模型中除所述第一类算子之外的算子,转化为所述目标框架支持的模型格式;和/或
根据所述参数列表,识别转化后原始网络模型的第一类算子中与所述参数列表对应的参数,将所识别的参数转化为所述目标框架支持的模型格式。
第二方面,本申请实施例提供了一种模型转化装置,所述装置包括:
模型获得模块,用于获得基于原始深度学习框架生成的原始网络模型;
第一算子识别模块,用于识别所述原始网络模型中的第一类算子,其中,所述第一类算子为:不支持利用预设的映射关系进行转化的算子,所述映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;
信息提取模块,用于提取所述第一类算子的算法逻辑,根据所述算法逻辑生成目标平台支持的目标逻辑代码,并获得所述第一类算子的参数列表,其中,所述目标平台为:用于部署转化后原始网络模型的推理平台;
算子转化模块,用于按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,其中,在待转化的算子为第一类算子的情况下,按照目标框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述目标框架为:所述目标平台部署的深度学习框架。
本申请的一个实施例中,所述算子转化模块,还用于:
在待转化的算子为第二类算子的情况下,利用所述映射关系对该算子进行转化,其中,所述第二类算子为:支持利用所述映射关系进行转化的算子。
本申请的一个实施例中,所述算子转化模块,具体用于:
按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,其中,在待转化的算子为第一类算子的情况下,按照中间框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述中间框架所支持的参数格式下的网络模型支持进行量化;
对转化后的原始网络模型进行量化;
将量化后的原始网络模型的模型格式转化为所述目标框架所支持的模型格式,实现对所述原始网络模型的转化。
本申请的一个实施例中,所述信息提取模块,具体用于:
从预设的单元算子中,选择用于通过组合的方式描述所述第一类算子的候选单元算子;
根据所选择的候选单元算子的逻辑描述文件,构建所述第一类算子的算法逻辑,根据所述算法逻辑生成目标平台支持的目标逻辑代码,并获得所述第一类算子的参数列表。
本申请的一个实施例中,所述信息提取模块,具体用于:
提取所述第一类算子的算法逻辑,基于预设的通用逻辑描述方式描述所述算法逻辑,得到中间逻辑描述,其中,所述预设的通用逻辑描述方式为:多个推理平台支持的逻辑描述方式,所述多个推理平台包含所述目标平台;
生成所述中间逻辑描述对应的语法结构;
按照目标平台支持的代码语言对所述语法结构进行编码,得到目标逻辑代码;
获得所述第一类算子的参数列表。
本申请的一个实施例中,所述装置还包括后处理模块,用于:
在获得所述第一类算子的参数列表之后,利用预设的接口封装模板对所述目标逻辑代码的接口进行封装,以使得存在接口访问需求时,通过预设的接口访问模板对封装后的接口进行访问,其中,所述接口封装模板为:所述目标框架支持的接口封装方式;和/或
根据所述参数列表中参数的信息,对预设的参数调用模板进行设置,以使得存在参数调用需求时,通过设置后的参数调用模板调用所述参数列表中的参数,其中,所述参数调用模板为:所述目标框架支持的参数调用方式。
本申请的一个实施例中,所述第一算子识别模块,具体用于:
识别所述原始网络模型中的各个算子,将未出现在所述支持算子列表中的算子确定为第一类算子,其中,所述支持算子列表反映:各个支持利用所述映射关系进行转化的算子;和/或
所述装置还包括第二算子识别模块,用于通过以下方式识别所述原始网络模型中的第二类算子:
将出现在所述支持算子列表中的算子确定为第二类算子。
本申请的一个实施例中,所述第一算子识别模块,具体用于:
按照所述数据处理流向,依次识别所述原始网络模型中的各个算子是否为第一类算子;
针对识别到的第一类算子,判断该算子是否可拆分,若为是,对该算子进行拆分,识别拆分后的算子是否为第一类算子,返回所述针对识别到的第一类算子,判断该算子是否可拆分的步骤,直至所识别的第一类算子不可拆分。
本申请的一个实施例中,所述装置还包括算子判断模块,用于在满足以下任一条件的情况下,判断所识别的第一类算子不可拆分:
用于定义第一类算子的定义标识表征该第一类算子的粒度大小满足预设的不可拆分粒度要求;
所识别的第一类算子所调用的算子均为第一类算子;
在所述原始网络模型的拓扑文件中,所识别的第一类算子的标识标记有预设的不可拆分标识。
本申请的一个实施例中,所述装置还包括算子合并模块,用于:
在识别所述原始网络模型中的第一类算子之后,从所述第一类算子中,确定算子的输入数据与所述原始网络模型的外部输入数据不相关的算子;
对所确定的算子进行预计算;
针对预计算后的算子中的第一类算子,根据所述数据处理流向,对该第一类算子、及与该第一类算子相关的第一类算子进行合并,得到合并后的第一类算子。
本申请的一个实施例中,所述模型获得模块,具体用于:
基于代码性质的网络拓扑文件,获得基于原始深度学习框架生成的原始网络模型。
本申请的一个实施例中,所述装置还包括格式转化模块,用于:
将转化后原始网络模型中除所述第一类算子之外的算子,转化为所述目标框架支持的模型格式;和/或
根据所述参数列表,识别转化后原始网络模型的第一类算子中与所述参数列表对应的参数,将所识别的参数转化为所述目标框架支持的模型格式。
第三方面,本申请实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的模型转化方法。
本申请实施例有益效果:
应用本申请实施例提供的方案进行模型转化时,获得基于原始深度学习框架生成的原始网络模型;识别原始网络模型中的第一类算子,其中,第一类算子为:不支持利用预设的映射关系进行转化的算子,映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;针对原始网络模型中的第一类算子,首先根据第一类算子的算法逻辑生成目标平台支持的目标逻辑代码,其中,目标平台为用于部署转化后原始网络模型的推理平台,并得到第一类算子的参数列表,然后将第一类算子的参数列表中参数的格式转化为目标框架支持的参数格式,其中,目标框架包括:目标框架或中间框架,目标框架为:目标平台部署的深度学习框架,中间框架为:用于实现对原始网络模型向目标框架支持的模型进行转化的框架,也就是,转化后第一类算子的目标逻辑代码为目标平台支持的代码,参数列表中的参数的格式为目标框架支持的参数格式,因此转化后的第一类算子可以在目标框架上运行。通过依次对原始网络模型的各个算子进行转化,实现对原始网络模型的转化。
由此可见,应用本申请实施例提供的方案进行模型转化时,无需手动对第一类算子进行转化,减少了模型转化的工作量,降低模型转化的复杂度,从而可以提高模型转化效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本申请实施例提供的一种模型转化方法的流程示意图;
图2为本申请实施例提供的一种算法逻辑提取方法的流程示意图;
图3为本申请实施例提供的第一种算子的实现逻辑示意图;
图4为本申请实施例提供的第二种算子的实现逻辑示意图;
图5为本申请实施例提供的第三种算子的实现逻辑示意图;
图6为本申请实施例提供的一种模型转化装置的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了提高模型转化效率,本申请实施例提供了一种模型转化方法及装置,下面分别进行详细描述。
参见图1,图1为本申请实施例提供的一种模型转化方法的流程示意图。该方法可以应用于电子计算机、手机、平板电脑等电子设备中。如图1所示,模型转化方法包括如下步骤101至步骤104。
步骤101,获得基于原始深度学习框架生成的原始网络模型。
其中,上述原始深度学习框架可以为TensorFlow框架、PyTorch框架、Caffe(Convolutional Architecture for Fast Feature Embedding,快速特征嵌入的卷积结构)框架等。
深度学习框架中包含多种开源的算子,如卷积算子、激活算子、归一化算子等,基于深度学习框架中的算子可以实现对网络模型的构建。除此之外,上述网络模型中,还可以包含用户在深度学习框架的基础上自行定义的算子,即私有算子。基于不同的深度学习框架生成的原始网络模型中的算子具有不同的表现形式,且不同的深度学习框架所支持的表现形式不同。
上述表现形式包括模型的参数格式、属性、数据类型、语言代码等。上述参数格式包括:prototxt、caffemodel、meta、ckpt、py、pth等,上述属性包括:逻辑密集属性算子、计算密集属性算子等,上述数据类型包括:double、float32、float16、int、标量、张量等,上述语言代码包括:Python语言、C/C++语言、cu语言等。
以语言代码为例,TensorFlow框架支持的语言代码包括Python语言,也就是在TensorFlow框架上运行的模型需要由Python语言编译得到;而Caffe框架支持的代码语言包括C++语言,也就是在Caffe框架上运行的模型需要由C++语言编译得到。
具体的,可以预先基于原始深度学习框架构建原始网络模型,在将原始网络模型部署在接入其他深度学习框架的推理平台上时,需要将上述原始网络模型中的算子的表现形式转化为上述其他深度学习框架支持的表现形式。因此可以获得上述原始网络模型,作为待转化的网络模型。
本申请的一个实施例中,在获得原始网络模型时,可以基于代码性质的网络拓扑文件,获得基于原始深度学习框架生成的原始网络模型。网络模型的网络拓扑文件可以是文本形式的静态文件或代码性质的网络拓扑文件,上述代码性质的网络拓扑文件也可以称为动态文件。通过获得代码性质的网络拓扑文件的方式获得原始网络模型,便于后续根据上述代码性质的网络拓扑文件分析原始网络模型中算子的逻辑。
步骤102,识别原始网络模型中的第一类算子。
其中,第一类算子为:不支持利用预设的映射关系进行转化的算子。
映射关系为:各类型的算子在不同的深度学习框架之间的对应关系。映射关系中通常包含常见类型的算子在不同的深度学习框架下的表现形式之间的转换关系,上述常见类型的算子可以是卷积算子、激活算子等。以卷积算子为例,假设该卷积算子在深度学习框架K1下的表现形式为J1,在另一深度学习框架K2下的表现形式为J2,而映射关系中包含上述不同的表现形式之间的转换关系,这样针对基于深度学习框架K1生成的卷积算子J1,可以根据上述映射关系进行转化,得到另一表现形式的卷积算子J2,从而使得转化后的算子J2能够在深度学习框架K2上运行。
上述第一类算子可以是用户自行定义的私有算子,映射关系中通常不包含这类算子在不同的深度学习框架下的对应关系,因此难以利用该映射关系对第一类算子进行转化。
具体的,可以对原始网络模型中的各个算子进行识别,判断各个算子是否为第一类算子。
本申请的一个实施例中,与第一类算子相对应的还包括第二类算子,第二类算子为:支持利用映射关系进行转化的算子,第二类算子通常为常见类型的算子,如卷积算子、池化算子、全连接算子、BatchNorm算子等,映射关系中通常包含这类算子在不同的深度学习框架下的对应关系,因此可以利用该映射关系对第二类算子进行转化。
本申请的一个实施例中,上述映射关系可以是:算子在不同的深度学习框架中参数表现形式的映射。以卷积算子为例,卷积算子在Pytorch框架中表示卷积核大小的参数的表现形式为kernel_size,而在Caffe框架中表示卷积核大小的参数的表现形式为kernel_w\kernel_h,二者数学含义相同,仅仅是表现形式不同。因此在对不同深度学习框架下的算子进行转化时,可以利用映射关系对算子的参数的表现形式进行转化。
步骤103,提取第一类算子的算法逻辑,根据算法逻辑生成目标平台支持的目标逻辑代码,并获得第一类算子的参数列表。
其中,目标平台为:用于部署转化后原始网络模型的推理平台。该目标平台可以是ARM(Advanced RISC Machines)平台、DSP(Digital Signal Process,数字信号处理)平台、GPU(Graphics Processing Unit,图形处理器)平台、ASIC(Application SpecificIntegrated Circuit,特殊应用集成电路)平台、FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)平台等。不同的平台支持不同的代码语言,如C语言、C++语言、Python语言等。
上述算法逻辑为算子的数据处理逻辑,具体可以包括算子前向推理逻辑、算子反向传播逻辑及输出结果的形状计算逻辑等。
上述算子列表中包含算子的各参数的参数信息,如各参数的名称、属性、数据类型等。
具体的,可以获得第一类算子的算法逻辑,然后按照目标平台支持的代码语言编辑上述算法逻辑,从而得到目标逻辑代码,这样所得到的目标逻辑代码可以被目标平台所调用。这样在后续对转化后的原始网络模型进行量化后,在运行量化后的模型时,可以由目标平台直接调用上述第一类算子,从而获得第一类算子的输出结果,对该输出结果进行量化,便于将量化后的输出结果输入下一算子。
并且,还可以获得第一类算子的参数列表,便于后续在运行转化后的原始网络模型时,直接从参数列表中读取参数。
步骤104,按照原始网络模型的数据处理流向,依次对原始网络模型的各个算子进行转化,实现对原始网络模型的转化。
其中,在待转化的算子为第一类算子的情况下,按照目标框架所支持的参数格式对该算子的参数列表中的参数进行转化,实现对该算子的转化。
上述目标框架包括:目标框架或中间框架,目标框架为:目标平台部署的深度学习框架,中间框架为:用于实现对原始网络模型向目标框架支持的模型进行转化的框架。
上述原始深度学习框架与目标框架为不同的学习框架。如前所述,参数格式为算子的表现形式中的一种,不同的深度学习框架支持不同的参数格式。例如,TensorFlow框架支持的参数格式包括py格式、meta格式;Caffe框架支持的参数格式包括prototxt格式、caffemodel格式等。
上述数据处理流向指:原始网络模型对数据进行处理的顺序所指示的方向。根据根据代码性质的原始网络模型的网络拓扑文件分析得到上述数据处理流向,还可以利用原始网络模型进行数据推理,监控推理过程中的数据走向,从而得到原始网络模型的数据处理流向。
本申请的一个实施例中,在待转化的算子为第二类算子的情况下,可以利用映射关系对该算子进行转化。
具体的,可以按照数据处理流向,逐一对原始网络模型的各个算子进行转化。
在当前待转化的算子为第二类算子的情况下,由于第二类算子支持采用映射关系进行转化,因此可以直接利用上述映射关系对当前待转化的算子进行转化;
在当前待转化的算子为第一类算子的情况下,可以将当前待转化的算子的参数列表中的参数的格式转化为目标框架支持的参数格式,从而便于目标平台基于所部属的目标框架对参数列表中的参数进行调用。
可以按照上述方式依次对原始网络模型中的各个算子进行转化,直至将所有算子转化完成,从而实现对原始网络模型的转化。由于目标框架为目标平台上部署的深度学习框架,因此转化后的原始网络模型可以直接在目标平台上运行。
本申请的一个实施例中,在实现模型转化后,可以对转化后的原始网络模型进行量化。
具体的,可以按照预设的量化方案,对转化后的原始网络模型中的各个算子进行量化。
其中,在基于量化后的原始网络模型进行数据推理时,需要获得网络拓扑中各个节点的输出结果,并对输出结果进行量化,将量化后的输出结果输入下一节点。
可以将量化后原始网络模型中的每一算子作为一节点。由于第一类算子的目标逻辑代码可以被目标平台所调用,因此可以由目标平台直接调用上述第一类算子,从而获得第一类算子的输出结果,对该输出结果进行量化,从而便于将量化后的输出结果输入下一算子。
本申请的一个实施例中,在进行模型转化时,还可以按照原始网络模型的数据处理流向,依次对原始网络模型的各个算子进行转化,其中,在待转化的算子为第一类算子的情况下,按照中间框架所支持的参数格式对该算子的参数列表中的参数进行转化,对转化后的原始网络模型进行量化,将量化后的原始网络模型的模型格式转化为目标框架所支持的模型格式,实现对原始网络模型的转化。
其中,中间框架所支持的参数格式下的网络模型支持进行量化。
这样针对原始网络模型中的每一第一类算子,可以首先按照中间框架支持的参数格式进行转化,转化完成后,对转化后的网络模型进行量化,然后对量化后的网络模型再次向目标框架支持的网络模型进行格式转化,以使得格式转化后的网络模型能够在部署有目标框架的目标平台上运行。
本申请的一个实施例中,在需要对转化后的原始网络模型进行量化的情况下,若目标框架所支持的参数格式下的网络模型支持进行量化,则可以直接将第一类算子转化为目标框架支持的算子,然后对转化后的原始网络模型进行量化;
若目标框架所支持的参数格式下的网络模型不支持进行量化,则可以首先将原始网络模型中的第一类算子转化为中间框架支持的算子,然后对网络模型进行量化,再将量化后的网络模型转化为目标框架支持的网络模型。
本申请的一个实施例中,在实现模型转化后,还可以将转化后原始网络模型中除第一类算子之外的算子,转化为目标框架支持的模型格式,还可以根据参数列表,识别转化后原始网络模型的第一类算子中与参数列表对应的参数,将所识别的参数转化为目标框架支持的模型格式。
其中,上述除第一类算子之外的算子可以理解为第二类算子。
具体的,可以对转化后的原始网络模型中的算子进行格式转化,转化为统一的、目标框架支持的模型格式,从而可以使得模型更加紧凑,降低运行时模型的内存占用。
其中,在对第二类算子进行转化时,可以直接将第二类算子的格式转化为目标框架支持的模型格式;在对第一类算子进行转化时,可以从第一类算子中确定与参数列表对应的参数,然后将所确定的参数的格式转化为目标框架支持的模型格式。由于参数列表中所记录的参数为模型推理过程中需要用到的参数,因此对第一类算子中与参数列表对应的参数进行格式转化,即可以实现降低模型运行时的内存占用。
应用上述实施例提供的方案进行模型转化时,获得基于原始深度学习框架生成的原始网络模型;识别原始网络模型中的第一类算子,其中,第一类算子为:不支持利用预设的映射关系进行转化的算子,映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;针对原始网络模型中的第一类算子,首先根据第一类算子的算法逻辑生成目标平台支持的目标逻辑代码,其中,目标平台为用于部署转化后原始网络模型的推理平台,并得到第一类算子的参数列表,然后将第一类算子的参数列表中参数的格式转化为目标框架支持的参数格式,其中,目标框架包括:目标框架或中间框架,目标框架为:目标平台部署的深度学习框架,中间框架为:用于实现对原始网络模型向目标框架支持的模型进行转化的框架,也就是,转化后第一类算子的目标逻辑代码为目标平台支持的代码,参数列表中的参数的格式为目标框架支持的参数格式,因此转化后的第一类算子可以在目标框架上运行。通过依次对原始网络模型的各个算子进行转化,实现对原始网络模型的转化。
由此可见,应用上述实施例提供的方案进行模型转化时,无需手动对第一类算子进行转化,减少了模型转化的工作量,降低模型转化的复杂度,从而可以提高模型转化效率。
参见图2,图2为本申请实施例提供的一种算法逻辑提取方法的流程示意图,对于上述步骤103,在提取第一类算子的算法逻辑时,可以包括如下步骤1031和步骤1032:
步骤1031,从预设的单元算子中,选择用于通过组合的方式描述第一类算子的候选单元算子。
其中,上述单元算子可以用于构建复杂的算子。上述单元算子具有算子描述接口,算子描述接口包括数据类型定义、基本算子定义等。上述数据类型定义用于描述单元算子的输入数据的类型,如标量、张量、向量等。基本算子定义用于描述单元算子所采用的算法的形式,如“add”、“+”等。上述单元算子所使用的代码语言可以是C语言、C++语言、Python语言等,对应地,单元算子所遵从的逻辑可以是上述代码语言规定的逻辑。上述单元算子可以是目标框架支持的算子。
具体的,第一类算子可能是较为复杂的算子,为了采用目标框架支持的逻辑描述方式描述第一类算子的算法逻辑,可以选择能够通过组合的方式描述第一类算子的候选单元算子,也就是,对所选择的候选单元算子进行组合,可以实现第一类算子的逻辑。
步骤1032,根据所选择的候选单元算子的逻辑描述文件,构建第一类算子的算法逻辑。
具体的,可以根据上述候选单元算子的逻辑描述文件,可以提取得到各个候选单元算子的逻辑,再结合候选单元算子的组合方式,对各个候选单元算子的逻辑进行组合,从而可以得到采用目标框架支持的形式描述的、第一类算子的算法逻辑。
本申请的另一实施例中,在选择用于通过组合的方式描述第一类算子的候选单元算子时,可以通过分析第一类算子对应的代码性质的网络拓扑文件,得到第一类算子的原始算法逻辑,根据上述原始算法逻辑和各个单元算子的算子描述接口,选择能够通过组合的方式实现上述原始算法逻辑的候选单元算子。
这种情况下,可以根据各个候选单元算子的逻辑描述文件提取各个候选算子的参数列表,进而对各个候选单元算子的参数列表进行合并,从而得到第一类算子的参数列表。
还可以将上述单元算子提供给用户,由用户手动对上述单元算子进行组合,进而获得用户手动组合的结果,根据上述结果确定能够描述第一类算子的候选单元算子和各个候选单元算子的组合方式。
这种情况下,还可以获得用户手动编辑的第一类算子的参数列表。
本申请的一个实施例中,在根据算法逻辑生成目标平台支持的目标逻辑代码时,可以基于预设的通用逻辑描述方式描述算法逻辑,得到中间逻辑描述;生成中间逻辑描述对应的语法结构;按照目标平台支持的代码语言对语法结构进行编码,得到目标逻辑代码。
其中,通用逻辑描述方式为:多个推理平台支持的逻辑描述方式,上述多个推理平台包含目标平台,可以理解为上述通用逻辑描述方式为目标平台及其他的多个平台支持的逻辑描述方式。
不同的平台支持不同的代码语言,例如,ARM平台支持c/c++语言,x86平台支持python语言、c/c++语言,GPU平台支持cu语言。
具体的,在得到第一类算子的算法逻辑后,可以按照上述通用逻辑描述方式对上述算法逻辑进行描述,从而得到中间逻辑描述。该中间逻辑描述又称为IR(Intermediaterepresentation,中间表示)。
进而根据上述中间逻辑描述可以确定第一类算子的算子核心逻辑,从而生成中间逻辑描述对应的语法结构。上述语法结构可以是语法树。然后可以按照目标平台支持的代码语言对上述语法结构进行编码,得到可以描述第一类算子的算子核心逻辑的目标逻辑代码。
例如,假设得到的第一类算子的算法逻辑为加法逻辑,可以将该加法逻辑转化为通用逻辑描述方式“+”,并结合其他算法逻辑得到语法树,最后将该加法逻辑“+”转化为目标平台支持的代码“add”。
除此之外,本申请的一个实施例中,在获得目标逻辑代码时,还可以将所提取的第一类算子的算法逻辑提供给用户,由用户基于上述算法逻辑编写目标平台支持的逻辑代码,然后获得用户输入的逻辑代码,作为目标逻辑代码。
或者将第一类算子的算法逻辑提供给用户,由用户基于算法逻辑手动构建语法结构,然后获得用户输入的语法结构,再按照目标平台支持的代码语言对用户输入的语法结构进行编码,得到目标逻辑代码。
本申请的一个实施例中,在获得第一类算子的参数列表后,还可以利用预设的接口封装模板对目标逻辑代码的接口进行封装,以使得存在接口访问需求时,通过预设的接口访问模板对封装后的接口进行访问。
其中,接口封装模板为:目标框架支持的接口封装方式。接口访问模板为:与接口封装模板对应的访问模板。
具体的,在得到第一类算子的目标逻辑代码后,可以按照预设的接口封装模板对上述目标逻辑代码进行接口封装。在需要对目标逻辑代码的接口进行访问时,如数据推理过程中需要调用第一类算子的目标逻辑代码时,可以按照接口访问模板对上述封装后的接口进行访问。这样可以按照统一的接口访问方式对第一类算子进行访问,从而简化接口的访问过程。
本申请的一个实施例中,还可以根据参数列表中参数的信息,对预设的参数调用模板进行设置,以使得存在参数调用需求时,通过设置后的参数调用模板调用参数列表中的参数。
其中,参数调用模板为:目标框架支持的参数调用方式。上述参数调用模板可以由用户自定义得到。
具体的,可以将预设的参数调用模板中表征所要调用的参数的信息标识位设置为参数列表中的参数的信息,这样通过调用设置后的参数调用模板,即可实现对信息标识位指示的参数列表中的参数进行调用。其中,上述信息标识位所包含的参数的信息可以包括参数的名称、属性、类型、数量等。
例如,假设自定义的参数调用模板为def setup(self,bottom,top)函数,其中“self,bottom,top”表征所要调用的参数,可以将上述所要调用的参数设置为参数列表中的参数,从而可以使得设置后的def setup(self,bottom,top)函数能够调用参数列表中的参数进行运算。
本申请的一个实施例中,对于上述步骤102在识别原始网络模型中的第一类算子时,可以识别原始网络模型中的各个算子,将未出现在支持算子列表中的算子确定为第一类算子。
其中,支持算子列表反映:各个支持利用映射关系进行转化的算子。
具体的,可以预先构建预设的映射关系支持进行转化的算子的列表,作为支持算子列表。然后在对原始网络模型中的算子进行识别时,可以按照数据处理流向依次对各个算子进行判断。在当前待判断的算子未出现在上述支持算子列表的情况下,说明利用映射关系难以对该算子进行转化,因此将该算子确定为第一类算子。
除此之外,还可以将出现在预设的支持算子列表中的算子确定为第二类算子。具体的,在当前待判断的算子出现在上述支持算子列表的情况下,说明利用映射关系可以对该算子进行转化,因此将该算子确定为第二类算子。
本申请的一个实施例中,可以按照数据处理流向,依次识别原始网络模型中的各个算子是否为第一类算子,针对识别到的第一类算子,判断该算子是否可拆分,若为是,对该算子进行拆分,识别拆分后的算子是否为第一类算子,返回针对识别到的第一类算子,判断该算子是否可拆分的步骤,直至所识别的第一类算子不可拆分。
具体的,对于识别到的第一类算子,还可以进一步判断该算子是否为可拆分的算子,若为是,则可以继续对该算子进行拆分,直至最终识别到的第一类算子不可拆分。这样可以避免最终得到第一类算子结构较大,尽可能地对第一类算子进行拆分,从而使得在后续提取第一类算子的算法逻辑时,简化提取工作量,并提高逻辑提取的准确度。
本申请的一个实施例中,在满足以下任一条件的情况下,可以判断所识别的第一类算子不可拆分:
条件1、用于定义第一类算子的定义标识表征该第一类算子的粒度大小不满足预设的不可拆分粒度要求。
其中,上述定义标识可以是:原始网络模型的代码性质的网络拓扑文件中记录的第一类算子的标识。上述粒度大小可以表征算子的结构大小,在算子的粒度较大的情况下,说明该算子的结构较为复杂,可以对该算子进行拆分;在算子的粒度较小的情况下,说明该算子的结构较为简单,则不再对该算子进行拆分。
具体的,在用于定义算子的定义标识可以表征算子的粒度大小的情况下,可以根据定义标识判断第一类算子是否可拆分。其中,当第一类算子的定义标识所表征的粒度大小满足上述不可拆分粒度要求的情况下,则不再对该第一类算子进行拆分,否则继续对该第一类算子进行拆分。其中,通过自由设定不可拆分粒度要求的取值,可以实现对所获得的第一类算子的粒度大小的控制。
例如,假设定义标识Class表征算子的粒度较大,则若算子的定义标识为Class,则可以将继续对该算子进行拆分,进而对拆分后的判断的定义标识进行判断,若拆分后算子的定义标识为Lowgrade,Lowgrade表征算子的粒度较小,则可以不再对该算子继续进行拆分。
条件2,所识别的第一类算子所调用的算子均为第一类算子。
具体的,在第一类算子所调用的算子也均为第一类算子的情况下,说明该第一类算子、该第一类算子所调用的第一类算子为一个整体,为避免破坏第一类算子的逻辑结构,可以不再对该第一类算子进行拆分,以保证该第一类算子的完整性。
例如,参见图3,图3为本申请实施例提供的第一种算子的实现逻辑示意图。如图3所示,算子A中包含算子B和C,算子B中包含算子D和E,其中D为第一类算子,E为第二类算子,算子C中包含算子F、G、H,算子F、G、H均为第一类算子。由于算子A的定义标识为Class,说明该算子A可拆分,拆分后得到算子B和C,由于算子B中包含的算子不均为第一类算子,因此继续对B进行拆分,可以得到第一类算子D和第二类算子E,而由于算子C中包含的算子均为第一类算子,因此不再对该算子C进行拆分,得到第一类算子C,因此最终确定的第一类算子为D和C。
条件3、在原始网络模型的拓扑文件中,所识别的第一类算子的标识标记有预设的不可拆分标识。
上述不可拆分标识可以是“@”符号、“%”符号、“F”符号等。
具体的,代码性质的原始网络模型的拓扑文件中记录有各个算子的标识,在上述标识中可以设置不可拆分标识,当算子的标识中包含上述不可拆分标识时,则说明该算子不可拆分。因此,针对识别到的第一类算子,可以在上述拓扑文件中查找该算子的标识,检测所查找到的标识是否标记有不可拆分,若存在,则判断该第一类算子不可拆分。
本申请的一个实施例中,在上述步骤102识别得到原始网络模型中的第一类算子之后,还可以从第一类算子中,确定算子的输入数据与原始网络模型的外部输入数据不相关的算子;对所确定的算子进行预计算;针对预计算后的算子中的第一类算子,根据数据处理流向,对该第一类算子、及与该第一类算子相关的第一类算子进行合并,得到合并后的第一类算子。
其中,上述与该第一类算子相关的第一类算子指的是:同一算子结构内部、与该第一类算子存在数据交互的第一类算子。
具体的,对于识别到的算子,若该算子的输入数据与原始网络模型的外部输入数据不相关,即该算子的输入数据仅包括原始网络模型的内部输入数据,这种情况下,可以基于上述内部输入数据对该算子进行预计算,从而避免在推理过程中针对该算子进行反复计算,节省推理过程的资源占用。
进而,针对预计算后的第一类算子,可以确定与该第一类算子相关的第一类算子,将上述相关的第一类算子合并为一个第一类算子,从而优化原始网络模型的结构。
例如,参见图4,图4为本申请实施例提供的第二种算子的实现逻辑示意图。如图4所示,算子A中包含算子B和C,算子B中包含算子D和E,其中D为第一类算子,E为第二类算子,算子C中包含算子F、G、H,算子F、G、H均为第一类算子。其中,算子D的输入数据为内部输入数据,算子E的输入数据为外部输入数据,因此可以利用上述内部输入数据对算子D进行预计算,然后将预计算后的算子D及算子F、G、H合并为算子C,从而得到如图5所示的第三种算子的实现逻辑示意图。最终确定第一类算子为算子C。
除此之外,本申请的一个实施例中,在对算子进行预计算及合并后,可以将关于预计算及合并的信息发送至用户,以便于用户了解上述过程。
应用上述实施例提供的方案进行模型转化时,获得基于原始深度学习框架生成的原始网络模型;识别原始网络模型中的第一类算子,其中,第一类算子为:不支持利用预设的映射关系进行转化的算子,映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;针对原始网络模型中的第一类算子,首先根据第一类算子的算法逻辑生成目标平台支持的目标逻辑代码,其中,目标平台为用于部署转化后原始网络模型的推理平台,并得到第一类算子的参数列表,然后将第一类算子的参数列表中参数的格式转化为目标框架支持的参数格式,其中,目标框架包括:目标框架或中间框架,目标框架为:目标平台部署的深度学习框架,中间框架为:用于实现对原始网络模型向目标框架支持的模型进行转化的框架,也就是,转化后第一类算子的目标逻辑代码为目标平台支持的代码,参数列表中的参数的格式为目标框架支持的参数格式,因此转化后的第一类算子可以在目标框架上运行。通过依次对原始网络模型的各个算子进行转化,实现对原始网络模型的转化。
由此可见,应用上述实施例提供的方案进行模型转化时,无需手动对第一类算子进行转化,减少了模型转化的工作量,降低模型转化的复杂度,从而可以提高模型转化效率。
参见图6,图6为本申请实施例提供的一种模型转化装置的结构示意图,所述装置包括:
模型获得模块601,用于获得基于原始深度学习框架生成的原始网络模型;
第一算子识别模块602,用于识别所述原始网络模型中的第一类算子,其中,所述第一类算子为:不支持利用预设的映射关系进行转化的算子,所述映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;
信息提取模块603,用于提取所述第一类算子的算法逻辑,根据所述算法逻辑生成目标平台支持的目标逻辑代码,并获得所述第一类算子的参数列表,其中,所述目标平台为:用于部署转化后原始网络模型的推理平台;
算子转化模块604,用于按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,其中,在待转化的算子为第一类算子的情况下,按照目标框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述目标框架为:所述目标平台部署的深度学习框架。
本申请的一个实施例中,所述算子转化模块604,还用于:
在待转化的算子为第二类算子的情况下,利用所述映射关系对该算子进行转化,其中,所述第二类算子为:支持利用所述映射关系进行转化的算子。
本申请的一个实施例中,所述算子转化模块604,具体用于:
按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,其中,在待转化的算子为第一类算子的情况下,按照中间框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述中间框架所支持的参数格式下的网络模型支持进行量化;
对转化后的原始网络模型进行量化;
将量化后的原始网络模型的模型格式转化为所述目标框架所支持的模型格式,实现对所述原始网络模型的转化。
本申请的一个实施例中,所述信息提取模块603,具体用于:
从预设的单元算子中,选择用于通过组合的方式描述所述第一类算子的候选单元算子;
根据所选择的候选单元算子的逻辑描述文件,构建所述第一类算子的算法逻辑,根据所述算法逻辑生成目标平台支持的目标逻辑代码,并获得所述第一类算子的参数列表。
本申请的一个实施例中,所述信息提取模块603,具体用于:
提取所述第一类算子的算法逻辑,基于预设的通用逻辑描述方式描述所述算法逻辑,得到中间逻辑描述,其中,所述预设的通用逻辑描述方式为:多个推理平台支持的逻辑描述方式,所述多个推理平台包含所述目标平台;
生成所述中间逻辑描述对应的语法结构;
按照目标平台支持的代码语言对所述语法结构进行编码,得到目标逻辑代码;
获得所述第一类算子的参数列表。
本申请的一个实施例中,所述装置还包括后处理模块,用于:
在获得所述第一类算子的参数列表之后,利用预设的接口封装模板对所述目标逻辑代码的接口进行封装,以使得存在接口访问需求时,通过预设的接口访问模板对封装后的接口进行访问,其中,所述接口封装模板为:所述目标框架支持的接口封装方式;和/或
根据所述参数列表中参数的信息,对预设的参数调用模板进行设置,以使得存在参数调用需求时,通过设置后的参数调用模板调用所述参数列表中的参数,其中,所述参数调用模板为:所述目标框架支持的参数调用方式。
本申请的一个实施例中,所述第一算子识别模块602,具体用于:
识别所述原始网络模型中的各个算子,将未出现在所述支持算子列表中的算子确定为第一类算子,其中,所述支持算子列表反映:各个支持利用所述映射关系进行转化的算子;和/或
所述装置还包括第二算子识别模块,用于通过以下方式识别所述原始网络模型中的第二类算子:
将出现在所述支持算子列表中的算子确定为第二类算子。
本申请的一个实施例中,所述第一算子识别模块602,具体用于:
按照所述数据处理流向,依次识别所述原始网络模型中的各个算子是否为第一类算子;
针对识别到的第一类算子,判断该算子是否可拆分,若为是,对该算子进行拆分,识别拆分后的算子是否为第一类算子,返回所述针对识别到的第一类算子,判断该算子是否可拆分的步骤,直至所识别的第一类算子不可拆分。
本申请的一个实施例中,所述装置还包括算子判断模块,用于在满足以下任一条件的情况下,判断所识别的第一类算子不可拆分:
用于定义第一类算子的定义标识表征该第一类算子的粒度大小满足预设的不可拆分粒度要求;
所识别的第一类算子所调用的算子均为第一类算子;
在所述原始网络模型的拓扑文件中,所识别的第一类算子的标识标记有预设的不可拆分标识。
本申请的一个实施例中,所述装置还包括算子合并模块,用于:
在识别所述原始网络模型中的第一类算子之后,从所述第一类算子中,确定算子的输入数据与所述原始网络模型的外部输入数据不相关的算子;
对所确定的算子进行预计算;
针对预计算后的算子中的第一类算子,根据所述数据处理流向,对该第一类算子、及与该第一类算子相关的第一类算子进行合并,得到合并后的第一类算子。
本申请的一个实施例中,所述模型获得模块601,具体用于:
基于代码性质的网络拓扑文件,获得基于原始深度学习框架生成的原始网络模型。
本申请的一个实施例中,所述装置还包括格式转化模块,用于:
将转化后原始网络模型中除所述第一类算子之外的算子,转化为所述目标框架支持的模型格式;和/或
根据所述参数列表,识别转化后原始网络模型的第一类算子中与所述参数列表对应的参数,将所识别的参数转化为所述目标框架支持的模型格式。
应用上述实施例提供的方案进行模型转化时,获得基于原始深度学习框架生成的原始网络模型;识别原始网络模型中的第一类算子,其中,第一类算子为:不支持利用预设的映射关系进行转化的算子,映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;针对原始网络模型中的第一类算子,首先根据第一类算子的算法逻辑生成目标平台支持的目标逻辑代码,其中,目标平台为用于部署转化后原始网络模型的推理平台,并得到第一类算子的参数列表,然后将第一类算子的参数列表中参数的格式转化为目标框架支持的参数格式,其中,目标框架包括:目标框架或中间框架,目标框架为:目标平台部署的深度学习框架,中间框架为:用于实现对原始网络模型向目标框架支持的模型进行转化的框架,也就是,转化后第一类算子的目标逻辑代码为目标平台支持的代码,参数列表中的参数的格式为目标框架支持的参数格式,因此转化后的第一类算子可以在目标框架上运行。通过依次对原始网络模型的各个算子进行转化,实现对原始网络模型的转化。
由此可见,应用上述实施例提供的方案进行模型转化时,无需手动对第一类算子进行转化,减少了模型转化的工作量,降低模型转化的复杂度,从而可以提高模型转化效率。
本申请实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现模型转化方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一模型转化方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一模型转化方法。
应用上述实施例提供的方案进行模型转化时,获得基于原始深度学习框架生成的原始网络模型;识别原始网络模型中的第一类算子,其中,第一类算子为:不支持利用预设的映射关系进行转化的算子,映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;针对原始网络模型中的第一类算子,首先根据第一类算子的算法逻辑生成目标平台支持的目标逻辑代码,其中,目标平台为用于部署转化后原始网络模型的推理平台,并得到第一类算子的参数列表,然后将第一类算子的参数列表中参数的格式转化为目标框架支持的参数格式,其中,目标框架包括:目标框架或中间框架,目标框架为:目标平台部署的深度学习框架,中间框架为:用于实现对原始网络模型向目标框架支持的模型进行转化的框架,也就是,转化后第一类算子的目标逻辑代码为目标平台支持的代码,参数列表中的参数的格式为目标框架支持的参数格式,因此转化后的第一类算子可以在目标框架上运行。通过依次对原始网络模型的各个算子进行转化,实现对原始网络模型的转化。
由此可见,应用上述实施例提供的方案进行模型转化时,无需手动对第一类算子进行转化,减少了模型转化的工作量,降低模型转化的复杂度,从而可以提高模型转化效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (11)
1.一种模型转化方法,其特征在于,所述方法包括:
获得基于原始深度学习框架生成的原始网络模型;
识别所述原始网络模型中的第一类算子,其中,所述第一类算子为:不支持利用预设的映射关系进行转化的算子,所述映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;
提取所述第一类算子的算法逻辑,根据所述算法逻辑生成目标平台支持的目标逻辑代码,并获得所述第一类算子的参数列表,其中,所述目标平台为:用于部署转化后原始网络模型的推理平台,所述目标平台包括以下平台中的至少一种:ARM平台、DSP平台、GPU平台、ASIC平台、FPGA平台;
按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,其中,在待转化的算子为第一类算子的情况下,按照目标框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述目标框架为:所述目标平台部署的深度学习框架;
在待转化的算子为第二类算子的情况下,利用所述映射关系对该算子进行转化,其中,所述第二类算子为:支持利用所述映射关系进行转化的算子;
所述按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,包括:
按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,其中,在待转化的算子为第一类算子的情况下,按照中间框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述中间框架所支持的参数格式下的网络模型支持进行量化;
对转化后的原始网络模型进行量化;
将量化后的原始网络模型的模型格式转化为所述目标框架所支持的模型格式,实现对所述原始网络模型的转化。
2.根据权利要求1所述的方法,其特征在于,所述提取所述第一类算子的算法逻辑,包括:
从预设的单元算子中,选择用于通过组合的方式描述所述第一类算子的候选单元算子;
根据所选择的候选单元算子的逻辑描述文件,构建所述第一类算子的算法逻辑。
3.根据权利要求1所述的方法,其特征在于,所述根据所述算法逻辑生成目标平台支持的目标逻辑代码,包括:
基于预设的通用逻辑描述方式描述所述算法逻辑,得到中间逻辑描述,其中,所述预设的通用逻辑描述方式为:多个推理平台支持的逻辑描述方式,所述多个推理平台包含所述目标平台;
生成所述中间逻辑描述对应的语法结构;
按照目标平台支持的代码语言对所述语法结构进行编码,得到目标逻辑代码。
4.根据权利要求1所述的方法,其特征在于,在所述获得所述第一类算子的参数列表步骤之后,所述方法还包括:
利用预设的接口封装模板对所述目标逻辑代码的接口进行封装,以使得存在接口访问需求时,通过预设的接口访问模板对封装后的接口进行访问,其中,所述接口封装模板为:所述目标框架支持的接口封装方式;和/或
根据所述参数列表中参数的信息,对预设的参数调用模板进行设置,以使得存在参数调用需求时,通过设置后的参数调用模板调用所述参数列表中的参数,其中,所述参数调用模板为:所述目标框架支持的参数调用方式。
5.根据权利要求1所述的方法,其特征在于,所述识别所述原始网络模型中的第一类算子,包括:
识别所述原始网络模型中的各个算子,将未出现在支持算子列表中的算子确定为第一类算子,其中,所述支持算子列表反映:各个支持利用所述映射关系进行转化的算子;和/或
通过以下方式识别所述原始网络模型中的第二类算子:
将出现在所述支持算子列表中的算子确定为第二类算子。
6.根据权利要求1所述的方法,其特征在于,所述识别所述原始网络模型中的第一类算子,包括:
按照所述数据处理流向,依次识别所述原始网络模型中的各个算子是否为第一类算子;
针对识别到的第一类算子,判断该算子是否可拆分,若为是,对该算子进行拆分,识别拆分后的算子是否为第一类算子,返回所述针对识别到的第一类算子,判断该算子是否可拆分的步骤,直至所识别的第一类算子不可拆分。
7.根据权利要求6所述的方法,其特征在于,在满足以下任一条件的情况下,判断所识别的第一类算子不可拆分:
用于定义第一类算子的定义标识表征该第一类算子的粒度大小满足预设的不可拆分粒度要求;
所识别的第一类算子所调用的算子均为第一类算子;
在所述原始网络模型的拓扑文件中,所识别的第一类算子的标识标记有预设的不可拆分标识。
8.根据权利要求1所述的方法,其特征在于,在所述识别所述原始网络模型中的第一类算子步骤之后,所述方法还包括:
从所述第一类算子中,确定算子的输入数据与所述原始网络模型的外部输入数据不相关的算子;
对所确定的算子进行预计算;
针对预计算后的算子中的第一类算子,根据所述数据处理流向,对该第一类算子、及与该第一类算子相关的第一类算子进行合并,得到合并后的第一类算子。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述获得基于原始深度学习框架生成的原始网络模型,包括:
基于代码性质的网络拓扑文件,获得基于原始深度学习框架生成的原始网络模型。
10.根据权利要求1-8中任一项所述的方法,其特征在于,所述方法还包括:
将转化后原始网络模型中除所述第一类算子之外的算子,转化为所述目标框架支持的模型格式;和/或
根据所述参数列表,识别转化后原始网络模型的第一类算子中与所述参数列表对应的参数,将所识别的参数转化为所述目标框架支持的模型格式。
11.一种模型转化装置,其特征在于,所述装置包括:
模型获得模块,用于获得基于原始深度学习框架生成的原始网络模型;
第一算子识别模块,用于识别所述原始网络模型中的第一类算子,其中,所述第一类算子为:不支持利用预设的映射关系进行转化的算子,所述映射关系为:各类型的算子在不同的深度学习框架之间的对应关系;
信息提取模块,用于提取所述第一类算子的算法逻辑,根据所述算法逻辑生成目标平台支持的目标逻辑代码,并获得所述第一类算子的参数列表,其中,所述目标平台为:用于部署转化后原始网络模型的推理平台,所述目标平台包括以下平台中的至少一种:ARM平台、DSP平台、GPU平台、ASIC平台、FPGA平台;
算子转化模块,用于按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,其中,在待转化的算子为第一类算子的情况下,按照目标框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述目标框架为:所述目标平台部署的深度学习框架;
在待转化的算子为第二类算子的情况下,利用所述映射关系对该算子进行转化,其中,所述第二类算子为:支持利用所述映射关系进行转化的算子;
所述按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,实现对所述原始网络模型的转化,包括:
按照所述原始网络模型的数据处理流向,依次对所述原始网络模型的各个算子进行转化,其中,在待转化的算子为第一类算子的情况下,按照中间框架所支持的参数格式对该算子的参数列表中的参数进行转化,所述中间框架所支持的参数格式下的网络模型支持进行量化;
对转化后的原始网络模型进行量化;
将量化后的原始网络模型的模型格式转化为所述目标框架所支持的模型格式,实现对所述原始网络模型的转化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011622615.XA CN112819153B (zh) | 2020-12-31 | 2020-12-31 | 一种模型转化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011622615.XA CN112819153B (zh) | 2020-12-31 | 2020-12-31 | 一种模型转化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112819153A CN112819153A (zh) | 2021-05-18 |
CN112819153B true CN112819153B (zh) | 2023-02-07 |
Family
ID=75854588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011622615.XA Active CN112819153B (zh) | 2020-12-31 | 2020-12-31 | 一种模型转化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112819153B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113379070A (zh) * | 2021-08-13 | 2021-09-10 | 苏州浪潮智能科技有限公司 | 一种深度学习框架转换方法、系统、存储介质及设备 |
CN114942782A (zh) * | 2021-09-24 | 2022-08-26 | 华为技术有限公司 | 模型的代码迁移方法及装置 |
CN114201156B (zh) * | 2021-12-10 | 2022-08-05 | 北京百度网讯科技有限公司 | 接入方法、装置、电子设备及计算机存储介质 |
CN114168154B (zh) * | 2022-02-11 | 2022-05-17 | 腾讯科技(深圳)有限公司 | 模型数据处理方法、装置、电子设备及存储介质 |
CN114691148B (zh) * | 2022-04-11 | 2024-07-19 | 北京百度网讯科技有限公司 | 模型推理加速方法、装置、电子设备及存储介质 |
CN114611714B (zh) * | 2022-05-11 | 2022-09-02 | 成都数之联科技股份有限公司 | 模型处理方法、装置、系统、电子设备及存储介质 |
CN114896950B (zh) * | 2022-07-11 | 2022-10-28 | 浙江大华技术股份有限公司 | 模型转换方法以及模型转换设备、存储介质 |
CN115344886B (zh) * | 2022-07-22 | 2023-11-24 | 安徽深信科创信息技术有限公司 | 一种模型加密方法、模型解密方法及装置 |
CN115358400B (zh) * | 2022-08-24 | 2024-08-02 | 上海人工智能创新中心 | 深度学习模型接口的使用方法 |
CN115762515B (zh) * | 2022-11-08 | 2023-12-01 | 北京百度网讯科技有限公司 | 用于语音识别的神经网络的处理和应用方法、装置及设备 |
CN117372846A (zh) * | 2023-10-17 | 2024-01-09 | 湖南苏科智能科技有限公司 | 基于嵌入式平台的目标检测方法、平台、装置及设备 |
CN118051234B (zh) * | 2024-04-12 | 2024-07-26 | 北京壁仞科技开发有限公司 | 用于软硬件适配的方法、计算装置、介质和程序产品 |
CN118394349B (zh) * | 2024-06-28 | 2024-09-06 | 浪潮电子信息产业股份有限公司 | 一种三方库接入方法、装置、设备、程序产品及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002016639A (ja) * | 2000-06-29 | 2002-01-18 | Sony Corp | データ変換装置及び方法、データ送受信装置及び方法、ネットワークシステム |
US10354023B1 (en) * | 2014-12-10 | 2019-07-16 | The Boeing Company | Transformed finite element models for performing structural analysis |
CN110378413A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 神经网络模型处理方法、装置以及电子设备 |
CN111275199A (zh) * | 2020-01-17 | 2020-06-12 | 深圳壹账通智能科技有限公司 | 一种深度学习模型文件的转换方法、系统、计算机设备及计算机可读存储介质 |
CN111797969A (zh) * | 2020-06-23 | 2020-10-20 | 浙江大华技术股份有限公司 | 神经网络模型的转换方法及相关装置 |
CN111860817A (zh) * | 2020-07-10 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种网络模型部署方法、装置、设备及可读存储介质 |
CN111967568A (zh) * | 2020-06-29 | 2020-11-20 | 北京百度网讯科技有限公司 | 深度学习模型的适配方法、装置及电子设备 |
CN112035401A (zh) * | 2019-06-03 | 2020-12-04 | 北京京东尚科信息技术有限公司 | 模型数据处理方法、装置、电子设备及可读介质 |
-
2020
- 2020-12-31 CN CN202011622615.XA patent/CN112819153B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002016639A (ja) * | 2000-06-29 | 2002-01-18 | Sony Corp | データ変換装置及び方法、データ送受信装置及び方法、ネットワークシステム |
US10354023B1 (en) * | 2014-12-10 | 2019-07-16 | The Boeing Company | Transformed finite element models for performing structural analysis |
CN112035401A (zh) * | 2019-06-03 | 2020-12-04 | 北京京东尚科信息技术有限公司 | 模型数据处理方法、装置、电子设备及可读介质 |
CN110378413A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 神经网络模型处理方法、装置以及电子设备 |
CN111275199A (zh) * | 2020-01-17 | 2020-06-12 | 深圳壹账通智能科技有限公司 | 一种深度学习模型文件的转换方法、系统、计算机设备及计算机可读存储介质 |
CN111797969A (zh) * | 2020-06-23 | 2020-10-20 | 浙江大华技术股份有限公司 | 神经网络模型的转换方法及相关装置 |
CN111967568A (zh) * | 2020-06-29 | 2020-11-20 | 北京百度网讯科技有限公司 | 深度学习模型的适配方法、装置及电子设备 |
CN111860817A (zh) * | 2020-07-10 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种网络模型部署方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112819153A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112819153B (zh) | 一种模型转化方法及装置 | |
CN111708539B (zh) | 一种应用程序代码转换方法、装置、电子设备和存储介质 | |
CN110377716B (zh) | 对话的交互方法、装置及计算机可读存储介质 | |
CN109871532B (zh) | 文本主题提取方法、装置及存储介质 | |
WO2021217911A1 (zh) | 业务网站项目构建方法、装置、计算机设备和存储介质 | |
CN112199086B (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
CN110795913B (zh) | 一种文本编码方法、装置、存储介质及终端 | |
CN110941427B (zh) | 代码生成方法及代码生成器 | |
US20210182703A1 (en) | System and method for anti-pattern detection for computing applications | |
CN108304376B (zh) | 文本向量的确定方法、装置、存储介质及电子装置 | |
CN112416363A (zh) | 一种前后端crud代码的生成方法及装置 | |
CN112214210A (zh) | 后勤业务规则引擎及其配置方法、装置、设备和存储介质 | |
CN112712121A (zh) | 一种基于深度神经网络的图像识别模型训练方法、装置及存储介质 | |
CN114995729A (zh) | 一种语音绘图方法、装置及计算机设备 | |
CN113435182A (zh) | 自然语言处理中分类标注的冲突检测方法、装置和设备 | |
CN116594608A (zh) | 可视化神经网络模型生成和训练的方法及装置 | |
CN115422334A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
JP7309811B2 (ja) | データ注釈方法、装置、電子機器および記憶媒体 | |
CN116633804A (zh) | 网络流量检测模型的建模方法、防护方法及相关设备 | |
CN114626388A (zh) | 意图识别方法、装置、电子设备及存储介质 | |
CN114187388A (zh) | 动画制作方法、装置、设备及存储介质 | |
CN111475403A (zh) | 测试脚本的动态生成方法及相关装置 | |
CN114365151A (zh) | 神经网络模型转化方法、装置、服务器及存储介质 | |
CN113535594B (zh) | 业务场景测试用例的生成方法、装置、设备和存储介质 | |
CN115982358B (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 |