LESSON 4.1 · 推导 · 110 分钟

训练前先算账:参数、FLOPs 与显存

先把预算拆成三张表:参数量由各矩阵形状相加;训练显存分别统计权重、梯度、优化器状态与激活值;计算量则按各算子的 FLOPs 累加。对标准稠密 Transformer,C ≈ 6ND 可作为训练计算量的粗略量级估算,其中 N 是参数量、D 是训练 token 数,但最终应以目标配置的算子级估算和实测峰值为准。

DIRECT ANSWER · VERIFIED SOURCES ·

训练大模型前,如何估算参数量、显存和计算量?

先把预算拆成三张表:参数量由各矩阵形状相加;训练显存分别统计权重、梯度、优化器状态与激活值;计算量则按各算子的 FLOPs 累加。对标准稠密 Transformer,C ≈ 6ND 可作为训练计算量的粗略量级估算,其中 N 是参数量、D 是训练 token 数,但最终应以目标配置的算子级估算和实测峰值为准。

视频对齐

课程对齐点:先手算一个小模型的参数矩阵,再分别记录参数/梯度/优化器/激活显存,最后用 profiler 对照估算,而不是只背“每参数多少字节”。

关键结论

  • 参数相关显存由精度和优化器决定;混合精度训练还可能保留主权重副本,不能套用统一字节数。
  • 激活显存随 batch、序列长度、层数和隐藏维度增长,activation checkpointing 用额外重算换取显存。
  • FLOPs 预算回答总工作量,硬件利用率决定实际时间;通信、内存带宽与数据管线也会成为瓶颈。

边界与常见误解

6ND 忽略注意力的部分序列长度开销、词表投影、稀疏/MoE、重计算和通信,只适合作数量级检查。任何预算都应同时注明 dtype、优化器、并行策略、序列长度和 checkpointing 设置。

一手来源

学完你应该能够

  1. 能不用术语堆砌,解释「训练前先算账:参数、FLOPs 与显存」解决了什么问题。
  2. 能围绕 参数量、activation memory、optimizer states 画出变量与因果关系。
  3. 能完成「为 7B 模型做资源预算表」,并用证据而不是感觉判断结果。

核心概念

参数量

参数量是训练前的资源守恒账。参数、梯度、优化器状态和激活分别占用显存;FLOPs 描述理论工作量,MFU 则比较实际吞吐与硬件峰值。

activation memory

activation memory必须用资源、吞吐、数值或数据指标验证;没有基线和故障记录的“优化”无法复现。 把它放进前后依赖中:输入从哪里来,输出会改变谁。

optimizer states

optimizer states是训练前的资源守恒账。参数、梯度、优化器状态和激活分别占用显存;FLOPs 描述理论工作量,MFU 则比较实际吞吐与硬件峰值。

MFU

MFU是训练前的资源守恒账。参数、梯度、优化器状态和激活分别占用显存;FLOPs 描述理论工作量,MFU 则比较实际吞吐与硬件峰值。

实践任务

为 7B 模型做资源预算表

  • 预测:在运行代码前,写下你预期的输出、趋势或失败位置。
  • 构建:写出已知量与目标量,只保留回答核心问题所需的最小组件。
  • 验证:使用吞吐剖析、消融实验、故障注入与 checkpoint 恢复;保存参数、随机种子与原始结果。
  • 迁移:改变模型规模、GPU 拓扑或数据混合后重做预算,说明原结论是否仍成立。

进入完整互动课程