onnxruntime-gpu使用问题

使用onnx+GPU推理yolov4/v5模型的时候报错:

warnings.warn(“Cannot load onnxruntime.capi. Error: ‘{0}’”.format(str(e)))
Traceback (most recent call last):
File “D:\Program\pyDev\Anaconda\envs\pytorch\lib\site-packages\onnxruntime_init_.py”, line 12, in
from onnxruntime.capi._pybind_state import get_all_providers, get_available_providers, get_device, RunOptions, SessionOptions, set_default_logger_severity, NodeArg, ModelMetadata, GraphOptimizationLevel, ExecutionMode
ImportError: cannot import name ‘get_all_providers’ from ‘onnxruntime.capi._pybind_state’ (D:\Program\pyDev\Anaconda\envs\pytorch\lib\site-packages\onnxruntime\capi_pybind_state.py)
在这里插入图片描述
查阅网上的解决方案,大都说是高版本onnxruntime-gpu有问题,需要换1.2.0以下的版本,但是还了之后仍然报同样的错。

解决办法:
查询了onnxruntime与CUDA及Cudnn的版本对应关系,
https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html
在这里插入图片描述

本机配置:CUDA11.0+Cudnn8.0.5需要匹配onnxruntime-gpu-1.8

pip uninstall onnxruntime-gpu

pip install onnxruntime-gpu==1.8.0

再运行代码,结果如下
在这里插入图片描述
根本原因:
版本不匹配,需要结合CUDA、Cudnn选择对应的版本。

### ONNX Runtime GPU 配置与优化 为了使用 `onnxruntime-gpu` 进行高效的模型推理,需确保环境已正确设置并进行了必要的优化。 #### 环境准备 确认安装了适合当前 CUDA 版本的 `onnxruntime-gpu`。对于 CUDA 12.1 用户而言,应选择兼容此版本的 `onnxruntime-gpu` 1.19.0 版本[^2]。这可以通过以下命令完成: ```bash pip uninstall onnxruntime pip install onnxruntime-gpu==1.19.0 ``` 上述操作会移除任何先前存在的 CPU 或不匹配版本的 `onnxruntime` 安装,并替换为指定版本的 GPU 加速版[^3]。 #### 基础配置 加载模型时,可通过如下 Python 代码片段来初始化带有 GPU 支持的 ONNX Runtime 推理器实例: ```python import onnxruntime as ort # 创建SessionOptions对象用于自定义选项 session_options = ort.SessionOptions() # 设置执行提供者列表,优先级由前到后依次降低 providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] # 初始化InferenceSession对象 ort_session = ort.InferenceSession('model.onnx', sess_options=session_options, providers=providers) print(f"使用的执行提供者:{ort_session.get_providers()}") ``` 这段脚本指定了首选的计算资源顺序——即先尝试利用 GPU (通过 `'CUDAExecutionProvider'`) 执行任务;如果失败,则回退至 CPU 处理[^1]。 #### 性能调优建议 针对特定应用场景下的性能提升,可以考虑以下几个方面: - **调整线程数**:适当增加或减少参与运算的核心数量可能有助于提高效率; - **启用图优化**:允许框架自动简化网络结构中的冗余部分以加快速度; - **数据预处理/后处理流水线化**:尽可能使输入输出转换过程异步运行从而充分利用硬件资源。 以上措施均可以在创建 Session Options 实例期间设定相应参数实现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mirinda_cjy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值