执行摘要
本 PR 修复了 AMD ROCm7.2 CI 中 multimodal-gen-test-2-gpu-amd 测试套件在分区 0 持续超时的问题。通过将总分区数从 2 增加到 3,使参数化测试被拆分到两个分区,独立测试文件独占一个分区,从而平衡负载、消除超时。这是一个针对 CI 基础设施的精准调整,不影响任何业务逻辑。
功能与动机
问题背景:AMD ROCm7.2 CI 的 2-gpu 多模态测试套件在分区 0 持续超时。作者在 PR body 中详细分析了根本原因:该套件包含 1 个独立测试文件(test_disagg_server.py)和 22 个参数化测试用例。原配置 total_partitions=2,根据分区逻辑 参数化分区数 = 总分区数 - 独立文件数,仅剩 1 个分区用于所有 22 个参数化测试,导致分区 0 负载过重而超时,分区 1 仅运行独立文件约 11 分钟。
修复目标:通过增加总分区数,为参数化测试分配更多分区,实现负载均衡,解决超时问题。
实现拆解
变更仅涉及一个文件,分为两步:
- 调整分区矩阵:在
.github/workflows/pr-test-amd-rocm720.yml 中,将 part 矩阵值从 [0, 1] 改为 [0, 1, 2],将总分区数从 2 增加到 3。
- 更新脚本参数:在同一文件中,将调用测试脚本时的
--total-partitions 参数从 2 改为 3,确保脚本使用新的分区数。
关键配置片段:
jobs:
multimodal-gen-test-2-gpu-amd:
max-parallel: 1 # 串行执行以避免 AITER 内核 JIT 期间的资源耗尽
matrix:
runner: [linux-mi325-2gpu-sglang]
part: [0, 1, 2] # 分区数从 2 增至 3
runs-on: ${{matrix.runner}}
steps:
- name: Run multimodal 2‑gpu test suite
run: |
python3 sglang/multimodal_gen/test/run_suite.py \
--suite 2-gpu \
--partition-id ${{ matrix.part }} \
--total-partitions 3 # 同步更新总分区数
影响说明:此改动仅影响 CI 执行策略,不修改任何测试逻辑、源码或依赖。参数化测试现在将被拆分到分区 0 和 1(通过 LPT 调度),独立文件 test_disagg_server.py 独占分区 2,从而均衡负载、避免超时。
评论区精华
Review 过程简洁,审核者 bingxche 直接批准,未留下评论。从 PR body 可看出,作者已提供了完整的根本原因分析和修复方案,可能因此未引发进一步讨论。
风险与影响
风险分析:
- 配置风险:低。仅调整分区数,若未来测试套件结构变化(如独立文件数增加),可能需要重新评估分区逻辑。
- 资源风险:低。增加分区旨在优化负载,理论上不会增加总资源消耗,反而可能因避免超时而提高 CI 效率。
影响分析:
- 用户影响:无。这是内部 CI 优化,不影响终端用户功能。
- 系统影响:解决特定测试套件的超时问题,提升 AMD ROCm7.2 CI 的稳定性和可预测性。
- 团队影响:减少 CI 失败,加速开发迭代。
关联脉络
本 PR 是团队持续优化 CI 负载均衡的一部分。近期相关 PR 包括:
- PR #23245:同样修改了
pr-test-amd-rocm720.yml,更新工作流名称,属于同一 CI 配置维护脉络。
- PR #23208:将 CPU 测试套件拆分为 4 个分区以解决超时问题,展示了团队在测试分区策略上的通用模式。
这些 PR 共同反映了团队对 CI 稳定性和效率的重视,通过精细化的分区调整来应对不同测试套件的负载特征。
参与讨论