在 Linux + PyTorch 环境下,加速训练/推理通常可以从硬件、系统、PyTorch 配置、代码层面四个方向入手。下面给你一份实用清单(按性价比排序)。
nvidia-smi
python -c "import torch; print(torch.cuda.is_available())"
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
x = x.to(device)
torch.cuda.amp(混合精度)scaler = torch.cuda.amp.GradScaler()
with torch.cuda.amp.autocast():
out = model(x)
loss = criterion(out, y)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
✅ 通常可提速 30%~2x,显存减半
num_workersDataLoader(dataset, batch_size=64, num_workers=8, pin_memory=True)
num_workers ≈ CPU 核心数pin_memory=True(GPU 训练必开).npy / .pt)WebDataset / LMDBtorch.backends 开启torch.backends.cudnn.benchmark = True
torch.backends.cudnn.enabled = True
⚠️ 输入尺寸固定时效果最好
torch.compile(PyTorch 2.0+)model = torch.compile(model)
✅ A100 / 3090 上常提速 10%~30%
ConvNeXt / EfficientNet / ViTfor 循环torch.nn.functional.item() / .cpu() 调用torchrun --nproc_per_node=4 train.py
model = torch.nn.parallel.DistributedDataParallel(model)
✅ 接近线性加速
适合大模型训练
sudo cpupower frequency-set -g performance
ulimit -n 65535
torch.jit.tracetorch.cuda.graphsmodel.to(cuda)DataLoader(num_workers, pin_memory)cudnn.benchmark=Trueamp / torch.compile如果你愿意,可以告诉我:
我可以给你更针对性的加速方案。