它把每张显卡都重复保存的模型“账本”拆开均摊,用到哪层再临时拼回来。1. 它到底在说什么ZeRO 和 FSDP 解决的是同一件很具体的事:用多张显卡一起训练时,别让每张卡都完整存一份“模型账本”。先说背景。最朴素的多卡训练方式叫数据并行(Data Parallelism,DP):每张卡都装下完整的模型参数、梯度和优化器状态,各吃不同的数据,算完再把梯度同步一次。问题在于,模型越大,这份“完整账本”就越撑显存——而每张卡存的内容完全一样,是纯粹的重复。ZeRO(Zero Redundancy Optimizer,零冗余优化器)的洞见就是:既然每个卡在优化时只需要自己那一份,干嘛人人都背全本?它把冗余的账本拆成碎片,分给所有卡,谁要算哪层就临时拼回来,算完再丢回去。用一个小组作业的例子来理解。四个人合写一份报告,普通做法是每人打印整本参考资料(浪费纸张)。ZeRO 的办法是:把参考资料拆成四份,每人只保管一份;写到引用哪一页,就向其他人借来看一眼,抄完立刻还回去。资料总量没变,但每个人桌上占的地方只剩四分之一。FSDP(Fully Sharded Data Parallel,全分片数据并行)是 PyTorch 官方的 ZeRO-3 实现,干的是同一件事,只是换了个框架、一套 API。二者可以当成“同一个想法的两个版本”。