✨ 复制成功!

以文会友,打造好学人设!

📋 已复制到剪贴板:

ZeRO-3 为什么通信开销最大?ZeRO-3 可以配合 Offload 吗?

创建时间:2026-09-24 更新时间:2026-09-24 阅读次数:1242 次 分类:分布式训练与工程优化

ZeRO-3 为什么通信开销最大?

因为 ZeRO-3 把参数本身也切碎了,导致每次前向和反向传播都要频繁地 All-Gather 参数。而 ZeRO-1 和 ZeRO-2 只在特定阶段通信,频率和量都小得多。

ZeRO-1ZeRO-2ZeRO-3
切分对象优化器状态优化器状态 + 梯度优化器状态 + 梯度 + 参数
前向传播通信无无每层 All-Gather 参数
反向传播通信无每层 Reduce-Scatter 梯度每层 All-Gather 参数 + Reduce-Scatter 梯度
参数更新通信All-Gather 参数All-Gather 参数All-Gather 参数

关键区别:ZeRO-1 和 ZeRO-2 在前向/反向传播过程中不需要通信参数,因为每个 GPU 都有完整参数副本,可以独立计算。而 ZeRO-3 没有完整参数,算每一层之前都得先把这层的参数从其他 GPU 收集过来。

ZeRO-3 可以配合 Offload 吗?

可以,而且这通常是 ZeRO-3 在显存极度紧张时的标准“救命”配置。ZeRO-3 本身已经通过切分参数、梯度和优化器状态把显存占用压得很低了,但当你连切分后的那部分都放不下,或者想在一张卡上跑更大的模型时,就需要配合 Offload 把数据进一步挪到 CPU 内存甚至 NVMe 硬盘上。

在 DeepSpeed 的配置里,ZeRO-3 主要支持把两块东西 Offload 出去:

  • 优化器状态(Optimizer States):这是最常被 Offload 的部分。把 Adam 的动量(m 和 v)放到 CPU 内存,能省下大量显存,因为优化器状态本身就和参数量一样大。
  • 模型参数(Parameters):如果你连切分后的模型参数都放不下,可以把它们也 Offload 到 CPU 内存或 NVMe。这样 GPU 上只保留计算时临时需要的部分,显存占用能降到极致。

📌 面试天下网:一款服务于大一新生的口袋书,让大家在无聊的公共课上可以学习大模型技术!
📌 网站公告:【悬赏 200 元/篇】寻找“大模型面试战场”的一手回忆录
📌 网站公告:【大模型/Agent面试陪练1V1指导】正式启动......

评论专区

评论加载中...