11. 分布式训练
本章定位:大模型训练的"系统工程"章节。并行策略决定了算力利用率的上限,网络与存储决定了它能否兑现。本章把训练系统拆成三个层次:并行策略(怎么切)、通信网络(怎么连)、稳定性与吞吐(怎么跑得快、跑得稳)。
文章目录
- 分布式并行全景:从单卡到万卡 —— 数据并行 / 张量并行 / 流水并行 / 序列并行 / ZeRO / MoE 专家并行的选型逻辑,含 7B / 70B / 千卡 LLM 训练典型配置。
- NCCL 网络调优实战:万卡集群通信瓶颈定位 —— 从
nccl-tests基准到NCCL_*环境变量,再到 InfiniBand 网络侧 PFC/ECN 配置的完整排障路径。
LLM Lab 实验手记(实战系列)
基于作者在 GPU 集群真实运行的实验代码(llm_lab/),按"实验目标 → 代码逐段拆解 → 原理讲解 → 实验结果 → 工程启示"的结构,从 0 到 1 拆解大模型训练基础设施:
- 01 · 分布式训练第一课:从 init_process_group 到 all_reduce —— 进程组初始化、rank/local_rank 与集合通信的起点。
- 02 · DDP 最小训练:一行包装跑通多卡 —— DistributedDataParallel 的参数广播、梯度同步与训练循环。
- 03 · 手写集合通信的自动微分 ——
autograd.Function封装 AllReduce,验证"前向通信、反向也通信"。 - 04 · 张量并行入门:Column/Row 与 Megatron FFN —— 两种切法的通信差异与 Column→Row 免中间通信。
- 05 · 注意力张量并行:按 Head 切分 QKV —— 多头注意力的并行红利与单通信点结构。
- 06 · 从零拼一个 Megatron 风格 Transformer Block —— LayerNorm/残差/AllReduce 自动微分组装 + 逐段耗时剖析。
- 07 · FlashAttention 为什么快:同机对比实验 —— 分块、IO 感知与在线 Softmax,用数字说话。
📌 规划中:混合精度训练与断点续训、训练稳定性(Loss Spike 排查)、Slurm 异构调度下的训练作业编排。
阅读路径建议
- 刚接触:先读并行策略篇,建立"切分"视角,再补 NCCL 调优篇的基准方法。
- 有集群运维经验:直接进 NCCL 调优实战,对照自己集群的
nccl-tests数据。 - 要落地大模型训练:两篇连读——并行配置决定拓扑需求,网络调优决定配置能否跑满。
关键结论速览
- 并行策略的本质是用通信换显存:显存放不下就切,切完就要通信,通信就要网络兜底。
- 万卡训练的通信瓶颈九成不在单条链路,而在拓扑:跨 Pod 聚合流量、ECMP 散列不均、PFC 死锁回环。
- 所有调优动作都要以可量化基准为准绳:
nccl-tests的 busbw、nsys的通信占比、训练日志的 MFU,缺一不可。