DGX Spark 双机 RoCE 互联部署 DeepSeek V4 Flash 0731 实战全记录

DGX Spark 双机 RoCE 互联部署 DeepSeek V4 Flash 0731 实战全记录

项目背景

使用两台 NVIDIA DGX Spark (GB10, 288GB) 通过 RoCE v2 直连,以 TP=2 跨节点运行 DeepSeek V4 Flash 0731(NVFP4 量化,原生 1M token 上下文)。

Gitee 仓库(完整代码 + 一键脚本): alexlu0912/dgxspark_deepseekv4flash0731

硬件拓扑

DGX Spark #1 (Head)          DGX Spark #2 (Worker)
GPU: 1x GB10 (288GB)         GPU: 1x GB10 (288GB)
RoCE: 10.10.12.11            RoCE: 10.10.12.21
         └── RoCE v2 (enp1s0f0np0, MTU 9000) ──┘

部署方案

核心组件

  • 推理框架: vLLM(anemll 定制版 dspark-vllm-gx10:0.1.1,专为 GB10 SM121 编译)
  • 镜像来源: ghcr.nju.edu.cn/anemll/dspark-vllm-gx10:0.1.1(南京大学 GHCR 镜像代理)
  • 网络: NCCL over RoCE v2(NCCL_IB_HCA=rocep1s0f0, GID_INDEX=5
  • 容器模式: Docker --network host(NCCL RDMA 数据路径必须直通物理 HCA,bridge 模式会失败)
  • 模型权重: ~156GB,支持 HuggingFace / ModelScope 两种下载方式

关键参数说明

参数 说明
max-model-len 1,048,576 1M 上下文 — DeepSeek V4 Flash 原生 YaRN,factor=16
gpu-memory-utilization 0.78 安全上限,不是实际占用。实测只占用约 79GB/288GB (~27%)
max-num-seqs 6 最大并发数。有余量可调至 8-10
kv-cache-dtype nvfp4_ds_mla 4-bit 量化 KV Cache,大幅提升上下文容量
speculative-config dspark (k=5) DGX Spark 硬件推测解码
moe-backend flashinfer_b12x GB10 专用 MoE 后端

一键准备脚本(prepare.sh

项目提供交互式菜单引导完成全部环境准备:

  1. 拉取 Docker 镜像(~29GB)
  2. 从 ModelScope 下载模型权重(~156GB)
  3. 自动配置 RoCE 网络(IP + MTU 9000 + 禁用 NetworkManager)
  4. 支持一键全部执行 + 智能跳过已完成的步骤

启动脚本 start-head.sh / start-worker.sh 自动检测 RoCE 网卡 MTU 并选择正确的 NCCL_IB_GID_INDEX

性能实测

TP=2 双节点,79GB 显存 / GPU(占用仅 27%):

场景 吞吐 首 Token 延迟
代码生成 (500 tokens) ~61 tok/s ~960ms
长文本 (500 tokens) ~45 tok/s ~1s

踩坑记录

部分关键问题:

1. NODE_RANK 冲突 — Head 和 Worker 都误设为 node-rank=0,NCCL 握手超时。Worker 必须 node-rank=1

2. docker bridge 模式 RDMA 失败 — 容器桥接/NAT IP 导致 mlx5 HCA 绑定失败,--network host 是唯一可靠方式。

3. 每次重启 JIT 编译超慢 — 未挂载 HuggingFace 缓存目录,FlashInfer autotune 缓存丢失。解决:持久化挂载 host 目录。

4. RoCE IP 重启丢失 — NetworkManager 覆盖手动配置。解决:nmcli dev set enp1s0f0np0 managed no

5. NCCL 初始化时序 — Worker 应先于 Head 启动。两边都就位后各自加载模型约 150 秒,约 18-20 分钟完成首冷启动。

更多(共 9 条)见仓库 troubleshooting.md

开源地址

:package: Gitee: alexlu0912/dgxspark_deepseekv4flash0731

包含:一键部署脚本、NCCL 参数详解(13 个环境变量)、性能 benchmark 数据(20 组)、9 条踩坑全记录、Docker 启动命令详解。

欢迎交流讨论!