Skip to content

03. State Sharding and ZeRO | 状态分片与 ZeRO ​

学习问题 ​

数据并行复制计算,也复制参数、梯度和优化器状态。状态分片通过减少每个 rank 的常驻副本扩大训练容量,但计算前后的参数收集、梯度归约和 checkpoint 重组会带来新的通信与生命周期约束。

训练状态从完整复制转向 ZeRO 分片

核心机制 ​

ZeRO 阶段切分什么 ​

ZeRO 阶段越高,每个 rank 常驻的训练状态越少;与此同时,计算路径需要更频繁地恢复当前层所需状态。比较阶段时,应以同一模型、global batch、dtype 和 checkpoint 口径为前提。

策略参数梯度优化器状态主要新增代价
DDP每 rank 完整保存每 rank 完整保存每 rank 完整保存梯度 All-Reduce
ZeRO-1复制复制分片更新后参数同步
ZeRO-2复制分片分片梯度 Reduce-Scatter 与参数同步
ZeRO-3 / FSDP full shard分片分片分片计算前参数 All-Gather、反向归约与 reshard

生命周期决定峰值而非静态除法 ​

不能简单用“总状态字节 ÷ world size”预测真实峰值。参数可能在计算前临时聚合,activation 与通信 buffer 也会与训练状态重叠;checkpoint 保存还可能要求重组 full state dict。

生命周期位置需要观察的状态风险
初始化与加载参数如何落到 rank、是否由 rank 0 广播启动峰值和主机内存放大
forward 前当前单元参数 All-Gather临时完整参数与 activation 重叠
backward 后梯度归约和 reshardbucket、梯度与通信 buffer 重叠
optimizer step分片状态更新精度、offload 与更新时间
checkpointfull / local / sharded state dict保存峰值、恢复兼容性和产物体积

选择条件与验证证据 ​

目的入口
建立训练状态账本Part 01 · 06 显存计算与 ZeRO
验证阶段语义Part 02 · 27 ZeRO 优化器模拟
运行真实模型Transformers + Accelerate,选择 FSDP 或 DeepSpeed backend
汇总项目证据Part 02 · 79 分布式并行基准

相关阅读 ​

Released under the MIT License.