Prhub

#21800 [Misc] Tiny: Add test network timeouts and dynamic max-parallel for 5090/2-gpu runners

原始 PR 作者 hnyls2002 合并时间 2026-04-01 09:27 文件变更 4 提交数 6 评论 2 代码增减 +30 / -16

执行摘要

添加测试网络超时和动态并行度配置以优化 CI 稳定性。

根据 PR body 表述,动机是:'Add explicit timeouts to external network requests in test utilities to prevent silent CI hangs' 和 'Add dynamic max-parallel for stage-b-test-1-gpu-small (5090) and stage-b-test-2-gpu-large (2-gpu-h100), matching the existing H100 pattern',以解决 CI 挂起和优化资源分配问题。

对于技术管理者和工程师,此 PR 值得关注以了解 CI 基础设施的优化模式,特别是超时设置和并行度配置;对于核心开发者,无需深究代码细节,但可借鉴类似维护实践。

讨论亮点

本次 PR 未经过 review 讨论,所有变更由作者直接合并,提交历史显示作者通过多次提交调整超时值和修复格式,但无外部评审交互。

实现拆解

实现方案分为两部分:1) 测试文件超时添加:在 python/sglang/test/simple_eval_common.pydownload_dataset 函数中添加 timeout=120,在 python/sglang/test/simple_eval_mgsm.pyget_lang_examples 函数中添加 timeout=30,在 python/sglang/test/vlm_utils.pyget_or_download_file 函数中添加 timeout=30,以防止外部网络请求无限等待。2) CI 工作流重构:在 .github/workflows/pr-test.yml 中修改 set-parallel 步骤,引入 max_parallel_smallmax_parallel_2gpu 变量,根据 scheduled run 或 high priority label 设置不同并行度(例如 full parallelism 或 throttled)。

文件 模块 状态 重要度
.github/workflows/pr-test.yml CI modified 7.0
python/sglang/test/simple_eval_common.py test modified 5.0
python/sglang/test/simple_eval_mgsm.py test modified 5.0
python/sglang/test/vlm_utils.py test modified 5.0

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

关键符号

download_dataset get_lang_examples get_or_download_file

评论区精华

无 review 讨论 other

本次 PR 未经过 review 讨论,作者自行合并变更。

结论:变更由作者直接实施,无外部评审结论。 · 已解决

风险与影响

技术风险包括:1) 超时值设置可能不合理(如 30 秒或 120 秒),在某些网络环境下导致测试因超时而失败,影响稳定性;2) 并行度调整可能引发 CI 调度问题或资源争用,尤其是在多 runner 类型场景下;3) 提交历史中 'Revert localhost request timeouts' 表明作者已注意到并修复本地请求超时问题,但外部超时仍存在潜在配置风险。

影响分析:对最终用户无直接影响,主要影响 CI 系统和测试团队。系统层面,提升 CI 测试的稳定性和减少因网络问题导致的挂起;团队层面,优化 GPU 资源使用效率,缩短测试等待时间,但需监控超时异常和并行度调整效果。

超时配置风险 并行度调整影响

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

此 PR 通过为测试工具添加网络请求超时和动态调整 CI runner 并行度,旨在防止 CI 静默挂起并优化资源使用。变更涉及多个测试文件和 CI 工作流,属于基础设施维护,对测试稳定性和效率有积极影响。

功能与动机

动机源自 CI 测试中因外部网络请求无超时而导致的静默挂起问题。PR body 明确表述:"Add explicit timeouts to external network requests in test utilities to prevent silent CI hangs" 和 "Add dynamic max-parallel for 5090/2-gpu runners",以匹配现有 H100 模式,提升 CI 可靠性。

实现拆解

实现分为两个主要部分:

  1. 测试文件超时添加

    • python/sglang/test/simple_eval_common.pydownload_dataset 函数中,将 requests.get(url, stream=True) 改为 requests.get(url, stream=True, timeout=120)
    • python/sglang/test/simple_eval_mgsm.pyget_lang_examples 函数中,将 urllib.request.urlopen(fpath) 改为 urllib.request.urlopen(fpath, timeout=30)
    • python/sglang/test/vlm_utils.pyget_or_download_file 函数中,将 requests.get(url) 改为 requests.get(url, timeout=30)
  2. CI 工作流重构

    • .github/workflows/pr-test.ymlset-parallel 步骤中,引入 max_parallel_smallmax_parallel_2gpu 输出变量。
    • 根据 scheduled run 或 high priority label 判断是否使用 full parallelism(如 5090 runner 为 8,2-gpu runner 为 4)或 throttled(如 5090 runner 为 3,2-gpu runner 为 2)。

评论区精华

本次 PR 未经过 review 讨论,所有变更由作者直接合并。提交历史显示作者通过多次提交(如 "Revert localhost request timeouts")调整超时值,但无外部评审交锋。

风险与影响

风险:超时值(30 秒、120 秒)可能设置不当,在网络延迟高时导致测试失败;并行度调整可能引发 CI 调度冲突或资源浪费;提交历史中 revert 表明作者已处理本地超时问题,但外部超时仍需监控。

影响:对用户无直接影响;系统层面,提升 CI 测试稳定性,减少挂起风险;团队层面,优化 GPU 资源利用率,但需额外关注超时异常日志。

关联脉络

与近期 PR 如 #21778(缓存 Nvidia wheels)和 #21779(减少冗余测试)同属 CI 优化脉络,显示团队持续改进测试基础设施。同时,与 #21785(修改相同测试文件)存在功能关联,表明测试工具演进趋势。

参与讨论