Prhub

#22405 [CICD] [prefill-only] Consolidate prefill-only model E2E tests

sgl-project/sglang · 作者 sundar24295s · 合并时间 2026-04-09 15:54

分析状态 已生成
文件变更 16提交数 4 · 评论 2
代码增减 +757 / -1398
run-ci test refactor

执行摘要

统一 prefill-only 模型测试目录结构,提升代码维护性和 CI 覆盖。

根据PR body描述,问题在于'prefill-only model tests were scattered across four unrelated directories with no consistent home',导致维护困难和CI覆盖不全(如test/srt/test_multi_item_scoring.py未注册在CI中)。目标是'consolidate prefill-only model E2E tests'以提供统一测试结构,解决测试混杂和可维护性问题。

建议精读以了解测试组织最佳实践,特别是如何按功能模块(如prefill-only vs input-embedding)划分测试目录。重点关注test_score_engine.pytest_score_api.py的设计,它们展示了不同API层(引擎vs HTTP)的测试策略和验证方法。

讨论亮点

review评论中无实质性讨论,仅有一位审核者(hnyls2002)批准。PR body中作者详细阐述了变更理由、验证过程和测试结果,但没有外部交互讨论或争议点。

实现拆解

实现方案按模块拆解:1) 创建新目录test/registered/prefill_only/,将分散在core/models/openai_server/basic/embedding/的prefill-only测试文件移动至此;2) 将test/registered/embedding/重命名为test/registered/input_embedding/,仅保留输入嵌入功能测试文件;3) 移动单元测试文件test_pooler_score_and_pool.pyunit/根目录到unit/layers/以匹配源码层级;4) 重新组织计分测试,用两个新文件test_score_engine.py(引擎API测试)和test_score_api.py(HTTP API测试)替换旧文件;5) 更新.github/CODEOWNERS以反映新路径。

文件 模块 状态 重要度
test/registered/prefill_only/test_score_engine.py 测试 added 6.0
test/registered/prefill_only/test_score_api.py 测试 added 6.0
.github/CODEOWNERS 基础设施 modified 4.0
test/registered/input_embedding/test_input_embeddings.py 测试 renamed 3.0

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

关键符号

TestCausalLMScoring TestSeqClsScoring TestCausalLMScoringHTTP _hf_scores _assert_scores_close

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低但需注意:1) 文件移动和路径变更可能导致现有CI脚本或外部引用失效,但作者已更新CODEOWNERS并本地验证测试通过;2) 新目录结构需开发团队适应,可能短期增加学习成本;3) 移除旧文件如test/registered/core/test_score_api.py可能影响git历史追踪,但通过提交记录可追溯。

影响范围有限:1) 对终端用户无直接影响,仅涉及内部测试代码重构;2) 系统测试更结构化,可能提升CI效率和问题定位速度;3) 开发团队需更新本地环境以匹配新目录,但长期维护成本降低;4) 关联CODEOWNERS更新确保了代码所有权清晰。

路径变更风险 测试覆盖验证

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本PR对sglang仓库中的prefill-only模型端到端测试进行了大规模重构,将原本分散在四个无关目录的测试文件统一迁移至新的test/registered/prefill_only/目录,并清晰分离了输入嵌入功能测试。变更涉及16个文件的移动、重命名和新增,更新了CODEOWNERS以匹配新结构。作者已本地验证所有测试通过,旨在提升代码维护性、CI覆盖率和团队协作效率,对用户无直接影响,但为后续测试扩展奠定基础。

功能与动机

为什么做:根据PR body,prefill-only模型测试此前“散落在四个无关目录中,没有统一的家”,导致维护困难、CI覆盖不全(例如test/srt/test_multi_item_scoring.py未注册在CI中)。目标是通过“统一prefill-only模型端到端测试”来解决这些问题,提供一致的测试结构和更好的可管理性。

实现拆解

实现按模块分层进行:

  • 新目录创建:建立test/registered/prefill_only/目录,集中存放所有prefill-only相关测试,包括从core/models/openai_server/basic/embedding/移动来的文件。
  • 概念分离:将原test/registered/embedding/重命名为test/registered/input_embedding/,仅保留输入嵌入功能测试,避免与prefill-only测试混淆。
  • 单元测试重组:移动test_pooler_score_and_pool.pyunit/根目录到unit/layers/,以匹配源码模块sglang.srt.layers.pooler的层级。
  • 计分测试优化:用两个新文件替换旧计分测试:
    • test_score_engine.py:专注于引擎API层的正确性测试,覆盖CausalLM和SequenceClassification模型的单点和批量评分。
    • test_score_api.py:专注于HTTP /v1/score端点的集成测试,验证响应结构和CLI参数传递。
  • 基础设施更新:修改.github/CODEOWNERS,将所有权从旧文件路径扩展到整个prefill_only目录。

评论区精华

review中无实质性讨论,仅审核者hnyls2002批准。PR body中作者单方面阐述了变更理由和验证结果,例如:“All new tests were verified locally before merging”,并提供了测试运行时间和结果。没有外部争议或深度技术交锋。

风险与影响

风险分析

  1. 路径变更风险:文件移动可能导致CI脚本或外部工具引用失效,但作者已更新CODEOWNERS并本地验证,降低了风险。
  2. 测试覆盖验证:移除旧文件并新增测试需确保功能等价,作者通过对比HuggingFace参考和本地测试已覆盖。
  3. 团队适应成本:新目录结构需开发者调整工作流,但长期看维护效率提升。

影响分析

  • 用户影响:无直接影响,仅内部测试代码变更。
  • 系统影响:测试更结构化,可能加速CI执行和问题调试。
  • 团队影响:代码所有权更清晰,但需短期学习新布局。

关联脉络

从近期历史PR看,本PR与多个测试和CI优化PR相关联:

  • PR #22418将Runai模型加载测试移至夜间套件,与本PR的测试重组理念相似,都旨在优化CI管理。
  • PR #22353新增Torch Profiler分析工作流,涉及测试代码扩展,与本PR的测试组织改进互补。
  • PR #22400为CI添加快速失败机制,与本PR的run-ci标签和测试效率提升主题一致。
    这些PR共同反映了仓库在强化测试基础设施和CI管道方面的持续演进趋势。

参与讨论