# PR #5596 完整报告

- 仓库：`verl-project/verl`
- 标题：[docker] feat: Add GB200 (aarch64/Blackwell) Docker image and training example
- 合并时间：2026-04-10 11:23
- 原文链接：http://prhub.com.cn/verl-project/verl/pull/5596

---

# 执行摘要
本 PR 为 verl 项目添加了对 GB200（aarch64/Blackwell）硬件的支持，通过修改 Dockerfile 以兼容 aarch64 架构、新增训练示例脚本以及更新测试文件以动态检测 GPU 数量。这是一个有意义的跨平台扩展，提升了系统在 NVIDIA Blackwell 架构上的运行能力，但引入了依赖版本固定和测试适配风险。

# 功能与动机
动机源于支持新硬件平台 GB200（aarch64/Blackwell），解决兼容性问题。根据 PR body，主要修复包括：pin transformers 版本以避免 SGLang 不兼容、添加 cachetools 依赖、以及适配 cuDNN。目标是使 verl 能在 Blackwell 架构上运行强化学习训练，扩展应用场景。

# 实现拆解
实现分为三个关键部分：
1. **Dockerfile 修改**：在 `docker/Dockerfile.stable.vllm` 中统一 x86_64 和 aarch64 支持，主要更改包括：
 - 添加 APT_MIRROR 构建参数，允许用户指定 apt 镜像源。
 - 修复 cuDNN 安装，根据架构（x86_64 或 aarch64）选择正确仓库路径。
 - 固定依赖版本如 transformers 和 vllm 以确保兼容性。
2. **训练脚本**：新增 `examples/grpo_trainer/run_qwen3-8b_gb200.sh`，配置 GB200 特定参数：
   ```bash
   actor_rollout_ref.rollout.enforce_eager=True
   +actor_rollout_ref.rollout.engine_kwargs.sglang.attention_backend=flashinfer
   actor_rollout_ref.actor.fsdp_config.model_dtype=bfloat16
   ```
3. **测试适配**：更新多个测试文件，使用 `torch.cuda.device_count()` 替代硬编码 GPU 数量，例如在 `tests/checkpoint_engine/test_correctness_on_gpu.py` 中：
   ```python
   _ngpus = torch.cuda.device_count()
   @pytest.mark.parametrize("num_trainer, num_rollout", [(2, _ngpus - 2)])
   ```

# 评论区精华
review 讨论聚焦于设计和正确性：
- **gemini-code-assist[bot] 指出风险**：> "The path to the PyTorch METADATA file is hardcoded. This is brittle and will break..." 强调硬编码路径可能导致构建失败。
- **wuxibin89 建议合并 Dockerfile**：> "Can we merge docker/Dockerfile.vllm.gb200 into docker/Dockerfile.vllm..." kaixih 回应逐步对齐，最终统一了文件。
- **ETOgaosion 提出测试改进**：> "Maybe we can extract the same codes to get ngpus..." 导致实现 `get_local_gpus_num` 函数。

# 风险与影响
**风险具体说明**：
- 硬编码路径（如 Dockerfile 中的 METADATA）可能随基础镜像更新失效，需监控构建稳定性。
- 固定依赖版本（如 transformers==4.57.1）可能阻碍未来升级，增加技术债务。
- 测试更改覆盖多个文件，动态 GPU 检测逻辑需在多种环境下验证，以防回归错误。

**影响分析**：
- 用户需本地构建镜像，提升了使用门槛，但扩展了硬件支持。
- 系统测试更灵活，适应不同 GPU 配置，增强跨平台健壮性。
- 团队需维护多架构支持，但统一 Dockerfile 降低了长期复杂性。

# 关联脉络
本 PR 与近期历史 PR 关联紧密：
- **PR 5724**（vllm base image 升级）：为 Dockerfile 统一提供基础，涉及 ubuntu 版本升级。
- **PR 5934**（vllm 修复）：同属 vllm 和 rollout 模块优化，显示仓库对该后端的持续投入。
整体上，verl 项目正通过一系列 PR 扩展硬件支持（如 NPU、GB200）和优化测试，本 PR 是这一趋势的一部分，标志着向多架构生态系统演进。