Prhub

#21667 Unify GSM8K eval path to Chat API for regression CI readiness

原始 PR 作者 hnyls2002 合并时间 2026-04-02 08:12 文件变更 79 提交数 55 评论 2 代码增减 +1349 / -1359

执行摘要

统一 GSM8K 评估路径到 Chat API,支持 CI 回归测试。

根据PR body和关联Issue #21046,SGLang当前有8个独立的评估系统,导致代码重复和维护负担。GSM8K有5个不同实现,本次变更旨在统一路径,作为Phase 1 of #21157(基于回归的CI检查)的一部分,实现自动dump_metric覆盖,以支持历史基线比较而非静态阈值。

建议技术管理者精读此PR,因为它展示了评估基础设施的统一设计决策,如API参数抽象和向后兼容处理。工程师可关注run_eval.py中的CompletionSampler扩展和测试迁移模式,以理解如何平滑过渡遗留系统。

讨论亮点

由于没有review评论,讨论亮点主要从commit历史中提取。关键决策包括:

  1. 兼容性处理:为AMD/NPU测试保留few_shot_gsm8k文件并添加弃用警告,确保团队可逐步迁移(commit '66d15c8f')。
  2. API设计:在run_eval.py中使model参数可选以支持服务器自动检测,并设置Completion API默认停止词匹配旧行为(commit '329e49d7'和'dfbedab7')。
  3. 迁移迭代:多次修复参数错误和模型切换,如调整MooncakeSpec测试阈值和线程数(commit '50516fd7'、'2623be53')。

实现拆解

实现分为框架层和测试迁移两大部分。框架层:

  1. accuracy_test_runner.py移除_run_few_shot_eval函数,将GSM8K评估路由至run_eval;
  2. run_eval.py使model参数可选(通过getattr),并为Completion API添加默认停止词["Question", "Assistant:", "<|separator|>"];
  3. eval_accuracy_kit.py更新GSM8KMixin使用新参数格式(base_url、eval_name="gsm8k"、api="completion");
  4. few_shot_gsm8k.py和few_shot_gsm8k_engine.py添加弃用警告。测试迁移:约72个NVIDIA测试文件从导入few_shot_gsm8k改为run_eval,参数从host/port格式转换为base_url/eval_name格式,指标键从accuracy改为score,阈值保持不变。AMD/NPU测试保留旧路径通过弃用警告处理。
文件 模块 状态 重要度
python/sglang/test/accuracy_test_runner.py test-infrastructure modified 7.0
python/sglang/test/run_eval.py test-infrastructure modified 8.0
python/sglang/test/kits/eval_accuracy_kit.py test-kits modified 6.0

关键符号

run_eval (from sglang.test.run_eval) GSM8KMixin.test_gsm8k _run_few_shot_eval (removed)

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

评论区精华

AMD/NPU 测试兼容性决策 设计

在 commit 历史中决定保留 few_shot_gsm8k 文件并添加弃用警告,而非强制迁移 AMD/NPU 测试,以避免破坏现有工作流。

结论:保持向后兼容,允许团队逐步迁移,减少短期风险。 · 已解决

风险与影响

技术风险:

  1. 回归风险:大规模测试文件修改(79个文件)可能引入参数错误或逻辑偏差,特别是在指标键名从accuracy改为score的转换中。
  2. 兼容性问题:AMD/NPU测试仍使用旧路径,可能导致团队间代码不一致和长期维护负担。
  3. 性能影响:新Chat API路径可能引入额外延迟,但PR声称行为一致,需验证dump_metric开销。
  4. 测试覆盖:尽管启用了dump_metric,但需确保所有迁移后的测试正确调用,避免遗漏指标收集。

影响范围:

  1. 对用户:测试行为保持不变,准确性阈值未变,但开发者需注意弃用警告并计划迁移AMD/NPU代码。
  2. 对系统:统一评估入口点简化维护,减少代码重复,为CI回归测试(Phase 2+)奠定基础,提升测试可观测性。
  3. 对团队:促进测试基础设施标准化,但需要AMD/NPU团队配合迁移,可能短期内增加跨团队协调成本。影响程度中等,涉及广泛测试但核心逻辑未变。
广泛测试迁移 API 变更风险 团队间不一致

关联 Issue

#21046 Consolidate fragmented evaluation systems
#21157 [CI Infrastructure] Roadmap: Regression-Based CI Checks

完整报告

参与讨论