一种深度学习框架转换方法、系统、存储介质及设备与流程

文档序号:26588753发布日期:2021-09-10 20:11阅读:79来源:国知局
一种深度学习框架转换方法、系统、存储介质及设备与流程

1.本发明涉及人工智能技术领域,尤其涉及一种深度学习框架转换方法、系统、存储介质及设备。


背景技术:

2.深度学习技术是目前ai(人工智能)应用在各行各业落地实践的主要算法。该技术包含一系列模型算法,比如cnn架构模型(resnet、densenet)、transformer架构模型(bert、gpt)等。在解决实际应用场景中的问题时,如判断图像中物体所属类别、语音转文本、文本的情感倾向等,需要经过训练、推理部署两个步骤。当前的一种很自然的流程是在某个深度学习框架上训练模型达到可用精度,然后使用该引擎框架进行推理;比如使用tensorflow、pytorch等的深度学习框架训练分类模型,然后依然用对应框架加载训练好的分类模型,接收新的数据进行推理。
3.上述的训练、推理流程在资源充足、并发需求量小的情况下,可以满足生产实际的要求;而且使用原生的框架不会存在算子不支持的情况。但是,落地生产实际中,一个很重要的问题就是资源的有效利用、高效利用以及用户体验;因此追求推理时延更低、推理吞吐更大是业界十分关注的问题。目前,广泛采用的一种推理加速方法是使用与硬件匹配的高效的推理引擎进行推理,通过对模型进行量化、计算图优化等,提高模型的吞吐、降低推理延迟。推理加速引擎tensorrt可以将一些训练得到的模型进行算子比对和转换,但是在模型转换过程中,有一些复杂模型无法直接转化到推理引擎支持的模型状态。其中,复杂模型是指模型结构中包含推理引擎不支持的算子。
4.针对上述复杂模型的优化,目前常用的技术方案为:基于tensorrt编写插件以将不支持的算子实现,该方案是指利用tensorrt的api和cuda的并行加速能力定制化实现不支持的算子,称为tensorrt的plugin过程,该方案可以在算子不支持的情况下完成整个模型的转换及优化。但是,复杂模型转化时会出现如下问题:1、效率,要基于cuda

x实现后端其效率无法保障,且如果不支持算子较多,tensorrt的plugin实现过程及投入成本高,风险大;2、可移植性,不同gpu型号之间可能因为gpu计算架构的差异,带来插件算子的不匹配问题;3、复杂性,实现一个手写插件需要大量的代码调试和编写,如果模型本身较复杂,不支持的算子较多,其带来的工作量和成本不可控。


技术实现要素:

