#二十二、训练系统方向的备考顺序
如果你要把这块补到“能面强 infra / 训练系统岗”,建议按下面顺序学,而不是乱刷:
- 第一层:状态拆解
- 参数、梯度、优化器状态、激活、缓存
- 第二层:并行三件套
DP / TP / PP
- 第三层:分片与显存
ZeRO / FSDP / checkpointing / mixed precision
- 第四层:通信原语
all-reduce / all-gather / reduce-scatter
- 第五层:系统调度
- bubble、micro-batch、overlap、bucket
- 第六层:MoE 与专家并行
EP、load balance、capacity factor、dispatch
- 第七层:kernel / CUDA 直觉
- IO-bound vs compute-bound、算子融合、访存优化
这样学的好处是:你不会把训练系统问题看成很多零碎八股,而会把它看成一条完整链:
模型状态 -> 如何切分 -> 如何同步 -> 如何调度 -> 如何在硬件上跑快
#核心术语先对齐
DP按数据维度复制模型并同步梯度,优点是直观,代价是每步 all-reduce;TP切单层矩阵,适合机内高速互联,代价是层内通信频繁;PP切层,降低单卡显存,代价是 pipeline bubble 和调度复杂度。
ZeRO/FSDP把参数、梯度和优化器状态分片,核心收益是降低每张卡保留的训练状态;activation checkpointing用重算换显存;overlap把通信和计算重叠,收益取决于通信是否能从主路径里藏起来。
#阶段性验收
- 能画出一次训练 step 里前向、反向、梯度同步和优化器更新的顺序。
- 能解释为什么优化器状态常常比模型权重本身更吃显存。
- 能把一种并行策略的收益和代价同时说出来。
- 能用“显存、通信、吞吐、实现复杂度”四个维度比较两种方案。
#推荐练习方式
不要只按技术名词刷题,可以按故障现象反向练:显存不够时有哪些选择,GPU 利用率低时查哪些环节,多机扩展效率差时看哪些通信,loss 不稳定时排查数据、学习率还是优化器。这样能把训练系统从八股题变成问题定位题。
每读完一个技术点,都要补一个“不适合使用”的场景。例如 TP 不适合弱互联跨机频繁通信,PP 会引入 bubble,checkpointing 会增加重算,ZeRO/FSDP 会增加通信和实现复杂度。能说清不用什么,才说明真的理解了选型边界。
最终目标是能回答一个完整系统题:给定模型规模、卡数、显存、网络和目标吞吐,如何组合 DP、TP、PP、ZeRO、checkpointing 和 overlap。答题时先说明约束,再提出组合方案,最后列出风险和验证指标。这个能力比背单个技术点更接近训练系统岗的真实考察。
训练系统复习还要保留硬件直觉。同样的并行策略,在 NVLink、PCIe、RoCE 或跨机网络上表现不同;同样的 batch 策略,在短序列和长序列上瓶颈也不同。回答里能主动提到硬件拓扑和 workload 形态,会比单纯背 DP/TP/PP 更可靠。