fp16 提出时主要是解决图片处理的问题,并不是专门针对机器学习的,所以它的动态范围很窄,而且要借助 loss scale 技术。 BFloat 16 是想解决这个问题。提供跟 float32 一样的动态范围,属于 FP32 的截断。
从上图可以清晰看出 从fp32可以快速转为 bfloat16,指数部分不变,只需要把 fraction 部分截断。
- fp16的 range 没太看明白。5 bit不是可以表示 32 么
fp16 提出时主要是解决图片处理的问题,并不是专门针对机器学习的,所以它的动态范围很窄,而且要借助 loss scale 技术。 BFloat 16 是想解决这个问题。提供跟 float32 一样的动态范围,属于 FP32 的截断。
从上图可以清晰看出 从fp32可以快速转为 bfloat16,指数部分不变,只需要把 fraction 部分截断。