原创作品,转载请标明出处。@周荣华

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

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

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

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

 

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

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

 

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

 

IEEE half-precision

 16-bit float

 

 

IEEE 754 single-precision

 32-bit float

 

 bfloat16

 

 

 
**'s **(**)

 

 

 
AMD's fp24 format

 

 

Pixar's PXR24 format

 

 

 

**'s ef32

 

 

更多参考文档:

  1. bfloat16 floating-point format - Wikipedia
  2. What is the **-32 Precision Format? | ** Blog
  3. A100 Tensor Float 32 性能实测 - 知乎 (zhihu.com)
posted @ 2021-08-21 18:19  周荣华  阅读(17349)  评论(0编辑  收藏  举报