当前位置: 首页 > web >正文

判断 ONNX 模型是否支持 GPU

🔍 判断 ONNX 模型是否支持 GPU 的几个关键点:
✅ 1. 检查模型支持的 Execution Provider
可以通过下面的代码打印出来当前模型使用了什么设备:
需要安装好:onnxruntime-gpu

import onnxruntime as ort
session = ort.InferenceSession("your_model.onnx", providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
print("当前使用设备:", session.get_providers())

如果输出是:

# UserWarning: Specified provider 'CUDAExecutionProvider' is not in available provider names.Available providers: 'AzureExecutionProvider, CPUExecutionProvider'
#当前使用设备: ['CPUExecutionProvider']

那说明 即使你指定了 CUDA,模型也没用上 GPU。可能的原因如下👇


⚠️ 常见模型不支持 GPU 的原因:

在这里插入图片描述


🧪 你可以这样验证是否真的不支持 GPU:
运行这个脚本测试你的模型:

import onnxruntime as ortmodel_path = "model/line-drawings.onnx"  # 或 line-relifer.onnx
session = ort.InferenceSession(model_path, providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])print("可用 Provider:", ort.get_available_providers())
print("当前 Session 使用 Provider:", session.get_providers())

如果你看到:

当前 Session 使用 Provider: ['CPUExecutionProvider']

就确认模型 不支持 CUDA 推理。


🛠️ 解决方法(建议):
✅ 方案 1:尝试重新导出支持 GPU 的 ONNX 模型
如果你能访问训练代码,建议使用:

torch.onnx.export(..., opset_version=11, do_constant_folding=True)

并确保:

不使用动态形状(除非必要)

避免包含 grid_sample, loop, scan, 等复杂或实验算子

可通过 Netron 打开 .onnx 文件查看每个 node 的类型,排查问题


✅ 方案 2:使用 OpenVINO 或 TensorRT(适用于优化部署)
若是 NVIDIA 平台:TensorRT 可以加速大多数兼容模型(比 ONNXRuntime-GPU 更强)

若是 Intel 平台:OpenVINO 会是更适合的加速方式


✅ 方案 3:使用 onnxruntime-tools 检查模型兼容性

pip install onnxruntime-tools
python -m onnxruntime.tools.convert_onnx_models_to_ort -m your_model.onnx

这会尝试生成一个 .ort 文件并报告哪些算子不支持 GPU。


http://www.xdnf.cn/news/2149.html

相关文章:

  • 微信小程序 - 根据经纬度打开导航
  • 追风赶月莫停留
  • WebcamJS中文文档
  • Debian安装避坑
  • 动态规划求解leetcode300.最长递增子序列(LIS)详解
  • React 与 Vue 的区别:你会选择哪个框架呢
  • 关于Android Studio的Gradle各项配置
  • 高级 SQL 技巧:提升数据处理能力的实用方法
  • 图像畸变-径向切向畸变实时图像RTSP推流
  • leetcode 26和80
  • strcmp()在C语言中怎么用(附带实例)
  • CentOS 如何使用截图工具截取命令行操作的图片?
  • 定制一款国密浏览器(12):分析SM2签名算法的实现
  • 在 Linux 上安装 PNPM 的教程
  • Git分支重命名与推送参数解析
  • 案例速成GO操作redis,个人笔记
  • LeetCode100题
  • 案例速成GO+redis 个人笔记
  • 【springboot知识】配置方式实现SpringCloudGateway相关功能
  • TortoiseGit 入门指南
  • Linux基础命令总结
  • 【设计模式区别】装饰器模式和适配器模式区别
  • C#中wpf程序中的x名空间详解
  • CSS3布局方式介绍
  • 如何修改npm的全局安装路径?
  • 【Token系列】02 | Embedding是怎么“长出来”的?从查表到训练过程全解
  • git和github的使用指南
  • 探索具身智能协作机器人:技术、应用与未来
  • 苹果(IOS)手机怎么开启开发者模式(简单明了版)
  • 在QML中获取当前时间、IP和位置(基于网络请求)