基于python实现的多模型融合并行推理方法、装置及系统制造方法及图纸

技术编号:28873300 阅读:19 留言:0更新日期:2021-06-15 23:06
本发明专利技术公开一种基于python实现的多模型融合并行推理方法,包括获取参与推理的多个异构模型,将多个异构模型按照预设规则转换成标准子模型;将每个子模型的结构和权重字典与总模型的每条分支相互对应,基于每个子模型的结构和权重字典将每个标准子模型融合成总模型;将总模型加载至GPU中,并对融合后的总模型进行推理验证;定义总模型的输出为每个子模型的输出组成的列表,通过列表索引将总模型的推理结果映射回子模型。推理效率高,相较于多进程、多线程并行推理方法,本发明专利技术只在一个进程中运行,没有进程间、线程间的调度问题,效率更高。节约存储资源,将多个子模型融合为一个总模型,相较于多进程方法,本发明专利技术只需一份输入数据,节约了存储资源。

【技术实现步骤摘要】
基于python实现的多模型融合并行推理方法、装置及系统
本专利技术涉及深度学习框架
,尤其涉及一种基于python实现的多模型融合并行推理方法、装置及系统。
技术介绍
多模型并行推理是深度学习领域的一项重要技术,通过充分利用GPU等硬件资源,尽可能提升模型的推理效率,缩短推理时间,在一些实时性要求高的应用场合十分必要。例如在自动驾驶领域,需要实时检测车道线,同时检测前方的车辆与行人。其中,车道线检测模型一般为图像分割网络,车辆与行人检测模型为目标检测网络,两者相对独立,但串行推理明显不适合。又如在互联网平台评论审核领域,若用户上传了图片,需同时识别图片本身内容和图片中的文字是否违反相关规定甚至违法。图片内容识别模型一般为图像分类或者目标检测网络,文字识别为OCR网络,两者相互独立,并行推理能加快审核速度。在现有技术中,常用的多模型并行推理有多进程方式,其优点是技术成熟,但涉及到多进程间的调度会产生额外的时间开销即就是消耗的时间会变长,同时每个子进程也都需要一份独立的输入数据,这样也消耗了存储资源。现有技术中,其实多线程方式也能进行并行推理,并且可以共享一份输入数据,但是python语言由于全局解释锁GIL机制,因此,多线程并非真正意义上的并发执行,也就是说,由于调度开销以及存储资源的缘故,基于python语言实现的多线程目前还没有很好的执行。
技术实现思路
本专利技术针对现有技术中的缺点,提供了一种基于python实现的多模型融合并行推理方法、系统及装置。为了解决上述技术问题,本专利技术通过下述技术方案得以解决:一种基于python实现的多模型融合并行推理方法,包括以下步骤:获取参与推理的多个异构模型,将多个异构模型按照预设规则转换成标准子模型;将每个子模型的结构和权重字典与总模型的每条分支相互对应,基于每个子模型的结构和权重字典将每个标准子模型融合成总模型;将总模型加载至GPU中,并对融合后的总模型进行推理验证;定义总模型的输出为每个子模型的输出组成的列表,通过列表索引将总模型的推理结果映射回子模型。作为一种可实施方式,在将总模型的推理结果映射回子模型步骤后,还包括以下步骤:对推理结束后的每个子模型采用多进程方法并行进行后处理。作为一种可实施方式,所述将每个标准子模型融合成总模型,具体过程为:获取每个子模块的模块单元,并对所述模块单元重命名,并使得每个模块单元的名称不重复;获取每个子模型的权重字典,并在权重字典前加子模型单元的名称将其作为前缀;定义总模型FusedModel类成员,其中,所述FusedModel类成员包括变量和forward函数,所述变量为每个子模型类的成员变量的合集,所述forward函数为将每个子模型中forward函数通过预设的逻辑进行合并;基于定义好的FusedModel类成员对总模型进行加载模型权重,将每个子模型的权重字典进行合并形成总模型的权重字典,并加载至总模型类实例化对象,进而得到融合后的总模型。一种基于python实现的多模型融合并行推理系统,包括获取模块、融合模块、推理模块和映射模块;所述获取模块,用于获取参与推理的多个异构模型,将多个异构模型按照预设规则转换成标准子模型;所述融合模块,用于将每个子模型的结构和权重字典与总模型的每条分支相互对应,基于每个子模型的结构和权重字典将每个标准子模型融合成总模型;所述推理模块,用于将总模型加载至GPU中,并对融合后的总模型进行推理验证;所述映射模块,用于定义总模型的输出为每个子模型的输出组成的列表,通过列表索引将总模型的推理结果映射回子模型。作为一种可实施方式,还包括后处理模块,所述后处理模块被设置为:对推理结束后的每个子模型采用多进程方法并行进行后处理。作为一种可实施方式,所述融合模块被设置为:获取每个子模块的模块单元,并对所述模块单元重命名,并使得每个模块单元的名称不重复;获取每个子模型的权重字典,并在权重字典前加子模型单元的名称将其作为前缀;定义总模型FusedModel类成员,其中,所述FusedModel类成员包括变量和forward函数,所述变量为每个子模型类的成员变量的合集,所述forward函数为将每个子模型中forward函数通过预设的逻辑进行合并;基于定义好的FusedModel类成员对总模型进行加载模型权重,将每个子模型的权重字典进行合并形成总模型的权重字典,并加载至总模型类实例化对象,进而得到融合后的总模型。一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下的方法步骤:获取参与推理的多个异构模型,将多个异构模型按照预设规则转换成标准子模型;将每个子模型的结构和权重字典与总模型的每条分支相互对应,基于每个子模型的结构和权重字典将每个标准子模型融合成总模型;将总模型加载至GPU中,并对融合后的总模型进行推理验证;定义总模型的输出为每个子模型的输出组成的列表,通过列表索引将总模型的推理结果映射回子模型。一种基于python实现的多模型融合并行推理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下的方法步骤:获取参与推理的多个异构模型,将多个异构模型按照预设规则转换成标准子模型;将每个子模型的结构和权重字典与总模型的每条分支相互对应,基于每个子模型的结构和权重字典将每个标准子模型融合成总模型;将总模型加载至GPU中,并对融合后的总模型进行推理验证;定义总模型的输出为每个子模型的输出组成的列表,通过列表索引将总模型的推理结果映射回子模型。本专利技术由于采用了以上技术方案,具有显著的技术效果:推理效率高,相较于多进程、多线程并行推理方法,本专利技术只在一个进程中运行,没有进程间、线程间的调度问题,效率更高。节约存储资源,由于将多个子模型融合为一个总模型,相较于多进程方法,本专利技术只需一份输入数据,节约了存储资源。实现简单,多模型并行推理亦可在cuda底层编码实现,但需要较强的cuda编程知识。本专利技术基于python命令实现,简单易行,即便是深度学习初学者也容易上手使用。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术方法的流程示意图;图2是本专利技术系统的整体示意图;图3是一具体实施例的流程示意图;图4是子模型融合成总模型的示意图。具体实施方式下面结合实施例对本专利技术做进一步的详细说明,以下实施例是对本专利技术的解释而本专利技术并不局限于本文档来自技高网...

