onnxruntime推理时切换CPU/GPU以及修改onnx输入输出为动态

这篇具有很好参考价值的文章主要介绍了onnxruntime推理时切换CPU/GPU以及修改onnx输入输出为动态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

onnx模型作为中间模型,相较于pytorch直接推理,是有加速度效果的,且推理代码简单,不需要load各种网络。最近某些项目因为显存不够,onnxruntime推理时切换CPU/GPU,实现某些模型在CPU上推理,某些在GPU上推理。 查了一些别人的文章发现很多人都说onnxruntime推理没法像pytorch那样指定GPU,CPU,只能卸载一个GPU用CPU,卸载CPU用GPU。个人感觉不应该是这样的,点进去源码一看,明明有配置CPU,GPU的参数,而且很简单。这里把自己踩得一些坑给记录一些,分享给有需要的人。

onnxruntime CPU/GPU切换

点进去源码之后看到有CUDAExecutionProvider和CPUExecutionProvider这样的选择,开始使用的使用低版本onnxruntime-gpu的时候发现选了“CPUExecutionProvider”依旧是用GPU的资源,后来从一条警告看到1.10版本之后建立推理引擎的时候需要providers参数选择CPU/GPU,安装了onnxruntime-gpu==1.10.0之后果然可以在GPU版本的onnxruntime下使用CPU了。

import onnxruntime as rt
sess = rt.InferenceSession(MODEL_PATH,providers=['CPUExecutionProvider'])# providers=['CPUExecutionProvider','CUDAExecutionProvider']

注意:高版本ONNX动态尺寸推理的时候,如果inference输出的shape和你模型文件本身的outputshape不匹配会报警告,这时候会降低推理速度,这时候改一下模型本身设output shape就行。

修改onnx的输入/输出尺寸为动态

其实这个在转onnx模型的时候input/output就应该设置为静态或动态,但是如果没有原模型,只有一个onnx模型,可以使用下面给的方法快速转换模型为动态输入输出。就把对应的输入输出某一需要动态的维度改成“?”就行了。

import onnx
file_path = './my.onnx'
model = onnx.load(file_path)
#model.graph.input[0].type.tensor_type.shape.dim[0].dim_param = '?'
model.graph.output[0].type.tensor_type.shape.dim[2].dim_param = '?'
model.graph.output[0].type.tensor_type.shape.dim[3].dim_param = '?'
onnx.save(model, './my_dynamic.onnx')

后续:

每次我都要挑战一下这个发文助手,看起来有点搞笑,东西就这么点非说我字数不够,CSDN的检测为什么能这么无聊,非要把字数的权重弄得那么高,让人看着很无语,我这就看看到底多少字才能通过检测,看看评论区多少在吐槽这个烂检测系统,产品经理都装看不见。

 文章来源地址https://www.toymoban.com/news/detail-525652.html

