本文主要记录一下深度学习环境的安装过程。包括CUDA、cuDNN、PyTorch等内容。

0. 前置准备

检查显卡型号,确认支持CUDA。可以使用以下命令查看显卡型号:

1
nvida-smi

该指令会显示显卡驱动支持的最大CUDA版本。

0.1 深度学习环境架构

深度学习环境的架构大致如下所示:

1
2
3
4
5
6
7
8
9
PyTorch

cuDNN / cuBLAS / NCCL (CUDA加速库)

CUDA Runtime / Driver API

NVIDIA Driver

GPU 硬件
1. CUDA

CUDA 是 NVIDIA 提供的 GPU 并行计算平台。它包括:

1
2
3
4
- CUDA Driver(随 NVIDIA 驱动)
- CUDA Runtime(libcudart)
- CUDA 编译器(nvcc)
- 基础数学库(cuBLAS、cuFFT 等)

在使用过程中,PyTorch的调用过程是这样的:

1
2
3
4
5
PyTorch 调用 CUDA Runtime

CUDA Runtime 调用 GPU Driver

Driver 把任务发给 GPU 执行
2. cuDNN

cuDNN 是 NVIDIA 提供的深度神经网络加速库,基于 CUDA 构建。它提供了高性能的卷积、池化、归一化等操作。它的内部调用逻辑是:

1
2
3
4
5
如果可用 → 调用 cuDNN

如果不可用 → 回退到 CUDA 自己的实现

再不行 → CPU 实现

也就是说cuDNN并不是必须的,但是有它会大幅提升性能。

3. PyTorch

PyTorch 是一个流行的深度学习框架。它负责:

  • 张量计算
  • 自动求导(Autograd)
  • 神经网络模块
  • 调度 CPU / GPU 执行

1. CUDA安装

1. 下载安装CUDA Toolkit

直接上官网:https://developer.nvidia.com/cuda-toolkit-archive
选择对应的版本下载即可。
.deb 可以允许驱动和CUDA分开apt安装,但是流程会长很多。.run 文件则是一个应用安装程序,简单粗暴,但是要注意不要把驱动覆盖掉了。

2. 设置环境变量

安装完成后,需要设置环境变量。在 ~/.bashrc 中添加:

1
2
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

然后执行 source ~/.bashrc 使其生效。

3. 验证安装

可以通过以下命令验证CUDA是否安装成功:

1
nvcc -V
4. 多版本CUDA管理

核心思路就是,正常的安装多个版本的CUDA,然后通过修改环境变量来切换版本。

2. PyTorch安装

1
pip install torch==version --index-url https://download.pytorch.org/whl/cu128

此外,还有两个经常一同出现的库:

  • torchvision:计算机视觉相关工具库
  • torchaudio:音频处理相关工具库

2. python环境管理补充

一般来说,深度学习环境会使用Python虚拟环境来隔离依赖。我们有很多中方法来管理虚拟环境,比如venv, condauv等。
conda 特别适合处理包括非纯Python包在内的复杂依赖,因此在深度学习中被广泛使用,但是它比较笨重,而且是不可商用的。

2.1 uv环境管理

uv 是一个轻量级的Python虚拟环境管理工具。其本质是一个更快更现代的 pip+venv 组合。安装和使用都非常简单。

安装uv

1
curl -LsSf https://astral.sh/uv/install.sh | sh

快速使用

1
2
3
uv venv .venv
source .venv/bin/activate
uv pip install <package>

这样就是创建并进入了一个名为.venv的虚拟环境,并安装了指定的包。基本等同于 venv 的管理,没有用到uv包的版本管理功能。

带版本的环境管理

1
2
3
4
5
6
7
# 生成pyproject.toml文件
uv init
uv venv .venv --python 3.10
uv add <package>
uv add -dev <dev-package>
uv run python <script.py>
uv sync

这样,uv 就会把所有依赖记录在 pyproject.toml 文件中,方便后续的环境重现和管理。
例如,我们可以通过 uv sync 来安装 pyproject.toml 中记录的所有依赖。

uv 不会管理或者创建 python,而是去使用系统中的 python 版本。
uv venv -p pythonX.Y 也只是告诉 uv 去使用哪个版本的 python 来创建虚拟环境。