本页学习说明
复制式数据并行让四卡处理不同数据,却每卡保留完整状态。全状态分片可把指定持久小计从每卡 128 GB 降至 32 GB;当前层计算仍需临时取齐参数,反向梯度仍需共同归约,由所属片完成更新。节省长期冗余伴随通信与临时视图。
进一步阅读
条件与来源
以下从计算对象、条件与原始证据继续展开。
原 N46:四张卡分担数据,为什么仍各存一份?
数据并行中,每张卡处理不同数据,但每批数据都经过整个模型。各卡参数梯度经汇总后执行一致更新,所以模型副本维持一致。本课 DDP 设定下,各卡都长期保存完整工作权重、梯度和优化器状态:每卡128GB,不因四卡总容量而自动除以四。
层用 L₁…Lₙ 表示,参数分片用 θ₀…θ₃ 表示,不能混为各卡分管不同层。TP 切分同一层的张量计算,PP 分配不同层并安排微批流水线,这些与数据并行的身份不同。
DDP、TP、PP与流水气泡;旧四卡图与详细说明。
原 N47:长期分片保存,轮到一层再临时取齐
在本课四卡混合精度账本下,ZeRO-1 仅分片优化器相关状态,每卡 $16+16+96/4=56$ GB;ZeRO-2 再分片梯度,$16+16/4+96/4=44$ GB;ZeRO-3 再分片工作权重,$128/4=32$ GB。上述均是持久状态小计。
实线框保存本卡长期负责的片;当前层计算之前,通过 all-gather 暂时取得该层完整参数视图,虚线框只代表这一层而非整个模型。本卡数据仍走全部层。当前层计算后可释放临时完整视图,再为下一层安排参数。真实 ZeRO/FSDP 实现会选择预取、驻留和通信重叠策略;临时视图、激活与缓冲使运行峰值高于32GB。
七步训练及ZeRO1/2/3完整账本;原展开页。
原 N48:分开保管,也能共同更新同一个模型
同一参数在不同数据批次上产生不同梯度贡献。reduce-scatter 将同一个参数的贡献归约,并把结果交给负责该分片的卡;不把不同参数的梯度混加。若训练目标用批次平均损失,归约时还需要与目标口径一致的缩放。
本卡拿到所属参数的共同梯度后,使用自己保存的主权重和 m/v 更新所属片。下一轮 all-gather 取得这些共同更新后的参数,因此所有数据仍在训练同一个模型。完整闭环是:各卡数据前向→需要时取齐层参数→反向产生梯度→按同参数归约分散→所属卡更新→释放临时量→下一轮取得新参数。
ZeRO §5.2、§7.2,物理p.10、14;保留的七步展开与预取/峰值说明。
阅读完整讲义