训练效率

别名:Mixed Precision Training / Gradient Checkpointing / 混合精度训练 / 梯度检查点

混合精度与梯度检查点:一个省带宽/算力,一个省激活显存,常与梯度累积、分布式训练叠加。

更新于 2026/11/08
训练显存精度

一句话定义

训练效率常用的两种手段:混合精度用低精度做前向/反向、FP32 保存主权重;梯度检查点只存少量激活,反向时重算,用计算换显存。

为什么需要它

大模型训练同时受算力、显存带宽和激活显存限制。混合精度减少数据搬运和矩阵乘成本;梯度检查点减少保存的中间激活,让更长序列或更大 batch 成为可能。

怎么工作

混合精度

  • 前向/反向用 FP16 或 BF16,矩阵乘更快、显存更省。
  • 主权重和优化器状态保留 FP32,避免更新被低精度吞掉。
  • 用 loss scaling 防止 FP16 梯度下溢;BF16 范围更大,通常更稳。

梯度检查点

  • 前向只保存少量检查点,不保存全部中间激活。
  • 反向传播时从检查点重算需要的激活。
  • 显存下降,训练时间增加;适合长序列、大 batch、显存受限。

训练效率:混合精度 vs 梯度检查点

关键取舍

  • 混合精度依赖硬件和算子支持;不是所有层都能安全低精度。
  • BF16 比 FP16 范围大、通常更稳,但硬件支持要看卡。
  • 梯度检查点用计算换显存;重算比例越高,时间代价越大。
  • 两者可以叠加,但要先确认瓶颈是带宽、算力还是显存。
  • 混合精度通常结合 loss scaling 和 FP32 主权重;检查点适合长序列、大 batch。先测瓶颈再调。

常见误区

  • 混合精度一定更快:没有低精度算子或数值不稳定时可能更慢。
  • 梯度检查点没有成本:它增加反向计算,训练时间会上升。
  • 梯度检查点等于梯度累积:前者省激活显存,后者省 batch 显存,解决不同问题。

用在哪里

  • 长上下文、大 batch、显存不足的训练。
  • 混合精度几乎是现代 LLM 训练的默认配置。
  • 先用 profiler 找瓶颈,再决定省显存还是省带宽。

相关概念