混合精度训练(Mixed Precision Training)是指在深度学习训练过程中,同时使用单精度(FP32)和半精度(如 FP16 或 BF16) 进行计算和存储。它的主要优势包括:
1. 显存占用显著减少
- FP16/BF16 仅占 FP32 一半的存储空间
- 模型参数、激活值、梯度等都可以用低精度表示
- 通常可节省约 30%–50% 显存,从而:
- 使用更大的 batch size
- 训练更大的模型
- 在更小显存的 GPU 上训练
2. 计算速度更快
- 现代 GPU(如 NVIDIA Volta、Ampere、Hopper 架构)对 FP16 / TF32 / BF16 有专门加速单元(Tensor Cores)
- 低精度矩阵运算吞吐远高于 FP32
- 实际训练中常可带来 1.5×–3× 的训练加速
3. 通信开销降低(分布式训练)
- 多卡 / 多机训练时,梯度通信量减半
- 特别有利于:
- 数据并行
- 大模型分布式训练
4. 能耗效率更高
- 低精度计算功耗更低
- 在大规模训练中具有明显的成本和可持续性优势
5. 对精度影响可控
- 通过损失缩放(Loss Scaling)、主权重用 FP32 维护等技术
- 在大多数任务(CV、NLP、语音)中,最终精度与纯 FP32 训练几乎一致
常见形式
- FP16 + FP32(PyTorch AMP)
- BF16(对梯度更稳定,逐渐流行)
- TensorFloat-32(TF32,NVIDIA 默认加速)
简单总结
混合精度训练的核心价值是:用更少的显存、更快的速度、更低的成本,训练出几乎同等精度的模型。
如果你愿意,我也可以结合 PyTorch / TensorFlow 示例 或 实际调参经验 来讲。