非 root 用户安装 cuDNN 并配置 TensorFlow 使用 GPU


为非 root 用户安装 cuDNN 并配置 TensorFlow 使用 GPU(以 CUDA 11.5 为例)

背景说明

在科研服务器或非 root 权限环境下,用户往往无法通过 aptyum 安装 CUDA/cuDNN。本文以 CUDA 11.5 和 cuDNN 8.3.3 为例,演示如何手动下载并配置 cuDNN,使 TensorFlow 成功识别 GPU 并启用加速。


第一步:确认已安装 CUDA

nvcc --version

示例输出:

Cuda compilation tools, release 11.5, V11.5.119

第二步:下载 cuDNN(适用于 CUDA 11.5)

访问官网下载 cuDNN:

  • https://developer.nvidia.com/rdp/cudnn-download

  • 找到 cuDNN 8.3.3 for CUDA 11.5

  • 选择 Linux .tar.xz 格式,例如:

    cudnn-linux-x86_64-8.3.3.40_cuda11.5-archive.tar.xz
    

注意:需登录 NVIDIA 账户;如遇网络问题,可通过国内镜像或云盘转存。


第三步:解压和安装 cuDNN(无需 root)

mkdir -p $HOME/cudnn-11.5
tar -xvf cudnn-linux-x86_64-8.3.3.40_cuda11.5-archive.tar.xz -C $HOME/cudnn-11.5 --strip-components=1

验证解压结果:

ls $HOME/cudnn-11.5/lib/libcudnn.so*

️ 第四步:配置环境变量

将 cuDNN 的 libinclude 路径加入当前 shell 环境:

export LD_LIBRARY_PATH=$HOME/cudnn-11.5/lib:$LD_LIBRARY_PATH
export CPATH=$HOME/cudnn-11.5/include:$CPATH

为了每次自动加载,可以将其加入 ~/.bashrc

echo 'export LD_LIBRARY_PATH=$HOME/cudnn-11.5/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export CPATH=$HOME/cudnn-11.5/include:$CPATH' >> ~/.bashrc

✅ 第五步:测试 TensorFlow 是否使用 GPU

进入你安装了 TensorFlow 的虚拟环境,例如 conda activate your_env,运行:

python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

如果一切正常,将输出类似:

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU'), ...]

常见错误与解决方案

Cannot dlopen some GPU libraries

问题原因:找不到 cuDNN 的动态库。

✅ 解决方法:

  • 确认 $LD_LIBRARY_PATH 包含 cuDNN 解压路径中的 lib/lib64/
  • 确认 libcudnn.so 文件真实存在

Memory growth cannot differ between GPU devices

问题原因:设置 memory growth 时有多个 GPU 未统一。

✅ 解决方法:在代码初始化 GPU 时,设置所有设备一致:

import tensorflow as tf
gpus = tf.config.list_physical_devices('GPU')
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)

TensorFlow was not built with CUDA kernel binaries compatible with compute capability 9.0

问题原因:GPU 为新型号(如 NVIDIA H800),但当前 TensorFlow 不包含对应的预编译内核。

✅ 解决方法:

  • 无需惊慌,TF 会自动 JIT 编译 PTX,虽首次慢,但仍能运行
  • 或考虑升级 TensorFlow 版本(如 2.14+)

最终确认 GPU 使用成功

运行一个实际任务(如 BERT embedding、模型推理)并用 nvidia-smi 查看 GPU 占用:

nvidia-smi

看到进程使用 GPU 显存即表明配置成功。


✨ 总结

步骤 内容
CUDA 检查 nvcc --version
下载 cuDNN 官网或国内镜像 .tar.xz
解压配置环境 export LD_LIBRARY_PATH
TensorFlow 检测 tf.config.list_physical_devices('GPU')
GPU 占用确认 nvidia-smi

你可能感兴趣的:(非 root 用户安装 cuDNN 并配置 TensorFlow 使用 GPU)