跳转到主要内容

TLDR:在单个 NVIDIA GH200 上高效地对 GPT-OSS-20B 和 Qwen3-14B 模型进行全参数微调,在四个 NVIDIA GH200 超级芯片上对 Llama3-70B 进行微调,同时提供高达 600 TFLOPS 的训练吞吐量。

目录

  • SuperOffload:在超级芯片上释放大规模 LLM 训练的强大潜力
    • SuperOffload 亮点
    • 引言
    • SuperOffload 工作原理
      • 1. 推测然后验证 (STV)
      • 2. 异构优化器计算
      • 3. 超级芯片感知类型转换
      • 4. 用于优化器效率的 GraceAdam
    • 经验与见解
    • 入门
    • 致谢

SuperOffload 亮点

  • 单个 GH200: 对 GPT-OSS-20B、Qwen3-14B 进行完全微调,最高可达 600 TFLOPS。
  • 多 GPU: 在 2 个 NVIDIA GH200 上运行 Qwen3-30B-A3B 和 Seed-OSS-36B;在 4 个 NVIDIA GH200 上运行 Llama-70B。
  • 更快的训练: 与 ZeRO-Offload 等现有工作相比,吞吐量提高达 4 倍。
  • 更高的 GPU 利用率: 将 GPU 利用率从约 50% 提升至 >80%。
  • 工程和可组合性: 适用于 ZeRO-3 和 Ulysses;操作技巧(例如,NUMA 绑定、MPAM)已在教程中记录。

引言

紧密耦合的异构 GPU/CPU 架构(又称超级芯片,例如 NVIDIA GH200、GB200 和 AMD MI300A)的出现,为大规模人工智能提供了新的优化机会。然而,如何最好地利用这种新硬件进行大规模 LLM 训练仍有待探索。现有的卸载解决方案是为传统的松耦合架构设计的,在超级芯片上表现不佳,存在高开销和低 GPU 利用率的问题。为了解决这一差距并充分利用超级芯片进行高效 LLM 训练,我们开发并开源了 SuperOffload

SuperOffload 引入了一系列新颖的技术,可以在 LLM 训练中同时充分利用 Hopper GPU、Grace CPU 和 NVLink-C2C。与假设 GPU-CPU 互连速度慢(例如,PCIe-Gen4 为 64GB/秒)的现有卸载解决方案不同,SuperOffload 利用更快的互连(例如,NVLink-C2C 为 900GB/秒)来提高 GPU 和 CPU 利用率以及训练吞吐量。使用 SuperOffload,像 GPT-OSS-20BQwen3-14BPhi-4 这样的模型可以在单个 GH200 上进行完全微调,在适度设置下(序列长度 4k,批大小 4)提供高达 600 TFLOPS 的训练吞吐量。这比 ZeRO-Offload 等现有工作高出高达 4 倍 的吞吐量。SuperOffload 甚至可以扩展到更大的模型,包括在两个 GH200 上运行 Qwen3-30B-A3B 和 Seed-OSS-36B,以及在四个 GH200 上运行 Llama-70B。

SuperOffload 构建在 DeepSpeed ZeRO Stage 3 之上,并可在 DeepSpeed 版本 >= 0.18.0 中使用。为了方便集成到 LLM 微调管道中,SuperOffload 与 Hugging Face Transformers 兼容,并且不需要对模型代码进行任何更改。

图 1:SuperOffload 在不同序列长度和批大小的大模型微调中,吞吐量比 ZeRO-Offload 高达 4 倍,最高可达 600 TFLOPS。

SuperOffload 工作原理

SuperOffload 包含四种可组合的卸载优化技术:(1)推测然后验证,(2)GPU/CPU 优化器计算,(3)超级芯片感知类型转换,以及(4)GraceAdam。下面我们简要介绍这些技术。

1. 推测然后验证 (STV)

在大多数卸载解决方案中,优化器步骤中需要 CPU 和 GPU 之间的同步以确保数值鲁棒性。例如,裁剪梯度范数需要计算全局梯度范数,混合精度训练需要全局检查 NaN 和 INF 值。这些操作要求 CPU 在收到所有梯度后才能执行优化器步骤和权重更新。STV 通过打破这种依赖性来避免此瓶颈,但通过将 CPU 上的推测优化器计算与 GPU 上的反向传播重叠,仍然保留了训练的语义。当梯度后处理最终完成时,推测优化器计算将根据需要提交、丢弃或正确重播。STV 对训练稳定性的后验证使其能够与之前的预验证方法相比,安全地缩短关键路径。下图说明了 SuperOffload 如何以与传统方法(如 ZeRO-Offload)不同的方式调度反向传播和优化器计算。

图 2:之前的卸载方法存在全局梯度范数和 NaN 和 INF 值的全局检查问题,这使得优化器步骤暴露在关键路径上,并阻碍了重叠机会。在 SuperOffload 中,我们引入了推测然后验证调度来解决这个问题。

我们通过测量 BLOOM-176B 模型预训练运行中撤销推测优化器计算的频率来评估 STV 的有效性。如下图所示,这种回滚(例如,由于梯度裁剪等)在热身期后很少发生,使得相关开销在整个训练运行中可以忽略不计。这使得 STV 在加速大规模训练方面具有实用性。

图 3:红点表示 BLOOM 预训练期间触发的梯度裁剪——热身期后很少发生,这表明 SuperOffload 的 STV 机制有效消除了由梯度裁剪和 NaN/INF 检查引起的同步造成的停顿。

