问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

BF16和FP16对比分析

创作时间:
作者:
@小白创作中心

BF16和FP16对比分析

引用
CSDN
1.
https://blog.csdn.net/hellochenlian/article/details/132010077

BF16和FP16是两种重要的16位浮点数格式,在深度学习和高性能计算领域有着广泛的应用。本文将对比分析这两种格式的位分配、精度和范围,并通过谐波级数求和的例子直观展示它们的差异。

BF16是对FP32单精度浮点数进行截断的数据格式,使用8位表示指数,7位表示小数。而FP16半精度浮点数则使用5位表示指数,10位表示小数。

与32位浮点数相比,采用BF16或FP16可以将吞吐量翻倍,内存需求减半。但是,这两者在精度上存在差异:BF16可以表示的整数范围更广泛,但尾数精度较小;FP16表示的整数范围较小,但尾数精度较高。

IEEE浮点运算标准在2008年的修订版中引入了半精度16位浮点格式(称为fp16)作为存储格式。各种制造商都采用了fp16进行计算,使用fp32(单精度)和fp64(双精度)格式规则的明显扩展。例如,NVIDIA P100和V100 GPU、AMD Radeon Instinct MI25 GPU以及为Fujitsu Post-K百万兆次级计算机提供动力的A64FX Arm处理器都支持fp16。

Bfloat16

Fp16在科学计算中具有有限范围的缺点,其最大正数为6.55×10^4。这导致了另一种16位格式的开发,该格式以精度换取范围。bfloat16格式被谷歌在其张量处理单元中使用。英特尔计划在其即将推出的Nervana神经网络处理器中支持bfloat16,最近(2018年11月)发布了一份白皮书,对该格式进行了精确定义。

下表显示了bfloat16、fp16和fp32的指数和有效位数的位分配,其中归一化数的隐式前导位计入有效数。

格式
指数位数
有效位数
bfloat16
8
8
fp16
5
11
fp32
8
24

Bfloat16的有效位数比fp16少三个位,但指数多三个位。它具有与fp32相同的指数大小。因此,从fp32转换为bfloat16很容易:指数保持不变,有效数从24位四舍五入或截断为8;因此,在转换中不可能溢出和下溢。

另一方面,当我们从fp32转换为更窄的fp16格式时,溢出和下溢很容易发生,因此需要在转换前开发重新缩放的技术。

bfloat16的缺点是精度较低:基本上是3位有效的十进制数字,而fp16的精度为4。下表显示了三种格式的单位舍入u、最小正(次正规)数xmin、最小规范化正数xmin和最大有限数xmax。

格式
单位舍入u
最小正数xmin
最大有限数xmax
bfloat16
2^-7
2^-126
3.39×10^38
fp16
2^-10
2^-14
6.55×10^4
fp32
2^-23
2^-126
3.40×10^38

Harmonic Series

比较这些不同精度的一个有趣方法是求和调波级数1+1/2+1/3+⋯。序列发散,但是当在浮点运算中以自然顺序求和时,它会收敛,因为部分和增长而加法减少,最终加法足够小,以至于它不会改变部分和。下表显示了不同精度的谐波级数的计算总和,以及在总和变为常数之前添加的项数。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号