如何彻底解决onnxruntime无法使用GPU加速及加速失败的问题?
摘要:CreateExecutionProviderInstance CUDA_PATH is set but CUDA wasn't able to be loaded. Please install the correct
onnx 无法使用GPU加速 加速失败 解决方法【非常详细】
应该是自目前以来最详细的加速失败解决方法GPU加速,收集了各方的资料。引用资料见后文
硬件配置:
GPU CUDA版本:12.2
客户架构:window10
输入:nvcc --version
onnxruntime版本后文提供
1 先检测是否无法使用GPU加速
检测代码如下,记得把模型换成你模型的地址
import onnxruntime
print(onnxruntime.__version__)
print(onnxruntime.get_device() ) # 如果得到的输出结果是GPU,所以按理说是找到了GPU的
ort_session = onnxruntime.InferenceSession("your_onnx_module_path.onnx",
providers=['CUDAExecutionProvider'])
print(ort_session.get_providers())
explain:
如果print(onnxruntime.version)输出成功,应该包就安装成功了
如果没有,见后文的onnxruntime版本匹配
如果print(onnxruntime.get_device() )输出成功的话,大概率是能够获取到你的gpu了
如果没有获取成功的话,则参见后文的配置cudann
如果print(ort_session.get_providers()),应该是没什么问题了
如果有问题的话,有蛮多情况导致的,我遇到的一个情况与版本有关
2.1 版本匹配
我的报错问题就与版本匹配有关,其他全部都是正确的,且这个关系到onnxruntime的包安装,固直接放到2.1来说明,你的硬件版本很重要,我这个是解决cuda12的,如果是cuda11可能不一样,或者也能给你们提供一点灵感也不错。
问题描述
报错信息大致是:
CreateExecutionProviderInstance CUDA_PATH is set but CUDA wasn't able to be loaded. Please install the correct version of CUDA andcuDNN as mentioned in the GPU requirements page
翻译出来就是,CUDA_PATH 路径已经设置了,但是 CUDA 不能被读取【也就说理论上环境变量没问题】,但保险起见,各位也可以检查一下你们的环境变量(后文cudann安装说明)
问题处理
找到官方提供的onnx与cuda的官方文档
当初没想到这里那么多坑
坑1【直接pip安装onnxruntime-gpu】
默认下载的是最新的且是针对11.8的版本,因此你直接pip install onnxruntime-gpu实际上安装的版本是onnxruntime-gpu=1.18[ 即最新版 ,而且默认是cuda11的]
坑2【使用官方提供的ort但不指定版本】:
点进去官方的对12.x的指示
使用官方的命令也会留有后患,因为官方确实是对12.x进行适配了,但默认还是version--1.18,适配cuda12.4,但!他不向下兼容版本,就是说你可能cuda版本是12.2,安装了最新的1.18 ,CUDA版本的12.4就不能使用了,因此需要在安装的时候添加你cuda版本对应的ORT的版本
pip install onnxruntime-gpu==what_you_want_version --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
将what_you_want_version换成你需要的版本,对应上图。
