FSDP / ZeRO 全分片数据并行
草稿 约 5 分钟阅读
FSDP / ZeRO 全分片数据并行
概述
FSDP(Fully Sharded Data Parallel)是数据并行(DP)的进阶形式,核心思想是将模型参数、梯度和优化器状态”切碎”后分散到所有 GPU 上,每个 GPU 只持有一部分。计算前通过 AllGather 临时凑齐所需参数,计算后通过 ReduceScatter 分散梯度。这使每个 GPU 只存 1/N 的模型状态,大幅节省显存。微软的 ZeRO(Zero Redundancy Optimizer)是同一思想的另一个名称。
工作原理
sequenceDiagram
participant GPU0 as GPU 0
participant GPU1 as GPU 1
participant GPU2 as GPU 2
participant GPU3 as GPU 3
Note over GPU0,GPU3: Forward Pass
GPU0->>GPU0: 持有参数分片 A
GPU0->>GPU1: AllGather 收集完整参数
GPU1-->>GPU0: 返回参数分片
GPU0->>GPU0: 前向计算
Note over GPU0,GPU3: Backward Pass
GPU0->>GPU0: 反向计算,产生梯度
GPU0->>GPU1: ReduceScatter 分散梯度
GPU1-->>GPU0: 各 GPU 获得自己的梯度分片
Note over GPU0,GPU3: Optimizer Step
GPU0->>GPU0: 仅更新自己的参数分片
- ZeRO 三阶段:Stage 1(优化器状态分片)、Stage 2(+梯度分片)、Stage 3(+参数分片)
- 关键瓶颈:分片格式与计算块结构的冲突(元素级 vs 行级 vs 块级)
关键变体
| 变体 | 年份 | 论文/系统 | 核心改进 |
|---|---|---|---|
| ZeRO Stage 1-3 | 2020 | DeepSpeed (Microsoft) | 三阶段分片,逐步节省显存 |
| FSDP1 | 2021 | PyTorch FSDP1 (Meta) | 元素级分片,ReduceScatter 慢 |
| FSDP2 | 2023 | PyTorch FSDP2 (Meta) | 行级分片 Shard(0),Copy-Out 5-13ms + Copy-In 12-23ms |
| Megatron-FSDP | 2023 | NVIDIA | 行级+填充,33% 缓冲区填充膨胀 |
| veScale-FSDP | 2025 | veScale-FSDP (ByteDance) | RaggedShard 任意块大小 + DBuffer 零拷贝 |
最新进展
- 2026-06-04 | veScale-FSDP 的 RaggedShard 统一元素级、行级、块级分片,DBuffer 消除 5-23ms 拷贝开销,8K GPU 线性扩展,2.4T 参数模型仅需 1K GPUs | 来源: veScale-FSDP 深度解读
相关概念
- distributed-training — FSDP 是分布式训练中数据并行的核心实现
- mixture-of-experts — MoE 场景中 FSDP 需与专家并行 (EP) 组合使用
相关实体
- bytedance — veScale-FSDP
- microsoft — DeepSpeed ZeRO 原始提出者
- meta — PyTorch FSDP1/FSDP2
- nvidia — Megatron-FSDP
来源引用
| 日期 | 报告 | 关键发现 |
|---|---|---|
| 2026-06-04 | veScale-FSDP 深度解读 | RaggedShard, DBuffer, 规划算法, 8K GPU, 2.4T 模型 |