https://zhuanlan.zhihu.com/p/449345588
BF16 是对FP32单精度浮点数截断数据,即用8bit 表示指数,7bit 表示小数。
FP16半精度浮点数,用5bit 表示指数,10bit 表示小数;
与32位相比,采用BF16/FP16吞吐量可以翻倍,内存需求可以减半。但是这两者精度上差异不一样,BF16 可表示的整数范围更广泛,但是尾数精度较小;FP16 表示整数范围较小,但是尾数精度较高。
那么,问题来了,两者性能加速比相似,但精度diff不一样,在哪些情况用BF16,哪些用FP16呢?
第二个问题:在ARM 上,高端机支持v8.2 指令集,提供FP16 运算指令;BF16 运算指令只能在V8.5 上支持,需要耐心等待。但现在开源框架上,有通过将FP32 数据截断方式,用int16 指令集代替BF16 计算,不知道这块性能和精度是怎样的,是否符合实际需求呢?
这些问题基于推理角度上,用FP16 和 BF16的差异
提前先感谢各位读者浏览该文章,希望大家给出自己的见解,一起相互学习