核心要点

  • CUDA 是 NVIDIA 的 GPU 通用并行计算平台,含驱动、运行时、编译器及 cuBLAS/cuDNN 等加速库

  • PyTorch 通过 torch.cuda 后端把张量和算子放到 GPU 上执行,矩阵乘、卷积等底层调用 cuBLAS/cuDNN,相比 CPU 可有 10~100 倍加速

  • 会用 torch.cuda.is_available() 判断、用 .to(device) 把模型和数据搬到 GPU(两者必须在同一设备)

  • 了解多卡训练优先用 DistributedDataParallel 而非 DataParallel,AMD 走 ROCm、Apple 走 MPS

标准回答

CUDA(Compute Unified Device Architecture)是 NVIDIA 提供的 GPU 通用并行计算平台,含驱动、运行时、C/C++ 编译器及 cuBLAS、cuDNN 等库。

与 PyTorch 的关系

  • PyTorch 的 torch.cuda 模块封装 CUDA API,在 GPU 上执行 张量 运算
  • 核心算子(矩阵乘、卷积)调用 cuBLAS/cuDNN 高度优化
  • 训练大模型时 GPU 相对 CPU 可有 10~100× 加速

基本用法

python
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
x = x.to(device)

注意:需安装与 PyTorch 版本匹配的 CUDA 驱动;多卡用 cuda:0DistributedDataParalleltorch.backends.cudnn.benchmark = True 可优化固定输入尺寸的卷积。

CPU 训练仅适合小实验;深度学习 工业化几乎依赖 GPU/TPU。AMD 用 ROCm,Apple 用 MPS 后端。

常见误区

⚠️ 常见踩坑

有 GPU 却忘记 .to(device) 导致训练仍在 CPU;混淆 CUDA 版本与 cuDNN 版本;多卡 DataParallel 瓶颈未改用 DDP

追问

追问 1PyTorch 安装的 CUDA 版本和系统驱动关系?

pip/conda 装的 PyTorch 自带匹配版本的 CUDA 运行时(toolkit),所以本机无需单独装 CUDA toolkit;但仍需系统装有足够新的 NVIDIA 显卡驱动。关系是:驱动需 ≥ 该 CUDA 运行时要求的最低版本(向后兼容),驱动太旧会报 CUDA error。用 nvidia-smi 看驱动支持的最高 CUDA,用 torch.version.cuda 看 PyTorch 绑定的版本。

追问 2多 GPU 训练有哪些方式?

主要有数据并行和模型并行。数据并行最常用:每张卡放一份完整模型、各处理一部分 batch,再同步梯度——首选 DistributedDataParallel(每进程一卡,通信用 all-reduce,扩展性好),不推荐已较慢的 DataParallel(单进程多线程、主卡瓶颈)。模型放不下单卡时用模型/流水线并行或 FSDP/ZeRO 分片参数。

追问 3cuDNN 是什么?

cuDNN 是 NVIDIA 面向深度学习的 GPU 加速库,为卷积、池化、归一化RNN注意力等常见算子提供高度优化的实现。PyTorch 卷积等算子底层就调用它。设 torch.backends.cudnn.benchmark=True 会让它在输入尺寸固定时自动搜索最快卷积算法(首批迭代略慢、之后更快);尺寸频繁变化时反而不划算,且会牺牲一点可复现性。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • Pytorch

    Meta 开源的深度学习框架,100K+ stars。以动态计算图和 Pythonic 风格著称,在学术界和工业界都有广泛应用,支持分布式训练、移动端部署和 ONNX 导出

  • Tensorflow

    全球最流行的机器学习框架之一,195K+ stars。Google 开源的端到端 ML 平台,支持 TensorFlow、Keras 等多种 API,覆盖深度学习、强化学习、移动端部署等全场景,是 AI 工程师的必备工具