2. 异构优化器计算

SuperOffload 通过在 GPU 和 CPU 之间划分优化器计算来提高优化器效率。GPU 用于反向传播后期创建的梯度的优化器计算,而 CPU 处理其余部分。这种划分方案有多种好处。首先,GPU 避免了空闲等待 CPU 上的优化器计算完成。其次,通过利用 GPU 和 CPU 计算,优化器计算得到减少。第三,可以避免与 GPU 优化器计算对应的参数和梯度在 GPU-CPU 之间传输。

3. 超级芯片感知类型转换

在具有卸载功能的混合精度训练中,GPU 和 CPU 之间的张量传输需要 GPU 上的低精度格式(例如 BF16、FP16 等)和 CPU 上的高精度格式(即 FP32)之间进行类型转换。为了解决 PCIe 互连的带宽限制,以前的卸载解决方案以低精度传输张量,并在 GPU 和 CPU 上根据需要进行类型转换。然而,这在超级芯片架构上是一种次优策略,因为 GPU 计算吞吐量比 CPU 高约 100 倍,并且高带宽互连(例如 NVLink-C2C)使传输成本可以忽略不计。如图 4 所示,GH200 上的最佳策略是在 GPU 上进行张量类型转换并以高精度格式传输。

图 4:GH200:在 GPU 上将张量转换为低/高精度并以高精度传输在超级芯片上更高效。

4. 用于优化器效率的 GraceAdam

现有的 LLM 训练卸载解决方案需要流行 Adam 优化器的 CPU 实现,例如 PyTorch Adam 和 DeepSpeed CPU-Adam。然而,这些对于超级芯片来说是不够的,因为它们没有针对 Grace CPU 架构进行优化。为了解决这个问题,我们创建了 GraceAdam,这是一种针对 Grace CPU 的高效 Adam 优化器实现。GraceAdam 利用底层 ARM 架构特性,例如可伸缩向量扩展 (SVE)、显式内存层次结构管理和指令级并行性,实现了高性能。下图 5 显示,在 GH200 超级芯片上,GraceAdam 比 PyTorch Adam (PT-CPU) 快 3 倍,比 CPU-Adam 快 1.3 倍。据我们所知,GraceAdam 是第一个针对 Grace CPU 开源的 Adam 优化器实现。

图 5:使用 GraceAdam 在 GH200 上高效进行 Adam 优化器计算。

经验与见解

  • NUMA 绑定: 将每个 GPU 与其直接关联的 CPU 配对,以最大化带宽。在 DeepSpeed 中:
--bind_cores_to_rank
  • MPAM(内存系统资源分区和监控): 减少 CPU 和 GPU 之间的干扰。
    如何在 NVIDIA 超级芯片上启用 MPAM:
# i. Install the kernel from NVIDIA NV-Kernels.

# ii. Check MPAM support:
grep MPAM /boot/config-$(uname -r)
# Expected output:
CONFIG_ARM64_MPAM=y
CONFIG_ACPI_MPAM=y
CONFIG_ARM64_MPAM_DRIVER=y
CONFIG_ARM64_MPAM_RESCTRL_FS=y
# Verify resctrl filesystem:
ls -ld /sys/fs/resctrl

# iii. Mount resctrl:
mount -t resctrl resctrl /sys/fs/resctrl

# iv. Create partitions:
mkdir /sys/fs/resctrl/p1 /sys/fs/resctrl/p2

# v. Set CPU cores & memory configs (example from experiments):
/sys/fs/resctrl/p1/cpus_list:
0-6
/sys/fs/resctrl/p2/cpus_list:
7-71
/sys/fs/resctrl/p1/schemata:
MB:1=100
L3:1=ff0
/sys/fs/resctrl/p2/schemata:
MB:1=20
L3:1=f

入门

使用 SuperOffload 的端到端微调示例可在我们的教程/自述文件中找到:DeepSpeedExamples:SuperOffload。要快速启用 SuperOffload,请将以下开关添加到您的 DeepSpeed 配置中(有关完整上下文,请参阅教程):

图 6:在 DeepSpeed 配置中通过一行代码启用 SuperOffload。

提示:在超级芯片平台(例如 GH200/GB200/MI300A)上,结合“经验与见解”中的 NUMA 绑定和 MPAM 设置,以稳定带宽并提高端到端性能。

致谢

这项工作是 伊利诺伊大学厄巴纳-香槟分校 (UIUC)AnyscaleSnowflake 之间的紧密合作。

我们还要感谢国家超级计算应用中心 (NCSA) 的 William Gropp、Brett Bode 和 Gregory H. Bauer,以及 NVIDIA 的 Dan Ernst、Ian Karlin、Giridhar Chukkapalli、Kurt Rago 和其他人,感谢他们在 Grace CPU 上支持 MPAM 方面提供的宝贵讨论和指导。

欢迎社区反馈和贡献。有关启用和示例,请参阅上面的“入门”。

BibTeX

@inproceedings{superoffload,
    author = {Xinyu Lian and Masahiro Tanaka and Olatunji Ruwase and Minjia Zhang},
    title = "{SuperOffload: Unleashing the Power of Large-Scale LLM Training on Superchips}",
    year = {2026},
    booktitle = {Proceedings of the 31st ACM International Conference on Architectural Support for Programming Languages and Operating System (ASPLOS'26)}
}