# PR #6326 完整报告

- 仓库：`verl-project/verl`
- 标题：[docker,vllm] feat: Enable DeepEP in ARM stable image
- 合并时间：2026-05-14 08:04
- 原文链接：http://prhub.com.cn/verl-project/verl/pull/6326

---

# 执行摘要

- 一句话：ARM64 稳定镜像启用 DeepEP
- 推荐动作：建议精读，因为该 PR 体现了跨架构构建的典型模式。值得关注的设计决策：锁定提交以确保可复现性；动态 CUDA 目标路径。另外建议采纳 review 中关于清理中间文件和建议显式安装 nvshmem 的建议，以保证镜像简洁和构建健壮。

# 功能与动机

GB200 节点使用 ARM64 架构，需要 DeepEP 实现 expert parallelism 以降低 MoE 推理延迟。PR body 明确目标为 'Enable DeepEP in the stable vLLM Docker image on ARM64 while keeping x86_64 support'。

# 实现拆解

1. **移除架构条件限制**：在 `docker/Dockerfile.stable.vllm` 中删除 `if [ "$(uname -m)" = "x86_64" ]` 外层判断，使 DeepEP 安装步骤在所有架构上执行。
2. **锁定 DeepEP 提交**：在克隆 DeepEP 仓库后添加 `git checkout 3f601f7ac1c062c46502646ff04c535013bfca00`，确保构建可复现。
3. **动态设置 CUDA 目标路径**：用 `CUDA_TARGET=$(uname -m | sed 's/aarch64/sbsa-linux/;s/x86_64/x86_64-linux/')` 适配不同架构的 CUDA 包含路径。
4. **指定 GPU 架构**：添加 `TORCH_CUDA_ARCH_LIST="9.0;10.0"` 环境变量，确保针对 Blackwell 等新 GPU 架构进行编译。
5. **保持 gdrcopy 安装条件不变**：gdrcopy 部分仍被 `if [ "$(uname -m)" = "x86_64" ]` 包裹，仅限 x86_64，因为 ARM 上不需要。

关键文件：
- `docker/Dockerfile.stable.vllm`（模块 部署脚本；类别 infra；类型 infrastructure）: 唯一变更文件，包含所有逻辑修改：移除架构限制、锁定 DeepEP 提交、动态 CUDA 路径和 GPU 架构指定。

关键符号：未识别

## 关键源码片段

### `docker/Dockerfile.stable.vllm`

唯一变更文件，包含所有逻辑修改：移除架构限制、锁定 DeepEP 提交、动态 CUDA 路径和 GPU 架构指定。

```dockerfile
# =========================
# Install DeepEP
# =========================
RUN cd /home && mkdir -p dpsk_a2a && cd dpsk_a2a && \
    git clone -b v2.5.1 https://github.com/NVIDIA/gdrcopy.git && \
    cd gdrcopy && \
    make prefix=/usr/local lib_install && \
    cd .. && rm -rf gdrcopy && \
    git clone -b hybrid-ep https://github.com/deepseek-ai/DeepEP.git && \
    # 显式锁定提交以确保构建可复现
    git checkout 3f601f7ac1c062c46502646ff04c535013bfca00 && \
    # 动态设置 CUDA 目标路径：aarch64 -> sbsa-linux, x86_64 -> x86_64-linux
    CUDA_TARGET=$(uname -m | sed 's/aarch64/sbsa-linux/;s/x86_64/x86_64-linux/') && \
    export CPATH=/usr/local/cuda/targets/${CUDA_TARGET}/include/cccl:$CPATH && \
    # 针对 Blackwell 等新 GPU 架构编译
    TORCH_CUDA_ARCH_LIST="9.0;10.0" python setup.py install

```

# 评论区精华

- **gemini-code-assist[bot]**指出构建中间文件 `/home/dpsk_a2a` 未清理，会增加镜像体积，建议在 `RUN` 命令末尾删除临时文件。
- **gemini-code-assist[bot]**指出 `nvidia-nvshmem` 包未显式安装，仅依赖预装路径，存在因依赖缺失导致构建失败的风险，建议显式安装 `nvidia-nvshmem-cu12`。
- 上述建议未在 PR 中采纳或答复，PR 最终由 **wuxibin89**审批通过。

- 构建中间文件清理 (other): 未在 PR 中处理，但建议采纳。
- 显式安装 nvidia-nvshmem (other): 未在 PR 中处理，但建议采纳。

# 风险与影响

- 风险：
 - **镜像体积增大**：DeepEP 构建中间文件未清理，可能导致最终镜像增加数百 MB 存储。
 - **构建依赖隐式**：`nvidia-nvshmem` 未显式安装，若基础镜像变动可能破坏构建。
 - **ARM 构建稳定性**：DeepEP 的 ARM 支持可能不如 x86_64 成熟，存在未测试的边缘情况。
 - **仅单层 Dockerfile 变更**：无配套测试或 CI 更新，ARM 构建验证依赖手动执行。
- 影响：
 - **用户**：ARM64 用户（如 GB200 节点）可直接使用 DeepEP 加速 MoE 模型推理，无需额外手动安装。
 - **系统**：镜像构建时间增加；ARM 镜像大小预计增加。
 - **团队**：维护成本略有上升，需确保 DeepEP 版本与 vLLM 和 CUDA 兼容。
 - 风险标记：缺少测试覆盖 , 构建依赖隐式

# 关联脉络

- PR #6269 [ci] chore: bump trtllm CI image to 1.3.0rc14: 同为容器镜像构建优化，该 PR 更新 TRT-LLM 镜像并清理临时修复，与本 PR 在 Dockerfile 优化和镜像体积管理上有共通性。