常见框架dump工具使能
概述
本文档介绍常见框架中调试工具的使能方法,包括dump工具和monitor工具的配置位置。
工具使能
工具资料说明
- 文档地址: Data Dump for PyTorch
工具添加位置查找方法
想要找该在哪添加工具的时候,我们可以任意打印一个API的调用栈信息出来看,从调用栈里可以看出工具的添加位置。
比如打印linear的调用栈代码有以下两种方式:
方法1:在torch里直接打印调用栈

方法2:在启动脚本里替换掉原有linear
import torch
import torch.nn.functional as F
import traceback
# 保存原始函数
original_linear = F.linear
# 替换functional中的linear,使用*args和**kwargs适配所有参数
def custom_linear(*args, **kwargs):
print("="*50)
print("调用F.linear,调用栈如下:")
traceback.print_stack()
# 将接收的参数原封不动地传给原始函数
return original_linear(*args, **kwargs)
F.linear = custom_linear
说明:有了调用栈之后就很好找工具的添加位置了。

各框架工具添加位置
MindSpeed-LLM

MindSpeed-MM

LLaMA-Factory

accelerate + DeepSpeed

torchtitan (FSDP2后端)

VERL (fsdp后端)
使能确定性的位置:

generate_sequences

以上使能方式只针对vllm eager模式后端,不同配置或使能方式可能会变化。
update_actor

compute_log_prob

compute_ref_log_prob

VERL (sglang后端)
示例版本说明
| 组件 | 版本 |
|---|---|
| CANN | 8.5.0 |
| python | 3.11 |
| torch | 2.7.1 |
| torch_npu | 2.7.1.post2 |
| verl | 0.7.1 |
| sglang | 0.5.8 |
| MindSpeed | 2.3.0_core_r0.12.1 |
| Megatron-LM | core_v0.12.1 |
1. 创建config.json文件,用于配置dump参数
config.json配置文件详细介绍请参见配置文件介绍。
2. SGLang框架中使能msProbe工具
找到SGLang框架ModelRunner类所属文件:sglang/srt/model_executor/model_runner.py
-
ModelRunner类的__init__方法中添加PrecisionDebugger接口,传入config.json文件真实路径。from msprobe.pytorch import PrecisionDebugger, seed_all seed_all(mode=True) self.debugger = PrecisionDebugger(config_path="/home/config.json")
-
ModelRunner类的forward方法中添加start、stop和step接口。-
forward方法开始处if hasattr(self, 'debugger'): self.debugger.start(model=self.model, rank_id=self.gpu_id)
-
forward方法结束处if hasattr(self, 'debugger'): self.debugger.stop() self.debugger.step()
-
3. 注意
-
使能方式只针对eager模式后端,使能方式和位置可能会随版本变化,verl启动训推脚本需要添加
actor_rollout_ref.rollout.enforce_eager=True + actor_rollout_ref.rollout.engine_kwargs.sglang.attention_backend="ascend" + actor_rollout_ref.rollout.engine_kwargs.sglang.disable_cuda_graph=True -
verl中使用ray自动纳管npu会导致卡不可见,需要设置环境变量
export RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES=1