Prhub

#24400 [diffusion] CI: pin diffusion consistency GT revision

原始 PR 作者 mickqian 合并时间 2026-05-05 11:53 文件变更 3 提交数 2 评论 3 代码增减 +22 / -2

执行摘要

固化 diffusion 一致性测试 GT 来源版本

之前 diffusion 一致性检查使用的 GT 数据来自 ci-data/main 分支,ci-data 的非关联更新可能导致 PR 测试行为变化。PR body 明确说明:"Binding the default GT source to a concrete ci-data commit makes the check reproducible."

值得精读,作为测试基础设施最佳实践示例——通过 pinned revision 消除外部依赖波动。

讨论亮点

本 PR 无 review 评论,变更直接合并。唯一机器人评论提到每日配额限制,未涉及技术讨论。

实现拆解

  1. 定义 pinned revision 常量:在 test_utils.py 中新增 SGL_TEST_FILES_CI_DATA_REVISION 常量,值为 437539b330592b1421d239b22d7d76b4a6d08fda
  2. 重构 GT URL 构造:将原来的直接硬编码 URL 替换为基于 SGL_TEST_FILES_CONSISTENCY_GT_ROOT 动态拼接,根路径中嵌入 revision 值,确保所有 GT URL 指向固定 commit。
  3. 新增断言测试:在 test_consistency_metrics.py 中新增 test_consistency_gt_urls_are_pinned_to_ci_data_revision,断言 SGL_TEST_FILES_CONSISTENCY_GT_ROOT 不含 /ci-data/main/,且两个 GT base URL 均包含 revision 路径。
  4. 增强缺失 GT 错误信息:在 test_server_common.py 的 GT 丢失提示中增加 Pinned revision used by this check: {SGL_TEST_FILES_CI_DATA_REVISION},帮助开发者定位版本。
文件 模块 状态 重要度
python/sglang/multimodal_gen/test/test_utils.py 测试工具 modified 4.78
python/sglang/multimodal_gen/test/test_consistency_metrics.py 一致性测试 modified 4.59
python/sglang/multimodal_gen/test/server/test_server_common.py 服务测试 modified 3.25

关键符号

test_consistency_gt_urls_are_pinned_to_ci_data_revision

关键源码片段

python/sglang/multimodal_gen/test/test_utils.py test-coverage

定义 pinned revision 常量并重构 GT URL 构造方式,是本次变更的核心配置所在。

# 新增 pinned revision 常量
SGL_TEST_FILES_CI_DATA_REVISION = (
    "437539b330592b1421d239b22d7d76b4a6d08fda"
)# 用 f-string 构造固定 revision 的 GT 根 URL,不再使用 /ci-data/main/
SGL_TEST_FILES_CONSISTENCY_GT_ROOT = (
    "https://raw.githubusercontent.com/"
    f"sgl-project/ci-data/{SGL_TEST_FILES_CI_DATA_REVISION}/"
    "diffusion-ci/consistency_gt"
)# 两个 base URL 从根 URL 派生,确保所有 GT 数据来源固定
SGL_TEST_FILES_OFFICIAL_CONSISTENCY_GT_BASE = (
    f"{SGL_TEST_FILES_CONSISTENCY_GT_ROOT}/official_generated"
)
SGL_TEST_FILES_SGLANG_CONSISTENCY_GT_BASE = (
    f"{SGL_TEST_FILES_CONSISTENCY_GT_ROOT}/sglang_generated"
)
python/sglang/multimodal_gen/test/test_consistency_metrics.py test-coverage

新增断言测试,确保 GT URL 不再指向 main,是变更的验证环节。

def test_consistency_gt_urls_are_pinned_to_ci_data_revision():
    # 构造期望的 revision 路径片段
    revision_path = (
        f"/ci-data/{test_utils.SGL_TEST_FILES_CI_DATA_REVISION}/"
    )
    # 确保根 URL 不再指向浮动的 main
    assert (
        "/ci-data/main/" not in test_utils.SGL_TEST_FILES_CONSISTENCY_GT_ROOT
    )
    # 确保两个 GT base URL 都包含了 pinned revision
    assert revision_path in test_utils.SGL_TEST_FILES_OFFICIAL_CONSISTENCY_GT_BASE
    assert revision_path in test_utils.SGL_TEST_FILES_SGLANG_CONSISTENCY_GT_BASE
python/sglang/multimodal_gen/test/server/test_server_common.py test-coverage

在缺失 GT 的错误信息中暴露 pinned revision,提升可调试性。

# 在导入处新增 SGL_TEST_FILES_CI_DATA_REVISION
from sglang.multimodal_gen.test.test_utils import (
    SGL_TEST_FILES_CI_DATA_REVISION,
    # ... 其他原有导入
)# 在 GT 缺失的 logger.error 消息中加入 revision 信息
logger.error(f"""
...
Repository: https://github.com/sgl-project/ci-data (path: diffusion-ci/consistency_gt/sglang_generated/)
Pinned revision used by this check: {SGL_TEST_FILES_CI_DATA_REVISION}
...
""")

评论区精华

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

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

风险与影响

该 PR 仅修改测试基础设施常量和新增测试,不涉及任何核心逻辑或运行时路径。风险极低,但需确保 ci-data 仓库 437539b330592b1421d239b22d7d76b4a6d08fda 提交长期存在,否则 GT URL 会永久失效。

影响范围仅限 diffusion 模块 CI 测试。变更后,一致性检查结果不再受 ci-data 仓库 main 分支变动影响,测试可复现性增强。新增的断言测试会在 CI 中阻止未来引入指向 main 的 URL。

外部依赖固定值可能过期

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论