<aside>
AI 主导整理,请自行辨别信息
</aside>
这篇文章记录了把 aiak_sglang_offload 部署到 GB200 NVL72 集群上的全过程。从 4 月 8 日到 4 月 22 日,两周时间里,我们把一个原本只跑在 X86 + B200上的 PD 分离推理框架,搬到了 ARM64 + Blackwell GPU + 机架级 NVLink fabric 的全新硬件上。最终结果是:P 节点和 D 节点各自可以独立跑通推理,手工两段式 P→D 也验证通过,但全自动端到端 PD 分离还没走完,当前卡在 Mooncake 的 send__tensors 触发 UCX segfault(mooncake 不支持 NVLink 协议)
过程中踩的坑分三类:硬件认知(GB200 不是大号的 HGX,MNNVL 的运行模型和传统 RDMA 完全不同)、环境配齐(驱动版本、IB 网卡状态、nvidia-imex,三件事必须同时到位否则怎么调都不对)、软件适配(从 vllm 到 sgl-kernel 到 DeepGEMM,几乎所有 CUDA 组件都要在 sm_100 + arm64 + CUDA13 上重新编译,aiak 代码本身也有大量接口分叉和 offload 路径的 bug)。
这篇文章把这些踩坑经验按时间线展开,尽量把每个问题的根因和排查思路写清楚,而不是只列现象。
目标是让 DeepSeek-V3.2 671B fp8 模型在 GB200 NVL72 上跑 PD 分离推理。P 节点做 prefill,D 节点做 decode,两者之间通过 Mooncake 传输 KV cache。这东西在 B200 上已经跑过了,代码是现成的(aiak_sglang_offload 分支),但在 GB200 上从来没验证过。
一句话:一个机架里有 72 个 Blackwell GPU,分成 18 个计算托盘,每个托盘 4 个 GPU,跑各自的 Linux OS。GPU 之间通过 NVLink switch 互连,形成一个 NVLink domain。跨托盘的 GPU 可以通过 MNNVL(Multi-Node NVLink)直接访问对方的显存,不需要走 PCIe 或 IB。
这和传统的 HGX/DGX 有本质区别:HGX 是一个 OS 管理所有 GPU,NVLink 在单机内部;GB200 NVL72 是多个 OS 共享一个机架级 NVLink fabric。
粗略统计:
没有 K8S,没有自动化部署,全靠 SSH + docker exec + 肉眼看日志。