Prhub

#1835 Add support for NVIDIA DGX Spark (GB10 / sm_121a, arm64)

原始 PR 作者 boots-coder 合并时间 2026-04-21 15:42 文件变更 7 提交数 7 评论 3 代码增减 +538 / -1

执行摘要

新增 NVIDIA DGX Spark(GB10)的 Docker 构建支持,扩展硬件兼容性到 arm64 架构。

根据PR body,GB10是当前支持矩阵中的明确差距:slime的发布镜像仅支持x86_64,且现有arm64基础镜像的CUDA 12.9缺少sm_121a目标,导致Triton JIT崩溃。需要基于CUDA 13.2的NGC vLLM容器来提供最小可行基础。

该PR值得精读,特别是对于需要在非x86架构或新兴硬件上部署的用户。关注Dockerfile中的环境变量设置和补丁机制,展示了解决跨平台兼容性的实用技术权衡。

讨论亮点

Issue评论中,作者boots-coder分享了端到端smoke测试结果和100-rollout收敛实验的评估数据,验证了GB10支持的有效性;维护者zhuzilin表示肯定。无review评论,表明变更已通过测试验证并直接合并。

实现拆解

  1. 新增Dockerfile.gb10docker/Dockerfile.gb10):基于NGC vLLM容器(arm64,CUDA 13.2),设置环境变量如TORCH_CUDA_ARCH_LIST,安装系统依赖(如libz3-dev),并应用头文件补丁(如NVTX和cuda_profiler_api.h)。
  2. 添加内核编译补丁docker/patch/gb10/patch_sgl_kernel.pysgl-kernel-arch.patch):引入SGL_KERNEL_GB10_ONLY CMake选项,仅编译sm_120a和sm_121a变体,避免多架构编译时的内存溢出。
  3. 修复代码语法错误slime/utils/arguments.py):移除--log-reward-category参数help字符串中的多余逗号,防止argparse解析时抛出AttributeError
  4. 补充测试和文档:新增smoke测试脚本(scripts/run-qwen2.5-0.5B-gb10-smoke.sh)用于快速验证,并添加详细说明文档(docker/NOTES_GB10.md)记录15个阻塞问题的解决方案。
文件 模块 状态 重要度
docker/Dockerfile.gb10 部署脚本 added 6.16
docker/patch/gb10/patch_sgl_kernel.py 补丁脚本 added 5.72
slime/utils/arguments.py 参数解析 modified 4.32
scripts/run-qwen2.5-0.5B-gb10-smoke.sh 测试脚本 added 5.02
docker/NOTES_GB10.md 文档说明 added 4.15

关键符号

add_wandb_arguments

关键源码片段

docker/Dockerfile.gb10 infrastructure

新增的核心 Dockerfile,定义了基于 NGC vLLM 容器的 arm64 构建流程,解决了 GB10 的 CUDA 和架构兼容性问题。

# 基于 NGC vLLM 容器(arm64,CUDA 13.2),提供 GB10 所需的最小环境
FROM nvcr.io/nvidia/vllm:26.03-py3@sha256:13e327dad79e6e417f6687fec2ba76b0386d597082ec0ee003c1e964ec6ad0e7# 设置 CUDA 架构列表:GB10 使用 sm_121a,但 NGC PyTorch 仅提供 compute_120 PTX,通过前向兼容运行
ENV TORCH_CUDA_ARCH_LIST="12.0+PTX"# 安装系统依赖:libz3-dev 用于 tilelang 的 Z3 SMT 调度器
RUN apt-get update && apt-get install -y --no-install-recommends \
    libz3-dev \
    && rm -rf /var/lib/apt/lists/*
​
# 应用头文件补丁:NVTX 和 cuda_profiler_api.h 在 CUDA 13 中被移除,提供兼容性 shim
RUN git clone --depth 1 https://github.com/NVIDIA/NVTX.git /tmp/nvtx_src \
    && cp -r /tmp/nvtx_src/c/include/nvtx3 /usr/local/cuda/include/nvtx3 \
    && rm -rf /tmp/nvtx_src
COPY docker/patch/gb10/cuda_profiler_api.h /usr/local/cuda/include/cuda_profiler_api.h
slime/utils/arguments.py core-logic

修复了全局参数解析中的语法错误,该错误会导致所有平台的 --help 调用失败,影响用户体验。

def add_wandb_arguments(parser):
    # ... 其他参数定义 ...
    parser.add_argument(
        "--log-reward-category",
        type=str,
        default=None,
        help=(
            "Log statistics of the category of reward, such as why the reward function considers it as failed. "
            "Specify the key in the reward dict using this argument." # 修复:移除末尾逗号,确保 help 为字符串而非元组
        ),
    )
    # ... 继续其他参数 ...
    return parser

评论区精华

端到端测试验证 测试

作者 boots-coder 在 Issue 评论中分享了 smoke 测试结果(Qwen2.5-0.5B + GRPO 完整周期 2m10s)和 100-rollout 收敛实验的评估数据(GSM8K 测试集准确率从 43.59% 提升至 50.19%),维护者 zhuzilin 表示感谢。

结论:测试验证了 GB10 支持的有效性,变更被认可并合并。 · 已解决

风险与影响

技术风险包括:

  1. 兼容性风险:依赖特定CUDA 13.2版本和NGC容器,可能与其他环境或未来升级冲突;
  2. 维护复杂度:新增Dockerfile和补丁文件需要长期维护,可能增加构建流程的脆弱性;
  3. 性能不确定性:arm64架构和sm_121a目标在slime中的性能表现尚未全面基准测试。

对用户影响:扩展了slime的硬件支持范围,使拥有NVIDIA DGX Spark(GB10)的用户能够运行训练流程。对系统影响:新增arm64构建路径,但不影响现有x86_64部署。对团队影响:需要维护新Dockerfile和补丁,但通过文档和测试降低了上手门槛。

新架构支持 依赖特定版本 构建复杂度增加

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论