BF16

bfloat16(Brain Floating Point)是一种计算机数字格式,占用16位计算机内存。它通过使用浮点基数表示广泛的数值动态范围。这种格式是32位IEEE 754单精度浮点格式(binary32)的截断(16位)版本,旨在加速机器学习和近传感器计算。它保留了32位浮点数的大致动态范围,保留了8位指数位,但只支持8位精度,而不是binary32格式的24位尾数。bfloat16数字对于整数计算的适用性比32位单精度浮点数更差,但这并非它们的预期用途。bfloat16用于减少机器学习算法的存储需求并提高计算速度。

bfloat16格式由Google Brain开发,这是Google的人工智能研究小组。它被用于Intel AI处理器,如Nervana NNP-L1000Xeon处理器AVX-512 BF16扩展),Intel FPGAGoogle Cloud TPUsTensorFlow。在这些平台上,bfloat16也可能用于混合精度算术,其中bfloat16数字可能被操作并扩展到更宽的数据类型。

bfloat16具有以下格式:

bfloat16格式,作为截断的IEEE 754单精度32位浮点数,允许快速转换为和从IEEE 754单精度32位浮点数;在转换为bfloat16格式时,指数位被保留,而尾数字段可以通过截断(因此对应于向0舍入)来减少,忽略NaN特殊情况。保留指数位保持了32位浮点数的范围,约为10^-38到约3×10^38。

总的来说,bfloat16是一种特殊的浮点数格式,旨在在保持较大数值范围的同时,减少存储和计算的复杂性。这使得它在需要大量计算但不需要高精度的应用,如深度学习,中非常有用。

Nvidia 显卡支持

NVIDIA 的 Tensor Cores 支持多种数据格式,包括 bfloat16。以下是 NVIDIA 显卡中支持 bfloat16 的一些型号:

  1. NVIDIA H100 Tensor Cores:这是 NVIDIA 的第四代 Tensor Cores,使用了新的 8 位浮点精度 (FP8) 来提供比 FP16 更高的性能,用于训练万亿参数模型。此外,Hopper Tensor Cores 还支持 TF32FP64FP16、和 INT8 精度,为所有工作负载提供了最高的加速。

  2. NVIDIA Ampere Tensor Cores:这是 NVIDIA 的第三代 Tensor Cores,引入了新的精度 TF32FP64,以加速和简化 AI 的采用,并将 Tensor Cores 的力量扩展到 HPC。此外,这些 Tensor Cores 还支持 bfloat16、INT8、和 INT4,使得这些 Tensor Cores 成为 AI 训练和推理的非常多功能的加速器。

  3. NVIDIA Turing Tensor Cores:这是 NVIDIA 的第二代 Tensor Cores,为高效的 AI 推理提供多精度计算。Turing Tensor Cores 提供了从 FP32FP16INT8,以及 INT4 的一系列精度,相比于 NVIDIA Pascal™ GPUs 提供了巨大的性能提升。

  4. NVIDIA Volta Tensor Cores:这是 NVIDIA 的第一代 Tensor Cores,专为深度学习设计,提供混合精度矩阵乘法的突破性性能。这个关键能力使得 Volta 能够在训练和推理上比 Pascal 提供 3X 的性能提升。

请注意,具体的支持可能会因具体的 GPU 型号和驱动版本而异。为了获取最准确的信息,建议您查阅 NVIDIA 的官方文档或联系 NVIDIA 的客户支持。


本文作者:Maeiee

本文链接:BF16

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!