1. 课程导入
在大模型训练中,吞吐量(Throughput)通常指单位时间内系统完成的训练样本数或 token 数,例如 tokens/s、samples/s、steps/s。它直接决定一次预训练、微调或对齐任务需要多少 GPU 小时、多少电费和多少排队时间。很多团队在扩到数十卡、数百卡后才发现:算力并没有线性增长,训练速度反而被通信、数据加载、显存或调度拖住。吞吐量诊断与调优,本质上是在“算力、通信、内存、数据、并行策略”之间找到当前集群的最优工作点。
一、为什么吞吐量决定训练成败
大模型训练的成本结构非常集中:GPU 时间占主导,其次是网络、存储和人力。假设一个 70B 模型在 1024 张卡上训练,若吞吐量下降 30%,意味着同样的 token 预算要多花约 43% 的墙钟时间;如果按云上 GPU 单价折算,就是直接的成本超支。更隐蔽的是,低吞吐往往伴随低 MFU(Model FLOPs Utilization),让团队误以为“卡不够”,继续加卡,结果通信开销更大、效率更低。
吞吐量还影响实验迭代速度。预训练阶段需要反复调整数据配比、学习率和并行策略;微调阶段需要快速验证 SFT、LoRA、DPO 等方案。吞吐量高,单位时间能跑更多消融实验,模型迭代周期从“周”缩短到“天”。因此,吞吐量调优不是运维细节,而是决定模型竞争力的工程能力。
二、常见瓶颈类型:先分类,再定位
大模型训练吞吐量瓶颈通常不是单点问题,而是多因素耦合。为了便于诊断,可以按“资源域”分为五类:计算瓶颈、通信瓶颈、显存瓶颈、数据瓶颈和调度瓶颈。每一类都有典型现象和对应指标。
| 瓶颈类型 | 典型现象 | 关键指标 | 常见原因 |
|---|---|---|---|
| 计算瓶颈 | GPU 利用率高但 MFU 低,kernel 排队 | SM 占用率、Tensor Core 利用率 | 算子未融合、精度配置不当、batch 过小 |
| 通信瓶颈 | AllReduce/AllGather 等待时间长,GPU 空转 | NCCL 耗时、网络带宽、等待占比 | 并行策略不匹配、拓扑跨机、梯度同步频繁 |
| 显存瓶颈 | OOM 或频繁重算,batch 上不去 | 显存占用、激活重算次数 | 激活值过大、优化器状态未分片、碎片化 |
| 数据瓶颈 | GPU 等数据,输入流水线断流 | DataLoader 耗时、IO 吞吐 | 解码慢、样本不均衡、存储带宽不足 |
| 调度瓶颈 | 多任务抢占、卡间负载不均 | 任务排队时间、GPU 分配率 | 资源碎片、优先级混乱、弹性伸缩滞后 |
下面这张图把五类瓶颈与端到端训练流水线对应起来,帮助你在看到“慢”的时候,先判断它发生在哪个阶段。
三、课程整体框架:从诊断到调优的闭环
本课程共 30 章,按“认知—诊断—调优—实战”四段式展开。前几章建立吞吐量指标体系与 profiling 方法;中段深入并行策略、通信优化、显存管理、数据流水线和混合精度;后段覆盖 MoE、长序列、多机多卡、弹性训练和成本优化;最后以真实案例复盘收束。
- 基础认知:吞吐量、MFU、扩展效率、墙钟时间与成本的关系。
- 诊断工具:Nsight Systems、PyTorch Profiler、NCCL 日志、DCGM、自定义计时埋点。
- 计算优化:算子融合、FlashAttention、编译加速、batch 与序列长度调优。
- 通信优化:DP/TP/PP/EP 组合、梯度压缩、通信重叠、拓扑感知调度。
- 显存优化:ZeRO、激活重算、Offload、分片优化器状态。
- 数据与调度:流式加载、预取、样本打包、多任务资源隔离。
- 实战复盘:典型瓶颈案例、调优前后对比、常见误区与检查清单。
四、案例场景:一次“加卡反而变慢”的复盘
某团队在 64 卡 A100 上训练 13B 模型,吞吐约 1.8k tokens/s/GPU。扩到 128 卡后,期望接近 3.6k,实际只有 2.1k。初步排查发现:GPU 利用率从 92% 降到 71%,NCCL AllReduce 等待时间占比从 8% 升到 27%。进一步看日志,跨机通信量随 DP 规模增大而增加,而该集群只有 25Gbps 以太网,没有 InfiniBand。问题不在算力,而在通信拓扑与并行策略不匹配。
# 典型 NCCL 日志片段
NCCL INFO AllReduce: 128 ranks, 2 nodes, ring algorithm
NCCL INFO Channel 00/08 : 0[0] -> 1[0] -> ... -> 127[0]
NCCL INFO Time: 18.4 ms, Algo: Ring, BusBW: 3.2 GB/s
# 对比单机 8 卡时 BusBW 可达 22 GB/s
调优动作包括:将部分 DP 改为 TP+PP 混合并行,减少跨机 AllReduce 数据量;启用梯度累积降低同步频率;把数据加载改为预取+内存映射,消除 DataLoader 抖动。最终 128 卡吞吐恢复到 3.3k tokens/s/GPU,扩展效率从 58% 提升到 92%。这个案例说明:吞吐量问题必须按“指标—日志—拓扑—策略”的顺序定位,不能盲目加卡。
五、学习目标与检查清单
完成本课程后,你应当能够独立完成一次吞吐量诊断,并给出可验证的调优方案。具体目标包括:
- 能解释吞吐量、MFU、扩展效率、墙钟时间之间的量化关系。
- 能使用至少两种 profiling 工具定位计算、通信、数据或显存瓶颈。
- 能根据集群拓扑选择 DP、TP、PP、EP 的合理组合。
- 能通过配置调整和代码优化,把典型任务的吞吐量提升 20% 以上。
- 能建立吞吐量回归监控,避免版本迭代导致性能回退。
吞吐量调优没有“一招鲜”,它依赖对系统全链路的理解和对真实指标的持续观测。接下来,我们将从吞吐量指标体系与度量方法开始,逐步建立可复现、可量化的诊断能力。