跳到主要内容
分布式训练

第1章:分布式训练总论

从模型规模瓶颈出发,手算训练显存账本,总览五大并行策略及其选择原则

分布式训练 显存分析 并行策略 3D并行 通信拓扑

📖 本章概述

本章是分布式训练模块的总纲,建立三层认知框架:为什么需要分布式训练 → 训练到底需要多少显存 → 有哪些并行策略怎么分


📑 章节结构

1. 为什么需要分布式训练

  • 显存瓶颈:以 LLaMA 系列为例(7B → 70B → 405B),展示模型规模与显存需求的增长,单卡 80GB 的 H100 在 7B 以上就装不下完整训练状态
  • 时间瓶颈:70B 模型在 1T token 上训练,单卡需要数年;多卡并行可近线性缩短训练时间
  • 核心结论:分布式训练解决”装不下”(显存)和”跑不完”(时间)两个问题

2. 训练状态显存分析(本章重点)

  • 显存四大组成
    • 参数显存(FP16: 2Ψ2\Psi Bytes)
    • 梯度显存(FP16: 2Ψ2\Psi Bytes)
    • 优化器状态显存(Adam: FP32 参数副本 4Ψ4\Psi + 一阶动量 4Ψ4\Psi + 二阶动量 4Ψ4\Psi = 12Ψ12\Psi Bytes)
    • 激活值显存(与 batch size、序列长度、模型宽度相关)
  • 手算实例:7B 模型 BF16 混合精度训练的完整显存账本
    • 静态显存 = (2+2+12)×7×109(2 + 2 + 12) \times 7 \times 10^9 Bytes ≈ 112 GB
    • 激活值显存估算(以 seq_len=2048, batch=1 为例)
  • 显存公式总结:每参数 16-18 Bytes(混合精度 + Adam)+ 激活值

3. 并行策略全景

  • 数据并行(DP/DDP):每卡完整模型,切分数据,AllReduce 同步梯度——解决”跑不完”
  • ZeRO / FSDP:切分优化器状态/梯度/参数,按需聚合——解决”装不下”
  • 张量并行(TP):层内矩阵运算切分到多卡——解决”单层太大”
  • 流水线并行(PP):不同层分配到不同卡——解决”层数太多”
  • 序列并行(SP)/ 上下文并行(CP):沿序列维度切分——解决”序列太长”

4. 并行策略选择原则

  • 通信带宽决定作用域:TP 限制在 NVLink 互联的机内(需高带宽低延迟),PP 可跨机(只传激活值),DP 对带宽要求最低
  • 决策树:单卡装得下 → DDP;单卡装不下 → FSDP/ZeRO;单层装不下 → TP;模型层数太多 → PP;综合使用 → 3D 并行
  • 通信拓扑与硬件的映射关系:NVLink(900 GB/s)vs InfiniBand(400 Gbps)vs 以太网对策略选择的影响

🎯 本章学习目标

  • 能计算任意规模模型(给定参数量)的 BF16 混合精度训练显存需求
  • 能画出五大并行策略的”切什么 × 怎么通信”对比表
  • 能根据模型规模和集群拓扑选择合适的并行策略组合