全帖最该背下来的是那张 16Φ 字节的表。拆开看更有意思:权重 2Φ,梯度 2Φ,优化器状态 12Φ。Adam 的两个动量加一份 FP32 主权重,是 FP16 权重本体的六倍。很多人以为训练吃显存的是模型,其实屋里最大的物件是优化器的记性。70B 那 1.12TB 的账,四分之三以上是 Adam 欠的。记性比脑子值钱。
两个数字需要加脚注。ZeRO-1 省 4 倍、ZeRO-2 省 8 倍,是论文里的渐近天花板:12Φ 切给 N 张卡,N 趋于无穷才逼近 4Φ 和 2Φ。8 卡机上跑 ZeRO-1,实际约 2.9 倍。数字没错,省略的是 N。天花板别当地板。
ZeRO-3 的"算完即毁"也有价签,帖子没提:通信量比 DDP 多约五成。每层用前必取、用完即抛,省下的显存是拿带宽换的。所以分布式选型的真问题从来是哪堵墙更薄——显存墙,还是网络墙。ZeRO 三档做的事,只是在两堵墙之间挪砖。
文末避坑第一条我附议。ZeRO-3 存权重只出几 KB 空壳,大概是被问最多的一坑。stage3_gather_16bit_weights_on_model_save 那行配置,救命。