M3-083M3: Deep Learning FoundationsDistributed Training BasicsMedium
Mastery:

Distributed Training Basics: 解释 FSDP 与 ZeRO 的关系与差异。

📐 Mathematical Definition
FSDP=ZeRO-3PyTorch: shard(θ)+shard(g)+shard(o)\text{FSDP}=\text{ZeRO-3}_{\text{PyTorch}}:\ \text{shard}(\theta)+\text{shard}(g)+\text{shard}(o)
⚡ Executive Summary
Core Concept: FSDP 是 PyTorch 对 ZeRO-3 的等价实现:参数/梯度/优化器状态全分片;差异在实现、API 与生态集成。

📌 Key Takeaways

  • •
    FSDP 与 ZeRO-3 的核心思想完全相同
  • •
    FSDP 内置于 PyTorch,ZeRO 属 DeepSpeed
  • •
    FSDP 用 all-gather 参数、reduce-scatter 梯度

📐 Mathematical Derivations

数学机理:<strong>FSDP(Fully Sharded Data Parallel)</strong> 是 PyTorch 原生实现的'参数、梯度、优化器状态全分片'方案,其核心机制与 <strong>DeepSpeed ZeRO-3</strong> 一致:每个 rank 只保存 1/N 的参数分片(<strong>分片参数</strong>);前向时某层需要参数,就用 <strong>all-gather</strong> 把该层的完整参数临时收集起来、计算完立即<strong>丢弃</strong>(释放显存);反向时再次 all-gather 参数、计算梯度后用 <strong>reduce-scatter</strong> 把梯度归约并分片(每 rank 只留自己负责的那片);优化器只更新自己负责的参数分片,更新后各 rank 再 all-gather 得到新参数(或延迟到下次前向)。<strong>关键差异</strong>:(1) <strong>归属与生态</strong>——FSDP 是 PyTorch 官方(torch.distributed.fsdp),与 torch.compile、AMP、DDP 无缝集成;ZeRO 属 DeepSpeed 生态(也支持 PyTorch);(2) <strong>实现细节</strong>——参数收集的粒度、prefetch 策略、与 checkpoint 的交互不同;(3) <strong>配置方式</strong>——FSDP 用 wrap policy 决定'哪些模块作为一个分片单元'(如每层一个),ZeRO 用配置项(stage、offload 等);(4) <strong>混合模式</strong>——FSDP 支持 <strong>HYBRID_SHARD</strong>(节点内全分片、节点间复制,兼顾显存与通信)与 <strong>_HYBRID_SHARD_ZERO2</strong>(节点间只分片优化器状态);ZeRO-3 也有类似的 offload 与混合配置。

🏭 Production Trade-offs

深度剖析与工程权衡:① <strong>wrap policy 的重要性</strong>——FSDP 把模型切成'分片单元'(FSDP unit),单元大小影响显存峰值与通信次数:单元太小则通信频繁、太大则峰值显存高;标准做法是'每个 Transformer block 一个单元'。② <strong>与 TP 的组合</strong>——FSDP 解决'显存放不下'、TP 解决'单层太大';两者可组合(FSDP + TP),但需注意通信的叠加(FSDP 的 all-gather 与 TP 的 all-reduce 都在同一链路上)。③ <strong>与 activation checkpointing 的组合</strong>——FSDP 常配检查点(省激活),两者正交。④ <strong>checkpoint 的复杂度</strong>——FSDP 保存的是分片参数,恢复时需正确的分片元数据;跨不同并行度恢复需 resharding(PyTorch 支持)。⑤ <strong>性能对比</strong>——FSDP 与 ZeRO-3 在多数场景性能相当;选择常取决于生态(纯 PyTorch 用 FSDP、已有 DeepSpeed 基础设施用 ZeRO)。⑥ <strong>面试要点</strong>——被问'FSDP 与 ZeRO 区别',核心答案是'<strong>思想相同(都是全分片),实现与生态不同</strong>';能进一步说出 HYBRID_SHARD 与 wrap policy 的细节是加分项;切忌把两者说成'完全不同的技术'。
⚠️ Common Interview Pitfalls
  • ✕
    认为 FSDP 与 ZeRO 是不同技术(实为同一思想的两种实现)
  • ✕
    忽略 wrap policy 对显存峰值与通信频率的影响
🎯 Interviewer Follow-ups
  • ?
    FSDP 的 full shard 与 hybrid shard 模式?
  • ?
    FSDP 与 TP 如何组合?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM3-082: Distributed Training Basics: 解释大规模训练中的通信瓶颈与优化手段。📋Back to BankNext →M3-084: Distributed Training Basics: 解释 3D 并行与序列并行(sequence parallelism)。