分布式训练参考资料
通信原语
- AllReduce: 所有进程归约并广播 (Sum/Max/Min)
- AllGather: 所有进程数据收集
- ReduceScatter: 归约后散射
- Broadcast: 根进程广播
- Send/Recv: 点对点通信
- All-to-All: 全互联通信
集合通信库
- NCCL: NVIDIA Collective Communications Library — GPU 通信
- Ring AllReduce: 环形归约算法
- Tree AllReduce: 树形归约
- SHARP: NVIDIA 网络内归约
- Gloo: Facebook 开源 CPU 通信库
- MPI: Message Passing Interface 标准
- XCCL: 阿里云定制通信库
数据并行
- DP (Data Parallel): 数据复制, 梯度 AllReduce
- DDP (DistributedDataParallel): PyTorch 原生数据并行
- 梯度桶化 (bucketing)
- 通信计算重叠
- 静态图优化
模型并行
- Tensor Parallelism (TP): 张量切分
- Megatron-LM: 列并行 + 行并行
- 1D/2D/2.5D/3D TP 策略
- Pipeline Parallelism (PP): 层级切分
- GPipe: 微批次流水线
- PipeDream: 1F1B 调度
- Interleaved 1F1B: 交错调度
- Sequence Parallelism: 序列维度切分
框架
DeepSpeed
- GitHub: https://github.com/microsoft/DeepSpeed
- ZeRO 优化:
- ZeRO-1: 优化器状态分片
- ZeRO-2: + 梯度分片
- ZeRO-3: + 参数分片
- ZeRO-Infinity: 卸载到 CPU/NVMe
- DeepSpeed-MOE: MoE 训练支持
- DeepSpeed-Inference: 推理优化
Megatron-LM
- GitHub: https://github.com/NVIDIA/Megatron-LM
- 核心: TP + PP + DP 3D 并行
- 关键技术:
- TP 通信原语: AllReduce 嵌入
- 序列并行: LayerNorm/Dropout 通信优化
- 交织流水线调度
FSDP (PyTorch 原生)
- 文档: https://pytorch.org/docs/stable/fsdp.html
- 核心: 参数全分片数据并行
- 关键特性:
- ShardingStrategy: FULL_SHARD, SHARD_GRAD_OP, NO_SHARD
- CPUOffload: 参数/梯度卸载
- MixedPrecision: 混合精度训练
- ActivationCheckpointing: 激活重计算
- torch.distributed.run: 启动器
ColossalAI
- GitHub: https://github.com/hpcaitech/ColossalAI
- 核心: 多维并行 + 内存优化
长序列训练
- Ring Attention: 序列维度环形通信
- Ulysses: 序列并行 + 注意力分片
- DeepSpeed Ulysses: 序列并行实现
容错与弹性
- torch.distributed.elastic: 弹性训练
- Checkpoint restart: 检查点恢复
- Node failure recovery: 节点故障恢复
关键论文
- "Megatron-LM: Training Multi-Billion Parameter Language Models" (Shoeybi et al., 2019)
- "ZeRO: Memory Optimizations Toward Training Trillion Parameter Models" (Rajbhandari et al., 2020)
- "GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism" (Huang et al., 2019)
- "FlashAttention" (Dao et al., 2022)