五厂面经真题集美团面经高频美团真题大模型训练混合精度速答 · 约 5 分钟更新 2026-09-29

bf16 和 fp16 怎么选?

一句话结论

大模型训练默认选 bf16,推理对精度敏感场景选 fp16。bf16 牺牲尾数精度换取大指数范围,能有效避免训练溢出。fp16 尾数精度高但动态范围小。硬件上 A 系及之后架构才全面支持 bf16。

先这样答

大模型训练默认选 bf16。推理中对精度敏感的场景选 fp16。这是美团北斗二轮的一道原题。两种格式的选择核心在于数值的动态范围与精度取舍。fp16 拥有十位尾数。它的数值精度比较高。它的动态范围相对较小。大模型训练过程中参数和梯度变化非常剧烈。使用 fp16 进行大模型训练很容易发生数值溢出。

bf16 相比 fp16 减少了八位尾数。它用这部分空间换取了更大的指数范围。这种设计让 bf16 拥有更大的动态范围。大模型训练过程因此变得更加稳定。当前主流大模型的训练任务都默认采用 bf16 格式。

推理场景的格式选择需要另算。部分量化前的累积计算对精度十分敏感。这些场景需要优先考虑尾数精度更高的 fp16。选择格式的硬性前提是硬件支持。英伟达 A 系之后的显卡才全面支持 bf16。老旧硬件不支持 bf16。开发者只能去处理 fp16 的溢出问题。

面试官会怎么追问

  • 「为什么主流大模型训练都切到了 bf16?」 bf16 用尾数精度换取了指数范围。它的动态范围足以覆盖大模型训练中的梯度波动。开发者使用 bf16 可以避免训练过程中的数值溢出。整个大模型训练过程更加稳定。

  • 「推理场景下什么时候必须考虑 fp16?」 遇到对精度敏感的计算环节需要考虑 fp16。量化前的累积计算就是一个典型场景。bf16 的尾数较少,多次累积计算容易产生较大的舍入误差。fp16 的十位尾数能为这些场景提供更好的计算精度。

  • 「如果机房里只有老旧架构显卡,还能用 bf16 吗?」 不能直接使用硬件加速的 bf16 计算。全面支持 bf16 是 A 系之后显卡的特性。在老架构显卡上使用会退化为软件模拟。这会拖慢大模型的整体计算速度。

回答的坑

  • 忽视硬件支持这个前提,脱离 A 系显卡架构去空谈 bf16 的计算优势。
  • 把大模型的训练和推理混为一谈,没有指出推理端量化累积对尾数精度的特殊要求。
—— 本题完 ——