您将如何决定哪种精度最适合您的推理模型?BF16和F16都占用两个字节,但它们在小数和指数的位数分配上有所不同。
范围会有所不同,但我想了解为什么会选择其中一种而不是另一种。
谢谢
|--------+------+----------+----------| | Format | Bits | Exponent | Fraction | |--------+------+----------+----------| | FP32 | 32 | 8 | 23 | | FP16 | 16 | 5 | 10 | | BF16 | 16 | 8 | 7 | |--------+------+----------+----------|Rangebfloat16: ~1.18e-38 … ~3.40e38 with 3 significant decimal digits.float16: ~5.96e−8 (6.10e−5) … 65504 with 4 significant decimal digits precision.
回答:
bfloat16
通常更易于使用,因为它可以作为 float32
的直接替代品。如果您的代码在使用 float32
时不会生成 nan/inf
数或将非 0
变成 0
,那么使用 bfloat16
时也应该不会,大致来说。因此,如果您的硬件支持,我会选择 bfloat16
。
如果您选择 float16
,请查看 AMP。