Prhub

#22346 [CI] Set RUNAI_STREAMER_MEMORY_LIMIT=0 for stage-b-test-1-gpu-small

sgl-project/sglang · 作者 alexnails · 合并时间 2026-04-08 17:23

分析状态 已生成
文件变更 1提交数 2 · 评论 4
代码增减 +1 / -0
run-ci test

执行摘要

为 CI 测试作业设置无限内存缓冲,解决模型加载超时问题。

PR body指出,runai模型加载测试从公共GCS桶流式加载CodeGemma 2B模型(5.6 GiB,165张量)时,流式加载器的默认内存缓冲上限导致其在预取前阻塞消费,使吞吐量从~3秒/迭代降至~42秒/迭代,总耗时18分钟(5.3 MiB/s),导致CI作业超时(引用链接:https://github.com/sgl-project/sglang/actions/runs/24119332733/job/70380386973?pr=20310)。设置RUNAI_STREAMER_MEMORY_LIMIT=0可启用无限内存缓冲,匹配已有工作流(diffusion-ci-gt-gen和pr-test-multimodal-gen)的做法,并遵循PR #17636。

该PR变更简单直接,无需精读。值得关注的是CI环境中流式加载器的内存缓冲调优模式,可作为类似性能问题的参考。对于基础设施团队,可了解如何通过环境变量优化大型模型加载测试。

讨论亮点

Review中无实质性技术讨论,仅hnyls2002批准PR。Issue评论显示作者alexnails和合并者hnyls2002通过/rerun-stage和/rerun-test命令验证修复,并确认在main分支上重跑成功(链接:https://github.com/sgl-project/sglang/actions/runs/24128218280)。

实现拆解

仅修改一个文件:.github/workflows/pr-test.yml。在stage-b-test-1-gpu-small作业的环境变量部分添加RUNAI_STREAMER_MEMORY_LIMIT: 0,使流式加载器在运行test_runai_model_loader测试时不受内存缓冲限制。

文件 模块 状态 重要度
.github/workflows/pr-test.yml CI/Workflow modified 5.0

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

评论区精华

CI 测试验证 测试

Issue 评论中通过 /rerun-stage 和 /rerun-test 命令验证修复效果。

结论:确认在 main 分支上重跑成功,测试通过。 · 已解决

风险与影响

风险较低:1. 设置无限内存缓冲可能增加CI运行节点的内存使用,但PR body指出已有类似工作流采用此设置,表明风险可控。2. 变更仅影响特定CI作业,不涉及生产代码,回归风险小。3. 缺少对内存使用量的具体监控,但鉴于测试模型大小固定(5.6 GiB),影响有限。

影响范围限于CI基础设施:1. 用户无感知,不影响系统功能。2. 确保stage-b-test-1-gpu-small作业中的runai模型加载测试稳定运行,避免超时失败,提升CI可靠性。3. 团队受益于更快的测试反馈和减少的CI重试成本。影响程度中等,因解决特定测试性能问题,但非核心功能变更。

内存使用增加 CI 特定变更

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本PR在stage-b-test-1-gpu-small CI作业中设置RUNAI_STREAMER_MEMORY_LIMIT=0环境变量,以解决runai模型加载测试因内存缓冲限制导致的性能瓶颈和超时问题。通过启用无限缓冲,将测试吞吐量从42秒/迭代提升至3秒/迭代,确保测试在30分钟超时内完成,提升CI可靠性。变更仅涉及CI工作流文件,风险低,不影响生产代码。

功能与动机

  • 问题背景test_runai_model_loader测试从公共GCS桶流式加载CodeGemma 2B模型(5.6 GiB,165张量)时,流式加载器的默认内存缓冲上限导致其在预取前阻塞消费,使吞吐量从~3秒/迭代降至~42秒/迭代,总耗时18分钟(5.3 MiB/s),引发CI作业超时(失败日志)。
  • 解决方案:设置RUNAI_STREAMER_MEMORY_LIMIT=0以启用无限内存缓冲,避免阻塞,匹配已有工作流(如diffusion-ci-gt-genpr-test-multimodal-gen)的做法,并遵循PR #17636的先例。

实现拆解

仅修改一个文件,具体变更如下:

文件路径 变更内容 作用
.github/workflows/pr-test.yml stage-b-test-1-gpu-small作业的env部分添加RUNAI_STREAMER_MEMORY_LIMIT: 0 为特定CI作业设置环境变量,使流式加载器无内存缓冲限制

代码片段:

env:
  CONTINUE_ON_ERROR_FLAG: ${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
  RUNAI_STREAMER_MEMORY_LIMIT: 0

评论区精华

Review中无实质性技术讨论,仅hnyls2002批准PR。Issue评论显示验证过程:

  • alexnails执行/rerun-stage stage-b-test-1-gpu-small触发重跑。
  • hnyls2002执行/rerun-test test_runai_model_loader.py --branch main (2 tries)并确认成功(重跑链接)。

风险与影响

  • 技术风险
    • 无限内存缓冲可能增加CI节点的内存使用,但已有类似工作流采用相同设置,表明风险可控。
    • 变更仅限CI环境,不涉及生产代码,回归风险小。
    • 缺少内存使用量监控,但测试模型大小固定(5.6 GiB),影响有限。
  • 影响分析
    • 用户:无感知,不影响系统功能。
  • 系统:提升CI测试稳定性,避免超时失败。
  • 团队:减少CI重试成本,加快测试反馈循环。

关联脉络

  • 历史PR关联:PR body提及遵循PR #17636,表明此环境变量设置已有先例,是CI优化的一致模式。
  • 跨PR趋势:近期多个PR(如#22292、#22301、#22298)聚焦CI优化,包括测试超时修复、资源管理和工作流调整,本PR延续了这一基础设施改进方向,针对特定测试场景的性能调优。

参与讨论