安装 CUDA 13 后 ONNX Runtime 报错“Failed to create CUDAExecutionProvider” 的完整修复方案——附 CMD & PowerShell 一
这个报错说明你的 ONNX Runtime(ORT)在尝试加载 CUDA 加速时失败了,主要原因是 缺少 CUDA 12.x 和 cuDNN 9.x 的运行环境,或者相关依赖没有被正确识别。
【全文修订版】
安装 CUDA 13 后 ONNX Runtime 报错
“Failed to create CUDAExecutionProvider” 的完整修复方案
——附 CMD & PowerShell 一键脚本
1️⃣ 问题现象速览
- 触发场景:CUDA 13.0(驱动从 5xx.xx → 580.88)
- 报错全文:
[0;93m2025-08-21 15:23:25.4121592 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:993 onnxruntime::python::CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*, and the latest MSVC runtime. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements ), make sure they're in the PATH, and that your GPU is supported.[m
- 影响范围:所有基于 CUDA 12.x 的虚拟环境(ONNX Runtime、旧版 TensorFlow、PyTorch 等)。
2️⃣ 背景:为什么 CUDA 13 会“炸”
维度 | 升级前 | 升级后 |
---|---|---|
驱动 | 支持 CUDA 12.x | 支持 CUDA 13.0 |
系统 PATH | 指向 v12.x\bin |
自动指向 v13.0\bin |
旧虚拟环境 | 依赖 CUDA 12.x DLL | 找不到对应版本 → 126 |
NVIDIA 安装器不会删除旧版本,只把新版本路径插到最前,因此系统里往往共存:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.0
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
3️⃣ 根因定位(一句话)
ONNX Runtime 仅绑定 CUDA 12.x;系统优先加载 CUDA 13.0 的 DLL,导致初始化失败。
4️⃣ 解决思路(零污染方案)
目标 | 做法 |
---|---|
不降级CUDA和驱动 | 保留 CUDA 13.0 |
补运行时 | 安装 CUDA 12.8 Runtime + cuDNN 9.x(或CUDA 12.9) |
环境隔离 | 仅对当前 .venv 追加 PATH |
5️⃣ 前置下载
组件 | 版本 | 下载 |
---|---|---|
CUDA Toolkit | 12.8 Runtime | https://developer.nvidia.com/cuda-12-8-0-download-archive |
cuDNN | 9.x for CUDA 12.x | https://developer.nvidia.com/rdp/cudnn-download |
安装 CUDA 时 只勾选 Runtime;cuDNN 解压备用。
6️⃣ 实操:虚拟环境级 PATH 修改
6.1 CMD 用户
1. 编辑激活脚本
打开 .venv\Scripts\activate.bat
,在文件末尾追加:
:: 追加 CUDA 12.8 与 cuDNN 12.8 的 bin 目录
set "PATH=C:\Program Files\NVIDIA\CUDNN\v9.8\bin\12.8;%PATH%"
set "PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\bin;%PATH%"
若要再添加其他路径,可按需追加。
2. 重新激活并验证
最好退出IDE然后重新打开,避免因IDE缓存延迟等导致的无效(已实践确会有影响)!
deactivate
.venv\Scripts\activate
where cudart64_120.dll
where cudnn64_9.dll
python -c "import onnxruntime as ort; print(ort.get_available_providers())"
6.2 PowerShell 用户
1. 编辑激活脚本
打开 .venv\Scripts\Activate.ps1
,末尾追加:
# 追加 CUDA 12.8 与 cuDNN 12.8 的 bin 目录
$env:PATH = "C:\Program Files\NVIDIA\CUDNN\v9.8\bin\12.8;$env:PATH"
$env:PATH = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\bin;$env:PATH"
若要再添加其他路径,可按需追加。
2. 重新激活并验证
最好退出IDE然后重新打开,避免因IDE缓存延迟等导致的无效(已实践确会有影响)!
deactivate
.venv\Scripts\Activate.ps1
Get-Command cudart64_120.dll
Get-Command cudnn64_9.dll
python -c "import onnxruntime as ort; print(ort.get_available_providers())"
7️⃣ 验证结果
['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']
出现 CUDAExecutionProvider
即修复完成。
尝试运行项目,报错已修复:
怎么使用嵌套虚拟环境实现项目部署之virtualenv嵌套conda绕开安装环境检测实现.venv部署facefusion_python虚拟环境嵌套-CSDN博客
8️⃣ 一句话总结
升级 CUDA 前,先核对依赖矩阵;用虚拟环境脚本隔离 PATH,即可让 CUDA 13 驱动与 CUDA 12 运行时和平共处。
更多推荐
所有评论(0)