Debian上PyTorch内存不足的排查与优化
一 快速定位与系统层面处理
二 训练阶段的高效内存优化
三 多卡与分布式扩展
四 大模型与推理场景的补充策略
五 最小可用配置示例
训练脚本骨架(AMP + 梯度累积 + 检查点示例)
from torch.utils.data import DataLoader
from torch.cuda.amp import autocast, GradScaler
import torch.utils.checkpoint as checkpoint
model.train(); optimizer.zero_grad()
scaler = GradScaler()
accumulation_steps = 8
for i, (x, y) in enumerate(train_loader):
x, y = x.cuda(), y.cuda()
with autocast():
out = model(x); loss = criterion(out, y)
scaler.scale(loss / accumulation_steps).backward()
if (i + 1) % accumulation_steps == 0:
scaler.step(optimizer); scaler.update(); optimizer.zero_grad()
# 视需要插入:torch.cuda.empty_cache()
运行前建议的环境变量(放在启动 Python 前)
若仍 OOM:优先将 batch_size 减半,再启用 梯度检查点;推理/微调大模型时考虑 LoRA/4-bit。