在 Linux 上使用 PyTorch 时出现显存不足(CUDA out of memory),通常不是“Linux 的问题”,而是GPU 显存被占满或模型/数据太大导致的。下面按常见原因 → 排查方法 → 解决办法来说明。
batch_size 设置过大✅ 表现:
RuntimeError: CUDA out of memory. Tried to allocate ...
Linux 是多用户系统,可能:
✅ 查看:
nvidia-smi
你会看到类似:
Processes:
| GPU | PID | Process name | GPU Memory |
即使总显存够,但连续空间不够也会报错。
✅ 常见于:
PyTorch 会缓存显存,看起来“占满”,其实可能没在用。
.cuda() 或 device 搞错有时:
nvidia-smi
释放进程:
kill -9 PID
import torch
print(torch.cuda.memory_summary())
import torch
x = torch.randn(1000,1000).cuda()
print(torch.cuda.memory_allocated())
如果这也炸 → 环境/驱动问题
batch_size = 8 # 改成 2 或 1
from torch.cuda.amp import autocast
with autocast():
output = model(input)
loss.backward()
if step % accum_steps == 0:
optimizer.step()
optimizer.zero_grad()
torch.cuda.empty_cache()
⚠️ 不能“凭空”腾显存,只是整理碎片
export CUDA_VISIBLE_DEVICES=0
torch.compile()gradient_checkpointing| 情况 | 说明 |
|---|---|
| 服务器共享 GPU | 很容易别人占满 |
| 无桌面环境 | 显存不会被 Xorg 占 |
| 容器/Docker | 可能限制 GPU 显存 |
| 多卡 | 默认可能全占 |
你可以补充:
我可以直接帮你算显存够不够,或给你针对性改法。