执行摘要
- 一句话:AMD CI 超时参数调整:1800→2400 秒
- 推荐动作:该 PR 是典型的 CI 运维优化,值得关注的是其数据驱动的分析方法和详实的 PR body。技术决策者可以学习如何基于实际运行数据(分布统计、分阶段对比)来合理设置超时阈值。
功能与动机
PR body 指出 test_vlm_perf_5090.py 在 AMD MI300 上的实际运行时间存在显著波动,其中一次达到 1801 秒导致超时(0/8 passed)。作者收集了 13 次近期运行数据,统计显示 mean=1308 s, stdev=172 s, max=1801 s,1800 秒超时无任何余量,而 2400 秒可覆盖所有观测值并提供 33% 余量。同时 step-level timeout-minutes 也需从 45 分钟提升至 60 分钟,因为 40 分钟的 per-file 超时加上其他测试文件约 7 分钟和约 2-3 分钟 setup 可能超过 45 分钟。
实现拆解
- 修改超时参数:在
.github/workflows/pr-test-amd.yml 中,将 stage-b-test-1-gpu-small-amd job 中 run 步骤的 timeout-per-file 参数从 1800 改为 2400。
- 同步调整步骤超时:将同一步骤的
timeout-minutes 从 45 改为 60,确保整个步骤有足够时间完成(考虑 per-file 超时、其他文件执行时间及 setup 开销)。
- 保持其他 job 不变:
rocm720 变体(pr-test-amd-rocm720.yml)和 stage-b-test-1-gpu-small-amd-nondeterministic job 的超时值保持不变,因为其硬件 MI325 的实际耗时约 1000 秒,1800 秒超时足够。
- 数据驱动决策:PR body 提供了详细的统计分析,包括每阶段耗时对比、分布参数,并解释长尾原因(HF 缓存未命中、启动阶段变慢、重试导致的组合效应),确保调整有理有据。
关键文件:
.github/workflows/pr-test-amd.yml(模块 CI 配置;类别 infra;类型 infrastructure): 唯一修改的文件,调整了 CI 超时配置。
关键符号:未识别
关键源码片段
.github/workflows/pr-test-amd.yml
唯一修改的文件,调整了 CI 超时配置。
# .github/workflows/pr-test-amd.yml, 第 419-429 行
- name: Run test
# 步骤级别超时:45 分钟 → 60 分钟,给慢速 runner pod 更多余量
timeout-minutes: 60
run: |
bash scripts/ci/amd/amd_ci_exec.sh -w "/sglang-checkout/test" \
python3 run_suite.py \
--hw amd \
--suite stage-b-test-1-gpu-small-amd \
--auto-partition-id ${{ matrix.part }} \
--auto-partition-size 14 \
# --timeout-per-file 从 1800 秒调整为 2400 秒,
# 基于 13 次运行数据的分析:mean=1308s, max=1801s, 33% 余量
--timeout-per-file 2400 \
${{ needs.check-changes.outputs.continue_on_error == 'true' && '--continue-on-error' || '' }}
评论区精华
审核简洁,两位 reviewer(yctseng0211 和 bingxche)均直接批准,无额外讨论。PR body 本身包含详尽的数值分析,无待解决的分歧。
风险与影响
- 风险:风险非常低。仅调整 CI 超时参数,不涉及任何代码逻辑变更。超时值从 1800 秒增加到 2400 秒(增加 33%),不会影响测试正确性或系统稳定性。但若未来测试用例进一步变慢,可能需要再次调整。
- 影响:仅影响 AMD CI 中
stage-b-test-1-gpu-small-amd job(MI300 硬件)。减少该 job 因超时而失败的概率,提升 CI 稳定性。对其他平台、其他测试套件无影响。
- 风险标记:低风险, CI 稳定性
关联脉络
参与讨论