执行摘要
本PR修复了扩散模型CI中的一致性检查问题,通过移除不稳定的'sana_image_t2i'测试用例、调整阈值配置和优化CI工作流,旨在提升测试稳定性和可靠性,减少flaky测试对开发流程的干扰。
功能与动机
动机源自测试中的波动问题,特别是'sana'和'mova'案例。作者在Issue评论中表示'TODO:
- investigate the reason of fluctuation in sana, mova cases',本PR通过调整测试套件来缓解问题,确保CI的一致性检查更健壮,避免因阈值过严或用例不稳定导致的CI失败。
实现拆解
- CI工作流(.github/workflows/diffusion-ci-gt-gen.yml):添加环境变量
SGLANG_IS_IN_CI和SGLANG_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_t2i和ltx_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案例的不稳定性,反映了测试套件在迭代中的优化过程,展现了持续集成中测试稳定性的演进趋势。
参与讨论