执行摘要
- 一句话:Intel GPU CI 为 v1/sample 测试加自动重试,缓解偶发失败
- 推荐动作:改动仅 4 行,浏览即可无需精读。值得记录的点:Buildkite
retry.automatic(exit_status + limit)是 CI 稳定性治理的轻量模板;但重试作用于整条命令链,粒度偏粗。若后续 v1/sample flaky 仍频繁,建议先定位根因(XPU 数值发散、资源竞争)而非依赖重试掩盖。
功能与动机
PR body 的 Purpose 仅声明 'Add retry for v1/sample in Intel GPU CI',未关联 Issue。结合仓库近期动态(PR #54172 处理 XPU 上 Qwen2-VL 数值发散导致的 flaky),可推断 v1/sample 在 Intel GPU CI 上存在偶发失败,需用自动重试吸收波动、降低维护者手动重跑与 CI 误报成本。
实现拆解
- 变更入口:唯一改动文件为
.buildkite/intel_jobs/misc_intel.yaml,具体是 Miscellaneous Tests (Sample/Logits Processors) 步骤(device 为 intel_gpu)。
- 核心变更:在该步骤的
commands 之后、parallelism: 4 之前新增 retry.automatic 配置块:匹配 exit_status: 1(pytest 用例失败的标准退出码)时执行自动重试,limit: 1 表示最多重试 1 次。这是 Buildkite 原生机制,无需自定义脚本。
- 作用范围:
retry 挂在步骤级别,而该步骤的 commands 是一条由 && 串联的 bash 命令链(先跑 v1/logits_processors,再跑 v1/test_oracle.py、v1/test_request.py、v1/test_outputs.py,最后跑 v1/sample),任一段失败都会触发整个步骤重跑,而非仅重跑 v1/sample。
- 验证与合入:PR 未新增测试;维护者 jikunshang 评论
/ci run 触发 Buildkite CI #86439 验证配置,随后直接 APPROVED 并合入。第二次提交为 Merge branch 'main',用于消除与主干的分叉。
关键文件:
.buildkite/intel_jobs/misc_intel.yaml(模块 CI 任务;类别 config;类型 configuration): 该文件是 Intel GPU CI 作业定义,本次唯一改动点:为 Miscellaneous Tests (Sample/Logits Processors) 步骤添加 Buildkite 自动重试,在命令以 exit status 1 退出时自动重试 1 次,以缓解 XPU 环境下 v1/sample 测试的偶发失败。
关键符号:未识别
评论区精华
本 PR 无实质技术讨论,评论以流程性为主:jikunshang 评论 '/ci run' 触发 Buildkite CI #86439 验证;claude[bot] 提示 fork 来源 PR 默认禁用自动审查,维护者可评论 '@claude review' 开启一次性审查;jikunshang 最终直接 APPROVED,未对重试次数、匹配退出码等策略提出异议,说明该改动风险低、被快速放行。
- 触发 CI 验证 (other): CI 成功触发并完成验证,为合并提供依据。
- fork PR 的自动审查策略 (other): jikunshang 未启用额外机器人审查,直接人工 APPROVED,流程上接受。
风险与影响
- 风险:重试粒度偏粗:
retry 作用于整个步骤,commands 是包含 logits_processors、test_oracle/test_request/test_outputs、v1/sample 的整条命令链(&& 串联),任一段失败都会重跑整个步骤,失败场景下 CI 耗时最多可能翻倍。覆盖范围有限:仅匹配 exit_status: 1;步骤超时(timeout_in_minutes: 60 被 Buildkite 中止)或 pytest 崩溃(如段错误,退出码非 1)不会触发重试。可能掩盖回归首次失败现场:自动重试会覆盖第一次失败现场,给根因定位增加干扰;但重试后仍失败则 CI 依然标红,不会最终放行真实回归。
- 影响:对用户与运行时零影响(纯 CI 配置)。对 Intel GPU CI 流水线的直接影响是 v1/sample 所在步骤失败后自动重跑一次,预期减少 flaky 导致的 red build 与人工重跑;副作用是失败场景下该步骤耗时增长(最多约翻倍)。对团队属于低风险 CI 稳定性治理。
- 风险标记:重试粒度覆盖整条命令链, 仅匹配 exit_status 1, CI 耗时可能翻倍, 可能掩盖回归首现场
关联脉络
- PR #54172 [Tests][XPU] Limit Qwen2-VL generation length to avoid flaky numerical divergence: 同属 Intel GPU 测试稳定性治理,均为缓解 XPU 环境下偶发失败(一个从测试本身规避数值发散,一个从 CI 执行策略吸收失败)。
- PR #54549 [CI] Mark 1-GPU L4 test steps with device: l4 for EKS migration: 同为 .buildkite 步骤配置调整,属于 CI 基础设施持续打磨的同一脉络。
- PR #54365 [CI] Exclude kv_transfer changes from broad spec-decode/kernels/multimodal triggers: 同为 .buildkite 触发配置优化,方向一致,都在减少 CI 无效运行与人工干预。
参与讨论