执行摘要
- 一句话:修复 diffusion 基准误传弃用 --warmup 标志
- 推荐动作:值得快速浏览,尤其是 CI 配置维护者。关键设计决策是用
--warmup-mode server 替代而不是删除标志,避免静默关闭预热;作者提出的 pre-merge 参数预检 lint 是低成本的后续改进,建议纳入 CI 治理。
功能与动机
PR 正文指出 nightly-test-diffusion 每次运行都失败,所有 sglang server 在参数解析阶段报错 sglang: error: ambiguous option: --warmup could match --warmup-mode, --warmup-resolutions, --warmup-steps,随后服务器立即退出,harness 却要等满 2400s 健康检查超时才继续,约 40 分钟/用例只产出失败。只删除标志也不行,因为 warmup_mode 默认 None,_adjust_warmup 会解析为 off,会让 eager 用例悄悄失去预热,产生静默基准回归。
实现拆解
- 修改
scripts/ci/utils/diffusion/comparison_configs.json:将 Wan、LTX-2、Cosmos 等 11 个 benchmark 用例的 serve_args 全部由 --warmup 改为 --warmup-mode server,保持原有启动时预热内核再进入健康检查的语义。
- 修改
scripts/ci/utils/diffusion/run_comparison.py:更新 wait_for_health 调用前的注释,说明现在 sglang 通过 --warmup-mode server 在 health check 前完成合成请求预热。
- 验证:作者在 H200 上用
ServerArgs.add_cli_args 逐条解析全部 11 个 serve_args,全部通过;再注入旧 --warmup 做阴性对照,能稳定复现 ambiguous option 报错,证明检查有效。
- 后续改进(本次未做):作者建议在 pre-merge lint 中解析该配置的所有
serve_args,成本极低,但能当天捕获此类 flag 弃用;明确留在本 PR 之外保持改动最小。
关键文件:
scripts/ci/utils/diffusion/comparison_configs.json(模块 CI 脚本;类别 infra;类型 configuration): 核心修复文件:11 条 serve_args 全部去掉已弃用的 --warmup,改为 --warmup-mode server,否则 nightly diffusion 基准每次都在参数解析处崩溃。
scripts/ci/utils/diffusion/run_comparison.py(模块 CI 脚本;类别 infra;类型 documentation): 同步更新 wait_for_health 调用处的注释,避免后续维护者再次传入旧标志。
关键符号:未识别
评论区精华
本 PR 没有 review 评论。最有价值的讨论来自 PR 正文的作者自述:他提出把解析所有 serve_args 做成 pre-merge lint,认为用 ServerArgs.add_cli_args 校验成本极低,却能在 flag 弃用当天就发现问题。这个方向值得 CI 治理跟进,但目前仍未落地。
风险与影响
- 风险:风险主要集中在 CI 配置层:
comparison_configs.json 若未来新增条目仍可能再次漏掉 --warmup-mode;目前只在 H200 单机做过参数解析验证,未覆盖多平台;若 _adjust_warmup 的默认解析逻辑变化,基准仍可能静默退化。由于不涉及运行时代码,对用户请求路径无风险。
- 影响:修复
nightly-test-diffusion 的持续失败,消除约 40 分钟/用例的无效等待,恢复该基准任务的产出。影响范围仅限 scripts/ci 下的 diffusion 基准配置与注释,不触碰任何模型运行时或用户请求路径,对团队 CI 维护者是明确的收益。
- 风险标记:依赖已弃用参数, 缺少自动化防护
关联脉络
参与讨论