Prhub

#54989 [ROCm][CI] Fix false multi-node detection on native CI

原始 PR 作者 sheralskumar 合并时间 2026-09-03 02:53 文件变更 1 提交数 2 评论 4 代码增减 +1 / -1

执行摘要

修复 AMD CI 脚本误判单节点作业为多节点导致的执行中断。

根据 PR body 描述,在 PR#52344 中为 amd-entrypoints-integration-api-server 作业添加的 if [ "$BUILDKITE_PARALLEL_JOB" = "1" ] guard,其 bash [ ... ] 测试语法被脚本中的 is_multi_node() 函数错误地解析为 [node0] && [node1] 这样的多节点命令数组语法。这导致原生 AMD CI 作业因“不支持多节点作业”而立即退出。

这是一个必要的、小而精的 CI 脚本修复。虽然代码变更简单,但其解决的问题(CI 作业被误判)对日常开发流程有直接影响。建议精读此 PR 以了解 Buildkite 脚本中处理多节点检测的常见模式及潜在陷阱,这对于维护或扩展 CI 配置具有参考价值。

讨论亮点

审查过程相对直接,没有出现技术争议。

  • 触发审查:作者 sheralskumar 直接请求维护者 AndreasKaratzas 进行审查。
  • 验证与批准:审查者 AndreasKaratzas 执行了 /ci run 命令触发上游 CI 验证,并在 CI 通过后直接批准了合并。整个审查过程聚焦于确保修复有效,没有对实现方案提出替代建议。

实现拆解

  1. 变更入口:修改位于 .buildkite/scripts/hardware_ci/run-amd-test.sh 脚本中的 is_multi_node() 函数。该函数用于判断 Buildkite 构建任务是否为多节点任务。
  2. 核心逻辑调整:将函数中的回退检测逻辑从宽松的正则表达式匹配(\[.*\].*\&\&.*\[.*\])改为更精确的字符串匹配(*'] && ['*)。变更前,正则会匹配任何包含 [...] 和 && 的字符串,包括 if [ ... ] 这样的单节点 shell 语法。变更后,仅匹配特定的多节点作业分隔符格式 ] && [。
  3. 影响与配套:此变更仅影响 CI 运行脚本,不涉及模型或核心功能。目的是确保引入作业分片(如 PR#52344 和 PR#52352)后,单节点作业能被正确识别并执行,而不会被误判为多节点作业。没有额外的测试或配置文件变更。
文件 模块 状态 重要度
.buildkite/scripts/hardware_ci/run-amd-test.sh CI 脚本 modified 3.15

关键符号

is_multi_node

关键源码片段

.buildkite/scripts/hardware_ci/run-amd-test.sh infrastructure

此文件包含本次修复的核心逻辑,即 `is_multi_node()` 函数,是 AMD CI 脚本中判断构建环境的关键组件。

# 变更后的 is_multi_node() 函数片段
# 此函数用于检测构建任务是否需要多节点运行
is_multi_node() {
  # ... ( 前置检查逻辑 ) ...
​
  # 回退检测:通过结构化语法判断
  # 之前使用的正则表达式 `\[.*\].*\&\&.*\[.*\]` 误匹配了如 `if [ ... ]` 这样的 shell 语法
  # 修改为精确匹配多节点命令数组分隔符 `] && [`,避免单节点 guard 语法被误判
  if [[ "$cmds" == *'] && ['* ]]; then
    return 0
  fi
  return 1
}

评论区精华

触发上游 CI 验证 测试

审查者 `AndreasKaratzas` 使用 `/ci run` 命令触发了上游 CI 以验证此修复。

结论:CI 成功通过,证实修复有效。 · 已解决

风险与影响

  1. 回归风险(低):修改范围极小,仅调整了一个 shell 函数中的单个条件判断。目标是使检测逻辑更严格,理论上误报率会降低。风险在于新模式 '] && [' 可能过于严格,漏掉某些合法的多节点作业格式,但根据上下文,这正是所需的行为。
  2. CI 流程依赖:此修复是 CI 基础设施的关键一环。如果检测逻辑仍有缺陷,可能导致某些多节点测试作业无法被正确识别和跳过,从而在非多节点环境(如原生 AMD CI)中引发意外错误。

影响范围:直接影响 vLLM 项目的 AMD CI 流程,特别是使用分片策略的测试作业。
影响程度:对于保障 CI 的可靠性和正确性至关重要。修复前,原生 AMD CI 作业会直接失败,阻塞测试。修复后,作业可以按预期在单节点上运行,确保了测试覆盖率和构建反馈的及时性。

CI 流程依赖 正则表达式精度

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论