大数跨境

大模型分布式训练框架Microsoft DeepSpeed——万亿参数训练的"加速引擎"

大模型分布式训练框架Microsoft DeepSpeed——万亿参数训练的"加速引擎" 知识代码AI
2026-11-06
8
导读:大模型分布式训练框架Microsoft DeepSpeed——万亿参数训练的"加速引擎"大模型训练离不开分布式

大模型分布式训练框架Microsoft DeepSpeed——万亿参数训练的"加速引擎"

大模型训练离不开分布式计算。当你准备微调一个7B参数模型时,一张A100(80GB)就能搞定吗?答案是——远远不够!以LLaMA2-7B为例,在bf16混合精度下需要近120GB显存,即使是A100/H100单卡也无法满足。

那么,如何让大模型在有限显存中高效训练?答案就是微软开源的DeepSpeed分布式训练框架。今天我们就来深入解析DeepSpeed的核心——ZeRO优化器!


一、预训练模型显存计算:为什么需要分布式?

以LLaMA2-7B使用AdamW优化器、bf16混合精度训练为例:[pdf_2]

显存占用量
计算方式
占用大小
模型参数(bf16)
7B × 2 Bytes
14 GB
更新梯度(bf16)
7B × 2 Bytes
14 GB
优化器(fp32)模型参数拷贝
7B × 4 Bytes
28 GB
优化器(fp32)2倍梯度数量动量
2 × 7B × 4 Bytes
56 GB
总计

~120 GB

根本问题: 即使使用A100/H100(80GB),单卡仍无法支持LLaMA2-7B的完整预训练,更不用说更大的模型了。[pdf_2]

不同优化器的显存占用对比

优化器
参数数量比值
模型权重(16-bit)+ 优化器(32-bit)显存占用比值
SGD
1
2
RMSProp
2
4
Adam 3 6

这也解释了为什么"大模型训练必须用分布式",以及为什么Adam优化器在带来更好效果的同时,显存开销远高于SGD。[pdf_2]


二、ZeRO:零冗余优化器

ZeRO(Zero Redundancy Optimizer)是DeepSpeed的核心引擎,论文发表于SC 2020。它通过消除数据和模型并行训练中的内存冗余,在保持低通信量和高计算粒度的同时,让模型规模与设备数量成比例扩展。[pdf_2]

ZeRO的三项创新

  1. 内存优化:通过优化内存使用,大幅提高训练速度,同时增加可有效训练的模型大小
  2. 消除冗余:在数据和模型并行训练中消除内存冗余,同时保持低通信量和高计算粒度
  3. 模型规模扩展:允许模型大小与设备数量成比例扩展,同时保持高效率[pdf_2]

出色的实验结果

  • 超线性加速:在400个GPU上对超过1000亿参数的大模型进行训练,实现15 Petaflops吞吐量
  • 性能飞跃:与当时最先进技术相比,模型大小增加8倍,可实现性能增加10倍
  • 无需模型并行:ZeRO可训练高达130亿参数的大型模型,无需使用更复杂的模型并行技术
  • 世界纪录:利用ZeRO的系统突破创造了当时世界最大语言模型(170亿参数),实现破纪录准确率[pdf_2]

三、ZeRO-DP:三个优化阶段详解

ZeRO-DP是一种分布式数据并行训练方法,通过减少冗余数据降低每个设备的显存占用。以Adam优化器、64张GPU为例:[pdf_2]

阶段
显存压缩
分布内容
通信量变化
Stage 1(Pos) 4倍
优化器参数(动量、学习率等)分布到多张卡
与数据并行相同
Stage 2(Pos+g) 8倍
进一步将梯度分布到多张卡
仍不变
Stage 3(Pos+g+p) 64倍
进一步将模型参数分布到多张卡
适度增加50%

以7.5B模型在64张GPU上为例,单卡显存消耗从120GB → 31.4GB(Stage 1) → 16.6GB(Stage 2) → 仅1.9GB(Stage 3),实现了惊人的64倍显存压缩![pdf_2]


四、ZeRO-R:残存内存优化三件套

ZeRO-R进一步消除了训练过程中的残存内存消耗:[pdf_2]

1. 分区激活检查点(Pa)

