Bfloat16 – 简介
AI 计算在计算上是昂贵的,特别是在处理 FP32 的较大数字集时。半精度 FP16 浮点数只有 8 位精度的有效数字和 5 位的指数,与 FP32 相比,其精度和可表示的数字范围都较低。
BFloat16 是由 Google 开发的,专门用来满足 AI 的特殊需求,AI 需要大量数字的范围,而对有效数字的精度要求较低。BFloat16 本质上是一个截断有效数字的 FP32,带来 FP16 的性能和 FP32 的动态范围,同时使用一半的内存。使用 BF16 的好处是可以轻松将现有的 FP32 数据转换为 BF16,以便进一步的神经处理。BF16 提供了足够的精度,没有更多。这是完成工作的合适工具。

BF16 bfloat16 :
1位元用于符号
8位元用于指数
2-127最小正值为2128最大正值(指数偏移量为127)。
7bit 用于有效数字
我们正处于人工智慧时代的边缘。拥有一种针对人工智慧的通用且快速的数字格式实现将加速我们朝着正确的方向前进。业界已经支持BFloat16格式,并在广泛的硬体平台上提供支持。格式的发明者Google在云端提供了他们自己的TPU(张量处理单元)。人工智慧加速器的事实领导者Nvidia也接受了bf16,并将其实施到他们最新的基于Ampere的硅晶片中的张量核心。CPU巨头Intel在Nervana加速器中提供了专门的解决方案,并将BF16整合到他们的AVX-512扩展中,以便在对人工智慧的依赖较少的特定使用情况下,减少的工作负载可以由CPU本身处理。ARM也将bf16整合到他们的SVE和Neon指令中。这一点非常重要,因为ARM v8在从移动设备到基础设施的广泛平台上都有使用。
表1 – 支援BFloat16的选定硬体列表
| CPU | Support |
|---|---|
| 第一代和第二代英特尔® Xeon® 可扩展处理器 | no |
| 第三代英特尔® 至强® 可扩展处理器(Cooper Lake) | yes |
| GPU | 支持 |
| Nvidia Volta (V100) | No |
| Nvidia Turing (T4) | No |
| Nvidia Ampere(A100) | yes |
| AMD Radeon RX6000 | No |
| AMD Radeon Instinct | yes |

