Prhub

#15236 [CI] Add consistency test in CI

原始 PR 作者 Prozac614 合并时间 2026-04-07 09:50 文件变更 11 提交数 38 评论 19 代码增减 +1026 / -9

执行摘要

在 CI 中添加 diffusion 模型输出一致性测试,防止精度回归。

PR body中明确指出:'CI pipeline lacks strict accuracy checkpoints (guardrails). This risks accidentally merging PRs that cause precision degradation or model performance regression.' 因此,需要添加精度检查以防止模型输出质量下降,确保diffusion模型在代码变更后仍保持一致的生成准确性。

该PR值得精读,特别是对于负责CI、测试和multimodal模块的工程师。关注点包括:一致性验证方法从SSIM切换到CLIP的决策理由(可能因CLIP更能捕捉语义相似性)、阈值配置的管理策略(如案例特异性调整)、以及LoRA权重加载的扩展设计(支持确定性文件选择)。这些设计决策反映了对模型输出质量保障的重视,可作为测试框架演进的参考。

讨论亮点

由于review评论为空,讨论主要体现在Issue评论中。关键点包括:维护者mickqian要求rebase('please rebase'),贡献者Prozac614确认完成;shljessie主动提供帮助解决合并冲突和生成缺失的ground truth文件;mickqian提及需要先修复PR #22059中的flux问题('we need to fix all the flux issues in #22059 before we proceed'),表明本PR的推进依赖外部问题解决。这些讨论聚焦于协作流程和依赖管理,未涉及技术设计争议或深度权衡。

实现拆解

实现分为五个主要部分:

  1. CI工作流修改:在.pr-test-amd.yml和.pr-test-amd-rocm720.yml中添加SGLANG_SKIP_CONSISTENCY环境变量,允许在特定场景下跳过一致性检查。
  2. 测试框架扩展:在test_server_common.py中新增_validate_consistency方法,使用CLIP嵌入计算余弦相似度,并与ground truth比较;同时添加consistency_threshold.json文件定义各案例的CLIP、SSIM、PSNR和平均绝对差阈值。
  3. LoRA支持增强:修改lora_pipeline.py、server_args.py和hf_diffusers_utils.py,引入lora_weight_name参数,支持从多文件LoRA仓库中确定性加载特定权重文件。
  4. 测试案例配置:在testcase_configs.py和testcase_configs_npu.py中为DiffusionTestCase添加run_consistency_check布尔字段,控制是否执行一致性验证。
  5. 新增单元测试:添加test_consistency_metrics.py文件,验证像素级指标(SSIM、PSNR、平均绝对差)的正确性。
文件 模块 状态 重要度
python/sglang/multimodal_gen/test/server/test_server_common.py 测试框架 modified 8.0
python/sglang/multimodal_gen/test/server/consistency_threshold.json 测试配置 added 7.0
python/sglang/multimodal_gen/test/test_utils.py 测试工具 modified 7.0
.github/workflows/pr-test-amd.yml CI/CD modified 5.0
python/sglang/multimodal_gen/runtime/pipelines_core/lora_pipeline.py 模型管道 modified 6.0

关键符号

_validate_consistency compare_with_gt load_lora_adapter maybe_download_lora

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

评论区精华

Rebase 和合并冲突处理 question

维护者 mickqian 要求 rebase 以同步主线代码,贡献者 Prozac614 确认完成;shljessie 主动提供帮助解决合并冲突和生成缺失 ground truth 文件。

结论:贡献者完成 rebase,外部协助解决冲突,但未详细说明技术细节。 · 已解决

依赖外部 PR 修复 flux 问题 question

mickqian 提及需要先修复 PR #22059 中的 flux 问题才能推进本 PR,表明存在跨 PR 依赖,可能影响本 PR 的合并时间线。

结论:未在讨论中明确解决,但本 PR 最终被合并,推测依赖问题已处理或优先级调整。 · pending

风险与影响

技术风险包括:

  1. 外部依赖风险:CLIP模型(openai/clip-vit-large-patch14)需从Hugging Face下载,可能因网络问题导致测试失败或版本不一致;ground truth文件托管在外部仓库(sglang-ci-data),增加维护复杂性和单点故障风险。
  2. 阈值配置敏感:consistency_threshold.json中的阈值需精细调整,过低可能导致误报(正常变更被阻止),过高可能漏掉实际回归;例如,'wan2_1_t2v_1_3b_lora_1gpu'案例的clip_threshold仅0.54,显示某些场景精度容忍度较高。
  3. CI时间增加:新增一致性检查可能延长测试运行时间,尤其涉及视频帧提取和嵌入计算。
  4. 向后兼容性:LoRA权重名称的添加(lora_weight_name)可能影响现有使用多文件LoRA的部署,需确保默认行为(weight_name=None)保持兼容。

影响范围:

  1. 对用户:间接提升diffusion模型输出的可靠性和一致性,防止性能回归影响终端应用质量。
  2. 对系统:CI流程更严格,增加了精度检查点,但可能因额外计算和外部依赖增加测试开销;同时,LoRA权重加载逻辑的扩展提高了多文件仓库的灵活性。
  3. 对团队:开发者需遵循新的测试要求,在添加或修改diffusion测试案例时,必须提供或更新ground truth文件到外部仓库,增加了协作复杂度;维护者需监控阈值调整以平衡测试严格性与CI稳定性。影响程度中等,主要波及multimodal diffusion测试模块和CI基础设施。
外部依赖风险 阈值配置敏感 CI 时间增加 向后兼容性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论