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

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

混合精度训练 = 训练时同时用 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 会自动实现混合精度计算,不用手动实现。

相关推荐
炫酷的大高个16 小时前
98% 连跑 20 次只剩 67%,我算了大模型重试账
人工智能·架构·开源
可乐ea16 小时前
智能体的模型列表为什么要从三处来源合成:一次让 GPT-6.1 Sol 选不上的发布延迟
人工智能·gpt·chatgpt·智能体框架·模型列表·多源数据合成·客户端工程
freewebsys17 小时前
【原始POSTMAN】最老一个版本的postman 大家还记得吗?官方已经不支持没有升级了,下载了组件用AI直接升级了下可以使用了!
人工智能
云南新人和数采集团17 小时前
云南靠谱软件开发公司选型指南:以昆明新腾科技为例
大数据·人工智能·科技
发现你走远了18 小时前
05-权限不是开关:工具调用如何在放行、拦截与追问之间做决定
人工智能·agent·claude
AllData公司负责人18 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
syyjhchou19 小时前
自己搭企业内部中转站,怎么让请求更容易命中缓存
人工智能·后端·语言模型·aigc
张然Adolf19 小时前
人工智能电力系统应用新手实战指南
人工智能
高洁0120 小时前
数据同化与动态状态估计:让孪生持续贴合现实
人工智能·python·深度学习·transformer·迁移学习
feasibility.20 小时前
一物降一物?AI逆向没有终局:REA拆App,BLA设套,LASIK清场
人工智能·爬虫·github·逆向·skill·rea