使用场景
数据采集对比
- 数据采集
按如下配置运行模型将采集对应数据。如需对比同一模型在标杆Device与当前Device上的表现,可分别采集,(两次需要设置不同的dump_path)
precision_collector: msprobe: True # 使用以下采集、加载功能时,必须开启 dump_path: "./benchmark_infer_data" key_data_dump: True # 关键数据采集 actor_infer_dump: True # 推理数据采集 step_start: 0 # 从0开始采集 step_end: 58 # 采集步数 level: "L0" task: "statistics" enable_mock_inference: False # 仅采集不加载数据时,需要禁用mock推理使能
得到两次训练过程的关键阶段性数据,数据可用来定界到模型或代码块。
- 对比data关键数据
复制如下训练脚本py,将dump_path1和dump_path2改为需要比对的dump_path文件路径,output_path改为保存路径,执行该脚本:
from msprobe.core import SingleComparator SingleComparator.compare( "dump_path1", "dump_path2", "output_path")获得对 data 中各关键数据的比对结果.xlsx表格。
- 对比模型层数据
如采集到模型层数据,将./dump_path1/step0和./dump_path2/step0改为需要比对的step层级路径(比如./benchmark_infer_data/actor_generate_sequences/step0)
from msprobe.pytorch import * compare_distributed( './dump_path1/step0', './dump_path2/step0', './output_path')获得模型层比对结果.xlsx表格。
- 观察结果表格,找到首个出现差异的位置
具体差异对比标准和方法可见:关键数据比对指南(key_data_dump)、模型层数据比对指南(actor_train_dump、reference_dump、critic_train_dump)
精度问题定位方法(后端推理框架打桩)
针对VeRL训练过程中的推理误差,提供精度问题定位方法 ,即vLLM推理框架打桩。
可通过mock_random_seed参数,选择以下三种数据加载模式:
(1)真实step模式【None】 :按实际训练的step顺序加载
(2)循环加载模式【-1】:根据mock_step指定范围,顺序生成加载序列,循环加载
(3)随机加载模式【≠-1】:根据mock_step指定范围,随机生成加载序列
如下图:

- 标杆Device训练,开启推理数据采集,保存在 benchmark_infer_data/ 中,配置如下:
precision_collector: msprobe: True # 使用以下采集、加载功能时,必须开启 dump_path: "./benchmark_infer_data" key_data_dump: True # 关键数据采集 step_start: 0 # 采集开始步数 step_end: 58 # 采集结束步数 enable_mock_inference: False # 采集阶段不加载数据,需要禁用mock推理使能
key_data_dump将采集关键的推理数据,包括 response、input_ids、attention_mask、 prompts、position_ids。Log 将给出日志:“>>>>>>>>>>>>> Save Key Data <<<<<<<<<<<<<<<”。
注:真实step模式需从0开始采集,如要对比整个训练过程,step_end 需设置为训练总step数。
循环、随机模式数据复用,可采集少量数据即可。
- 当前Device、标杆Device训练,开启标杆Device推理数据加载
开启Mock时,Log 将给出警告日志:“Mock inference enabled - loading from {config.mock_data_path}, You can disable in precision_collector.yaml”。
(1)真实step模式,配置如下:precision_collector: msprobe: True # 使用以下采集、加载功能时,必须开启 enable_mock_inference: True # 加载推理数据时,开启mock推理使能 mock_random_seed: None # 使用真实step加载模式 mock_data_path: "./benchmark_infer_data" # 待加载数据位置
Log 将给出警告日志:“>>>>>>>>>>>>>>>>Dump real step loading mode<<<<<<<<<<<<<<”。
(2)循环加载模式,配置如下:precision_collector: msprobe: True # 使用以下采集、加载功能时,必须开启 enable_mock_inference: True # 加载推理数据时,开启mock推理使能 mock_random_seed: -1 # 使用循环加载模式 mock_data_path: "./benchmark_infer_data" # 待加载数据位置 mock_step_start: 0 # 待加载数据开始步数。 mock_step_end: 10 # 待加载数据结束步数。
Log 将给出警告日志:“<<<<<<<<<<<Dump Sequential Loop Loading Mode<<<<<<<<<<<”。
待加载序列:如“Sequence to be loaded:[0,1,2,3,4,5,6,7,8,9,10]”
“Current step: xx, Loading step: xx (Loop index: xx)”
(3)随机加载模式,配置如下:precision_collector: msprobe: True # 使用以下采集、加载功能时,必须开启 enable_mock_inference: True # 加载推理数据时,开启mock推理使能 mock_random_seed: 42 # 使用随机加载模式,≠-1即可 mock_data_path: "./benchmark_infer_data" # 待加载数据位置 mock_step_start: 0 # 待加载数据开始步数。 mock_step_end: 10 # 待加载数据结束步数。
Log 将给出警告日志:“>>>>>>>>>>>>>>>>Dump Random Loading Mode<<<<<<<<<<<<<<”。
待加载序列:如“Sequence to be loaded:[10, 0, 8, 1, 10, 0, 9, 7, 9, 10, 2, 3, 7, ... ... ]"
“Current step: xx, Loading step: xx (Loop index: xx)”
注:加载同时可以采集(除key_data_dump、actor_generate_sequences),只需配置相应采集开关为True即可。
但要注意此时 mock_data_path、dump_path 如果相同可能覆盖数据,Log将给出警告信息:“The dump_path and mock_data_path in the configuration are the same ... ”
- 对比两个Device的训练Loss曲线、使用上节方法对比落盘数据。