AI Infra 自学教材

第四篇 · 训练系统与并行策略

一个几百 GB 的模型,怎么放到几千张卡上训出来

⏳ 本章待补充

这一章是整套教材的重心,也是 AI Infra 面试与科研最密集的区域。计划投入 3 周以上。

这一章要回答的问题

一个几百 GB 甚至上 TB 的模型,怎么放到几千张卡上训出来?

整章其实只在解决两个约束的对抗:显存不够通信太慢。每一篇论文都是在二者之间找一个更好的平衡点。

前置知识

  • 第二篇(知道显存里都放了什么)
  • 第一篇 1.1 节(知道跨卡通信受限于带宽而非算力)
  • 集合通信的 5 个基本操作:broadcast、reduce、all-reduce、gather、scatter(以及 all-gather、reduce-scatter)

先记住这张账

一个 PP 参数、用 Adam 训练的模型,FP16 混合精度下每张卡要放:

项目字节数说明
参数(FP16)2P
梯度(FP16)2P
优化器状态(FP32 副本 + 动量 + 方差)12P最大的一块
合计16P不含激活值

所以一个 7B 模型仅模型状态就要 112 GB——一张 80 GB 的卡都放不下。这就是 ZeRO 存在的理由。

计划覆盖的内容

小节回答的问题
流水线并行GPipe 的气泡怎么算?PipeDream 的 1F1B 怎么省显存?
张量并行Megatron 为什么每两层才需要一次 all-reduce?
显存优化ZeRO 的三个 stage 各切了什么、多做了什么通信?
3D 并行给定集群规模,怎么决定 TP × PP × DP 的划分?
MoEall-to-all 通信量与负载均衡怎么影响系统设计?
动手实验算清 ZeRO 三阶段显存;用 FSDP 在多卡上训一个小模型

对应的论文(见论文清单)

GPipe、PipeDream、Megatron-LM、ZeRO、Megatron-DeepSpeed、PyTorch FSDP、序列并行(MLSys 2023)、Alpa、GShard、Switch Transformers,以及 Llama 3 / DeepSeek-V3 的基建章节。


← 返回 首页 | 上一章:第三篇 · GPU 与算子优化

On this page