Prhub

#22251 [diffusion] CI: fix consistency check

原始 PR 作者 mickqian 合并时间 2026-04-07 23:43 文件变更 5 提交数 12 评论 2 代码增减 +57 / -49

执行摘要

修复扩散模型 CI 一致性检查,移除不稳定测试用例并调整阈值配置。

动机源自测试中的波动问题,Issue评论中作者指出'TODO:

  1. investigate the reason of fluctuation in sana, mova cases',表明需要调查和修复一致性检查以确保CI的可靠性。

建议精读以理解扩散模型测试的稳定性处理策略,关注阈值管理和测试用例选择的设计决策,以及CI环境优化的实践。

讨论亮点

review中仅有的评论来自gemini-code-assist[bot],指出启用flux_2_nvfp4_t2i和ltx_2_two_stage_t2v的一致性检查可能导致CI失败,因为默认阈值太严格,需要更新consistency_threshold.json。PR通过移除不稳定的'sana_image_t2i'用例和相应阈值间接处理了此问题,但未直接回应bot的建议。

实现拆解

实现拆解为以下模块:

  1. CI工作流(.github/workflows/diffusion-ci-gt-gen.yml):添加环境变量SGLANG_IS_IN_CI和SGLANG_CUDA_COREDUMP,优化生成和发布GT图像的步骤,并支持B200 GPU测试。
  2. 测试脚本(gen_diffusion_ci_outputs.py):引入_maybe_pin_update_weights_model_pair函数以更新模型权重。
  3. 阈值配置(consistency_threshold.json):删除'sana_image_t2i'的阈值条目,因为该测试用例已被移除。
  4. 测试用例配置(testcase_configs.py):移除'sana_image_t2i'用例,并为flux_2_nvfp4_t2i和ltx_2_two_stage_t2v启用一致性检查(通过删除run_consistency_check=False)。
  5. 测试逻辑(test_server_common.py):修改run_and_collect函数,添加collect_perf参数以在生成GT时跳过性能收集,并移除LoRA相关的后端逻辑。
文件 模块 状态 重要度
.github/workflows/diffusion-ci-gt-gen.yml CI/Infrastructure modified 6.0
python/sglang/multimodal_gen/test/server/consistency_threshold.json Testing modified 5.0
python/sglang/multimodal_gen/test/server/testcase_configs.py Testing modified 7.0
python/sglang/multimodal_gen/test/server/test_server_common.py Testing modified 6.0

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

关键符号

_maybe_pin_update_weights_model_pair run_and_collect test_diffusion_generation

评论区精华

启用一致性检查的阈值问题 测试

gemini-code-assist[bot] 指出:'Enabling the consistency check for flux_2_nvfp4_t2i without adding a corresponding entry in consistency_threshold.json may cause CI failures due to strict default thresholds.'

结论:PR 通过移除不稳定的 'sana_image_t2i' 用例和相应阈值间接处理,但未明确更新阈值配置。 · partially resolved

风险与影响

技术风险包括:1. 移除'sana_image_t2i'测试用例可能掩盖潜在问题,影响测试覆盖;2. 删除阈值配置可能导致其他测试的误判或虚假通过;3. CI工作流变更(如环境变量添加)可能引入新的不稳定性或兼容性问题;4. 修改测试逻辑(collect_perf参数)可能影响性能数据收集的准确性。

影响范围:对用户无直接影响;对系统,CI测试更稳定,减少flaky测试;对团队,提升开发效率,但测试覆盖略有调整。影响程度:中等,主要限于测试基础设施和扩散模型验证。

测试阈值调整 移除测试用例 CI 环境变更

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本PR修复了扩散模型CI中的一致性检查问题,通过移除不稳定的'sana_image_t2i'测试用例、调整阈值配置和优化CI工作流,旨在提升测试稳定性和可靠性,减少flaky测试对开发流程的干扰。

功能与动机

动机源自测试中的波动问题,特别是'sana'和'mova'案例。作者在Issue评论中表示'TODO:

  1. investigate the reason of fluctuation in sana, mova cases',本PR通过调整测试套件来缓解问题,确保CI的一致性检查更健壮,避免因阈值过严或用例不稳定导致的CI失败。

实现拆解

  • CI工作流(.github/workflows/diffusion-ci-gt-gen.yml):添加环境变量SGLANG_IS_IN_CISGLANG_CUDA_COREDUMP,优化生成输出和发布GT图像的步骤,新增B200 GPU测试支持,确保测试环境一致。
  • 测试脚本(gen_diffusion_ci_outputs.py):引入_maybe_pin_update_weights_model_pair函数,用于更新模型权重,提升测试可重复性。
  • 阈值配置(consistency_threshold.json):删除'sana_image_t2i'的阈值条目,因为该测试用例已在配置中移除,避免无效配置。
  • 测试用例配置(testcase_configs.py):移除'sana_image_t2i'用例,并为flux_2_nvfp4_t2iltx_2_two_stage_t2v启用一致性检查(通过删除run_consistency_check=False),简化测试逻辑。
  • 测试逻辑(test_server_common.py):修改run_and_collect函数,添加collect_perf参数以在生成GT时跳过性能收集,移除LoRA相关的后端逻辑,代码如下:
    python def run_and_collect( ctx: ServerContext, case_id: str, generate_fn: Callable[[str, openai.Client], tuple[str, bytes]], collect_perf: bool = True, ) -> tuple[RequestPerfRecord | None, bytes]:

评论区精华

Review中仅有的评论来自gemini-code-assist[bot],指出:

'Enabling the consistency check for flux_2_nvfp4_t2i without adding a corresponding entry in consistency_threshold.json may cause CI failures due to strict default thresholds.'

这提示了阈值管理的设计权衡:启用检查需要相应配置,而本PR通过移除不稳定用例间接解决了问题,但未直接回应bot的建议,可能隐含了对测试波动性的妥协。

风险与影响

  • 风险:移除'sana_image_t2i'测试用例可能掩盖潜在模型问题;删除阈值配置可能导致其他测试误判;CI环境变量变更可能引入新的不稳定性;修改collect_perf逻辑可能影响性能监控。
  • 影响:对最终用户无直接功能影响,但提升了CI的稳定性和团队开发效率;测试覆盖略有减少,聚焦于更可靠的案例;系统级影响限于测试基础设施,程度中等。

关联脉络

本PR与历史PR #15236('[CI] Add consistency test in CI')紧密相关,后者引入了扩散模型的一致性测试。当前修复处理了其中发现的波动问题,如sana案例的不稳定性,反映了测试套件在迭代中的优化过程,展现了持续集成中测试稳定性的演进趋势。

参与讨论