AEWIN

Bfloat16 – 简介

social_icon_fb social_icon_twitter social_icon_line social_icon_line

AI计算在计算上非常昂贵,尤其是在使用FP32的较大数字集的情况下。半精度FP16浮点只有8位精度有效位,指数为5位,与FP32相比,其精度和表示数字的范围都有所降低。

谷歌开发的BFloat16专门用于满足AI的特殊需求,它需要大量的数字,但对有效位的精度要求较低。BFloat16本质上是一个具有截断有效位的FP32,在使用一半内存的同时,使FP16的性能与FP32的动态范围保持一致。使用BF16的好处是,可以轻松转换现有的FP32数据,并将其截断为BF16进行进一步的神经处理。BF16提供了足够的精度,仅此而已。这是做这项工作的正确工具。

BF16 bfloat16 :
1bit用于符号
8bit用于指数
2-127 最小正值到 2128最大正值(指数的零偏移量为 127).
7bit为有效数字

我们正处于人工智能时代的边缘。以人工智能为目标的数字格式的通用和快速实施将加速我们朝着正确的方向前进。业界已经开始采用BFloat16格式,并在广泛的硬件平台上提供支持。该格式的发明者Google在云上拥有自己的TPU(张量处理单元)。AI加速器的实际领导者Nvidia也采用了bf16,并在张量核心中实施了最新的基于Ampere的硅片。CPU巨头英特尔在Nervana加速器方面有专门的解决方案,并将BF16集成到其AVX-512扩展中,以用于对AI的依赖程度较低的特定用途,减少的工作量可以由CPU自己承担。ARM还将bf16集成到其SVE和Neon指令中。这一点很重要,因为ARM v8在广泛的平台中使用,从移动到基础设施。

Table 1 – BFloat16支持的选定硬件列表

CPU支持
第一代和第二代Intel®Xeon®可扩展处理器
第三代Intel®Xeon®可扩展处理器(Cooper Lake)
GPU支持
Nvidia Volta (V100)
Nvidia Turing (T4)
Nvidia Ampere(A100)
AMD Radeon RX6000
AMD Radeon Instinct