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)没问题。
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 |
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 账号,但值得。
- 去 NVIDIA cuDNN 页面下载对应 CUDA 11.8 的 cuDNN 8.6.0。
- 解压后把文件复制到 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
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 环境就搭好了。你可能会问:装完是不是就能直接跑模型了?别急,下一章咱们要处理工业缺陷检测特有的依赖——比如图像增强库、ONNX 导出工具、TensorRT 的集成。这些才是真正让模型在产线上跑起来的关键。
不过那是后话。先把 PyTorch 装稳,跑通张量运算,你就算过了第一关。