执行摘要
本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-gen和pr-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延续了这一基础设施改进方向,针对特定测试场景的性能调优。
参与讨论