本节摘要:用 CPU 学习没问题,但真要训练模型,你得有 GPU。第 13 章的大多数课在 CPU 上跑得动;可一旦进入 CNN、Transformer、LLM(第 4 章及以后),GPU 加速就是刚需——一段在 CPU 上要 8 小时的训练,在 GPU 上只要 10 分钟。本节带你理清三条路:本地 NVIDIA GPU(零成本但要装 CUDA/cuDNN)、Google Colab 免费 T4(零配置适合快速实验)、云端租 GPU(Lambda、RunPod、Vast.ai,约 0.202.00 美元/小时)。我们会用
nvidia-smi和 PyTorch 的 CUDA API 验证 GPU 是否就位,跑一遍 CPU vs GPU 的矩阵乘法基准测试看实际加速比,并用「fp16 每参数 2 字节」这条经验法则估算你的显存(VRAM)能塞下多大的模型。
对应原课程:Phase 00 · Lesson 03 ·
gpu-setup-and-cloud(原英文phases/00-setup-and-tooling/03-gpu-setup-and-cloud/docs/en.md)。前置:第 01 节「开发环境」。
阅读完本节,你应当能够:
nvidia-smi 与 PyTorch 的 CUDA API 验证本地 GPU 是否可用,并读出显存容量。第 1~3 章的多数课在 CPU 上跑得动。但开始训练 CNN、Transformer、LLM(第 4 章起)时,GPU 加速就成了刚需。一段 CPU 上 8 小时的训练,GPU 上只要 10 分钟——这不仅是「快一点」,而是「能跑」与「不能跑」的差别。
你有三条路可选:
你的选项: 1. 本地 NVIDIA GPU 成本: $0(你已经有了) 配置: 装 CUDA + cuDNN 最适合: 日常使用、大数据集训练 2. Google Colab(免费额度) 成本: $0 配置: 无需配置 最适合: 快速实验、家里没 GPU 3. 云端 GPU(Lambda、RunPod、Vast.ai) 成本: $0.20~2.00 / 小时 配置: SSH + 自行安装 最适合: 严肃训练、大模型
💡 选型心法:短期/偶尔用 → Colab,长期/高频用 → 云端按小时,天天用且量大 → 自己买卡。这三条不是非此即彼,很多人是「本地小卡 + Colab + 偶尔租大卡」三件套。
先确认你有卡:
nvidia-smi
输出里能看到 GPU 型号、驱动版本、显存占用。然后装好 CUDA 版的 PyTorch 并验证:
import torch print(torch.cuda.is_available()) # True 才说明 CUDA 通了 print(torch.version.cuda) if torch.cuda.is_available(): print(torch.cuda.get_device_name(0)) # GPU 型号 print(torch.cuda.get_device_properties(0).total_memory / 1e9, "GB")
⚠️ 设计警示:
torch.cuda.is_available()返回False,九成是装的 PyTorch 是 CPU-only 版,或驱动版本太老。重装时务必带正确的--index-url .../cuXXX(见第 01 节)。
!nvidia-smi 验证。本课程的 notebook 可以直接传到 Colab 上跑。免费额度每天有数小时 GPU,够绝大多数学习用。
Lambda Labs、RunPod、Vast.ai 这类平台按小时租卡,SSH 上去就是一台带 GPU 的 Linux:
ssh user@your-gpu-instance pip install torch torchvision torchaudio python -c "import torch; print(torch.cuda.get_device_name(0))"
大多数课在 CPU 上能跑;少数必须用 GPU 的课,会在正文里明确说明并附上 Colab 链接。代码层面,写一段自动选设备的逻辑即可:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(f"Using: {device}")
这段代码会贯穿整本教程——所有 PyTorch 课都靠它适配「有卡/无卡」两种环境。
5000×5000 的随机矩阵乘法,分别在 CPU 与 GPU 上跑,比较耗时(见原课程 code/ 完整脚本):
import torch, time size = 5000 a_cpu = torch.randn(size, size) b_cpu = torch.randn(size, size) start = time.time() c_cpu = a_cpu @ b_cpu cpu_time = time.time() - start if torch.cuda.is_available(): a_gpu, b_gpu = a_cpu.to("cuda"), b_cpu.to("cuda") torch.cuda.synchronize() # 关键:GPU 异步,必须同步再计时 start = time.time() c_gpu = a_gpu @ b_gpu torch.cuda.synchronize() gpu_time = time.time() - start print(f"加速比: {cpu_time / gpu_time:.0f}x")
设计要点:计 GPU 时一定要
torch.cuda.synchronize()——CUDA 调用是异步的,不同步就直接读到错误的耗时。这是新手最常踩的坑,会让「GPU 看起来快 1000 倍」假象。真实加速比通常在 10~100 倍之间,取决于矩阵大小与卡型。
经验法则:fp16 精度下,每个参数约占 2 字节。所以:
| 维度 | 本地 GPU | Colab 免费 | 云端租卡 |
|---|---|---|---|
| 成本 | 已有则 $0,新买贵 | $0 | $0.20~2.00/小时 | |
| 配置门槛 | 高(装驱动/CUDA) | 零 | 中(SSH + 装 Python) |
| 适合 | 长期高频 | 偶尔实验 | 严肃训练 |
| 显存上限 | 取决于你的卡 | T4 = 16 GB | 可选到 80 GB+ |
| 数据隐私 | 全本地 | 上传 Google | 取决于平台 |
| 断线影响 | 无 | 会话会断 | 看你买的是不是竞价实例 |
💡 Tensor Core(张量核心) 是 NVIDIA 卡里专门做矩阵乘的硬件单元,比普通核心快 4~8 倍。GPU 训练快,很大一部分功劳来自它——这也是为什么大模型训练几乎清一色用 fp16/bf16(张量核心在这些精度下吞吐最高)。
本节产出两个可复用件(原课程 outputs/ 与 code/):
device-picker 代码片段:那段 torch.device("cuda" if ... else "cpu") 的自动选设备逻辑,所有 PyTorch 课通用,建议放进自己的代码片段库。gpu-benchmark.py:一段独立的 CPU/GPU 矩阵乘基准测试脚本,新机器或新卡到手时一跑就知道性能量级。nvidia-smi + torch.cuda.is_available() 是验证 GPU 就位的标准两连。torch.cuda.synchronize(),否则读到假数据。torch.device("cuda" if ... else "cpu") 这段代码贯穿全教程。下一节,我们将进入「API 与密钥」——把外部 LLM 与云服务的访问凭证安全地管起来,为调用 GPT、Claude 等模型做好准备。