BF16 FP16 Bfloat16

BF16 是对FP32单精度浮点数截断数据,即用8bit 表示指数,7bit 表示小数。
FP16半精度浮点数,用5bit 表示指数,10bit 表示小数
与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 times 10^4。这导致了另一种 16 位格式的开发,该格式以精度换取范围。bfloat16格式被谷歌在其张量处理单元中使用。英特尔计划在其即将推出的 Nervana 神经网络处理器中支持 bfloat16,最近(2018 年 11 月)发布了一份白皮书,对该格式进行了精确定义。

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

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

另一方面,当我们从 fp32 转换为更窄的 fp16 格式时,溢出和下溢很容易发生,因此需要在转换前开发重新缩放的技术——请参阅我和 Sri Pranesh 最近的 EPrint 将矩阵压缩为半精度,以及求解线性系统的应用。

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

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京橙溪科技有限公司enwing.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值