在 CentOS 上 PyTorch 训练/推理慢,通常不是单一原因,而是硬件、驱动、环境、代码多个层面叠加。下面按优先级给你一套可落地的优化清单。
nvidia-smi
看:
import torch
print(torch.cuda.is_available())
如果是 False:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
numactl --hardware
如果是多 CPU:
export OMP_NUM_THREADS=8
ulimit -n 65535
perf 或 htop 看 CPU 是否成为瓶颈DataLoader(
dataset,
batch_size=64,
num_workers=8,
pin_memory=True,
prefetch_factor=4
)
num_workers=0LMDB / WebDatasetfrom torch.cuda.amp import autocast, GradScaler
scaler = GradScaler()
with autocast():
output = model(x)
loss = criterion(output, y)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
✅ 提速 30%~2x,显存减半
torch.compile(PyTorch 2.x)model = torch.compile(model)
cudnn.benchmarktorch.backends.cudnn.benchmark = True
.item() / .cpu()❌ 非常慢:
loss.item()
✅ 每 N 步再取一次
torchrun --nproc_per_node=4 train.py
model = DistributedDataParallel(model, device_ids=[local_rank])
CentOS 7 常见问题:
conda create -n torch python=3.10
conda install pytorch torchvision pytorch-cuda=11.8 -c pytorch
| 项目 | 状态 |
|---|---|
| GPU 可用 | ✅ |
| CUDA 匹配 | ✅ |
| num_workers > 0 | ✅ |
| AMP 开启 | ✅ |
| torch.compile | ✅ |
| 数据在本地 SSD | ✅ |
你可以直接贴:
我可以直接帮你定位瓶颈点。