← 课程库
预训练工程模块四 · 训练显存计算计算16 分钟

训练显存计算:参数、梯度、优化器态、激活

为什么训 1B 模型光静态就要约 16GB

学完这节你能:
  • 列出训练显存的四大来源
  • 算出每参数的字节数
  • 理解激活为什么随 batch×seq 增长

推理只要放参数;训练还要放梯度、优化器状态、激活。用混合精度 + Adam 训练时,前三项有一个好记的账。

来源字节/参数(混合精度+Adam)
FP16 参数2
FP16 梯度2
Adam:FP32 主权重4
Adam:一阶动量 m4
Adam:二阶动量 v4
合计(不含激活)≈ 16 字节/参数
手算
1B 参数:静态显存 ≈ 1e9 × 16 B = 16 GB(还没算激活!)
激活 ≈ 正比于 batch × 序列长度 × 层数 × d,可用梯度检查点大幅压缩
这就是为什么单卡训不动大模型,必须上 ZeRO/张量并行把这些切开。

🔑 记「16 字节/参数」这条线:参数 2 + 梯度 2 + Adam 12 = 16。1B→16GB、7B→112GB,远超单卡,逼出并行与 ZeRO。

✗ 常见误解✓ 正确理解
训练显存只取决于参数量。还有梯度、优化器态(Adam 占大头)与激活;激活随 batch×seq 变化。
自测混合精度+Adam 训练,约需多少字节/参数(不含激活)?
自测变式(换数字再算):混合精度+Adam 训练一个 3B 参数模型,静态显存(不含激活)约为:
// 带走一句话

训练显存四来源:参数+梯度+优化器态(Adam 占大头)+激活;混合精度+Adam≈16 字节/参数,1B≈16GB。

独立练习

做到这些,才算完成本节

  1. 分别估算 FP32+Adam 与混合精度+Adam 的参数、梯度和优化器状态显存。
  2. 运行 AMP 示例并记录 autocast dtype、GradScaler scale 变化以及溢出时是否跳步。
  3. 替换例题中的数值,从头独立算一遍。
  4. 用数量级、边界值或反向计算检查结果是否合理。
学习记录

记录本节阅读进度

建议先独立回答自测。读完记录不等于已经掌握。

继续下一课
← 上一课
训练算力与时间:FLOPs 与 6ND
下一课 →
显存优化:梯度检查点与激活重计算

学完不要急着赶进度:去练习自测,或完成对应的阶段实验