CentOS 上 PyTorch 出错的快速排查与修复
一 快速自检与环境验证
python3 --version。python3 -m venv venv && source venv/bin/activate 或 conda create -n torch-env python=3.10 -y && conda activate torch-env。python -c "import torch; print('torch==', torch.__version__)"python -c "import torch; print('cuda available:', torch.cuda.is_available())"lspci | grep -i nvidia;如需 CUDA,确保驱动与库路径正确并配置环境变量(见下文)。二 常见错误与对应修复
pip --default-timeout=100 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple/。pip --no-cache-dir install torch。sudo pip。tensor.shape、使用断点定位。torch.cuda.empty_cache()。torch.cuda.is_available() 判定;若不可用,检查驱动、CUDA/cuDNN 与 PyTorch 版本匹配,以及环境变量是否设置。Segmentation fault 或 libstdc++.so.6: version 'CXXABI_1.3.11' not found:在 Conda 环境中升级编译器并替换高版本 libstdc++,例如conda install gcc_linux-64 gxx_linux-64,然后将高版本 libstdc++.so.6.0.25 拷入 Conda 环境的 lib/ 目录并重建软链接。sudo setenforce 0 排查,必要时在 /etc/selinux/config 中设为 SELINUX=permissive 并重启(生产环境谨慎)。三 GPU 与 CUDA 专项排查
nvidia-smi 可查看驱动与 GPU 状态。export PATH=/usr/local/cuda/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATHpython -c "import torch; print('cuda:', torch.cuda.is_available(), 'device_count:', torch.cuda.device_count())"。四 高效调试与定位技巧
import ipdb; ipdb.set_trace()。logging 记录关键变量与异常堆栈;训练过程用 TensorBoard 观察损失/指标与图结构。cProfile 或 torch.autograd.profiler 定位耗时算子与数据加载瓶颈。try-except 打印上下文信息,便于快速定位问题源头。五 最小复现与求助模板
debug.py):import torch, logging, sys
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
logging.info(f"torch=={torch.__version__}")
logging.info(f"cuda available: {torch.cuda.is_available()}")
if torch.cuda.is_available():
logging.info(f"device count: {torch.cuda.device_count()}")
try:
x = torch.randn(2, 3).cuda()
y = torch.randn(2, 3).cuda()
z = x + y
logging.info(f"add ok, z.shape={z.shape}")
except Exception as e:
logging.exception("Error during torch operation")
sys.exit(1)
python --versionpip list | grep torch 或 conda list torchnvidia-smi(如有 GPU)python debug.py 的输出~/.bashrc 中的 PATH/LD_LIBRARY_PATH)与错误堆栈