NVL72 整机柜不该塞满:SkyPilot 按 2% 节点不可用率测算,每柜只用 16 个节点、留 2 个备用,可用算力反比塞满 18 个多 27%

GPU 调度平台 SkyPilot 10 月 29 日发文分析英伟达 GB200/GB300 NVL72 机柜的调度问题。NVL72 用 NVLink 把一个机柜内的 72 块 GPU 连成一体,每块 GPU 有 1.8 TB/s 双向带宽,但作业一旦跨柜,就退回到 InfiniBand;Hugging Face 测得张量并行从 NVLink 换到 InfiniBand,训练吞吐下降 43%。机柜成了最小计算单元后,故障影响面也放大:按 Meta 披露的每个 4 卡节点约 490 天平均中断间隔,一个 18 节点机柜约 27 天就会中断一次。SkyPilot 称其在生产 NVL72 集群上测得约 2% 的节点不可用率,套用英伟达对 128 柜(2,304 节点)集群的建模,按 16 节点切片、每柜留 2 个备用节点,可用节点为 2,037 个,比按整柜 18 节点切片的 1,602 个多 27%。英伟达 GR00T 团队在 512 块 GB300 上预训练 GR00T N1.7 时,机柜感知调度让吞吐提升 14.4%,单步从 1.59 秒降到 1.39 秒。文章同时是 SkyPilot 拓扑感知调度、故障热替换和自动碎片整理功能的推广。

为什么作业必须待在同一个机柜里

大模型训练最吃通信的两类并行,张量并行的 all-reduce 和专家并行的 all-to-all,都在关键路径上,没法和计算完全重叠。普通 8 卡服务器上,这些通信一旦跨节点就得走 InfiniBand;Hugging Face 测得张量并行从 NVLink 换到 InfiniBand,训练吞吐下降 43%。英伟达 NVL72 的卖点是把整个机柜 72 块 GPU 接到同一个 NVLink 网络上:每块 GPU 18 个 NVLink 端口、合计 1.8 TB/s 双向带宽,18 颗 NVSwitch 芯片构成无阻塞背板。但 GPU 调度平台 SkyPilot 10 月 29 日发文指出,这个好处只属于「留在同一个机柜里」的作业,跨柜部分仍然卡在 InfiniBand 上;而随着故障节点下线、作业陆续结束,空闲资源会被打散到各个机柜,想保住整柜越来越难。

27% 是怎么算出来的

机柜成了最小计算单元,故障的影响面也跟着变大。按 Meta 披露的数据,每个 4 卡节点平均约 490 天中断一次,一个由 18 个这样的节点组成的机柜约 27 天就会中断一次;在 128 柜的集群里,如果作业都按整柜分配,约每 5 小时就有一个机柜因单个节点故障而无法再接整柜作业。

SkyPilot 称其在生产 NVL72 集群上测得约 2% 的节点不可用率。套用英伟达对 128 柜(2,304 节点)集群的建模:按 16 节点切片、每柜留 2 个备用节点时可用节点为 2,037 个,按整柜 18 节点切片只有 1,602 个,前者多 27%;它也比 9 节点切片多 4%,因为 9 节点切片每坏一个节点就损失半个机柜,而 16 节点切片能完全吸收每柜前两次故障。16 个节点即 64 块 GPU,也正好是并行分组常用的 2 的幂。

实测与工具

英伟达 GR00T 团队在 128 个节点、512 块 GB300 上预训练人形机器人基础模型 GR00T N1.7 时,对比了两种调度:节点随意分散到多个机柜,与按机柜切片、恰好放进 8 个机柜。后者吞吐提升 14.4%,单步迭代从 1.59 秒降到 1.39 秒。SkyPilot 按此推算,1 万块 GPU 的集群每训练一天可省约 40 万美元。

文章后半部分介绍 SkyPilot 自家的三个功能:拓扑感知调度把每个切片放进单个机柜;检测到 GPU 故障时,用同柜备用节点热替换,其余节点不中断;自动碎片整理在作业因拓扑而非容量被卡住时,抢占可从检查点恢复的作业、腾出整柜,交互式开发环境默认不动。这篇文章本身是产品推广,具体调度实现细节披露不多,GR00T 的数据也来自英伟达自己的对比。但「留出备用节点反而多出可用算力」这个结论和测算方法,对正在规划 NVL72 集群的团队有直接参考价值。

via: SkyPilot Blog:Grace Blackwell needs a new scheduler: 27% more usable GPUs from the same racks