4、深度学习框架安装(PyTorch):PyTorch 2.0+ 安装(CPU/GPU版本)、CUDA与cuDNN版本匹配、验证安装与简单张量运算、常见安装报错与解决

好,咱们进入第四章。前面把系统、Python、依赖库都捋顺了,现在轮到主角——PyTorch。说实话,PyTorch 的安装本身不难,难的是版本匹配。我见过太多人卡在这一步,装完跑不起来,一查全是 CUDA 和 PyTorch 版本对不上。

这一章,咱们就把 PyTorch 2.0+ 的安装彻底讲透。CPU 版、GPU 版、CUDA 怎么选、cuDNN 怎么配、装完怎么验证、报错了怎么救。你跟着我的节奏走,基本不会出问题。

4.1 PyTorch 2.0+ 版本选择:CPU 还是 GPU?

先问自己一个问题:你的机器有没有 NVIDIA 显卡?

  • 有显卡(且支持 CUDA):必须装 GPU 版本。工业缺陷检测模型推理和训练都依赖 GPU 加速,CPU 版跑一个 ResNet 都能让你等到怀疑人生。
  • 没显卡 / 显卡太老(比如 GTX 7xx 系列):装 CPU 版本。或者考虑用云 GPU、边缘计算盒子。
  • 有显卡但显存小(4GB 以下):GPU 版可以装,但训练大模型会爆显存。推理小模型(比如 MobileNet)没问题。
我的建议: 只要条件允许,一律上 GPU 版本。哪怕你暂时只用 CPU 调试,装 GPU 版也能在 CPU 上 fallback 运行。反过来不行——CPU 版用不了 GPU。

4.2 CUDA 与 cuDNN 版本匹配——这是最容易踩坑的地方

PyTorch 2.0+ 对 CUDA 版本有明确要求。我直接给你一张对照表,省得你去官网翻。

PyTorch 版本 支持的 CUDA 版本 推荐的 cuDNN 版本 备注
2.0.x 11.7 / 11.8 8.5.0 或 8.6.0 最稳定组合
2.1.x 11.8 / 12.1 8.7.0 或 8.9.0 推荐 11.8 + cuDNN 8.7
2.2.x 11.8 / 12.1 8.9.0 或 9.0.0 12.1 开始支持 cuDNN 9.x
2.3.x 11.8 / 12.1 / 12.4 8.9.0 / 9.1.0 最新版,建议 12.1
我曾经踩过的坑: 有一次我装了 PyTorch 2.1.0,但 CUDA 是 12.0(不在支持列表里)。结果训练到一半直接报 CUDA error: no kernel image is available。折腾了两天才发现是版本不匹配。所以,一定先查 PyTorch 官方支持的 CUDA 版本,再装驱动。

4.3 安装步骤(GPU 版本为例)

咱们以 PyTorch 2.1.0 + CUDA 11.8 为例。这是目前工业界最稳的组合之一。

步骤 1:确认 NVIDIA 驱动与 CUDA 版本

先看看你机器上有没有驱动:

nvidia-smi

如果输出里能看到 GPU 型号和驱动版本,说明驱动已装。再看 CUDA 版本:

nvcc --version

如果没装 CUDA Toolkit,或者版本不对,去 NVIDIA 官网下载对应版本。我个人习惯用 runfile 方式安装,干净、可控。

步骤 2:安装 cuDNN

cuDNN 是 CUDA 的深度学习加速库。下载需要注册 NVIDIA 账号,但值得。

  1. 去 NVIDIA cuDNN 页面下载对应 CUDA 11.8 的 cuDNN 8.6.0。
  2. 解压后把文件复制到 CUDA 安装目录:
# 假设 CUDA 安装在 /usr/local/cuda-11.8
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-11.8/include/
sudo cp cudnn-*-archive/lib/libcudnn* /usr/local/cuda-11.8/lib64/
sudo chmod a+r /usr/local/cuda-11.8/include/cudnn*.h /usr/local/cuda-11.8/lib64/libcudnn*

步骤 3:创建虚拟环境并安装 PyTorch

conda create -n pytorch21 python=3.10 -y
conda activate pytorch21

# 安装 PyTorch 2.1.0 + CUDA 11.8
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118
为什么用 pip 而不是 conda? 我个人经验,conda 的 PyTorch 包有时会滞后,而且依赖解析容易出问题。pip 直接从 PyTorch 官方源拉,版本准、速度快。当然,如果你在离线环境,提前下载 whl 文件再 pip install 也行。

4.4 验证安装与简单张量运算

装完别急着跑模型。先做三件事验证:

验证 1:PyTorch 能否正常导入

python -c "import torch; print(torch.__version__)"

输出应该是 2.1.0 或你装的版本。

验证 2:CUDA 是否可用

python -c "import torch; print(torch.cuda.is_available())"

输出 True 说明 GPU 可用。如果 False,检查 CUDA 版本是否匹配、cuDNN 是否装对。

验证 3:简单张量运算

跑一段代码,看看 GPU 能不能真正干活:

import torch

# 在 GPU 上创建张量
x = torch.randn(3, 3).cuda()
y = torch.randn(3, 3).cuda()
z = x + y

print("x:", x)
print("y:", y)
print("x + y:", z)
print("Device:", z.device)

如果输出显示 Device: cuda:0,恭喜你,环境搭好了。

4.5 常见安装报错与解决

这部分是我从实际项目中攒下来的。你遇到问题直接来查。

报错信息 原因 解决方法
CUDA error: no kernel image is available PyTorch 与 CUDA 版本不匹配 卸载 PyTorch,安装与 CUDA 匹配的版本
ImportError: libcudart.so.11.0: cannot open shared object file CUDA 库路径未设置 添加 export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
RuntimeError: CUDA out of memory 显存不足 减小 batch size,或使用 torch.cuda.empty_cache()
pip install 超时或下载慢 网络问题 使用国内镜像源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch==2.1.0
torch.cuda.is_available() 返回 False 驱动未装 / 版本不对 / cuDNN 缺失 依次检查:nvidia-smi → nvcc --version → cuDNN 文件是否存在
避坑指南: 我曾经在客户现场遇到一个诡异问题——torch.cuda.is_available() 返回 True,但一跑模型就报 CUDA error: device-side assert triggered。查了两天,最后发现是 cuDNN 版本和 PyTorch 不兼容。所以,cuDNN 版本一定要在 PyTorch 官方推荐的列表里,别自己乱试。

4.6 本章知识结构图

下面这张图帮你理清整个安装流程和关键决策点:

PyTorch 安装决策与流程 PyTorch 2.0+ 安装流程与版本匹配决策 开始安装 有 NVIDIA GPU? 选择 CUDA 版本(查官方支持表) 安装匹配的 cuDNN pip 安装 PyTorch GPU 版 验证:cuda.is_available() 环境就绪 关键决策点: • 有 GPU → GPU 版 • 无 GPU → CPU 版 • 版本匹配是核心 常见报错根源: • CUDA 版本不匹配 • cuDNN 缺失/版本错 • 驱动未装

嗯,到这里 PyTorch 环境就搭好了。你可能会问:装完是不是就能直接跑模型了?别急,下一章咱们要处理工业缺陷检测特有的依赖——比如图像增强库、ONNX 导出工具、TensorRT 的集成。这些才是真正让模型在产线上跑起来的关键。

不过那是后话。先把 PyTorch 装稳,跑通张量运算,你就算过了第一关。