预训练 进阶 约 25 分钟 更新 2026-10-02

训练系统工程:分布式并行与混合精度

学习状态:
未学

一句话定义

百亿参数以上的模型无法装进单卡显存,训练系统工程通过数据并行、张量并行、流水线并行与 ZeRO 类显存切分、混合精度等技术的组合,把一次预训练摊到成百上千张加速卡上。

为什么重要

Scaling Law 给出「要多少算力」,本节回答「算力怎么真的用起来」。并行策略选择直接决定集群利用率(Model FLOPs Utilization,MFU):好配置与差配置可差数倍,对应数百万美元级的成本差。读懂技术报告中的「N 卡训练、T 词元」,需要这些概念作词典。

前置知识

核心概念

原理与机制

显存账本:一个 7B 参数模型,BF16 权重约 14 GB,加上 FP32 主本与 Adam 状态(动量、方差)后仅权重相关就数倍于此,再叠激活值,单卡必然放不下——这就是必须切分的量化原因。实践采用 3D 并行组合:机内 TP(通信最快)× 机间 PP × 最外层 DP+ZeRO。BF16 相比 FP16 具有更大指数范围,训练更稳,已成为大模型默认精度。

公式或模型

Adam 优化器状态下每参数显存(无切分、BF16+FP32 主本):

M ≈ 2(权重 BF16) + 4(主本 FP32) + 4 + 4(动量/方差 FP32) = 16 字节/参数

7B 模型仅此一项即约 112 GB,远超单卡显存——切分是必然。

图示

数据并行:   卡1(全模型+数据A)  卡2(全模型+数据B)   → 梯度同步
张量并行:   一层矩阵 A 按列切开 → 卡1 算一半、卡2 算一半 → 拼接
流水线并行: 层1-8 在阶段1, 层9-16 在阶段2, micro-batch 依次流动

直观类比

盖一栋楼:DP 是「多支施工队各自盖完整样楼再对图纸」(数据并行);TP 是「一层楼由两队各砌一半墙」(张量切分);PP 是「施工队 1 完成地基就交给队 2 建标准层,像流水线」(按层分段)。Team 之间交接次数越多(通信),整体越慢,所以要按「亲密程度」安排分工。

实例或案例

Megatron-LM(2019)系统化 TP/PP 实现,成为事实上的训练框架蓝本;Narayanan 等(2021)给出 3D 并行的吞吐优化配方;开源侧,主流框架(如 DeepSpeed、FSDP)把 ZeRO 思想产品化,使千卡级训练配置可复用(框架版本演进属时效信息)。

常见误区

与其他知识点的关系

自测题

  1. 为什么 TP 通常限制在单机内而 PP 可以跨机?
    答案要点:TP 每层前后向都有频繁通信,对带宽敏感,依赖机内高速互联;PP 只在阶段边界传激活,通信频率低。
  2. 估算 13B 参数模型 Adam 训练态显存(不含激活)。
    答案要点:约 16 字节/参数 × 13B ≈ 208 GB,必须切分。
  3. BF16 相比 FP16 训练更稳的原因?
    答案要点:指数位更多、动态范围更大,不易上/下溢,对损失缩放的依赖低。

延伸阅读