CN113570061A - 一种多模型融合推理方法 - Google Patents
一种多模型融合推理方法 Download PDFInfo
- Publication number
- CN113570061A CN113570061A CN202110995646.8A CN202110995646A CN113570061A CN 113570061 A CN113570061 A CN 113570061A CN 202110995646 A CN202110995646 A CN 202110995646A CN 113570061 A CN113570061 A CN 113570061A
- Authority
- CN
- China
- Prior art keywords
- model
- reasoning
- standard
- submodel
- total
- 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.)
- Pending
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种多模型融合推理方法,包括1.模型转换,将多个异构模型转换成标准子模型;2.合成总模型,将标准子模型合成为总模型;3.并行推理,将合成后的总模型加载至GPU,通过CUDA进行推理;4.映射,总模型的推理结果映射回子模型;5.后处理操作,通过多进程技术对推理结束的标准子模型进行后处理操作。本发明只在一个进程中运行,没有进程间、线程间的调度问题,相较于多进程、多线程并行推理方法,推理效率更高;本发明将多个子模型融合为一个总模型,只需一份输入数据,相较于多进程方法,节约了存储资源;本发明基于python命令实现,在实际使用中c、c++、c#等具有计算机视频分析和调用CUDA计算能力的语言均可以实现本方法。
Description
技术领域
本发明涉及一种多模型融合推理方法,属于深度学习框架技术领域。
背景技术
多模型并行推理是深度学习领域的一项重要技术,通过充分利用GPU等硬件资源,尽可能提升模型的推理效率,缩短推理时间,在一些实时性要求高的应用场合十分必要。例如在自动驾驶领域,需要实时检测车道线,同时检测前方的车辆与行人。其中,车道线检测模型一般为图像分割网络,车辆与行人检测模型为目标检测网络,两者相对独立,但串行推理明显不适合。又如在互联网平台评论审核领域,若用户上传了图片,需同时识别图片本身内容和图片中的文字是否违反相关规定甚至违法。图片内容识别模型一般为图像分类或者目标检测网络,文字识别为OCR网络,两者相互独立,并行推理能加快审核速度。
常用的多模型并行推理有多进程方法。其优点是技术成熟,但涉及到多进程间的调度会产生额外的时间开销,此外每个子进程都需要一份独立的输入数据,也消耗了存储资源。多线程方法也能进行并行推理,且可以共享一份输入数据。
本发明着重研究了一种异构多模型并行推理框架。相较于多进程技术,没有调度开销且节约储存资源。
发明内容
为了解决上述技术问题,本发明提供一种多模型融合推理方法,其具体技术方案如下:
一种多模型融合推理方法,包括以下步骤:
步骤1:模型转换,将多个异构模型转换成标准子模型;
步骤2:合成总模型,将标准子模型合成为总模型,总模型设置有多条分支,其分支分别拷贝各子模型的结构和权重,使得总模型的每个分支分别对应一个标准子模型;
步骤3:并行推理,将合成后的总模型加载至GPU,通过CUDA进行推理;
步骤4:映射,总模型的推理结果映射回子模型,使总模型输出为各子模型输出组成的列表,通过列表索引将总模型的推理结果映射回子模型的推理结果;
步骤5:后处理操作,通过多进程技术对推理结束的标准子模型进行后处理操作。
进一步的,所述步骤1中异构模型包括pytorch模型和tensorflow模型,所述多个异构模型统一转换成ONNX模型或TensorRT模型。
进一步的,所述步骤2中以pytorch模型为标准子模型,将其合成为总模型的步骤为:
(1)获取每个标准子模型的模块单元,即标准子模型类中的成员变量;
(2)重命名模块单元,在模块单元的原名称前加标准子模型的名称作为前缀;
(3)获取标注子模型的权重字典,并在key前加标准子模型名称作为前缀;
(4)定义融合后的总模型Fused Model类,Fused Model类成员变量为各标准子模型类的成员变量的合集,pytorch模型中的forward函数为各子模型forward函数的逻辑合并;
(5)将标准子模型的权重字典合并成总模型的权重字典,并加载至总模型类实例化对象。
进一步的,所述步骤3中当GPU卡设置有多块时,则合成后的总模型进行多卡并行推理。
本发明的有益效果:
1)本发明只在一个进程中运行,没有进程间、线程间的调度问题,相较于多进程、多线程并行推理方法,推理效率更高;
2)本发明将多个子模型融合为一个总模型,只需一份输入数据,相较于多进程方法,节约了存储资源。
附图说明
图1是本发明的流程示意图,
图2是本发明的总模型生成示意图。
具体实施方式
现在结合附图对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
如图1所示,本发明的一种多模型融合推理方法。首先,模型转换,将多个异构模型转换成标准子模型。其次,合成总模型,将标准子模型合成为总模型,总模型设置有多条分支,其分支分别拷贝各子模型的结构和权重,使得总模型的每个分支分别对应一个标准子模型。然后,进行并行推理,将合成后的总模型加载至GPU,通过CUDA进行推理。紧接着,总模型的推理结果映射回子模型,使总模型输出为各子模型输出组成的列表,通过列表索引将总模型的推理结果映射回子模型的推理结果。最后,进行后处理操作,通过多进程技术对推理结束的标准子模型进行后处理操作。
本发明提出的多模型融合推理方法,提出了一种异构多模型并行推理框。推理框架的输入可为深度学习领域中的任一类型输入数据,如图片、视频流、文本等,输出为各子模型的输出合集。具体流程如图1所示,具体实施方式如下:
a)将多个异构模型转换成标准子模型。由于不同任务的模型可能是在不同的深度学习框架生成的,如目标检测是pytorch模型,OCR识别是tensorflow模型,在融合为一个总模型前各子模型需要转换成统一的标准模型。Open Neural Network Exchange(ONNX,开放神经网络交换)格式,是一个用于表示深度学习模型的标准,使模型在不同框架之间进行转移。此外,Nvidia公司推出的TensorRT工具支持各主流框架上训练的模型部署,且能极大的提高模型推断的速度,同时占用的设备内存也会更加的少。因此,将各模型统一转换成ONNX模型或TensorRT模型。需要说明的是,转换成ONNX模型或TensorRT模型并非绝对,也可以转换成某一深度学习框架下的模型。例如,待推理模型中4个是pytorch模型,1个是tensorflow模型,此时将tensorflow模型转换成pytorch模型将显著减少工作量。
b)将标准子模型融合成一个总模型。生成一个新的总模型,其分支分别拷贝各子模型的结构和权重,即每条分支对应一个子模型。假设总模型由N+1个子模型融合而成,如图2所示。由于不同格式的总模型具体生成方式不尽相同,这里仅以pytorch模型为例,详细说明其生成过程。(1)获取每个子模型的模块单元,也即子模型类中的成员变量。例如,假设submodel_0为图像分类模型VGG,则其由features、avgpool_vgg和classifier 3个大的模块单元组成。(2)对模块单元重命名,在原名称前加子模型名称作为前缀。例如,对步骤(1)中的VGG模型,各模块重命名为vgg_features、vgg_avgpool、vgg_classifier。由于融合生成总模型时,各个子模型中有的模块可能会重名,因此通过重命名解决名称冲突问题。(3)获取子模型的权重字典,并在key前加子模型名称作为前缀。例如:
temp_state_dict = torch.load('vgg.pth')
vgg_state_dict = {}
for k, v in temp_state_dict.items():
vgg_state_dict['vgg' + k] = v
(4)定义融合后的总模型FusedModel类。其类成员变量为各子模型类的成员变量的合集,forward函数为各子模型forward函数的逻辑合并。(5)加载模型权重。将子模型的权重字典合并成总模型的权重字典,并加载至总模型类实例化对象。例如:
fusedmodel_state_dict = {}
fusedmodel = FusedModel(*args, **kwargs)
for iinrange(N+1):
fusedmodel_state_dict.update(submodel_str(i)_state_dict)
fusedmodel.load_state_dict(fusedmodel_state_dict) 。
c)对融合后的总模型进行推理。将融合后的总模型加载至GPU,利用CUDA进行推理。如果有多块GPU卡,也可进行多卡并行推理。
d)将总模型的推理结果映射回子模型。定义的总模型输出为各子模型输出组成的列表,因此可通过列表索引将总模型的推理结果映射回子模型的推理结果,即
output_i= submodel_i(input) = output[i] 。
e)多进程并行后处理。有些子模型推理结束后还需要进行后处理操作,如目标检测FasterRCNN模型需要对输出的检测框进行非极大值抑制(Non-Maximum Suppression,NMS)。这里采用多进程技术进行并行后处理操作,如果运行在GPU上,可利用英伟达公司提供的多进程服务(Multi-process Service,MPS)进一步加速。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
Claims (4)
1.一种多模型融合推理方法,其特征在于:包括以下步骤:
步骤1:模型转换,将多个异构模型转换成标准子模型;
步骤2:合成总模型,将标准子模型合成为总模型,总模型设置有多条分支,其分支分别拷贝各子模型的结构和权重,使得总模型的每个分支分别对应一个标准子模型;
步骤3:并行推理,将合成后的总模型加载至GPU,通过CUDA进行推理;
步骤4:映射,总模型的推理结果映射回子模型,使总模型输出为各子模型输出组成的列表,通过列表索引将总模型的推理结果映射回子模型的推理结果;
步骤5:后处理操作,通过多进程技术对推理结束的标准子模型进行后处理操作。
2.根据权利要求1所述的多模型融合推理方法,其特征在于:所述步骤1中异构模型包括pytorch模型和tensorflow模型,所述多个异构模型统一转换成ONNX模型或TensorRT模型。
3.根据权利要求1所述的多模型融合推理方法,其特征在于:所述步骤2中以pytorch模型为标准子模型,将其合成为总模型的步骤为:
(1)获取每个标准子模型的模块单元,即标准子模型类中的成员变量;
(2)重命名模块单元,在模块单元的原名称前加标准子模型的名称作为前缀;
(3)获取标注子模型的权重字典,并在key前加标准子模型名称作为前缀;
(4)定义融合后的总模型Fused Model类,Fused Model类成员变量为各标准子模型类的成员变量的合集,pytorch模型中的forward函数为各子模型forward函数的逻辑合并;
(5)将标准子模型的权重字典合并成总模型的权重字典,并加载至总模型类实例化对象。
4.根据权利要求1所述的多模型融合推理方法,其特征在于:所述步骤3中当GPU卡设置有多块时,则合成后的总模型进行多卡并行推理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110995646.8A CN113570061A (zh) | 2021-08-27 | 2021-08-27 | 一种多模型融合推理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110995646.8A CN113570061A (zh) | 2021-08-27 | 2021-08-27 | 一种多模型融合推理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113570061A true CN113570061A (zh) | 2021-10-29 |
Family
ID=78173035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110995646.8A Pending CN113570061A (zh) | 2021-08-27 | 2021-08-27 | 一种多模型融合推理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113570061A (zh) |
-
2021
- 2021-08-27 CN CN202110995646.8A patent/CN113570061A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111738251B (zh) | 一种融合语言模型的光学字符识别方法、装置和电子设备 | |
CN112199477B (zh) | 对话管理方案和对话管理语料的构建方法 | |
EP3876163A2 (en) | Model training, image processing method, device, storage medium, and program product | |
CN111832293A (zh) | 基于头实体预测的实体和关系联合抽取方法 | |
CN115311130A (zh) | 一种多风格中国书法文字图像风格迁移方法、系统及终端 | |
CN115222950A (zh) | 一种面向嵌入式平台的轻量化目标检测方法 | |
CN112966644A (zh) | 用于手势检测和手势识别的多模态多任务模型及其训练方法 | |
CN117313728A (zh) | 实体识别方法、模型训练方法、装置、设备和存储介质 | |
CN115953788A (zh) | 基于ocr和nlp技术的绿色金融属性智能认定方法及系统 | |
CN114218380B (zh) | 基于多模态的冷链配载用户画像标签抽取方法及装置 | |
CN116644168A (zh) | 一种交互数据构建方法、装置、设备及存储介质 | |
CN109919218A (zh) | 混合连接的多任务fcn模型系统 | |
CN112527272B (zh) | 对接tvm的方法及相关设备 | |
CN116821307B (zh) | 内容交互方法、装置、电子设备和存储介质 | |
CN110991279B (zh) | 文档图像分析与识别方法及系统 | |
CN113570061A (zh) | 一种多模型融合推理方法 | |
Bickel et al. | Detection and classification of symbols in principle sketches using deep learning | |
CN117036706A (zh) | 一种基于多模态对话语言模型的图像分割方法和系统 | |
CN116311455A (zh) | 一种基于改进Mobile-former的表情识别方法 | |
CN111242216A (zh) | 基于条件生成对抗卷积神经网络的图像生成方法 | |
CN112966825B (zh) | 基于python实现的多模型融合并行推理方法、装置及系统 | |
CN114722142A (zh) | 一种基于多任务学习的方面情感分析模型 | |
CN114723398A (zh) | 舞台创意编排方法、舞台创意编排装置和电子设备 | |
CN115269767A (zh) | 模型训练方法、装置和存储介质 | |
Cheddi et al. | Regenerating a graphical user interface using deep learning |
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 |