Prhub

#21091 [diffusion] CI: add performance comparison job in nightly

原始 PR 作者 mickqian 合并时间 2026-03-25 19:01 文件变更 15 提交数 38 评论 11 代码增减 +2080 / -6

执行摘要

在 nightly CI 中添加扩散模型跨框架性能比较 job,自动化追踪性能趋势。

根据PR body和commit历史,动机是追踪sglang-diffusion性能随时间变化(PR body中提到'generate trend diagrams, for tracking performance of sglang-diffusion throughout time'),并与其他框架如vLLM-Omni进行比较以评估竞争力。初始commit也强调'benchmark SGLang-Diffusion against vLLM-Omni across 9 test cases',旨在自动化性能基准测试。

推荐技术管理者和工程师精读此PR,重点关注scripts/ci/utils/diffusion/run_comparison.py中的服务器生命周期管理、性能数据收集逻辑,以及仪表板生成的设计决策。这提供了构建可扩展CI性能监控管道的实用模式,值得学习其异常处理、依赖管理和可视化集成。

讨论亮点

Review讨论主要集中在代码质量改进和CI设计上。gemini-code-assist[bot]提出了三项建议:在run_comparison.py中具体化异常处理('Catching a broad Exception and silently returning')、在linear.py中为recompile_limit增加添加注释('add a comment explaining why the limit was increased')、在generate_diffusion_dashboard.py中优化异常捕获('catch specific exceptions')。这些建议旨在增强健壮性和可维护性,无重大争议。mickqian质疑CI文件组织('not sure if we should use a dedicated file for multimodal_gen'),但未深入讨论。整体讨论以采纳建议为主,显示迭代优化过程。

实现拆解

实现方案分为三个层次:

1) CI工作流层:修改.github/workflows/nightly-test-nvidia.yml,添加nightly-test-diffusion-comparison job,定义运行环境和步骤;
2) 性能比较基础设施层:新增scripts/ci/utils/diffusion/目录下的脚本,包括comparison_configs.json(测试配置)、run_comparison.py(启动服务器和发送请求)、generate_diffusion_dashboard.py(生成仪表板)和publish_comparison_results.py(发布结果);
3) 服务器端支持层:修改python/sglang/multimodal_gen/runtime/下的文件(如gpu_worker.py),添加perf_dump_path参数支持,以准确测量服务器端延迟。

文件 模块 状态 重要度
.github/workflows/nightly-test-nvidia.yml CI modified 7.0
scripts/ci/utils/diffusion/run_comparison.py CI/ 扩散 added 8.0
python/sglang/multimodal_gen/runtime/managers/gpu_worker.py 扩散运行时 modified 6.0

关键符号

execute_forward PerformanceLogger.dump_benchmark_report _build_sglang_cmd run_comparison.py 中的 _main 函数 generate_diffusion_dashboard.py 中的 fetch_history_from_github

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

评论区精华

异常处理改进 正确性

gemini-code-assist[bot] 建议在 run_comparison.py 中模型路径解析时,将 broad Exception 捕获具体化并添加警告日志,以避免隐藏调试问题。

结论:建议被采纳或考虑,提交历史显示后续提交优化了错误处理。 · 已解决

代码注释添加 documentation

gemini-code-assist[bot] 建议在 linear.py 中为 recompile_limit 从 16 增至 64 添加注释,解释变更原因以帮助未来维护。

结论:未在 review 中直接回应,但提交历史显示该变更旨在解决 torch.compile 重编译问题,可能已内部采纳。 · partially resolved

CI 文件组织设计 设计

mickqian 质疑是否应为 multimodal_gen 使用专用 CI 文件(类似 pr-test-multimodal-gen.yml),而非集成到 nightly-test-nvidia.yml 中。

结论:未在 review 中深入讨论或解决,可能保留为未来优化点。 · 待处理

风险与影响

技术风险包括:

1) CI超时风险:提交历史显示多次调整超时设置(如HEALTH_TIMEOUT增至2400秒),但大型模型如FLUX.2-dev可能仍导致job失败;
2) 性能数据准确性依赖:服务器端perf_dump_path的实现(gpu_worker.py)若出错,可能导致基准测试数据不准确;
3) 跨框架依赖管理复杂:vllm-omni和lightx2v的安装冲突(commit中提及'pin torch version')可能引发环境不稳定;
4) 可视化生成失败:仪表板脚本(generate_diffusion_dashboard.py)依赖外部API和历史数据,网络或格式问题可能中断图表生成。

影响范围:

1) 对用户无直接影响,但通过提供性能趋势数据,间接支持优化决策和竞争分析;
2) 对系统增加了nightly CI的运行开销(4-gpu-h100资源,240分钟超时),需监控资源使用和成本;
3) 对团队,引入了自动化性能基准测试能力,有助于持续追踪扩散模块性能、识别回归,并促进跨框架比较。影响程度为中等,主要影响CI流程和开发工作流。

CI 超时风险 依赖管理复杂 性能数据准确性依赖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论