FP16 部署问题
FP16、BF16、FP32 的区别?
- FP16:指得是半精度浮点数表示,通常意义上其表示的为 Nvidia 提供的半精度浮点数表示方案, 也被 IEEE 754-2008 方案所采纳
- BF16: Intel 提供的半精度表示方案,采用直接截断尾数的方式
- FP16 较 BF16 拥有更长的尾数,但阶码较短。因此 FP16 可以提供较 BF16 更好的有效位长度,而 BF16 可以提供较 FP16 更广的动态范围
FP16/BF16 在计算中的精度问题
- FP16 的上下溢出可以参考图 1-3。对于绝对值大于 65504 的数,触发上溢出会舍入到 ±INF;对于绝对值小于的数,触发下溢出舍入到 0
- BF16 则因为阶码同 FP32 等长,因此并不容易出现上下溢出问题