Prhub

#38396 [AMD][CI] Update DeepEP branch

vllm-project/vllm · 作者 rjrock · 合并时间 2026-04-18 03:30

分析状态 已生成
文件变更 2提交数 3 · 评论 7
代码增减 +8 / -9
rocm ci/build v1 infra

执行摘要

更新 ROCm 平台 DeepEP 版本并调整 CI 测试配置,修复 gfx942/gfx950 编译问题。

根据PR描述和Issue评论,此PR的目的是更新DeepEP分支到一个能正确为gfx942和gfx950架构进行提前编译的版本,以部分解决issue #37709。作者在评论中解释,当前ROCm DeepEP仅支持gfx942和gfx950架构(引用自DeepEP仓库的setup.py),而更新版本后,DeepEP会在链接时将适当的内核打包到其二进制文件中。此外,由于CI环境中目前没有MI355代理,需要将测试用例迁移到MI325节点来验证变更。

此PR主要涉及基础设施更新,对于关注ROCm平台或CI/CD流程的工程师值得浏览,特别是Dockerfile中构建参数的用法和CI测试迁移的决策。对于核心模型推理或性能优化工程师,优先级较低。

讨论亮点

review中主要有两个讨论点:

  • GPU架构硬编码问题:gemini-code-assist[bot]指出GPU_TARGETS被硬编码,但引入了DEEPEP_ROCM_ARCH构建参数,建议使用该参数以提高可配置性。作者在实现中已采纳此建议,通过-DGPU_TARGETS="${DEEPEP_ROCM_ARCH}"传递参数。
  • 架构支持范围:gshtras询问测试是否不应在250s(可能指gfx250架构)上运行,作者回复澄清ROCm DeepEP目前仅支持gfx942和gfx950,并提供了DeepEP仓库的代码链接作为证据。
    整体讨论较少,tjtanaa在确认修复链接和预期状态后批准了PR。

实现拆解

  1. 更新DeepEP依赖版本和构建参数:在docker/Dockerfile.rocm中,将DeepEP分支从e84464ec更新为5d90af8b,并新增构建参数DEEPEP_ROCM_ARCH,其值设为gfx942;gfx950。同时,将ROC-SHMEM的构建过程从直接调用cmake改为使用脚本bash ../scripts/build_configs/all_backends,并传递-DGPU_TARGETS="${DEEPEP_ROCM_ARCH}"参数,以确保针对指定GPU架构编译。
  2. 调整CI测试配置:在.buildkite/test-amd.yaml中,将DeepEP数据并行测试命令从MI355节点的测试步骤移动到MI325节点的测试步骤。具体来说,在MI325节点的Distributed Tests (2 GPUs)(H100-MI325)步骤中添加命令- VLLM_LOGGING_LEVEL=DEBUG python3 examples/offline_inference/data_parallel.py --model=Qwen/Qwen1.5-MoE-A2.7B -tp=1 -dp=2 --max-model-len=2048 --all2all-backend=deepep_high_throughput,并从MI355节点的对应步骤中移除该命令。
  3. 清理构建配置:在提交历史中,第三个提交移除了ROC-SHMEM构建中冗余的-DCMAKE_POSITION_INDEPENDENT_CODE=ON标志,简化了Dockerfile。
文件 模块 状态 重要度
docker/Dockerfile.rocm 部署脚本 modified 4.17
.buildkite/test-amd.yaml CI 配置 modified 2.9

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

评论区精华

GPU 架构硬编码与可配置性 设计

gemini-code-assist[bot] 指出 GPU_TARGETS 被硬编码,但引入了 DEEPEP_ROCM_ARCH 构建参数,建议使用该参数以提高可配置性。

结论:作者在实现中已采纳建议,通过 -DGPU_TARGETS="${DEEPEP_ROCM_ARCH}" 传递参数,使构建过程更灵活。 · 已解决

DeepEP 支持的 GPU 架构范围 question

gshtras 询问测试是否不应在 250s(可能指 gfx250 架构)上运行,作者回复澄清 ROCm DeepEP 目前仅支持 gfx942 和 gfx950。

结论:作者提供了 DeepEP 仓库的代码链接作为证据,确认架构支持限制,解释了测试迁移的原因。 · 已解决

风险与影响

技术风险较低,主要涉及基础设施和CI配置:

  • 兼容性风险:DeepEP版本更新可能引入未知的二进制兼容性问题,但PR描述中的测试结果显示数据并行测试通过,降低了风险。
  • CI配置风险:将测试从MI355移动到MI325节点,如果两个节点的硬件或软件环境存在差异,可能导致测试结果不一致。但PR描述表明测试在MI325上通过,且MI355节点当前不可用,因此风险可控。
  • 构建过程风险:ROC-SHMEM构建过程改为脚本驱动,如果脚本行为不稳定或与未来版本不兼容,可能影响Docker镜像构建。但变更较小,且基于官方脚本,风险有限。

影响范围主要限于ROCm平台的基础设施和CI流水线:

  • 对用户的影响:普通用户无直接影响,除非他们使用基于更新后Docker镜像的自定义部署或依赖DeepEP功能。
  • 对系统的影响:修复了gfx942/gfx950架构的编译问题,提升了ROCm平台上DeepEP的可用性和正确性。
  • 对团队的影响:CI测试配置调整确保了DeepEP相关测试能在可用节点上运行,提高了测试覆盖率和可靠性,有助于持续集成。
