onnx实现对pytorch模型推理加速
向AI转型的程序员都关注了这个号????????????
人工智能大数据与深度学习 公众号:datayx
微软宣布将多平台通用ONNX机器学习引擎开源,此举将让机器学习框架,向着机器学习框架的标准化和性能优化方向迈进了一大步。
ONNX Runtime是适用于Linux,Windows和Mac上ONNX格式的机器学习模型的高性能推理引擎。
开发人员可以为自己机器学习任务选择合适的框架,框架作者可以集中精力推出创新,提高框架的性能。对于硬件供应商来说,也可以简化神经网络计算的复杂度,实现优化算法。
onnxruntime模型部署流程
1.安装
pip install onnxpip install onnxruntime( pip install onnxruntime-gpu #GPU环境)
2. Pytorch 模型转onnx
当提到保存和加载模型时,有三个核心功能需要熟悉:
1.torch.save:将序列化的对象保存到disk。这个函数使用Python的pickle
实用程序进行序列化。使用这个函数可以保存各种对象的模型、张量和字典。
2.torch.load:使用pickle unpickle工具将pickle的对象文件反序列化为
内存。
3.torch.nn.Module.load_state_dict:使用反序列化状态字典加载
model's参数字典
保存加载模型2种方式,在保存模型进行推理时,只需要保存训练过的模型的学习参数即可,一个常见的PyTorch约定是使用.pt或.pth文件扩展名保存模型。
# 第一种:保存和加载整个模型
Save:
torch.save(model_object, 'model.pth')
Load:
model = torch.load('model.pth')
model.eval()
#第二种:仅保存和加载模型参数(推荐使用)
Save:
torch.save(model.state_dict(), 'params.pth')
Load:
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load('params.pth'))
model.eval()
#记住,必须调用model.eval(),
以便在运行推断之前将dropout和batch规范化层设置为评估模式。如果不这样做,
将会产生不一致的推断结果
#在保存用于推理或恢复训练的通用检查点时,必须保存模型的state_dict
Pytorch模型转onnx
举例模型是调用resnet50训练的4分类模型,训练过程调用gpu,则转换过程如下:
1 如果保存的是整个模型
import torch
device = torch.device("cuda" if torch.cuda.is_available()else "cpu")model = torch.load("test.pth") # pytorch模型加载
batch_size = 1 #批处理大小
input_shape = (3, 244, 384) #输入数据,改成自己的输入shape
model.eval()x = torch.randn(batch_size, *input_shape)
x = x.to(device)
export_onnx_file = "test.onnx" #输出的ONNX文件名
torch.onnx.export(modelx,export_onnx_file,opset_version=11,do_constant_folding=True, input_names=["input"], output_names=["output"], dynamic_axes={
"input":{0: 'batch',2:'batch',3:'batch'},"output":{0: 'batch',2:'batch',3:'batch'})
2 如果保存的是模型参数,则需要先创建模型,再加载模型参数
import torch
from models import resnet50
model = resnet50() #创建模型
weight = torch.load("test.pth")
model.load_state_dict(weight )
batch_size = 1
input_shape = (3, 244, 384) #输入数据,改成自己的输入shapemodel.eval()x = torch.randn(batch_size, *input_shape)
export_onnx_file = "test.onnx" # 输出的ONNX文件名
torch.onnx.export(model,x,export_onnx_file,opset_version=10,do_constant_folding=True, input_names=["input"], output_names=["output"], dynamic_axes={
"input":{0: 'batch',2:'batch',3:'batch'},"output":{0: 'batch',2:'batch',3:'batch'})
3. 使用onnx推理预测
参考链接
https://zhuanlan.zhihu.com/p/159379768
https://blog.csdn.net/jacke121/article/details/104510401
https://blog.csdn.net/LimitOut/article/details/107117759
阅读过本文的人还看了以下文章:
TensorFlow 2.0深度学习案例实战
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《基于深度学习的自然语言处理》中/英PDF
Deep Learning 中文版初版-周志华团队
【全套视频课】最全的目标检测算法系列讲解,通俗易懂!
《美团机器学习实践》_美团算法团队.pdf
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
特征提取与图像处理(第二版).pdf
python就业班学习视频,从入门到实战项目
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
《深度学习之pytorch》pdf+附书源码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
《Python数据分析与挖掘实战》PDF+完整源码
汽车行业完整知识图谱项目实战视频(全23课)
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!
《神经网络与深度学习》最新2018版中英PDF+源码
将机器学习模型部署为REST API
FashionAI服装属性标签图像识别Top1-5方案分享
重要开源!CNN-RNN-CTC 实现手写汉字识别
yolo3 检测出图像中的不规则汉字
同样是机器学习算法工程师,你的面试为什么过不了?
前海征信大数据算法:风险概率预测
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
VGG16迁移学习,实现医学图像识别分类工程项目
特征工程(一)
特征工程(二) :文本数据的展开、过滤和分块
特征工程(三):特征缩放,从词袋到 TF-IDF
特征工程(四): 类别特征
特征工程(五): PCA 降维
特征工程(六): 非线性特征提取和模型堆叠
特征工程(七):图像特征提取和深度学习
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
蚂蚁金服2018秋招-算法工程师(共四面)通过
全球AI挑战-场景分类的比赛源码(多模型融合)
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在线识别手写中文网站
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
机大数据技术与机器学习工程
搜索公众号添加: datanlp
长按图片,识别二维码
onnx实现对pytorch模型推理加速相关推荐
- 模型推理加速系列|如何用ONNX加速BERT特征抽取(附代码)
简介 近期从事模型推理加速相关项目,所以抽空整理最近的学习经验.本次实验目的在于介绍如何使用ONNXRuntime加速BERT模型推理.实验中的任务是利用BERT抽取输入文本特征,至于BERT在下游任 ...
- pytorch版本RetinaFace人脸检测模型推理加速
pytorch版本RetinaFace人脸检测模型推理加速_胖胖大海的博客-CSDN博客 pytorch版本RetinaFace人脸检测模型推理加速,去掉FPN第一层,不检测特别小的人脸框_胖胖大海的 ...
- 《Pytorch 模型推理及多任务通用范式》第三节作业
1 课程学习 本节课主要对于大白AI课程:https://mp.weixin.qq.com/s/STbdSoI7xLeHrNyLlw9GOg <Pytorch 模型推理及多任务通用范式>课 ...
- 【模型推理加速系列】05: 推理加速格式TorchScript简介及其应用
简介 本文紧接前文:模型推理加速系列|04:BERT模型推理加速 TorchScript vs. ONNX 实验结果:在动态文本长度且大batch size的场景下,TorchScript 格式的in ...
- 【模型推理加速系列】06: 基于resnet18加速方案评测
简介 花雪随风不厌看,更多还肯失林峦.愁人正在书窗下,一片飞来一片寒.小伙伴们好,我是微信公众号小窗幽记机器学习的首席称重师:卖麻辣烫的小男孩.今天这篇文章以resnet18模型为例,对比Pytorc ...
- 《Pytorch 模型推理及多任务通用范式》_第3节课
1 课程学习 本节课主要对于大白AI课程:https://mp.weixin.qq.com/s/STbdSoI7xLeHrNyLlw9GOg <Pytorch 模型推理及多任务通用范式>课 ...
- 如何使用TensorRT对训练好的PyTorch模型进行加速?
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨伯恩legacy@知乎 来源丨https://zhuanlan.zhihu.com/p/8831 ...
- PyTorch开发者福音, OpenVINO整合PyTorch实现推理加速!
作者: Ashish Datta, Sai Jayanthi, Natalie Kershaw (Microsoft), Yamini Nimmagadda, Sesh Seshagiri 编译:李翊 ...
- Adlik Deer版本发布,模型推理加速就靠它啦
今天,Adlik Deer版本(V0.4.0)发布啦! 本次的新版本中,可以看到Adlik最近一段时间的许多技术探索,对优化器来说有集成蒸馏.Zen-NAS优化等:推理引擎也更易用.支持更多硬件和推理 ...
最新文章
- 【 MATLAB 】ndgrid 和 meshgrid 对比理解以及应用
- 【操作系统】进程间通信
- JavaSE基础之构造器(构造方法)和一般方法
- 高通平台msm8909 LK 实现LCD 兼容
- python 字符串转换成整数
- python 查询文本文件的层次
- 提取DVD视频盘的资源
- win7系统备份还原软件_收藏备用!操作系统的快速备份与还原技巧
- python3.6sysos_Python 常用内置模块——sys、os
- 百度正式发布PaddlePaddle深度强化学习框架PARL
- ostringstream使用
- 若何设定Linux把持系统的启动暗码
- 非阻塞connect的作用及代码示例
- Oracle索引类型-参考
- 小米html查看器打开,小米文档查看器APP
- Android 自定义仪表盘
- 机器学习-累计分布函数(CDF)
- day2_数据运算和类型、列表、元组、字典
- SEO网站收录情况分析查询方法(小技巧Tips)
- 如何随意复制网页上的文字
热门文章
- amazeui学习笔记--css(基本样式4)--打印样式Print
- HDFS的Java操作
- CSS Sprite的应用【转】
- #if、#ifdef、#if defined之间的区别
- 如何检查计算机账号克隆
- limit mongodb 聚合_mongodb-$type、limit、skip、sort方法、索引、聚合
- android 弹窗圆角,Android开发笔记: Android最简单的圆角提示框
- 测试用例的优先级概念
- python中实例和对象的区别_通过Python中对象实例的属性比较对象实例是否相等
- LuckyFrame执行Web自动化用例