报错“can‘t pickle onnxruntime.capi.onnxruntime_pybind11_state.InferenceSession objects“问题解决
在使用onnx模型进行python的多进程推理的时候,遇到这个报错。搞明白报错原因之后,这里给出一个解决办法
使用python多进程进行ONNX和torch模型的的推理时候,习惯性把初始化构建推理引擎,初始化模型这个操作放在主进程,一般来讲都是这样做的,子进程只负责推理。在设置为multiprocessing.set_start_method(‘spawn’),torch可以正常多进程推理。onnx这样的话
import onnxruntime as rt
from multiprocessing import Process
multiprocessing.set_start_method('spawn')
def infer_process(sess,arg):pass
sess = rt.InferenceSession("./mine.onnx")
p1 = Process(target=infer_process,args=(sess,args1,))
是会报错"can’t pickle onnxruntime.capi.onnxruntime_pybind11_state.InferenceSession objects"。这是因为python的多进程在multiprocessing .Process在传参时需要用pickle对参数进行序列化操作,但是onnx的推理引擎不在可序列化类型中,属于复杂类型,但是pytorch的model是可以。这时候需要把onnx模型的推理引擎构建放到子进程中。类似的can’t pickle等错误,我猜测也是这个原因。
但这样就相当于每次都额外增加耗时。自己这边采用使用队列的方式,把这个子进程中的初始化onnx引擎放在while循环的外面,然后再循环内读取队列。
报错“can‘t pickle onnxruntime.capi.onnxruntime_pybind11_state.InferenceSession objects“问题解决相关推荐
- onnxruntime.capi.onnxruntime_pybind11_state.InvalidProtobuf: [ONNXRuntimeError] : 7 : INVALID_PROTOB
加载onnx模型报错: onnxruntime.capi.onnxruntime_pybind11_state.InvalidProtobuf: [ONNXRuntimeError] : 7 : IN ...
- Pickle库使用练习报错 AttributeError: module 'pickle' has no attribute 'dump'
在这里插入代码片在练习使用pickle模块的时候写了如下的代码,但是出现了报错,代码和报错内容如下: 代码: import pickle dict1 = dict(name='八岐大蛇', age=1 ...
- pytorch 34 mmdeploy模型转换报错onnxruntime.capi.onnxruntime_pybind11_state.Fail解决方案
使用mmdeploy部署mmrotate模型时出现以下报错,虽然不影响模型转换为onnx,但是影响模型的加载.出现这个报错,是因为mmdeploy转换完模型后,要加载onnx模型测试一下,但是onnx ...
- 解决python读取pickle报错ValueError: unsupported pickle protocol: 5
解决方法 换一个python3.8+的版本读取pkl文件的数据 保存为其他格式或低版本的pkl,保存时设置protocol关键字即可 问题解析 这是因为保存为.pkl文件时使用的协议号为5(pytho ...
- 【Java报错】Greenplum数据库报错 could not determine data type of parameter $2. 问题解决(踩坑分享)
1. 问题说明 先查看一下报错信息: Error updating database. Cause: java.sql.SQLSyntaxErrorException: [Pivotal][Green ...
- eclipse启动不了并报错Java was started but exit with code 13 问题解决
我的eclipse之前运行的非常好但是突然就打不开了,并且显示如下报错 第一行告诉我们Java已经运行了,但是返回了错误代码为13的错误,也不知道13表示什么错误.下面的一行应该是打开Eclipse需 ...
- python3报错: takes 1 positional argument but 2 were given 问题解决。
使用python3的时候,刚开始使用,把所有的都写在了一个文件中,这不符合类的六大设计原则.就把原来的代码按照类进行了拆分. 关于类的六大设计原则:开放关闭原则,里氏替换原则,依赖倒转原则,接口隔离原 ...
- 【Python】报错:ValueError: attempted relative import beyond top-level package问题解决
报错: 解决办法:在导入模板的文件里添加 import sys sys.path.append("..")
- Python pytest main.py文件报错main.py: error: unrecognized arguments: --html=./test_report.html问题解决
ERROR: usage: main.py [options] [file_or_dir] [file_or_dir] [...] main.py: error: unrecognized argum ...
最新文章
- golang 关闭制定名称的 tomcat_Tomcat原理详解及请求过程
- 如何用python画圆形的代码-python – 如何快速绘制数千个圆圈?
- 物理主机安装linux的方法
- UNIX再学习 -- 用户 ID 和组 ID
- python将变量i的值增加1_Python中变量自增、i+=x与i=i+x、is与==
- HDU4454(几何+三分)
- php如何在某个时间上加一天?一小时? 时间加减(转)
- wps合并所有sheet页_表格高级筛选、表格合并,让表格处理事半功倍
- 乔春洋:品牌管理创新
- 本地在线安装mysql_本地安装MySql服务
- 构建第一个Spring Boot2.0应用之集成dubbo上---环境搭建(九)
- mpvue 微信小程序设置背景音乐
- Android开源库集合(控件)
- 20154319 实验七 网络诈骗技术防范
- kindle上网看其他网址_原来kindle不止可以看书,快来看看体验版浏览器怎么玩!...
- 工业互联网发展行动计划(2018-2020年)
- 兼容Android11的手机拍照上传图片和相册选择图片功能(可直接用)
- 我对于测试团队建设的意见
- 基于DM6467的TVP7002 Linux驱动程序开发
- 单片机硬件电路设计实例分析