到了这里,关于onnxruntime推理时切换CPU/GPU以及修改onnx输入输出为动态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS c++ onnxruntime 环境配置、onnx教程、部署推理模型、sklearn pkl模型转onnx、问题汇总

    目录 一、初步认识ONNX 二、pkl转ONNX+可视化模型 三、ONNX Runtime运行时 3.1 相关介绍(了解此运行时): 3.2 VS、c++部署onnxruntime 3.3 头文件引用的一些问题 四、问题汇总: 1. 类没有成员 2. 版本兼容问题 3. 3.“GetInputName“: 不是 “Ort::Session“ 的成员 官网: ONNX Runtime | Home GitHub

    2024年04月09日
    浏览(44)
  • 使用onnxruntime-gpu 模型推理

    1.安装onnxruntime-gpu 新版的onnxruntime-gpu 即支持gpu的推理,也支持cpu的推理。 卸载旧的1.7.1 cpu版本,安装新的gpu版本: 检查是否安装成功: 2.修改推理代码 在推理代码上增加 providers参数,选择推理的框架。看自己支持哪个就选择自己支持的就可以了。 如果运行推理代码出现

    2024年02月15日
    浏览(40)
  • 【环境搭建:onnx模型部署】onnxruntime-gpu安装与测试(python)

    onnx 模型在 CPU 上进行推理,在conda环境中直接使用pip安装即可 想要 onnx 模型在 GPU 上加速推理,需要安装 onnxruntime-gpu 。有两种思路: 依赖于 本地主机 上已安装的 cuda 和 cudnn 版本 不依赖于 本地主机 上已安装的 cuda 和 cudnn 版本 要注意:onnxruntime-gpu, cuda, cudnn三者的版本要对

    2024年02月07日
    浏览(50)
  • TRT4-trt-integrate - 3 使用onnxruntime进行onnx的模型推理过程

    onnx是microsoft开发的一个中间格式,而onnxruntime简称ort是microsoft为onnx开发的推理引擎。 允许使用onnx作为输入进行直接推理得到结果。 建立一个InferenceSession,塞进去的是onnx的路径,实际运算的后端选用的是CPU 也可以选用cuda等等 之后就是预处理 session.run就是运行的inference过程

    2024年02月15日
    浏览(43)
  • YOLOv8-Openvino和ONNXRuntime推理【CPU】

    CPU:i5-12500 2.1 Openvino简介 Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包,主要用于对深度推理做优化。 Openvino内部集成了Opencv、TensorFlow模块,除此之外它还具有强大的Plugin开发框架,允许开发者在Openvino之上对推理过程做优化。 Openvino整体框架为

    2024年02月20日
    浏览(49)
  • PyTorch多GPU训练模型——使用单GPU或CPU进行推理的方法

    PyTorch提供了非常便捷的多GPU网络训练方法: DataParallel 和 DistributedDataParallel 。在涉及到一些复杂模型时,基本都是采用多个GPU并行训练并保存模型。但在推理阶段往往只采用单个GPU或者CPU运行。这时怎么将多GPU环境下保存的模型权重加载到单GPU/CPU运行环境下的模型上成了一

    2024年02月09日
    浏览(49)
  • 配置(GPU/CPU)Pytorch环境以及修改conda和pip默认安装路径,安装环境前必看!!(———记自己装环境踩过的坑......)

    版本: pytorch2.0 pycharm2022.3 python3.8 如果你要配置pytorch,你先要确定自己在这台电脑上是只作为学习调试代码用还是要用来跑模型,如果用来跑模型,请先下载CUDA和Cudnn,详见此链接安装配置CUDA与cuDNN安装教程(超详细) 如果是单纯用来学习调试代码,不需要调用GPU版本的p

    2024年02月07日
    浏览(60)
  • 【深度学习】ONNX 模型文件修改节点的名称,修改输入名称,修改输出名称

    想要修改onnx模型文件的节点名称,要么在最初的pytorch代码里去改,要么就直接在onnx模型文件里改。 而我这里直接在onnx模型文件改,我有一个onnx文件,输出节点的名字是这样的: 这不改就看着真难受,那么就用python改: 改完后: 其实修改其他节点的名称也可以这样去做,

    2024年02月15日
    浏览(45)
  • onnx笔记1: onnx读写、创建以及修改

    1.1 onnx proto onnx存储pytorch或者tensorflow等框架的模型结构,本文了解onnx是如何存储这些模型结构以及onnx文件的形式。 onnx本质是一种 protobuf 格式文件 onnx通过 onnx-ml.proto 来描述onnx的结构,利用protoc编译程序,将onnx结构编译成 onnx-ml.pb.cc 和 onnx_ml_pb2.py 文件。 然后利用 onnx-ml.p

    2023年04月22日
    浏览(34)
  • ONNX:C++通过onnxruntime使用.onnx模型进行前向计算【下载的onnxruntime是编译好的库文件,可直接使用】

    微软联合Facebook等在2017年搞了个深度学习以及机器学习模型的格式标准–ONNX,旨在将所有模型格式统一为一致,更方便地实现模型部署。现在大多数的深度学习框架都支持ONNX模型转出并提供相应的导出接口。 ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包