5.有鉴于此,本发明的目的在于提出一种深度学习框架转换方法、系统、存储介质及设备,用以解决现有技术的在推理引擎中对深度学习模型使用的深度学习框架进行转换时不方便的问题。
6.基于上述目的,在本发明的一个方面,提出了一种深度学习框架转换方法,包括以下步骤:响应于在推理引擎中将深度学习模型使用的深度学习框架从原生框架向目标框架转换,基于所述转换过程得到所述原生框架中的深度学习模型的不支持转换的算子;通过
在所述推理引擎中运行所述原生框架中的深度学习模型得到所述不支持转换的算子的输入数据的输入尺寸和输出数据的输出尺寸,并根据预设规则比较所述输入数据的输入尺寸和所述输出数据的输出尺寸,获得所述不支持转换的算子的算法逻辑;对待替换所述不支持转换的算子的插件进行相关函数的填充,其中,所述相关函数包括所述预设规则以及用于执行所述算法逻辑的核心函数;通过填充了所述相关函数的插件基于所述输入数据得到新的输出尺寸,响应于所述新的输出尺寸与所述输出尺寸相同,以所述填充了所述相关函数的插件替换所述不支持转换的算子,进行所述推理引擎从所述原生框架到所述目标框架的转换。
7.在一些实施例中,通过在所述推理引擎中运行所述原生框架中的深度学习模型得到所述不支持转换的算子的输入数据的输入尺寸和输出数据的输出尺寸包括:通过所述原生框架中的深度学习模型接收输入的样本数据,并将所述样本数据经由所述深度学习模型中的若干级算子进行计算得到所述不支持转换的算子的前一级算子的输出值,且将所述前一级算子的输出值作为所述不支持转换的算子的输入数据;通过所述不支持转换的算子对所述输入数据进行计算得到所述输出数据;基于所述输入数据得到所述输入尺寸,并基于所述输出数据得到所述输出尺寸。
8.在一些实施例中,所述根据预设规则比较所述输入数据的输入尺寸和所述输出数据的输出尺寸,获得所述不支持转换的算子的算法逻辑包括:响应于所述输入尺寸等于所述输出尺寸,获得所述不支持转换的算子的算法逻辑为赋值计算;响应于所述输入尺寸大于所述输出尺寸,获得所述不支持转换的算子的算法逻辑为缩量计算;响应于所述输入尺寸小于所述输出尺寸,获得所述不支持转换的算子的算法逻辑为增量计算。
9.在一些实施例中,所述一种深度学习框架转换方法还包括:在向待替换所述不支持转换的算子的插件填充所述相关函数之前,获取用于执行所述赋值计算、所述缩量计算或所述增量计算的核心函数。
10.在一些实施例中,响应于在推理引擎中将深度学习模型使用的深度学习框架从原生框架向目标框架转换,基于所述转换过程得到所述原生框架中的深度学习模型的不支持转换的算子包括:响应于通过转换工具在推理引擎中将深度学习模型使用的深度学习框架从原生框架向目标框架转换,在所述转换过程中通过所述转换工具记录转换日志,并基于所述转换日志得到所述原生框架中的深度学习模型的不支持转换的算子。
11.在一些实施例中,所述一种深度学习框架转换方法还包括:通过使用所述原生框架的第一推理引擎和由所述原生框架转换的目标框架的第二推理引擎分别接收输入的测试样本数据,并基于所述测试样本数据分别得到第一推理结果和第二推理结果;对所述第一推理结果和第二推理结果进行比较,并基于比较结果验证所述第一推理引擎和第二推理引擎的推理能力。
12.在一些实施例中,通过使用所述原生框架的第一推理引擎和由所述原生框架转换的目标框架的第二推理引擎分别接收输入的测试样本数据,并基于所述测试样本数据分别得到第一推理结果和第二推理结果包括:通过所述第一推理引擎和第二推理引擎分别接收输入的多个样本,并基于所述多个样本分别得到第一吞吐量和第二吞吐量;通过所述第一推理引擎和第二推理引擎分别接收输入的单个样本,并基于所述单个样本分别得到第一推理时延和第二推理时延;基于所述第一吞吐量和第一推理时延得到所述第一推理结果,并
基于所述第二吞吐量和第二推理时延得到所述第二推理结果。
13.在本发明的另一个方面,还提出了一种深度学习框架转换系统,包括:算子获得模块,配置用于响应于在推理引擎中将深度学习模型使用的深度学习框架从原生框架向目标框架转换,基于所述转换过程得到所述原生框架中的深度学习模型的不支持转换的算子;数据尺寸获得模块,配置用于通过在所述推理引擎中运行所述原生框架中的深度学习模型得到所述不支持转换的算子的输入数据的输入尺寸和输出数据的输出尺寸,并根据预设规则比较所述输入数据的输入尺寸和所述输出数据的输出尺寸,获得所述不支持转换的算子的算法逻辑;函数填充模块,配置用于对待替换所述不支持转换的算子的插件进行相关函数的填充,其中,所述相关函数包括所述预设规则以及用于执行所述算法逻辑的核心函数;以及框架转换模块,配置用于通过填充了所述相关函数的插件基于所述输入数据得到新的输出尺寸,响应于所述新的输出尺寸与所述输出尺寸相同,以所述填充了所述相关函数的插件替换所述不支持转换的算子,进行所述推理引擎从所述原生框架到所述目标框架的转换。
14.在本发明的另一个方面,还提出了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被执行时实现如上述任意一个实施例所述的方法。
15.在本发明的另一个方面,还提出了一种计算机设备,包括存储器和处理器,其中,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如上述任意一个实施例所述的方法。
16.本发明至少具有以下有益技术效果:本发明基于推理引擎可以实现在不考虑整个模型结构计算精度的情况下对深度学习框架的快速转换;由于目前推理设备的模型结构及算子逐渐复杂化、多样化,本发明可以快速解决框架转换时有算子不支持的问题,将深度学习框架移植到推理引擎进行推演而得到推理结果,尽快评估模型在推理引擎中的加速比及计算效率,为模型优化的评估及后期研发投入提供依据,为后期技术方案的落地使用提供参考。
附图说明
17.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
18.图1为根据本发明实施例提供的深度学习框架转换方法的示意图;图2为根据本发明实施例提供的深度学习框架转换系统的示意图;图3为根据本发明实施例提供的实现深度学习框架转换方法的计算机可读存储介质的示意图;图4为根据本发明实施例提供的执行深度学习框架转换方法的计算机设备的硬件结构示意图。
具体实施方式
19.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照
附图,对本发明实施例进一步详细说明。
20.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
21.基于上述目的,本发明实施例的第一个方面,提出了一种深度学习框架转换方法的实施例。图1示出的是本发明提供的深度学习框架转换方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:步骤s10、响应于在推理引擎中将深度学习模型使用的深度学习框架从原生框架向目标框架转换,基于转换过程得到原生框架中的深度学习模型的不支持转换的算子;步骤s20、通过在推理引擎中运行原生框架中的深度学习模型得到该不支持转换的算子的输入数据的输入尺寸和输出数据的输出尺寸,并根据预设规则比较输入数据的输入尺寸和输出数据的输出尺寸,获得不支持转换的算子的算法逻辑;步骤s30、对待替换该不支持转换的算子的插件进行相关函数的填充,其中,相关函数包括预设规则以及用于执行算法逻辑的核心函数;步骤s40、通过填充了相关函数的插件基于输入数据得到新的输出尺寸,响应于新的输出尺寸与所述输出尺寸相同,以填充了相关函数的插件替换不支持转换的算子,进行推理引擎从原生框架到目标框架的转换。
22.本发明实施例中的推理引擎包括但不限于tensorrt,tensorrt是基于gpu做推理的高效的模型转化和运行时工具,可以将一些训练得到的模型进行算子比对和转换。tensorrt是针对于gpu设备的优先选择的推理优化引擎,如果在其它架构下可以使用其它推理优化引擎。例如,在arm架构下,可以使用tvm、onnxruntime等推理引擎。
23.本实施例中,插件具有相对固定的函数填充形式,具体地,对插件进行相关函数的填充包括:(1)构造函数的自动填充,在定义构造函数时需要传入层的名称(即插件要替换的算子的名称);其余需要的相关参数皆在类的私有成员变量中定义,这样避免了构造插件时的变量依赖和内存泄露问题;(2)输入输出相关函数的填充,根据算子的输入形状和输出形状,对输出个数统计函数、每个输出节点的形状统计函数、支持的数据类型统计函数进行填充。
24.本发明实施例基于推理引擎可以实现在不考虑整个模型结构计算精度的情况下对深度学习框架的快速转换;由于目前推理设备的模型结构及算子逐渐复杂化、多样化,本发明实施例可以快速解决框架转换时有算子不支持的问题,将深度学习框架移植到推理引擎进行推演而得到推理结果,尽快评估模型在推理引擎中的加速比及计算效率,为模型优化的评估及后期研发投入提供依据,为后期技术方案的落地使用提供参考。
25.在一些实施例中,通过在推理引擎中运行原生框架中的深度学习模型得到该不支持转换的算子的输入数据的输入尺寸和输出数据的输出尺寸包括:通过原生框架中的深度学习模型接收输入的样本数据,并将样本数据经由深度学习模型中的若干级算子进行计算得到该不支持转换的算子的前一级算子的输出值,且将前一级算子的输出值作为该不支持转换的算子的输入数据;通过该不支持转换的算子对输入数据进行计算得到输出数据;基
于输入数据得到输入尺寸,并基于输出数据得到输出尺寸。
26.本实施例中,输入尺寸和输出尺寸是指数据的维度,矩阵、张量等都有维度;例如,三维度的矩阵有3*3=9个数。深度学习模型(例如cnn模型)具有多级算子,前一级算子的输出会作为其下一级算子的输入。
27.在一些实施例中,根据预设规则比较输入数据的输入尺寸和输出数据的输出尺寸,获得不支持转换的算子的算法逻辑包括:响应于输入尺寸等于输出尺寸,获得不支持转换的算子的算法逻辑为赋值计算;响应于输入尺寸大于输出尺寸,获得不支持转换的算子的算法逻辑为缩量计算;响应于输入尺寸小于输出尺寸,获得不支持转换的算子的算法逻辑为增量计算。
28.在一些实施例中,响应于输入尺寸小于输出尺寸,对输入数据进行增量计算得到输出结果包括:响应于输入尺寸小于输出尺寸,生成随机矩阵,并将随机矩阵和输入数据进行乘法运算得到输出结果。
29.上述实施例中,有三种预设的计算规则,三种计算规则均基于cuda(cuda为用于并行编程的基于gpu设备的计算库)底层实现可以跨gpu(图形处理器)架构稳定运行:a) 赋值型计算,此种操作对应input_size=output_size,仅需将输入的对应位置赋值到输出的对应位置;b) 缩量计算,此种操作对应input_size>output_size,将输入在对应位置做相加、相减、比较大小的操作,然后赋值到输出的对应位置。
30.c) 增量计算,此种操作得到input_size<output_size,并生成随机的矩阵m,将输入与m做矩阵乘运算,然后得到输出结果。
31.在一些实施例中,本发明的方法还包括在向待替换所述不支持转换的算子的插件填充所述相关函数之前,获取用于执行所述赋值计算、所述缩量计算或所述增量计算的核心函数。
32.在一些实施例中,响应于在推理引擎中将深度学习模型使用的深度学习框架从原生框架向目标框架转换,基于转换过程得到原生框架中的深度学习模型的不支持转换的算子包括:响应于通过转换工具在推理引擎中将深度学习模型使用的深度学习框架从原生框架向目标框架转换,在转换过程中通过转换工具记录转换日志,并基于转换日志得到原生框架中的深度学习模型的不支持转换的算子。
33.本实施例中,除了可以使用类似trtexec/tftrt等转换工具外,还可以将推理引擎(例如tensorrt)对应支持的深度学习模型(caffe、onnx、uff)算子进行穷举形成算子支持文档,解析对应框架下的复杂模型所包含的算子,并与算子支持文档中的列表进行比对,将不支持的算子进行筛选、记录。onnx(开放神经网络交换格式)是一个用于表示深度学习模型的标准。
34.在一些实施例中,方法还包括:通过使用原生框架的第一推理引擎和由原生框架转换的目标框架的第二推理引擎分别接收输入的测试样本数据,并基于测试样本数据分别得到第一推理结果和第二推理结果;对第一推理结果和第二推理结果进行比较,并基于比较结果验证第一推理引擎和第二推理引擎的推理能力。
35.在一些实施例中,通过使用原生框架的第一推理引擎和由原生框架转换的目标框架的第二推理引擎分别接收输入的测试样本数据,并基于测试样本数据分别得到第一推理
结果和第二推理结果包括:通过第一推理引擎和第二推理引擎分别接收输入的多个样本,并基于多个样本分别得到第一吞吐量和第二吞吐量;通过第一推理引擎和第二推理引擎分别接收输入的单个样本,并基于单个样本分别得到第一推理时延和第二推理时延;基于第一吞吐量和第一推理时延得到第一推理结果,并基于第二吞吐量和第二推理时延得到第二推理结果。
36.上述实施例中,对第一推理引擎和第二推理引擎进行了效率评估比对。为得到最大吞吐量,可以通过逐渐增大batchsize(一次训练所选取的样本数)直到每秒处理的样本数呈现不一致的单调性停止,取出极值作为最大吞吐量;为得到推理时延,将单个样本输入得出推理时延,然后取倒数;再将这两个值求算术平均值,比较第一推理引擎计算得到的算数平均值和第二推理引擎计算得到的算数平均值。本实施例保持了在gpu设备进行多线程并行化计算,不产生数据通信等额外时延,与tensorrt引擎的运行机制保持一致。本实施例的效率评估比对方法通过计算吞吐量和推理时延,综合性地评估了框架转换前后推理引擎的推理效率。
37.本发明实施例的第二个方面,还提供了一种深度学习框架转换系统。图2示出的是本发明提供的深度学习框架转换系统的实施例的示意图。如图2所示,一种深度学习框架转换系统包括:算子获得模块,配置用于响应于在推理引擎中将深度学习模型使用的深度学习框架从原生框架向目标框架转换,基于转换过程得到原生框架中的深度学习模型的不支持转换的算子;数据尺寸获得模块,配置用于通过在所述推理引擎中运行原生框架中的深度学习模型得到该不支持转换的算子的输入数据的输入尺寸和输出数据的输出尺寸,并根据预设规则比较所述输入数据的输入尺寸和所述输出数据的输出尺寸,获得所述不支持转换的算子的算法逻辑;函数填充模块,配置用于对待替换该不支持转换的算子的插件进行相关函数的填充,其中,所述相关函数包括所述预设规则以及用于执行所述算法逻辑的核心函数;以及框架转换模块,配置用于通过填充了相关函数的插件基于输入数据得到新的输出尺寸,响应于所述新的输出尺寸与所述输出尺寸相同,以所述填充了所述相关函数的插件替换所述不支持转换的算子,进行推理引擎从原生框架到目标框架的转换。
38.本发明实施例的第三个方面,还提供了一种计算机可读存储介质,图3示出了根据本发明实施例提供的实现深度学习框架转换方法的计算机可读存储介质的示意图。如图3所示,计算机可读存储介质3存储有计算机程序指令31,该计算机程序指令31可以被处理器执行。该计算机程序指令31被执行时实现上述任意一项实施例的方法。
39.应当理解,在相互不冲突的情况下,以上针对根据本发明的深度学习框架转换方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的深度学习框架转换系统和存储介质。
40.本发明实施例的第四个方面,还提供了一种计算机设备,包括存储器402和处理器401,该存储器中存储有计算机程序,该计算机程序被该处理器执行时实现上述任意一项实施例的方法。
41.如图4所示,为本发明提供的执行深度学习框架转换方法的计算机设备的一个实施例的硬件结构示意图。以如图4所示的计算机设备为例,在该计算机设备中包括一个处理器401以及一个存储器402,并还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图4中以通过总线连接
为例。输入装置403可接收输入的数字或字符信息,以及产生与深度学习框架转换系统的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示设备。
42.存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本技术实施例中的深度学习框架转换方法对应的程序指令/模块。存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储深度学习框架转换方法的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
43.处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的深度学习框架转换方法。
44.最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)或快闪存储器。易失性存储器可以包括随机存取存储器(ram),该ram可以充当外部高速缓存存储器。作为例子而非限制性的,ram 可以以多种形式获得,比如同步ram(dram)、动态ram(dram)、同步dram(sdram)、双数据速率sdram(ddr sdram)、增强sdram(esdram)、同步链路dram(sldram)、以及直接rambus ram(drram)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
45.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
46.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
47.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
48.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发
明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1