问题: python安装好onnxruntime无法调用gpu。
通过如下代码测试,均为False。
import onnxruntime as ort
# 检查ONNX Runtime是否支持CUDA
def is_onnxruntime_cuda_supported():
return ort.get_device() == 'GPU'
# 检查ONNX Runtime是否使用CUDA
def is_onnxruntime_using_cuda():
providers = ort.get_available_providers()
print(providers)
return 'CUDAExecutionProvider' in providers
# 测试代码
print(f"ONNX Runtime CUDA Supported: {is_onnxruntime_cuda_supported()}")
print(f"ONNX Runtime Using CUDA: {is_onnxruntime_using_cuda()}")
先把正确结果给出,里面安装了tensorrt库,忽视。
ONNX Runtime CUDA Supported: True
['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']
ONNX Runtime Using CUDA: True
排查顺序
-
确认onnxruntime的安装顺序。这个特别坑。
-
需要先装onnxruntime, 然后再装 onnxruntime_gpu。 两者安装会有个别文件被覆盖。
- 如果只装onnxruntime_gpu,会报错,找不到onnxruntime。
- 手动按顺序重新安装一遍。或者卸载,后按顺序安装。
-
确认onnx版本与cuda,cudnn是否匹配。
-
参考官网链接: NVIDIA - CUDA | onnxruntime
-
版本匹配其实不是要求特别准确,前后版本差别别太大,都没问题。下图供参考,cuda12,11,10全的参考上述链接。
-
-
如果还找不到,可能与环境变量 PATH, LD_LIBRARY_PATH设置有关。
-
参考修改设置代码
vim ~/.bashrc export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
下载需要的链接
-
onnxruntime: onnxruntime · PyPI onnxruntime_gpu: onnxruntime-gpu · PyPI
-
cpp onnxruntime: Releases · microsoft/onnxruntime · GitHub
网上一些其他的问题
-
onnx部署只与cuda, cudnn有关。 tensorrt部署是另一套。
-
cpp 也有对应的版本要求。
-
不添加版本的安装,会使用最新版,肯定会有不匹配的问题。 下载需要指定版本。