AI Infra Academy
返回题库
中等量化量化BF16FP16面试高频NVIDIA

BF16 和 FP16 有什么区别?训练/推理中如何选择?

6 0 0

参考答案

两者都是 16-bit 浮点,但指数位和尾数位分配不同: - **FP16(half)**:1 符号 + 5 指数 + 10 尾数。尾数多,精度(有效位数)较高,但**动态范围小**(指数只有 5 位),容易上溢/下溢,梯度小时会下溢为 0。 - **BF16(bfloat16)**:1 符号 + 8 指数 + 7 尾数。指数位和 FP32 一样(8 位),**动态范围与 FP32 相同**,但尾数少、精度较低。 **选择**: - **训练**:BF16 更受青睐。训练中梯度动态范围大,BF16 的宽范围避免溢出,无需像 FP16 那样做 loss scaling(缩放梯度防下溢),更稳定。现代大模型训练几乎都用 BF16(需要 Ampere 及以后硬件支持)。 - **推理**:两者都常用。推理数值范围相对可控,FP16 的更高精度有时略有优势;BF16 与训练一致,避免精度转换问题。硬件支持和框架默认往往决定选择。 - **精度损失**:BF16 尾数少,单个数精度低,但对深度学习通常够用(模型对精度不敏感、对范围敏感)。 **面试延伸**:再往下有 FP8(E4M3/E5M2)、TF32(训练用的 19-bit 等效)。选择本质是"范围 vs 精度"的权衡,深度学习普遍更需要范围。

讨论区(0)

还没有评论,来做第一个发言的人吧