LogoCookLLM文档
LogoCookLLM文档
首页CookLLM

原理精讲

词元化
Tokenization 基础BPE 算法详解GPT 系列 TokenizerBPE 训练工程化
模型架构
Transformer LM
从 token ids 到 logitsEmbedding 与 LM Head
Attention 机制
Self-Attention 到 GQAAttention Sink
位置编码
位置编码基础RoPE 数学推导RoPE 代码实现长度外推
GPU 编程基础
GPU 架构基础张量布局Triton 入门:向量加法
FlashAttention
Flash Attention 原理详解从朴素实现到 Auto-TuningBlock Pointer 与多维支持Causal Masking 优化Grouped Query Attention反向传播实现
分布式训练
数据并行ZeRO 优化器全分片数据并行张量并行流水线并行多维混合并行

动手训练

概述
预训练
预训练数据Tokenizer 训练模型架构数据流水线训练循环监控与验证
X (Twitter)
系统工程

分布式训练

从数据并行到多维混合并行,理解大模型训练的核心并行策略

概述

当模型大到单张 GPU 放不下时,我们需要把计算、内存和通信分摊到多块 GPU 上。这个系列从最简单的数据并行开始,逐步引入 ZeRO、FSDP、张量并行、流水线并行,最终理解它们如何组合成多维混合并行。

本系列假设你已掌握基本的 PyTorch 训练流程。对 GPU 硬件和内存层级感兴趣的读者,建议先学习 GPU 编程基础。

章节内容

通信量口径说明:本系列统一以每个训练步、每个 rank 发送 + 接收的数据量为口径,以参数量 Φ\PhiΦ 为单位。默认分析假设前向传播时缓存了完整参数供反向使用(2Φ2\Phi2Φ)。若实现上反向传播需要重新聚合参数(如不缓存),通信量会增加到 3Φ3\Phi3Φ。各章节中会标注具体场景。

数据并行

理解通信原语和 DDP 的梯度同步机制

ZeRO 优化器

渐进式去冗余,从优化器状态到参数的三级分片

全分片数据并行

理解 FSDP 的 Intra-Tensor 分片与 All-Gather/Reduce-Scatter 通信模式

张量并行

Column Parallel 和 Row Parallel 的对称设计

流水线并行

GPipe 和 1F1B 调度策略的原理与气泡分析

多维混合并行

ParallelContext 坐标系统与 TP+DP+PP 的工业级组合

为什么需要学这些?

你想做的事需要的知识
训练 7B+ 参数的大模型DDP、ZeRO、FSDP
理解 PyTorch FSDP 的工作原理ZeRO-3 vs FSDP 的分片差异
单层参数太大放不下单卡张量并行(Column/Row Parallel)
减少流水线气泡提升 GPU 利用率GPipe、1F1B 调度策略
理解 Megatron-LM 的并行策略多维混合并行、ParallelContext

参考资料

  • ZeRO: Memory Optimizations Toward Training Trillion Parameter Models
  • Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism
  • GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism
  • PyTorch FSDP Documentation

反向传播实现

实现 Flash Attention 的梯度计算,通过 Recomputation 实现内存高效的训练。

数据并行

理解通信原语和 DDP 的梯度同步机制

目录

概述
章节内容
为什么需要学这些?
参考资料