ZeRO-1 只切分优化器状态,ZeRO-2 再切分梯度,ZeRO-3 连模型参数也切分——每级依次多省一份显存。
ZeRO(Zero Redundancy Optimizer)是微软 DeepSpeed 框架中的一项显存优化技术,核心思想是消除数据并行训练中的显存冗余。
在标准的数据并行(DP)中,每张 GPU 都保存了一份完整的模型副本,包括:
这意味着 N 张 GPU 上存了 N 份完全相同的东西,浪费极大。而真正需要“复制”的其实只有计算过程,存储完全可以分摊。
ZeRO 把上述三部分显存分散到各张 GPU 上,每张卡只存一部分,需要时再通过通信临时聚合。这样就大幅降低了单卡显存占用,同时保持数据并行的计算逻辑。
| 级别 | 切分对象 | 显存节省(相对) | 通信开销 |
|---|---|---|---|
| ZeRO-1 | 优化器状态 | 约 4 倍 | 低 |
| ZeRO-2 | + 梯度 | 约 8 倍 | 中 |
| ZeRO-3 | + 模型参数 | 与 GPU 数量成正比 | 高 |
一句话总结:ZeRO 用通信换显存,让数据并行也能训超大模型。
用直观的显存分片图,看懂 ZeRO-1 / ZeRO-2 / ZeRO-3 到底省了什么
评论专区
评论加载中...登录后即可发表评论