深度学习中的混合精度训练

一、混合精度训练是什么?

混合精度训练 = 训练时同时用 FP16/BF16(快、省显存)+ FP32(稳、防梯度消失),

在几乎不掉精度的前提下,大幅提速、省显存。

·FP32:默认精度,稳,但慢、占显存

·FP16 / BF16:半精度,快、显存减半,但容易梯度下溢(变 0)

·混合精度:让该快的快,该稳的稳

二、核心原理(3 个关键点)

1. 为什么要用半精度?

显存减半:参数 / 激活从 4B → 2B

计算更快:GPU Tensor Core 专门加速 FP16/BF16

带宽压力减半:数据搬运更快

2. 直接全用 FP16 会崩,为什么?

梯度通常非常小 → FP16 表示范围窄 → 梯度直接变成 0 → 模型不收敛。

3. 混合精度怎么解决?

三大技术:

FP32 权重主副本(参数更新必须用 FP32)

损失缩放 Loss Scaling(把 loss 放大,防止梯度下溢)

自动精度调度(conv/matmul 用 FP16,loss/softmax 用 FP32)

三、混合精度训练具体怎么实现(标准流程)

标准 5 步(NVIDIA 官方)

1.模型权重存 FP32 主副本

权重实际存在 FP32主本,FP16的副本

2.前向传播用 FP16

前向计算用 权重的FP16 副本。

3.Loss 缩放(FP16 需要)

loss × scale → 梯度变大 → 不会变成 0,更新参数前 ÷ scale → 恢复真实值

4.反向传播算 FP16 梯度

反向传播时使用FP16

5.梯度转回 FP32,更新主权重

梯度算完 → 转回 FP32 更新主权重

四、哪些必须跑 FP32?

Softmax,LayerNorm / BatchNorm,Loss 计算,小梯度累加操作等操作需使用FP32,调用autocast 会自动实现混合精度计算,不用手动实现。

相关推荐
STQY燊桐启元(深圳)电子科技12 小时前
5G射频滤波器腔体寄生谐振的吸波抑制方案:从工程痛点 to 材料选型
人工智能·5g·导热片·电磁抑制吸波材料、·导热绝缘
紧跟先前的步伐12 小时前
Go AI Agent 实战 14|多轮对话与上下文历史管理
人工智能·ai·golang·1024程序员节
肖永威12 小时前
AI大模型不是答案机:研发场景下的多模型迭代工作流
人工智能·1024程序员节
海盗123412 小时前
微软技术日报 2026-10-24:CA 私钥是 4,Windows 封了中间证书未动父根
人工智能·机器人·aigc·1024程序员节
“AI国潮设计-小江”12 小时前
AIGC实战:Python+SDXL批量生成英歌舞IP立牌,解锁猪猪蛋糕“反差萌”流量密码(附完整API源码)
开发语言·人工智能·python·prompt·aigc
合尘猫12 小时前
AI客服国标落地一个月:从工程角度看,真正要改的是三处数据结构
数据库·人工智能·架构
长不大的杨瑞杰12 小时前
OpenCode v2 CI 与自动化实战:无交互运行、权限收口与制品闭环
运维·人工智能·ci/cd·自动化·软件工程·1024程序员节
远航计算机12 小时前
收录从分钟级变 3 到 7 天,抢首发为什么失效了
大数据·人工智能·爬虫·chatgpt·aigc·1024程序员节
奈落2412 小时前
从“你问它答”到“它主动推”:ChatGPT Pulse 把记忆、反馈和日历变成一条信息策划流水线
人工智能·chatgpt·ai 编程
xieyan081112 小时前
笔记不只是仓库:让 AI 帮旧想法重新参与思考
人工智能·笔记