依赖版本更新 CI 配置迁移

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:更新ROCm平台DeepEP版本并调整CI测试配置,修复gfx942/gfx950编译问题。
  • 推荐动作:此PR主要涉及基础设施更新,对于关注ROCm平台或CI/CD流程的工程师值得浏览,特别是Dockerfile中构建参数的用法和CI测试迁移的决策。对于核心模型推理或性能优化工程师,优先级较低。

功能与动机

根据PR描述和Issue评论,此PR的目的是更新DeepEP分支到一个能正确为gfx942和gfx950架构进行提前编译的版本,以部分解决issue #37709。作者在评论中解释,当前ROCm DeepEP仅支持gfx942和gfx950架构(引用自DeepEP仓库的setup.py),而更新版本后,DeepEP会在链接时将适当的内核打包到其二进制文件中。此外,由于CI环境中目前没有MI355代理,需要将测试用例迁移到MI325节点来验证变更。

实现拆解

  1. 更新DeepEP依赖版本和构建参数:在docker/Dockerfile.rocm中,将DeepEP分支从e84464ec更新为5d90af8b,并新增构建参数DEEPEP_ROCM_ARCH,其值设为gfx942;gfx950。同时,将ROC-SHMEM的构建过程从直接调用cmake改为使用脚本bash ../scripts/build_configs/all_backends,并传递-DGPU_TARGETS="${DEEPEP_ROCM_ARCH}"参数,以确保针对指定GPU架构编译。
  2. 调整CI测试配置:在.buildkite/test-amd.yaml中,将DeepEP数据并行测试命令从MI355节点的测试步骤移动到MI325节点的测试步骤。具体来说,在MI325节点的Distributed Tests (2 GPUs)(H100-MI325)步骤中添加命令- VLLM_LOGGING_LEVEL=DEBUG python3 examples/offline_inference/data_parallel.py --model=Qwen/Qwen1.5-MoE-A2.7B -tp=1 -dp=2 --max-model-len=2048 --all2all-backend=deepep_high_throughput,并从MI355节点的对应步骤中移除该命令。
  3. 清理构建配置:在提交历史中,第三个提交移除了ROC-SHMEM构建中冗余的-DCMAKE_POSITION_INDEPENDENT_CODE=ON标志,简化了Dockerfile。

关键文件:

  • docker/Dockerfile.rocm(模块 部署脚本;类别 infra;类型 infrastructure): 更新了DeepEP版本和构建参数,修复gfx942/gfx950架构的编译问题,是PR的核心变更。
  • .buildkite/test-amd.yaml(模块 CI配置;类别 config;类型 configuration): 调整CI测试配置,将DeepEP数据并行测试从MI355节点迁移到MI325节点,以适配当前CI环境。

关键符号:未识别

评论区精华

review中主要有两个讨论点:

  • GPU架构硬编码问题:gemini-code-assist[bot]指出GPU_TARGETS被硬编码,但引入了DEEPEP_ROCM_ARCH构建参数,建议使用该参数以提高可配置性。作者在实现中已采纳此建议,通过-DGPU_TARGETS="${DEEPEP_ROCM_ARCH}"传递参数。
  • 架构支持范围:gshtras询问测试是否不应在250s(可能指gfx250架构)上运行,作者回复澄清ROCm DeepEP目前仅支持gfx942和gfx950,并提供了DeepEP仓库的代码链接作为证据。
    整体讨论较少,tjtanaa在确认修复链接和预期状态后批准了PR。

  • GPU架构硬编码与可配置性 (design): 作者在实现中已采纳建议,通过-DGPU_TARGETS="${DEEPEP_ROCM_ARCH}"传递参数,使构建过程更灵活。

  • DeepEP支持的GPU架构范围 (question): 作者提供了DeepEP仓库的代码链接作为证据,确认架构支持限制,解释了测试迁移的原因。

风险与影响

  • 风险:技术风险较低,主要涉及基础设施和CI配置:
  • 兼容性风险:DeepEP版本更新可能引入未知的二进制兼容性问题,但PR描述中的测试结果显示数据并行测试通过,降低了风险。
  • CI配置风险:将测试从MI355移动到MI325节点,如果两个节点的硬件或软件环境存在差异,可能导致测试结果不一致。但PR描述表明测试在MI325上通过,且MI355节点当前不可用,因此风险可控。
  • 构建过程风险:ROC-SHMEM构建过程改为脚本驱动,如果脚本行为不稳定或与未来版本不兼容,可能影响Docker镜像构建。但变更较小,且基于官方脚本,风险有限。
  • 影响:影响范围主要限于ROCm平台的基础设施和CI流水线:
  • 对用户的影响:普通用户无直接影响,除非他们使用基于更新后Docker镜像的自定义部署或依赖DeepEP功能。
  • 对系统的影响:修复了gfx942/gfx950架构的编译问题,提升了ROCm平台上DeepEP的可用性和正确性。
  • 对团队的影响:CI测试配置调整确保了DeepEP相关测试能在可用节点上运行,提高了测试覆盖率和可靠性,有助于持续集成。
  • 风险标记:依赖版本更新, CI配置迁移

关联脉络

  • PR #39978 [ROCm][CI] Build fastsafetensors from source so it links against libamdhip64: 同样涉及ROCm平台的CI和Dockerfile更新,聚焦于依赖构建和链接问题,可对比基础设施改进模式。
  • PR #39953 [ROCm] Fix TurboQuant on ROCm: backend routing, flash-attn compat, int64 overflow: 同为ROCm平台的bugfix,涉及后端路由和兼容性修复,展示了跨平台支持的持续优化。

参与讨论