在调试前,需确保环境稳定且工具齐全。首先,通过conda或venv创建虚拟环境,隔离项目依赖(如conda create -n pytorch_env python=3.8; conda activate pytorch_env)。其次,安装PyTorch时需匹配CentOS系统的CUDA版本(通过nvidia-smi查看),例如CUDA 12.1对应conda install pytorch torchvision torchaudio cudatoolkit=12.1 -c pytorch。此外,安装调试工具:ipdb(增强版pdb,支持语法高亮)通过pip install ipdb安装,IDE(如PyCharm、VSCode)需配置Python解释器指向虚拟环境。
import ipdb; ipdb.set_trace(),运行脚本后程序会在断点处暂停。常用命令:l(查看当前代码上下文)、n(执行下一行)、s(进入函数)、p 变量名(打印变量值)、c(继续执行)。ipdb相比pdb支持语法高亮,交互体验更佳。logging模块记录程序运行状态(如损失值、批次信息),配置示例:logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', filename='app.log', filemode='a')。也可结合PyTorch的SummaryWriter将数据可视化(如损失曲线),通过tensorboard --logdir=runs启动TensorBoard查看。tensor.shape)、自动微分(requires_grad=True)、模块(nn.Module)和训练循环(前向传播→计算损失→反向传播→更新参数)是调试的基础,多数错误源于对这些概念的误解。DataLoader)中添加try-except捕获异常,确保数据预处理(如归一化、Resize)正确。tensor.shape打印输入、输出及参数形状,或用torchinfo.summary(model, input_size=(batch_size, channels, height, width))打印模型整体结构,快速定位维度不符的位置。torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)裁剪梯度,或调整学习率(如降低至0.001)缓解。使用cProfile分析代码性能瓶颈(如cProfile.run('my_function()')),或用PyTorch自带的torch.autograd.profiler分析自动微分计算时间(如with torch.autograd.profiler.profile(use_cuda=True) as prof:)。通过分析结果优化耗时操作(如减少不必要的张量拷贝、使用更高效的层)。