Prhub

#32282 [ci][diffusion] Enhance diffusion GT publishing with per-platform directory resolution

原始 PR 作者 AgainstEntropy 合并时间 2026-07-25 09:54 文件变更 2 提交数 1 评论 1 代码增减 +25 / -6

执行摘要

扩散 GT 发布支持按平台目录解析

该 PR 解决 diffusion GT 发布时路径与一致性测试读取路径不一致的问题。PR body 没有详细说明,但从变更可知,之前的 check_qualitypublish 函数允许 target_dirNone,且没有根据平台子目录进行解析,导致发布路径与测试端(已在 test_utils.py 中按平台解析)不同步,可能引起 GT 不匹配。

值得合并,但建议后续添加单元测试覆盖 _resolve_target_dir 函数(例如 mock get_consistency_platform)。

讨论亮点

无 review 评论,PR 仅包含一条来自 Gemini Code Assist 的弃用通知,没有实质性讨论。

实现拆解

  1. 修改函数签名scripts/ci/utils/diffusion/publish_diffusion_gt.pycheck_qualitypublish 函数的 target_dir 参数改为必须传入,去除 target_dir or DEFAULT_TARGET_DIR 的默认回退逻辑,由调用者统一处理。
  2. 新增 _resolve_target_dir 函数:该函数接收 target_dirper_platform 布尔值,当 per_platformTrue 时,通过导入 sglang.multimodal_gen.test.test_utils.get_consistency_platform() 获取当前平台子目录(如 h100),并将 target_dir 拼接为 <target>/<platform>。该函数使用与一致性测试相同的解析器,确保读写路径一致。
  3. 修改 main 入口:从环境变量 SGLANG_DIFFUSION_GT_PER_PLATFORM 读取是否启用 per-platform 功能,并通过 _resolve_target_dir 得到实际 target_dir,再传递给 check_qualitypublish
  4. CI workflow 配置:在 .github/workflows/diffusion-ci-gt-gen.ymlenv 中添加 SGLANG_DIFFUSION_GT_PER_PLATFORM: "1",启用 per-platform 目录解析。
文件 模块 状态 重要度
scripts/ci/utils/diffusion/publish_diffusion_gt.py CI 脚本 modified 5.98
.github/workflows/diffusion-ci-gt-gen.yml CI 配置 modified 2.81

关键符号

_resolve_target_dir check_quality publish

关键源码片段

scripts/ci/utils/diffusion/publish_diffusion_gt.py infrastructure

核心变更文件:修改了 `check_quality` 和 `publish` 函数签名,新增 `_resolve_target_dir` 函数,重构了 `main` 入口以支持 per-platform 目录解析。

# scripts/ci/utils/diffusion/publish_diffusion_gt.pydef _resolve_target_dir(target_dir: str | None, per_platform: bool) -> str:
    """Resolve the effective remote target dir.    With ``per_platform`` set, append the consistency platform subdir
    (``h100``/``b200``/``5090``) so the publish path matches how the consistency
    tests resolve GT: ``<target>/<platform>/<file>`` first, bare ``<target>/<file>``
    only as fallback. Reuses the SAME resolver the tests use so read and write can
    never drift. Lazy import keeps this script light when the flag is off.
    """
    target_dir = target_dir or DEFAULT_TARGET_DIR
    if per_platform:
        from sglang.multimodal_gen.test.test_utils import get_consistency_platform
​
        target_dir = f"{target_dir}/{get_consistency_platform()}"
    return target_dir
​
​
def main():
    # ... argument parsing ...
    per_platform = os.environ.get("SGLANG_DIFFUSION_GT_PER_PLATFORM") == "1"
    target_dir = _resolve_target_dir(args.target_dir, per_platform)
​
    if args.check_only:
        check_quality(args.source_dir, target_dir)
    else:
        publish(args.source_dir, target_dir)

评论区精华

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

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

风险与影响

低风险:变更仅涉及 CI 工具脚本,不作用于运行时路径。但若环境变量 SGLANG_DIFFUSION_GT_PER_PLATFORM 未正确设置或 get_consistency_platform 逻辑变更,可能导致发布路径错误。另外,_resolve_target_dir 中的惰性导入(lazy import)在首次调用时若缺少依赖会抛出 ImportError,但只影响 CI 流程。

直接影响 diffusion CI 的 GT 发布流程:确保发布到正确平台子目录,与测试端路径匹配。对其他模块无影响。

缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论