BFloat16精度
Brain Floating 16
Bfloat16是由Google Brain开发的数据格式 [1]。如今在很多AI处理中得到应用,比如Nervana NNP-L1000,Xeon processors (AVX-512 BF16 extensions) 以及Intel FPGAs,Google Cloud TPUs,[9][10]和TensorFlow。ARMv8.6-A,AMD ROCm和CUDA也同样支持bfloat16数据精度。在训练时,可以使用混合加速,即使用FP16/BF16做乘法以及存储,使用FP32做加法。
引入BF16的原因 [2]
- 提高了16bit数值的dynamic range(5->8)
- 硬件乘法器的面积(晶体管数量)大致与mentissa数据宽度的平方成正比,因此,mentisa由10降低为7之后,乘法器的面积减少约50%
以下复习一下FP16/32并于BF16作比较。
| type | sign bit | exponent bit | fraction/mentissa bit |
|---|---|---|---|
| FP16 | 1 | 5 | 10 |
| FP32 | 1 | 8 | 23 |
| BF16 | 1 | 8 | 7 |
FP16的计算方法
v a l u e F P 16 = ( − 1 ) s i g n × 2 ( e x p o n e n t − 15 ) × ( 1 + f r a c t i o n 1024 ) value_{FP16} = (-1)^{sign}\times 2^{(exponent-15)}\times (1+\frac{fraction}{1024}) valueFP16=(−1)sign×2

1万+

被折叠的 条评论
为什么被折叠?



