标签:分布式训练
-
ZeRO:把优化器状态也切了,显存占用的递进削减方案
朴素数据并行每卡都存一份完整的权重、梯度和 Adam 状态,对 7B 模型这是近 200 GB 的浪费。ZeRO 的思想朴素:既然梯度反正要求平均,分片存储、用时再聚合。三个优化阶段分别对应分片优化器状态、梯度、权重,把单卡显存从 O(Ψ) 一路压到 O(Ψ/N),代价是通信量的有界上涨。这篇算清每阶段省多少、多花多少通信,以及 PyTorch FSDP 对应的是哪一档。
-
数据并行、张量并行、流水并行的划分逻辑:三种并行各自的通信量账本
单卡显存放不下大模型时,有三种切法:数据并行切 batch、张量并行切矩阵、流水并行切层。选择的依据不是直觉,而是一本通信量与显存的账——张量并行每层两次 all-reduce 但通信快,数据并行每步一次 all-reduce 数据量大,流水并行通信最少却有气泡。这篇用一个具体模型把三种并行的账算清楚,说明 3D 并行怎么组合排布。