PyTorch启用GPU加速需先确认CUDA环境可用,再将模型和数据显式移至GPU,训练中注意设备一致性,进阶可选DataParallel、DDP或多卡混合精度训练。

PyTorch 默认在 CPU 上运行,要利用 GPU 加速训练,关键在于把模型和数据都移到 GPU 上,并确保环境支持 CUDA。只要显卡驱动、CUDA 和 PyTorch 版本匹配,几行代码就能启用 GPU 加速。
确认 GPU 和 CUDA 环境是否可用
运行以下代码检查 PyTorch 是否能识别 GPU:
import torch
print(torch.cuda.is_available()) # 应输出 True
print(torch.cuda.device_count()) # 查看可用 GPU 数量
print(torch.cuda.get_current_device()) # 当前默认设备编号
print(torch.cuda.get_device_name(0)) # 显卡型号,如 'NVIDIA RTX 4090'
如果输出 False,需检查:显卡驱动是否安装(nvidia-smi 可查)、CUDA Toolkit 是否安装、PyTorch 是否为 GPU 版(用 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 这类带 cuXXX 的链接安装)。
立即学习“Python免费学习笔记(深入)”;
把模型和数据迁移到 GPU
GPU 加速不是自动的,必须显式移动:
- 模型:用
model.to('cuda')或model.cuda() - 输入数据(tensor):用
x = x.to('cuda')或x = x.cuda() - 标签同理:
y = y.to('cuda')
注意:模型和数据必须在同一个设备上,否则会报错 Expected all tensors to be on the same device。推荐统一用 'cuda' 字符串写法,便于后续切换设备(如改成 'cpu' 调试)。
训练循环中保持 GPU 操作一致性
常见错误是在计算 loss 或评估时忘了把中间变量或指标送回 CPU:
- loss 是标量 tensor,打印前建议用
loss.item()(自动转 CPU 标量) - 准确率等指标若含 tensor 运算(如
(pred == y).sum()),结果仍是 GPU tensor,要先.item()或.cpu().item()再记录或打印 - 避免在训练中频繁调用
.cpu()或.numpy(),这会触发同步阻塞,拖慢速度
进阶技巧:多 GPU 和混合精度训练
单卡加速满足大多数需求;若想进一步提速:
-
DataParallel(简单并行):适合快速启用多卡,
model = torch.nn.DataParallel(model),但只支持单机多卡且效率不如 DDP - DDP(DistributedDataParallel):推荐用于多卡/多机训练,需启动多个进程,吞吐更高、更灵活
-
AMP(自动混合精度):用
torch.cuda.amp可减少显存占用、提升训练速度,尤其对大模型效果明显,只需加几行上下文管理器代码









