ZeRO(Zero Redundancy Optimizer, DeepSpeed)通过切掉“冗余保存”把大模型训练塞进有限的 GPU 显存。设参数总数为
Ψ(FP16 每元素 2 字节),用 Adam 混合精度训练需同时保存 FP16 参数
2Ψ、反向产生的 FP16 梯度
2Ψ,以及 FP32 优化器状态——主权重副本
4Ψ + 一阶动量
4Ψ + 二阶动量
4Ψ 共
12Ψ,静态显存合计
16Ψ=2Ψ+2Ψ+12Ψ。70B 模型:
16×70 GB
=1120 GB,单张 H100(80 GB)装不下,朴素 DDP 在
Nd 卡上复制
Nd 份完整状态、更装不下。ZeRO 分三档切分(设
Nd 卡,每卡显存): ① ZeRO-1 只切优化器状态:
2Ψ+2Ψ+Nd12Ψ;② ZeRO-2 再切梯度:
2Ψ+Nd2Ψ+12Ψ;③ ZeRO-3 连参数也切:
Nd16Ψ——70B 需
Nd=16 张 H100(每卡
1120/16=70 GB)才放得下。还不够时 Offload: 优化器状态与梯度移到 CPU 内存,GPU 只保留本层 FP16 参数分片
2Ψ/Nd=140/8=17.5 GB(8 卡),必要时按页换到 NVMe(ZeRO-Infinity,可扩展至万亿参数)。