ai-infra-interview-305

第 50 题:DeepSpeed的ZeRO-1/2/3分别offload了什么?显存节省和通信开销的trade-off?

题目

DeepSpeed的ZeRO-1/2/3分别offload了什么?显存节省和通信开销的trade-off?


完整讲解

一、ZeRO 在解决什么?

数据并行时每卡存完整参数、梯度、优化器状态,显存是单卡的 3 倍量级(参数+梯度+优化器)。ZeRO 通过分片把这些状态分布到多卡,每卡只存 1/N,需要时再 all-gather 或 reduce,从而把总显存从 3× 降到约 3×/N(理想情况)。


二、ZeRO-1 / 2 / 3 各 offload(分片)了什么?

(「Offload」有时指 CPU/NVMe offload,如 ZeRO-Offload;这里 ZeRO-1/2/3 主要指跨卡分片,不涉及 CPU。)


三、显存与通信 trade-off

阶段 分片内容 显存(相对) 通信(相对)
ZeRO-1 优化器状态 省一部分 少(step 时)
ZeRO-2 优化器 + 梯度 再省 多(梯度 reduce-scatter)
ZeRO-3 优化器 + 梯度 + 参数 最省 最多(每层 all-gather + reduce-scatter)

选型:单卡能放下参数+梯度、只想省优化器 → ZeRO-1;能放参数、要省梯度 → ZeRO-2;单卡放不下参数 → ZeRO-3(或 + offload 到 CPU/NVMe)。


面试要点


记忆要点

  1. ZeRO-1 = 优化器分片;ZeRO-2 = + 梯度分片;ZeRO-3 = + 参数分片。
  2. 显存 ZeRO-3 < ZeRO-2 < ZeRO-1;通信 ZeRO-3 > ZeRO-2 > ZeRO-1。
  3. 单卡放不下参数用 ZeRO-3;能放则 ZeRO-1/2 减通信。
返回模块 返回总览