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 设置。
一手来源
学完你应该能够
- 能不用术语堆砌,解释「训练前先算账:参数、FLOPs 与显存」解决了什么问题。
- 能围绕 参数量、activation memory、optimizer states 画出变量与因果关系。
- 能完成「为 7B 模型做资源预算表」,并用证据而不是感觉判断结果。
核心概念
参数量
参数量是训练前的资源守恒账。参数、梯度、优化器状态和激活分别占用显存;FLOPs 描述理论工作量,MFU 则比较实际吞吐与硬件峰值。
activation memory
activation memory必须用资源、吞吐、数值或数据指标验证;没有基线和故障记录的“优化”无法复现。 把它放进前后依赖中:输入从哪里来,输出会改变谁。
optimizer states
optimizer states是训练前的资源守恒账。参数、梯度、优化器状态和激活分别占用显存;FLOPs 描述理论工作量,MFU 则比较实际吞吐与硬件峰值。
MFU
MFU是训练前的资源守恒账。参数、梯度、优化器状态和激活分别占用显存;FLOPs 描述理论工作量,MFU 则比较实际吞吐与硬件峰值。
实践任务
为 7B 模型做资源预算表
- 预测:在运行代码前,写下你预期的输出、趋势或失败位置。
- 构建:写出已知量与目标量,只保留回答核心问题所需的最小组件。
- 验证:使用吞吐剖析、消融实验、故障注入与 checkpoint 恢复;保存参数、随机种子与原始结果。
- 迁移:改变模型规模、GPU 拓扑或数据混合后重做预算,说明原结论是否仍成立。