拿下技术面上传简历

你要在 A100 上训练一个 1B 参数的语言模型。用 fp16 + GradScaler 的 AMP 方案时,loss 能降但曲线比纯 fp32 抖动明显,大约 2000 步时突然出现溢出、之后又恢复。同事说「直接换 bf16 就行了,bf16 比 fp16 精度高」。请回答三件事:(1) fp16 和 bf16 在指数位/尾数位上到底差在哪;(2) 为什么 bf16 通常不需要 loss scaling 而 fp16 需要;(3) 换成 bf16 后你预期抖动、溢出和最终收敛会怎么变,代价是什么。

深度学习基础训练工程1-3 年知识点 1 个

面试官在考什么

判断候选人是否真正理解 fp16/bf16 的位宽差异与 loss scaling 存在的根因,而不是只会背「bf16 更稳」。

混合精度

回答框架 · 前两步

  1. fp16 是 1+5+10 位,动态范围约 6e-5 ~ 65504,小梯度容易下溢为 0,所以需要 loss scaling;bf16 是 1+8+7 位,指数位与 fp32 相同,范围几乎不丢,但尾数只有 7 位、精度明显低于 fp16。
  2. loss scaling 是把 loss 乘一个 scale 再 backward,让梯度整体放大以避免下溢;反传后必须把梯度 unscale 回真实量级再做裁剪和更新,否则等效学习率被放大 scale 倍。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「深度学习基础」方向页

同一能力域的其他题