Ubuntu 环境下 PyTorch 调试技巧
一 环境与安装快速自检
which python、which pip;必要时用 python -m pip 安装以避免路径错配。python -c "import torch; print(torch.__version__)"python -c "import torch; print('CUDA available:', torch.cuda.is_available())"nvidia-smi 查看驱动与 CUDA 运行时;确保 PyTorch 与系统 CUDA/cuDNN 版本匹配,避免“能导入 torch 但 CUDA 不可用”。sudo apt install -y libgl1 libglib2.0-0 ffmpeg;pip 安装慢可换国内镜像源加速。二 Python 层调试与日志
launch.json 解释器为当前虚拟环境。import pdb; pdb.set_trace(),使用 n/s/l/p/c 等命令单步、打印与继续。torch.autograd.set_detect_anomaly(True) 定位反向传播中的异常来源(如原地操作、数值不稳定)。assert 与自定义日志快速验证张量形状、设备与类型一致性。conda install tensorboard 或 pip install tensorboard,启动命令如 tensorboard --logdir logs --port 6006。torch.utils.bottleneck 识别训练循环中的热点函数。三 GPU 与分布式问题定位
model.to(device); data = data.to(device)。nvidia-smi 与 torch.cuda.is_available() 双保险;若驱动或 CUDA 不匹配,按官网匹配版本重装对应 PyTorch 包。num_workers 设为 0 以排除多进程导致的异常;定位完成后再逐步调大并配合 pin_memory=True 提升吞吐。torch.cuda.empty_cache();可用 torch.utils.bottleneck 辅助分析数据加载与计算瓶颈。GradScaler 稳定收敛。四 性能分析与瓶颈定位
nvidia-smi(GPU 利用率、显存、温度)与系统监控(如 htop),先确认是否为 GPU 计算受限或数据加载受限。torch.utils.bottleneck.analyze(train_fn) 给出数据加载与运算的热点分布,优先优化最慢环节。num_workers、开启 pin_memory、使用更快的解码库(如 jpeg4py/turbojpeg)、预取与并行增强,减少 GPU 空转。五 C++ 源码级与常见报错速查
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}DEBUG=1 python setup.py build develop(按需增减 USE_CUDA/USE_CUDNN 等开关)num_workers 设为 0。tensorboard 组件。