Prhub

#53602 [ROCm][CI] Split MI300 Distributed Compile by graph partition mode

原始 PR 作者 aarushjain29 合并时间 2026-09-10 06:07 文件变更 1 提交数 3 评论 3 代码增减 +22 / -3

执行摘要

拆分 MI300 分布式编译 CI 作业以缩短关键路径。

该 CI 作业因测试 test_tp2_ar_rms_fusions 展开为 64 个参数组合(每个组合需启动新的 2-GPU 引擎)而成为 AMD CI 的耗时瓶颈(77.7 分钟),严重影响 CI 反馈速度。目标是将其拆分以并行运行,缩短总耗时。

此 PR 是一个高质量的 CI 优化。它针对明确的性能瓶颈(关键路径 CI 耗时过长)提出了一个经过实测数据支撑的、具体且低风险的解决方案。PR body 提供了充分的决策依据(测量数据、超时计算逻辑、权衡分析)。建议维护者合并,以加速 AMD ROCm 平台的开发迭代。

讨论亮点
  1. 测试覆盖度与正确性:PR body 中详细论证了 -k 过滤器的正确性,指出过滤器匹配的字面量 inductor_partition 和 dynamo_partition 在测试矩阵的参数 ID 中是唯一且互斥的,确保了两个作业的测试用例集合不相交且完备(32 + 32 = 64)。
  2. 资源与时间权衡:PR 明确指出了拆分的权衡:需要同时空闲两个 mi300_2 代理来并行运行,总 GPU 时间会增加(从 2 GPU 增至 4 GPU,且 test_async_tp.py 会重复运行)。这是为了换取关键路径(wall-clock time)的缩短。
  3. 超时设置决策:讨论了超时值的选择逻辑,基于实际观测时间和 PR #54695 建立的规则(平均值 + 20 分钟余量),并解释了不再沿用旧值(95 分钟)的原因。

实现拆解

  1. 变更入口:修改 .buildkite/test-amd.yaml 配置文件中的 (MI300) Distributed Compile 作业定义。
  2. 核心逻辑拆解:
    a. 将单个作业步骤拆分为两个步骤:(MI300) Distributed Compile (Inductor Partition) 和 (MI300) Distributed Compile (Dynamo Partition)。
    b. 通过为 pytest 命令添加 -k "inductor_partition" 和 -k "dynamo_partition" 参数过滤器,将 64 个参数化的测试用例平均分配到两个作业中运行。
    c. 两个新作业共享相同的测试矩阵、依赖路径和 agent pool (mi300_2),但运行不同的测试子集。
    d. 原作业中包含的 test_async_tp.py 测试在两个新作业中均会运行,以保证每个作业的自包含性。

  3. 配置配套调整:将两个新作业的 timeout_in_minutes 从原有的 95 分钟调整为 65 分钟,该值是基于实测数据(约 44.5 分钟)加上 20 分钟余量并向上取整到 5 的倍数计算得出。

  4. 无测试、Schema 或部署配套改动:本次变更仅涉及 CI 配置,不涉及应用代码或测试逻辑的变更。
文件 模块 状态 重要度
.buildkite/test-amd.yaml CI 配置 modified 4.42

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

评论区精华

测试过滤器的完备性与正确性 测试

PR 作者在 body 中详细论证了 `-k inductor_partition` 和 `-k dynamo_partition` 两个过滤器能精确且无交集地覆盖全部 64 个参数化用例。

结论:基于对测试参数化 ID 的分析,认为过滤器是正确且完备的,两个作业的测试集不相交且联合等于原测试集。 · 已解决

作业拆分带来的资源与时间权衡 性能

PR 明确指出拆分需要两个 `mi300_2` 代理并行,总 GPU 时间会增加(多一个 GPU,且 `test_async_tp.py` 重复运行),但能显著缩短关键路径时间。

结论:决策是接受更高的 GPU 资源消耗,以换取 CI 反馈速度的提升(从 77.7 分钟降至约 44.5 分钟)。 · 已解决

超时值的设置依据 正确性

作者解释了将超时从 95 分钟调整为 65 分钟的计算过程:基于实测数据(约 44.5 分钟)加上 20 分钟余量,并遵循 PR #54695 建立的规则。

结论:超时设置基于实测和既定规则,旨在提供足够缓冲但又不过度宽松。 · 已解决

风险与影响

  1. CI 资源竞争风险:新方案要求同时占用两个 mi300_2 代理,如果 AMD CI 资源池不足,可能导致作业排队时间增加,抵消并行化带来的时间收益。
  2. 测试覆盖遗漏风险:虽然 source_file_dependencies 配置一致,但若未来测试矩阵的参数 ID 发生变化(例如 inductor_partition 子串出现在其他组件中),可能导致过滤器误匹配或遗漏。不过,当前分析认为此风险较低。
  3. 无应用层面风险:由于变更仅限于 CI 配置,不影响 vLLM 的核心功能、性能或安全性。
  1. 对团队的影响:显著改善了 AMD ROCm 开发者的工作流。将 CI 反馈时间从近 80 分钟缩短至约 45 分钟,加快了代码合并和问题发现的速度,提升了团队效率。
  2. 对系统的影响:仅影响 CI 系统,无功能影响。可能增加 CI 基础设施的 GPU 资源消耗(峰值 GPU 数量翻倍),但总 GPU 时间增幅可控。
  3. 对用户的影响:间接影响。更快的 CI 反馈意味着 vLLM 的 ROCm 版本能够更稳定、更频繁地发布。
CI 资源依赖增加

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论