【技术保护点】
1.一种基于python实现的多模型融合并行推理方法,其特征在于,包括以下步骤:/n获取参与推理的多个异构模型,将多个异构模型按照预设规则转换成标准子模型;/n将每个子模型的结构和权重字典与总模型的每条分支相互对应,基于每个子模型的结构和权重字典将每个标准子模型融合成总模型;/n将总模型加载至GPU中,并对融合后的总模型进行推理验证;/n定义总模型的输出为每个子模型的输出组成的列表,通过列表索引将总模型的推理结果映射回子模型。/n

【技术特征摘要】
1.一种基于python实现的多模型融合并行推理方法,其特征在于,包括以下步骤:
获取参与推理的多个异构模型,将多个异构模型按照预设规则转换成标准子模型;
将每个子模型的结构和权重字典与总模型的每条分支相互对应,基于每个子模型的结构和权重字典将每个标准子模型融合成总模型;
将总模型加载至GPU中,并对融合后的总模型进行推理验证;
定义总模型的输出为每个子模型的输出组成的列表,通过列表索引将总模型的推理结果映射回子模型。


2.根据权利要求1所述的基于python实现的多模型融合并行推理方法,其特征在于,在将总模型的推理结果映射回子模型步骤后,还包括以下步骤:
对推理结束后的每个子模型采用多进程方法并行进行后处理。


3.根据权利要求1所述的基于python实现的多模型融合并行推理方法,其特征在于,所述将每个标准子模型融合成总模型,具体过程为:
获取每个子模块的模块单元,并对所述模块单元重命名,并使得每个模块单元的名称不重复;
获取每个子模型的权重字典,并在权重字典前加子模型单元的名称将其作为前缀;
定义总模型FusedModel类成员,其中,所述FusedModel类成员包括变量和forward函数,所述变量为每个子模型类的成员变量的合集,所述forward函数为将每个子模型中forward函数通过预设的逻辑进行合并;
基于定义好的FusedModel类成员对总模型进行加载模型权重,将每个子模型的权重字典进行合并形成总模型的权重字典,并加载至总模型类实例化对象,进而得到融合后的总模型。


4.一种基于python实现的多模型融合并行推理系统,其特征在于,包括获取模块、融合模块、推理模块和映射模块;
所述获取模块,用于获取参与推理的多个异构模型,将多个异构模型按照预设规则转换成标准子模型;
所述融合...

【专利技术属性】
技术研发人员:王璐威吴彰鹏
申请(专利权)人:杭州欣禾圣世科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1