Prhub

#7609 [ci] fix: pin ROCm e2e CI containers to a single NUMA node

原始 PR 作者 PeterYang12 合并时间 2026-08-31 10:01 文件变更 1 提交数 1 评论 0 代码增减 +4 / -0

执行摘要

ROCm CI 容器固定 NUMA 节点,解决 e2e 超时

ROCm MI300 e2e CI 任务持续超时。PR body 指出:ROCm runners 位于 rocm7.14 QEMU VM 中,暴露 160 vCPU 分布在两个 NUMA 节点(node0 = CPUs 0-79,node1 = CPUs 80-159)。容器可在全部 CPU 上自由调度时,主机侧 launch 路径严重退化:进程和线程引导在节点间扇出,跨节点流量主导任务 wall clock,任务大部分时间消耗在启动而非工作负载上,最终命中 60 分钟超时。PR 明确这是主机侧/虚拟化问题而非 verl 问题,训练脚本本身不受影响。

值得快速阅读,但不需要精读。它展示了一个很有价值的运维经验:在虚拟化环境(QEMU VM)下,容器自由调度导致的跨 NUMA 启动开销可能被误判为计算性能问题;--cpuset-cpus/--cpuset-mems 组合是恢复 NUMA 局部性的标准手段。对于负责 CI 基础设施的工程师,建议关注:

1) NUMA 拓扑感知的容器调度实践;
2) YAML folded scalar 中反斜杠陷阱(作者在 PR body 中特别提醒);
3) 这类硬编码硬件假设应记录到 workflow 注释或文档,以便环境迁移时更新。

讨论亮点

该 PR 无 review 评论和讨论线程(review_comments_count = 0,comments_count = 0),唯一审核由 wuxibin89 给出 APPROVED 且无文字说明。因此没有可提炼的争议或权衡交锋;PR body 中作者自己强调了 YAML folded scalar 的换行细节(不能写尾部反斜杠),这是唯一值得注意的实现注意事项。

实现拆解

本 PR 是纯 CI 配置修复,变更集中在单个 workflow 文件,实现步骤如下:

  1. 修改目标文件.github/workflows/e2e_ppo_trainer_megatron_vllm_rocm.yml,涉及两个任务 e2e_ppo_trainer_fsdp_vllm_rocme2e_ppo_trainer_megatron-moe-expert-parallel_rocm
  2. 添加容器 NUMA 固定选项:在两个任务的 container.options 中追加 --cpuset-cpus 0-31(限制容器使用 NUMA node 0 的 32 个 CPU)和 --cpuset-mems 0(将内存分配固定到同一节点)。PR body 特别说明 options 是 YAML folded scalar(>-),因此每个选项单独一行、不加尾部反斜杠——若加 \ 会在折叠后以字面参数传给 docker create
  3. 保留其他配置不变:GPU 数量、并行度配置、超时均未修改,仅动容器调度约束。
  4. 验证方式:无新增测试(CI 配置本身就是测试)。作者在应用前已在同一 rocm7.14 MI300 VM 上验证 CPU 固定方案有效。
文件 模块 状态 重要度
.github/workflows/e2e_ppo_trainer_megatron_vllm_rocm.yml CI 工作流 modified 3.36

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

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

技术风险如下:

  • CI 环境依赖风险:修复依赖特定硬件拓扑假设(160 vCPU 两 NUMA 节点的 QEMU VM)。若未来 ROCm runner 迁移到不同拓扑(如单 NUMA 或不同 CPU 分布),--cpuset-cpus 0-31 的硬编码可能不适用甚至无效,需要随环境变更同步更新。
  • 性能容量降低:容器可调度 CPU 从 160 降至 32,若未来训练脚本或 vLLM 工作负载需要更多 CPU 资源(如更大并行度或更多数据加载线程),可能成为瓶颈。
  • 回归风险极低:仅修改容器调度参数,不触碰 verl 代码路径、GPU 数量或超时配置,且改动经作者在真实 VM 上验证。
  • 无测试覆盖:PR 未添加自动化验证,NUMA 固定效果依赖人工确认;这是 CI-only 变更的固有局限。
  • 对 CI 稳定性:直接影响 ROCm e2e 两个任务(FSDP vLLM 与 Megatron MoE 并行)的超时问题,预期从频繁超时恢复为稳定通过,属于正面影响。
  • 对用户/系统:无生产代码影响,不涉及 verl 训练路径、API 或配置。
  • 对团队:减少了 ROCm 相关 CI 噪音,降低维护者排查超时的时间成本。
  • 影响范围:单一 workflow 文件、两个 job 容器,影响面小且明确。
硬编码硬件拓扑假设 缺少自动化测试覆盖 可用 CPU 容量降低

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论