问题: 模型并行(MP)设计需要复制激活,导致跨GPU的激活冗余。方案: 在前向传播后将激活在所有MP进程中分区,反向传播时才通过all-gather重新生成副本。效果: 配合激活检查点,可显著减少激活内存占用,甚至可将分区激活卸载到CPU,将激活内存开销降至几乎为零。

2. 恒定大小缓冲区(CB)

问题: 融合缓冲区的内存开销与模型大小成正比,大模型时代成为瓶颈。方案: 使用性能高效的恒定大小融合缓冲区,使缓冲区大小不依赖于模型大小。

3. 内存碎片整理(MD)

问题: 激活检查点和梯度计算导致短期和长期内存交错,引起内存碎片化,导致OOM或低效。方案: 为激活检查点和梯度预分配连续内存块,实时进行内存碎片整理。


五、ZeRO-Offload:让CPU参与大模型训练

ZeRO-Offload是ZeRO的重要扩展,它将部分数据和计算从GPU卸载到CPU,使大规模模型训练人人可及。[pdf_2]

核心策略

策略
说明
模型卸载
将优化器状态、梯度或参数从GPU卸载到CPU内存
计算卸载
将参数更新等计算任务卸载到CPU,GPU专注于前向和反向传播
效率优化
最小化CPU-GPU数据移动,减少CPU计算时间,最大化GPU显存节省

惊艳的实验结果

  • 单卡100亿参数:在单个NVIDIA V100 GPU上训练超过100亿参数模型,实现40 TFlops/GPU
  • 10倍提升:而PyTorch单独使用仅能在单GPU上训练最大14亿参数(30TF),规模提升10倍!
  • 近线性扩展:最多支持128个GPU,提供近线性加速
  • 单DGX-2超700亿:结合模型并行,在单个DGX-2机器上训练超过700亿参数模型,提升4.5倍[pdf_2]

ZeRO-Offload的意义: 使大规模模型训练民主化,让只有单个GPU的数据科学家也能训练大型模型。这彻底打破了"大模型训练是少数人才有资格的奢侈品"的传统认知。[pdf_2]


六、ZeRO-Infinity:百万亿参数模型训练框架

ZeRO-Infinity是ZeRO技术的终极扩展,旨在突破百万亿参数大模型训练的异构训练框架。[pdf_2]

三大创新

创新点
说明
全面优化
结合数据并行、模型并行、流水线并行和ZeRO-Offload的优点,提供全面的显存和计算优化方案
超大模型规模
在当前一代GPU集群上训练高达数十甚至数百万亿参数的模型
优秀扩展性
在512个NVIDIA V100 GPU上保持超过25 petaflops的性能(达峰值的**40%**),展示超线性可扩展性

惊人突破: ZeRO-Infinity可以在32个DGX-2节点(512张V100 GPU)上训练32万亿参数模型,比当时最先进的3D并行大50倍!甚至可以在单个DGX-2节点上微调万亿参数模型,让超大规模模型触手可及![pdf_2]


七、DeepSpeed四大核心模块

DeepSpeed不仅仅只有ZeRO,它是一个完整的大模型训练与推理加速平台:[pdf_2]

DeepSpeed
├── Training(训练模块)
│   ├── ZeRO系列优化(ZeRO-DP / Offload / Infinity)
│   ├── MoE模型支持
│   └── RLHF训练支持
├── Inference(推理模块)
│   ├── 并行技术:Tensor / Pipeline / Expert / ZeRO-Parallelism
│   └── 低时延高吞吐:通信优化、自定义推理内核、异构存储优化
├── Compression(压缩模块)
│   └── 量化/蒸馏/剪枝(ZeroQuant、XTC等算法)
└── Science(科学计算)

DeepSpeed框架的核心技术

技术
说明
ZeRO
核心优化器,分ZeRO-DP、ZeRO-Offload、ZeRO-Infinity三个级别
模型并行
Tensor切片等,支持不同部分在不同设备上并行运行
流水线并行
将训练分解为多阶段,在不同设备上并行处理(适合顺序依赖较弱的任务)
稀疏注意力
降低Transformer模型训练的计算和内存需求
显存与带宽优化
异步I/O、内存池化、压缩通信等

八、DeepSpeed实战:配置与训练

ZeRO配置详解

DeepSpeed使用JSON配置文件定义ZeRO参数。[pdf_2]

ZeRO Stage 2 配置示例:

