ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AI中各种浮点精度概念集合:fp16,fp32,bf16,tf32,fp24,pxr24,ef32

2021-08-18 15:33:52  阅读:449  来源: 互联网

标签:bf16 exponent tf32 AI fp32 ef32 sign fraction bit


常见的浮点类型有fp16,fp32,bf16,tf32,fp24,pxr24,ef32,能表达的数据范围主要看exponent,精度主要看fraction。

可以看出表达的数据范围看fp32,bf16,tf32,pxr24和ef32都是一样的,因为大家能表达的都是-2254~2255这个大概范围。fp24到表达范围比上面这些小,是-2126~2127

从精度上看fp32>pxr24>ef32>tf32>bf16,燧原的ef32都精度比Nvidia的fp32的精度多了一位,但都显著优于google的bf16,燧原的ef32,Nvidia的tf32都是使用fp16的计算性能像fp32的表达范围靠齐的一种尝试。

 

之前看《Enflame 2.0 Whitepaper_Dorado》的时候,看到描述tf32是1+8+11,还和刘伟纠结了一下,后来才知道燧原白皮书里面说的tf32其实是自己的ef32,并不是Nvidia的tf32,多设计一位精度最初是为了规避专利风险,后面也有精度和性能的折中考虑。

ef32总共20bits,而tf32是19bits,从硬件设计上说20bits的性能应该比19bits更好,当前也不排除Nvidia另外拿一个bit来作为奇偶校验位之类的设计。

 

另外,AI中也有很多场合用定点数据,就是编程语言里面说的整型,一般用INT8,类似C语言里面的char和byte。

 

IEEE half-precision

 16-bit float
sign exponent (5 bit) fraction (10 bit)
  ┃ ┌─────────────┐ ┌──────────────────────────────────┐
 0   0   1   1   0   0   0   1   0   0   0   0   0   0   0   0 
15 14   10 9   0

IEEE 754 single-precision

 32-bit float
sign exponent (8 bit) fraction (23 bit)
  ┃ ┌─────────────────────────┐ ┌───────────────────────────────────────────────────────────────────────────────┐
 0   0   1   1   1   1   1   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
31 30   23 22   0
bfloat16
sign exponent (8 bit) fraction (7 bit)
  ┃ ┌─────────────────────────┐ ┌───────────────────────┐
 0   0   1   1   1   1   1   0   0   0   1   0   0   0   0   0 
15 14   7 6   0
NVidia's TensorFloat(tf32)
sign exponent (8 bit) fraction (10 bit)
  ┃ ┌─────────────────────┐ ┌─────────────────────────┐
 0   0   1   1   1   1   1   0   0   0   1   0   0   0   0   0   0   0   0 
18 17   10 9   0
AMD's fp24 format
sign exponent (7 bit) fraction (16 bit)
  ┃ ┌───────────────────┐ ┌─────────────────────────────────────┐
 0   0   1   1   1   1   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
23 22   16 15   0
Pixar's PXR24 format
sign exponent (8 bit) fraction (15 bit)
  ┃ ┌─────────────────────┐ ┌───────────────────────────────────┐
 0   0   1   1   1   1   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0 
23 22   15 14   0

 

Enflame's ef32
sign exponent (8 bit) fraction (11bit)
  ┃ ┌───────────────────┐ ┌───────────────────────────────┐
 0   0   1   1   1   1   1   0   0   0   1   0   0   0   0   0   0   0   0  0
19 18   11 10   0

更多参考文档:

  1. bfloat16 floating-point format - Wikipedia
  2. What is the TensorFloat-32 Precision Format? | NVIDIA Blog
  3. A100 Tensor Float 32 性能实测 - 知乎 (zhihu.com)

标签:bf16,exponent,tf32,AI,fp32,ef32,sign,fraction,bit
来源: https://www.cnblogs.com/zhouronghua/p/15156998.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有