在 CentOS 上运行 PyTorch 慢,通常不是 PyTorch 本身的问题,而是环境或配置因素导致的。下面从最常见原因到排查方法给你系统梳理一下。
这是最容易踩的坑。
检查:
python -c "import torch; print(torch.cuda.is_available())"
False → 你在用 CPUTrue → 正常使用 GPU✅ 解决:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
CentOS 7 默认:
PyTorch 会自动降级到慢路径。
检查 CPU 指令集:
lscpu | grep -E "avx|fma"
✅ 解决:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
CentOS 自带 Python 2/3 很老,兼容差。
✅ 建议:
conda 或 pyenvpip install 到 /usr症状:
✅ 优化:
DataLoader(..., num_workers=8, pin_memory=True)
CentOS 上:
num_workers 一般 = CPU 核心数PyTorch 默认会开很多线程,反而变慢。
查看:
import torch
print(torch.get_num_threads())
✅ 建议:
export OMP_NUM_THREADS=8
export MKL_NUM_THREADS=8
很多人写着:
model = MyModel() # ❌ CPU
✅ 正确:
model = MyModel().cuda()
x = x.cuda()
少见但存在,尤其是:
✅ 排查:
getenforce
✅ 用:
nvidia-smi
htop
iostat
# 1. GPU 是否可用
python -c "import torch; print(torch.cuda.is_available())"
# 2. PyTorch 版本
python -c "import torch; print(torch.__version__)"
# 3. CPU 指令
lscpu | grep avx
# 4. GPU 利用率
watch -n 1 nvidia-smi
你可以直接贴:
torch.__version__nvidia-smi 输出我可以精准定位是哪一类问题。