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-L1000,Xeon处理器(AVX-512 BF16扩展),Intel FPGA,Google Cloud TPUs和TensorFlow。在这些平台上,bfloat16也可能用于混合精度算术,其中bfloat16数字可能被操作并扩展到更宽的数据类型。
bfloat16具有以下格式:
- 符号位:1位
- 指数宽度:8位
- 尾数精度:8位(7位明确存储,带有隐式的前导位),与经典的单精度浮点格式的24位相对
bfloat16格式,作为截断的IEEE 754单精度32位浮点数,允许快速转换为和从IEEE 754单精度32位浮点数;在转换为bfloat16格式时,指数位被保留,而尾数字段可以通过截断(因此对应于向0舍入)来减少,忽略NaN特殊情况。保留指数位保持了32位浮点数的范围,约为10^-38到约3×10^38。
总的来说,bfloat16是一种特殊的浮点数格式,旨在在保持较大数值范围的同时,减少存储和计算的复杂性。这使得它在需要大量计算但不需要高精度的应用,如深度学习,中非常有用。
Nvidia 显卡支持
NVIDIA 的 Tensor Cores 支持多种数据格式,包括 bfloat16。以下是 NVIDIA 显卡中支持 bfloat16 的一些型号:
-
NVIDIA H100 Tensor Cores:这是 NVIDIA 的第四代 Tensor Cores,使用了新的 8 位浮点精度 (FP8) 来提供比 FP16 更高的性能,用于训练万亿参数模型。此外,Hopper Tensor Cores 还支持 TF32、FP64、FP16、和 INT8 精度,为所有工作负载提供了最高的加速。
-
NVIDIA Ampere Tensor Cores:这是 NVIDIA 的第三代 Tensor Cores,引入了新的精度 TF32 和 FP64,以加速和简化 AI 的采用,并将 Tensor Cores 的力量扩展到 HPC。此外,这些 Tensor Cores 还支持 bfloat16、INT8、和 INT4,使得这些 Tensor Cores 成为 AI 训练和推理的非常多功能的加速器。
-
NVIDIA Turing Tensor Cores:这是 NVIDIA 的第二代 Tensor Cores,为高效的 AI 推理提供多精度计算。Turing Tensor Cores 提供了从 FP32 到 FP16 到 INT8,以及 INT4 的一系列精度,相比于 NVIDIA Pascal™ GPUs 提供了巨大的性能提升。
-
NVIDIA Volta Tensor Cores:这是 NVIDIA 的第一代 Tensor Cores,专为深度学习设计,提供混合精度矩阵乘法的突破性性能。这个关键能力使得 Volta 能够在训练和推理上比 Pascal 提供 3X 的性能提升。
请注意,具体的支持可能会因具体的 GPU 型号和驱动版本而异。为了获取最准确的信息,建议您查阅 NVIDIA 的官方文档或联系 NVIDIA 的客户支持。
本文作者:Maeiee
本文链接:BF16
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!