在 CentOS 上跑 PyTorch 卡(卡顿、慢、无响应等),一般可以从系统环境、CUDA、PyTorch 配置、资源占用、代码本身几个方向排查。下面按“先快后慢”的思路给你一套排查和解决方法。
top
# 或
htop
重点关注:
如果内存爆了:
torch.utils.data.DataLoader(num_workers=...) 控制线程很多人“以为在用 GPU,其实在跑 CPU”。
import torch
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.cuda.get_device_name(0))
如果是 False:
nvidia-smi
如果报错:
NVIDIA-SMI has failed → 驱动没装或内核不匹配禁用 nouveau:
echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/disable-nouveau.conf
reboot
比如:
查看 PyTorch CUDA:
torch.version.cuda
不匹配就重装:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
CentOS 上常见原因:
num_workers > 0 但用了 incompatible 的 fork调试方法:
train_loader = DataLoader(..., num_workers=0)
如果能跑,就说明是 num_workers 的问题。
解决:
num_workerstorch.multiprocessing.set_start_method('spawn')
PyTorch 在 CentOS 上第一次:
可设置:
torch.backends.cudnn.benchmark = True
(前提是输入 size 固定)
cpupower frequency-info
cpupower frequency-set -g performance
数据在机械盘或 NFS 上会非常卡:
iostat -x 1
建议:
/dev/shmnvidia-smi 能看见 GPU 吗?torch.cuda.is_available() 是 True 吗?nvidia-smi 里显存和利用率在动吗?num_workers=0 是否变快?你可以直接贴:
cat /etc/redhat-release)nvidia-smi 输出我可以直接告诉你“这一步该改哪一行”。