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报告可直观展示代码执行流程和时间分布。