在調試前,需確保環境穩定且工具齊全。首先,通過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:)。通過分析結果優化耗時操作(如減少不必要的張量拷貝、使用更高效的層)。