PyTorch 安装中的 CUDA 与 NVIDIA CUDA Toolkit 的区别
在进行深度学习开发时,很多用户会遇到 CUDA 和 cuDNN 相关的安装问题。特别是 PyTorch 自带的 CUDA 与 NVIDIA 提供的 CUDA Toolkit 和 cuDNN,经常让人混淆。本文将简要说明这两者的区别,并介绍在什么情况下应该使用哪种安装方式。
PyTorch 自带的 CUDA 和 cuDNN
PyTorch 提供了带有 CUDA 和 cuDNN 支持的预编译版本。用户可以在安装 PyTorch 时选择带有特定 CUDA 版本的安装包,比如:
官方版:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
国内源版:
pip install torch torchvision torchaudio -f https://mirrors.aliyun.com/pytorch-wheels/cu118/
上面两个命令安装的 PyTorch 版本会自带 CUDA 11.8 和 cuDNN,不需要用户额外安装这些依赖。PyTorch 会使用它自带的 CUDA 和 cuDNN 与 NVIDIA GPU 进行计算加速。
NOTE
我们总结了国内可用的 Pytorch Wheels 源,可顺利下载 Pytorch 与自带的 CUDA 依赖。
适用场景
仅用于运行 PyTorch 程序:如果您只需要用 PyTorch 进行深度学习训练或推理,直接选择带 CUDA 支持的 PyTorch 版本即可,不需要单独安装 NVIDIA 的 CUDA Toolkit 和 cuDNN。
简化安装流程:PyTorch 自带的 CUDA 和 cuDNN 是经过测试的,通常能减少版本冲突或兼容性问题,不用担心系统中已有的 CUDA 版本。
检验方式
运行
python3
进入 Python 交互环境,输入以下代码:pythonimport torch print(torch.__version__) print(torch.cuda.is_available())
如果输出
True
,则说明 PyTorch 已经携带 CUDA 版本。输入以下代码,查看 PyTorch 是否已携带 cuDNN 版本:
pythonprint(torch.backends.cudnn.version())
如果输出一个版本号,则说明 PyTorch 已经成功安装了 cuDNN。
NVIDIA CUDA Toolkit 和 cuDNN
NVIDIA 提供的 CUDA Toolkit 和 cuDNN 是开发 GPU 加速程序的基础工具。CUDA Toolkit 包含用于开发 CUDA 应用的编译器、库和工具,而 cuDNN 是专门用于深度学习的高性能 GPU 加速库。
这些工具通常需要通过 NVIDIA 官方网站或包管理器(如 apt
、yum
)安装。安装完后,系统会配置全局的 CUDA 环境,允许用户开发和运行各种 CUDA 应用,而不仅仅是 PyTorch。
适用场景
开发自定义 CUDA 应用:如果您需要编写或开发自定义的 CUDA 代码(例如 C++ 或其他语言的 CUDA 程序),您需要单独安装 NVIDIA 的 CUDA Toolkit。
与其他软件兼容:如果您使用的其他深度学习框架(如 TensorFlow)或者其他软件(例如 ONNX Runtime)需要系统全局的 CUDA 支持,那么您应该安装 NVIDIA 提供的 CUDA Toolkit 和 cuDNN。
获取 NVIDIA CUDA Toolkit 和 cuDNN 容器镜像
如需在 AIStudio 平台使用 NVIDIA 的 CUDA Toolkit 和 cuDNN,最简便的方式是直接使用容器镜像。
- nvidia/cuda 镜像仓库:其中
devel
镜像同时包含 CUDA Toolkit 和 cuDNN,适用于 AIStudio 平台上的深度学习开发。但由于运营商网络限制,您需要自行从 Docker Hub 下载镜像。 - AIStudio 平台镜像中心: 平台提供了预置的 NVIDIA CUDA Toolkit 和 cuDNN 容器镜像
12.2.2-cudnn8-devel-ubuntu20.04
,您可以直接使用,或以此为基础制作自定义镜像。
手动安装 NVIDIA CUDA Toolkit 和 cuDNN 版本
如果容器镜像无法满足您的要求,也可以手动安装 NVIDIA 的 CUDA Toolkit 和 cuDNN,请参考以下官方文档:
NVIDIA CUDA Installation Guide for Linux
安装要点如下:
- 无需安装 NVIDIA Graphics Drivers,因为 AIStudio 平台已统一安装了 CUDA 驱动程序,用户无法自行安装。
- 为了避免运营商网络造成的问题,我们更推荐使用 Runfile 方式安装 NVIDIA CUDA Toolkit。请参考教程中 CUDA Toolkit 的安装方式 在容器化 Ubuntu 22.04 上安装 CUDA / cuDNN。
安装要点如下:
- 无需安装 NVIDIA Graphics Drivers,因为 AIStudio 平台已统一安装了 CUDA 驱动程序,用户无法自行安装。
- 请遵循官方文档中的步骤安装 NVIDIA CUDA Toolkit。
- 请遵循官方文档中的步骤安装 Zlib。
- 请遵循官方文档中的步骤安装 cuDNN。
检验方式
输入以下代码,查看系统 CUDA 版本:
shell# 只有安装了全局 CUDA 环境,才能运行 nvcc nvcc --version
搜索系统中 cuDNN 库文件:
shellfind / -name "libcudnn.so*" 2>/dev/null
如何区分使用哪个版本?
只使用 PyTorch:如果您只打算使用 PyTorch,并且不涉及其他需要独立 CUDA 支持的软件,直接安装带有 CUDA 支持的 PyTorch 版本即可,无需关心系统是否安装了 NVIDIA 的 CUDA Toolkit。
需要开发 CUDA 程序或使用其他软件:如果您还需要开发 CUDA 应用或使用其他依赖 CUDA 的程序,安装 NVIDIA 的 CUDA Toolkit 和 cuDNN 是必要的。
常见问题
我安装了带 CUDA 的 PyTorch,为什么其他程序无法使用 CUDA?
PyTorch 的 CUDA 和 cuDNN 仅限于 PyTorch 内部使用,不会配置到系统全局。如果您想让其他程序也使用 CUDA,必须安装 NVIDIA 提供的 CUDA Toolkit。
我的系统既安装了 NVIDIA 的 CUDA Toolkit,也安装了带 CUDA 的 PyTorch,会有冲突吗?
通常不会有冲突,因为 PyTorch 会优先使用它自带的 CUDA,即使系统中有其他版本的 CUDA Toolkit。您仍然可以使用 NVIDIA 的 CUDA Toolkit 进行其他 CUDA 开发。
结论
- PyTorch 自带的 CUDA 和 cuDNN:适合那些只使用 PyTorch 进行深度学习开发的用户。
- NVIDIA 的 CUDA Toolkit 和 cuDNN:适用于需要开发自定义 CUDA 程序,或者需要全局 CUDA 环境的用户。
根据您的需求选择合适的安装方式,可以避免缺少依赖或版本冲突的问题。