Prhub

#22147 Add dump_metric to MMMU, lm-eval, and NeMo Skills eval paths

原始 PR 作者 hnyls2002 合并时间 2026-04-05 18:23 文件变更 3 提交数 1 评论 2 代码增减 +31 / -0

执行摘要

为 MMMU、lm-eval 和 NeMo Skills 评估路径添加 dump_metric 调用,统一指标收集

根据PR body描述,这是评估统一计划的第二阶段(第一阶段是GSM8K统一)。目标是确保所有评估路径都输出dump_metric数据,为未来阶段的回归检测基础设施奠定基础。所有通过run_eval.py的评估路径已经具备dump_metric,此PR覆盖剩余的三个路径。

该PR值得快速浏览以了解评估统一计划的进展。关注点:1) dump_metric的静默失败设计确保了安全性。2) review中提到的标签不一致问题值得注意,可能需要在后续PR中解决。3) 这是#21667开始的评估统一计划的一部分,建议结合相关PR理解整体架构。

讨论亮点

review中只有一个来自gemini-code-assist[bot]的评论,指出lm_eval_kit.py中的标签模式与其他文件不一致。在其他文件中,eval标签代表基准/数据集名称(如"mmmu"),api标签代表框架/运行器(如"lmms-eval")。而在lm_eval_kit.py中,eval被设置为"lm-eval",基准存储在单独的task标签中。建议统一标签模式以保持跨工具收集的指标一致性。但作者未回复此评论,PR已合并,表明该不一致性可能被接受或将在后续处理。

实现拆解

在三个关键文件中添加dump_metric调用:1) python/sglang/test/kits/mmmu_vlm_kit.py:在MMMUMixin.test_mmmu和MMMUMultiModelTestBase.run_vlm_mmmu_test方法中添加,使用"mmmu_score"指标名,标签包含model、eval="mmmu"、api="lmms-eval"。2) python/sglang/test/kits/lm_eval_kit.py:在LMEvalMixin.test_lm_eval的每个任务/指标循环中添加,指标名格式为"{task_name}{metric_name}",标签包含model、eval="lm-eval"、task。3) python/sglang/test/accuracy_test_runner.py:在_run_nemo_skills_eval方法解析分数后添加,使用"{dataset}_score"指标名,标签包含model、eval=dataset、api="nemo-skills"。

文件 模块 状态 重要度
python/sglang/test/kits/mmmu_vlm_kit.py test/kits modified 6.0
python/sglang/test/kits/lm_eval_kit.py test/kits modified 6.0
python/sglang/test/accuracy_test_runner.py test modified 6.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

MMMUMixin.test_mmmu MMMUMultiModelTestBase._run_vlm_mmmu_test LMEvalMixin.test_lm_eval _run_nemo_skills_eval dump_metric

评论区精华

dump_metric 标签模式不一致 consistency

gemini-code-assist[bot] 指出 lm_eval_kit.py 中的标签模式与其他文件不一致:在其他文件中,eval 标签代表基准 / 数据集名称,api 标签代表框架;而在此文件中,eval 设置为 "lm-eval",基准存储在 task 标签中。

结论:未明确解决,PR 已合并,不一致性可能被接受或将在后续处理 · 待处理

风险与影响

技术风险较低:1) 功能风险:dump_metric被设计为静默失败,不会影响现有测试功能。2) 性能风险:添加的调用开销很小,仅涉及少量函数调用和字典构造。3) 兼容性风险:无破坏性变更,完全向后兼容。4) 一致性风险:如review指出的标签模式不一致可能影响后续指标聚合和分析。

1) 对系统:为评估系统添加了统一的指标输出能力,支持未来回归检测。2) 对用户:无直接影响,测试行为不变。3) 对团队:为后续基础设施(如回归检测)提供数据基础,但需要解决标签不一致问题以确保数据质量。影响范围限于测试框架的评估路径。

标签模式不一致 review 未完全解决

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

执行摘要

该PR在MMMU(lmms-eval)、lm-eval harness和NeMo Skills(mmmu-pro)三个评估路径中添加了dump_metric调用,是评估统一计划的第二阶段。变更完全向后兼容(dump_metric静默失败),为后续回归检测基础设施提供数据基础。但review指出的标签模式不一致问题未解决,可能影响指标聚合。

功能与动机

根据PR body,这是评估统一计划的第二阶段(第一阶段是#21667的GSM8K统一)。目标是确保所有评估路径都输出dump_metric数据,为未来回归检测基础设施奠定基础。所有通过run_eval.py的评估路径已经具备dump_metric,此PR覆盖剩余的三个路径。dump_metric被设计为静默失败,不会影响现有测试功能。

实现拆解

在三个文件中添加了dump_metric调用:

文件 修改位置 指标名 标签
python/sglang/test/kits/mmmu_vlm_kit.py test_mmmu_run_vlm_mmmu_test "mmmu_score" model, eval="mmmu", api="lmms-eval"
python/sglang/test/kits/lm_eval_kit.py test_lm_eval循环 "{task_name}_{metric_name}" model, eval="lm-eval", task
python/sglang/test/accuracy_test_runner.py _run_nemo_skills_eval "{dataset}_score" model, eval=dataset, api="nemo-skills"

关键代码示例(来自mmmu_vlm_kit.py):

dump_metric(
    "mmmu_score",
    mmmu_accuracy,
    labels={"model": self.model, "eval": "mmmu", "api": "lmms-eval"},
)

评论区精华

review中只有一个来自gemini-code-assist[bot]的评论,指出标签模式不一致:

"In mmmu_vlm_kit.py and accuracy_test_runner.py, the eval label represents the benchmark/dataset name (e.g., "mmmu" or "mmmu-pro") and the api label represents the framework/runner (e.g., "lmms-eval" or "nemo-skills"). In this file, eval is set to "lm-eval" and the benchmark is stored in a separate task label."

建议统一标签模式,但作者未回复,PR已合并,表明该问题可能被接受或将在后续处理。

风险与影响

风险

  1. 标签模式不一致可能影响后续指标聚合和分析。
  2. review问题未完全解决,可能留下技术债务。

影响

  1. 对系统:为评估系统添加统一指标输出,支持未来回归检测。
  2. 对用户:无直接影响,测试行为不变。
  3. 对团队:提供数据基础,但需要关注标签一致性以确保数据质量。

关联脉络

  • 这是#21667(GSM8K统一)开始的评估统一计划的第二阶段,两者共同构建评估基础设施。
  • 从近期历史PR看,仓库频繁进行测试和CI相关改进(如#22140、#22139、#22102),该PR延续了这一趋势,专注于评估指标收集的统一化。
  • 标签模式不一致问题与近期多个PR关注的"consistency"标签(如#22148、#22102、#22137)主题相关,但在此PR中未完全解决。

参与讨论