libonnxruntime_providers_cuda.so with error: libcudnn_adv.so.9

在安装了 onnxruntime-gpu 后,使用 CUDA 时报错:

shell 复制代码
2025-01-02 11:40:03.935340441 [E:onnxruntime:Default, provider_bridge_ort.cc:1862 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1539 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcudnn_adv.so.9: cannot open shared object file: No such file or directory

2025-01-02 11:40:03.935371734 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:993 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. 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.

很明显,cudnn 并为正确配置。

首先需要说明:

PyTorch 的许多预编译版本(如通过 pip 或 conda 安装)会自带 CUDA 和 cuDNN。它会直接使用打包的版本,而不是依赖系统中全局安装的库。
ONNX Runtime 需要系统中明确安装且可用的 cuDNN 动态库

安装 cudnn,注意版本对应:

https://developer.nvidia.com/cudnn-downloads

shell 复制代码
proxychains4 wget https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-9.1.0.70_cuda12-arch
ive.tar.xz

解压下载的文件:

shell 复制代码
tar -xvf cudnn-linux-x86_64-9.1.0.70_cuda12-archive.tar.xz

解压后,会看到一个名为 cuda 的目录,包含以下子目录:

  • include/: 包含头文件,如 cudnn.h
  • lib/: 包含动态库,如 libcudnn.so

将解压出来的文件复制到系统的 CUDA 安装路径(默认路径是 /usr/local/cuda/):

shell 复制代码
sudo cp ./cudnn-linux-x86_64-9.1.0.70_cuda12-archive/include/* /usr/local/cuda-12.4/include/

sudo cp ./cudnn-linux-x86_64-9.1.0.70_cuda12-archive/lib/* /usr/local/cuda-12.4/lib64/

更新动态链接库缓存,以确保系统可以正确找到 cuDNN 的动态库文件:

检查 LD_LIBRARY_PATH 是否包含 /usr/local/cuda/lib64:

shell 复制代码
echo $LD_LIBRARY_PATH

如果没有包含,编辑 ~/.bashrc 文件,添加以下内容:

shell 复制代码
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
shell 复制代码
source ~/.bashrc

更新动态库缓存:

shell 复制代码
sudo ldconfig

验证 cuDNN 是否正确安装:

shell 复制代码
ls /usr/local/cuda/lib64 | grep libcudnn

输出:

shell 复制代码
libcudnn_adv.so
libcudnn_adv.so.9
libcudnn_adv.so.9.1.0
libcudnn_adv_static.a
libcudnn_adv_static_v9.a
libcudnn_cnn.so
...

检查 cuDNN 版本:

shell 复制代码
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

输出:

shell 复制代码
#define CUDNN_MAJOR 9
#define CUDNN_MINOR 1
#define CUDNN_PATCHLEVEL 0
相关推荐
relis16 分钟前
llama.cpp Flash Attention 论文与实现深度对比分析
人工智能·深度学习
盼小辉丶19 分钟前
Transformer实战(21)——文本表示(Text Representation)
人工智能·深度学习·自然语言处理·transformer
艾醒(AiXing-w)23 分钟前
大模型面试题剖析:模型微调中冷启动与热启动的概念、阶段与实例解析
人工智能·深度学习·算法·语言模型·自然语言处理
无风听海38 分钟前
神经网络之交叉熵与 Softmax 的梯度计算
人工智能·深度学习·神经网络
java1234_小锋41 分钟前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 神经网络基础原理
python·深度学习·tensorflow·tensorflow2
JJJJ_iii42 分钟前
【深度学习03】神经网络基本骨架、卷积、池化、非线性激活、线性层、搭建网络
网络·人工智能·pytorch·笔记·python·深度学习·神经网络
玉石观沧海1 小时前
高压变频器故障代码解析F67 F68
运维·经验分享·笔记·分布式·深度学习
JJJJ_iii1 小时前
【深度学习05】PyTorch:完整的模型训练套路
人工智能·pytorch·python·深度学习
DP+GISer1 小时前
自己制作遥感深度学习数据集进行遥感深度学习地物分类-试读
人工智能·深度学习·分类
paid槮2 小时前
《深度学习》【项目】自然语言处理——情感分析 <上>
深度学习·自然语言处理·easyui