{
"zero_optimization": {
"stage": 2,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
    },
"allgather_partitions": true,
"allgather_bucket_size": 2e8,
"overlap_comm": true,
"reduce_scatter": true,
"reduce_bucket_size": 2e8,
"contiguous_gradients": true
  },
"gradient_accumulation_steps": "auto",
"gradient_clipping": "auto",
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto",
"fp16": {
"enabled": "auto",
"loss_scale": 0,
"initial_scale_power": 16
  }
}

ZeRO Stage 3 配置示例(新增内容):

{
"zero_optimization": {
"stage": 3,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
    },
"offload_param": {
"device": "cpu",
"pin_memory": true
    },
"overlap_comm": true,
"contiguous_gradients": true,
"sub_group_size": 1e9,
"reduce_bucket_size": 2e8,
"stage3_prefetch_bucket_size": "auto",
"stage3_param_persistence_threshold": "auto",
"stage3_max_live_parameters": 1e9,
"stage3_max_reuse_distance": 1e9,
"stage3_gather_16bit_weights_on_model_save": true
  }
}

训练T5-Large(7.7亿参数)实测

ZeRO-2 配置训练指标:

train_samples_per_second = 2.5
train_steps_per_second = 0.625

使用DeepSpeed启动训练

# 单机多卡训练
deepspeed --num_gpus=8 train.py \
  --deepspeed ds_config.json

# 多机分布式训练
deepspeed --num_gpus=8 --num_nodes=4 \
  --master_addr=master_ip \
  train.py --deepspeed ds_config.json
```[pdf_2]

---

## 九、DeepSpeed压测实验与性能表现

### 压测实验配置(示例)

| Model Size | ZeRO/Baseline | GPU数量 | 层数 | Hidden Size | Attention Head | Batch Size |
|:----------:|:-------------:|:-------:|:----:|:-----------:|:--------------:|:----------:|
| 60B | ZeRO | 64~400 | 16 | 8192 | 32 | 16~64 |
| 40B | ZeRO | 400 | 16 | 8192 | 32 | 16 |
| 100B | ZeRO | 400 | 16 | 8192 | 64 | 32 |

结果显示,ZeRO在**千亿模型**上实现了**近线性加速**(64~400 GPU),性能/GPU基本未随规模增加而下降,证明了其卓越的扩展能力。[pdf_2]

---

## 十、DeepSpeed生态与总结

### 并行化技术一览

| 并行技术 | 适用场景 | 核心思想 |
|:--------:|:---------|:---------|
| **数据并行** | 数据量大 | 将数据分片到不同设备,各设备维护完整模型副本 |
| **ZeRO并行** | 大模型训练 | 分布存储模型状态(参数/梯度/优化器状态) |
| **张量并行(Tensor Parallel)** | 超大单层 | 将单个层内的计算拆分到多个设备 |
| **流水线并行(Pipeline Parallel)** | 深层网络 | 将不同层分配到不同设备,构成流水线 |
| **专家并行(Expert Parallel)** | MoE模型 | 将不同专家分配到不同设备 |
| **序列并行(Sequence Parallel)** | 长序列输入 | 将序列维度拆分到不同设备 |

### 总结

1. **LLaMA2-7B混合精度训练需~120GB显存**,A100单卡也无法满足,分布式训练是必选项
2. **ZeRO三阶段**:Stage 1(优化器分布,4倍压缩)→ Stage 2(+梯度分布,8倍)→ Stage 3(+参数分布,64倍)
3. **ZeRO-R三件套**:分区激活检查点 + 恒定大小缓冲区 + 内存碎片整理
4. **ZeRO-Offload**让单卡训练100亿参数成为现实,V100单卡达40TF,PyTorch的10倍规模
5. **ZeRO-Infinity**在512张V100上训练32万亿参数,比3D并行大50倍
6. **DeepSpeed四大模块**:Training(含MoE/RLHF)+ Inference + Compression + Science

---

> **温馨提示**:DeepSpeed早已集成在主流深度学习框架中。使用HuggingFace Transformers的Trainer时,只需配置`--deepspeed ds_config.json`即可无缝启用,是当前大模型训练不可或缺的基础设施。

---

【声明】内容源于网络
0
0
知识代码AI
技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
内容 433
粉丝 0
知识代码AI 技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
总阅读10.2k
粉丝0
内容433