import pdb; pdb.set_trace()
在代碼中設置斷點,運行腳本后進入交互模式,支持n
(下一步)、c
(繼續)、p <變量>
(打印變量)、l
(查看上下文代碼)等命令,適合快速定位代碼邏輯問題。pip install ipdb
,使用方法與pdb一致(import ipdb; ipdb.set_trace()
),適合需要更高效交互的開發者。.vscode/launch.json
文件,設置斷點后點擊“綠色播放”按鈕啟動調試,支持變量監視、調用堆棧查看,還可結合TensorBoard插件可視化訓練過程。logging.basicConfig
配置日志級別(如DEBUG
)、格式和輸出文件(如app.log
),在代碼中插入logging.debug('變量值: {}'.format(variable))
記錄執行流程和變量狀態,適合長期運行的訓練任務。from torch.utils.tensorboard import SummaryWriter
創建實例,使用writer.add_scalar()
、writer.add_graph()
等方法記錄數據,配合tensorboard --logdir=runs
命令啟動可視化服務,直觀監控訓練過程。rtol
和絕對誤差atol
),若差異超限會拋出帶高亮差異的異常,比assert torch.allclose()
更直觀,適合驗證模型輸出的準確性。with torch.autograd.profiler.profile(use_cuda=True) as prof
包裹代碼塊,使用prof.key_averages().table(sort_by='cuda_time_total')
輸出每步GPU kernel耗時,排序后可快速定位性能瓶頸。也可結合TensorBoard插件(tensorboard_trace_handler
)實現可視化分析。import cProfile; cProfile.run('my_function()')
生成性能報告,顯示函數調用次數、耗時等信息,適合分析代碼的整體性能分布。SummaryWriter
記錄數據,使用tensorboard --logdir=runs
啟動服務,在瀏覽器中查看實時訓練曲線和模型結構,適合監控訓練過程。torch.onnx.export()
將PyTorch模型導出為ONNX格式,再用Netron打開(雙擊.onnx
文件),可交互式查看模型層結構、數據類型、形狀等信息,適合模型架構調試。print(torch.cuda.memory_summary())
打印設備級內存分配表,顯示當前分配的顯存、預留的顯存及各張量的內存占用情況,幫助定位顯存泄漏或過度占用問題。with torch.autograd.set_detect_anomaly(True): loss.backward()
運行反向傳播,若存在inplace操作破壞計算圖(如tensor.add_(1)
),會立即拋出堆棧信息,幫助定位梯度計算問題。pip install torchsnooper
安裝,在函數前添加@torchsnooper.snoop()
裝飾器,運行腳本后會自動輸出每行代碼執行后的張量形狀、數據類型、設備等信息,適合快速檢查張量維度是否符合預期。viztracer my_script.py
生成跟蹤數據文件,或使用with VizTracer(log_torch=True):
包裹代碼塊追蹤PyTorch原生調用,生成的HTML報告可直觀展示代碼執行流程和時間分布。