FP8¶
说明¶
该数据格式为 8位低精度浮点数表示格式,遵循IEEE 754-2008标准规范。
FP8包含E4M3和E5M2两种存储结构。
E4M3¶
FP8-E4M3格式通过表示较少的特殊值来扩展了窄动态范围,并将特殊值的比特模式用于正常值。E4M3格式对于NaN只保留一个尾数位模式,并且不表示无穷大。
二进制结构¶
FP8的二进制结构包含1bit符号位、4bit指数和3bit尾数,简写为E4M3。示意图如下:

数值范围¶
FP8-E4M3的指数偏移为7,可以表达的数值通过公式定义如下。
1.对于规格化浮点数: $$ Value = (−1)^S x 2^{E−7} x (1 + \Sigma_{i=0}^2 m_i x 2^{-3+i}) $$
2.对于非规格化浮点数: $$ Value = (−1)^S x 2^{E−7+1} x \Sigma_{i=0}^2 m_i x 2^{-3+i} $$
其中:
- S ∈ {0,1}。
- E ∈ [0, 15],但全0 用于特殊值。
- $m_i$ 是尾数的第ibit,i ∈ [0, 2]。
FP8-E4M3的取值范围为:
| 数值 | S | Exponent | Mantissa | 表达范围 |
|---|---|---|---|---|
| 零值(Zeros) | 0/1 | 4'h0 | 000 | $\pm$0 |
| 最小非规格数(Min Subnormal) | 0/1 | 4'h0 | 001 | $\pm$2^{-3} x 2^{-6} |
| 最大非规格数(Max Subnormal) | 0/1 | 4'h0 | 111 | $\pm$(2^{-1} + 2^{-3}) x 2^{-6} |
| 最小规格数(Min Normal) | 0/1 | 4'h1 | 000 | $\pm$2^{-6} |
| 最大规格数(Max Normal) | 0/1 | 4'hF | 110 | $\pm$(1 + 2^{-1} + 2^{-3}) x 2^8 |
| 无穷值(Infinities) | 0/1 | - | - | - |
| 非数(NaN) | 0/1 | 4'hF | 111 | Not a Number |
E5M2¶
二进制结构¶
FP8-E5M2的二进制结构包含1bit符号位、5bit指数和2bit尾数,简写为E5M2。示意图如下:

数值范围¶
FP8-E5M2的指数偏移为15,可以表达的数值通过公式定义如下。
1.对于规格化浮点数: $$ Value = (−1)^S x 2^{E−15} x (1 + \Sigma_{i=0}^1 m_i x 2^{-2+i}) $$
2.对于非规格化浮点数: $$ Value = (−1)^S x 2^{E−15+1} x \Sigma_{i=0}^1 m_i x 2^{-2+i} $$
其中:
- S ∈ {0,1}。
- E ∈ [0, 31],但全0 和全1 用于特殊值。
- $m_i$ 是尾数的第ibit,i ∈ [0, 1]。
FP8-E5M2的取值范围为:
| 数值 | S | Exponent | Mantissa | 表达范围 |
|---|---|---|---|---|
| 零值(Zeros) | 0/1 | 5'h00 | 00 | $\pm$0 |
| 最小非规格数(Min Subnormal) | 0/1 | 5'h00 | 01 | $\pm$2^{-2} x 2^{-14} |
| 最大非规格数(Max Subnormal) | 0/1 | 5'h00 | 11 | $\pm$(2^{-1} + 2^{-2}) x 2^{-14} |
| 最小规格数(Min Normal) | 0/1 | 5'h01 | 00 | $\pm$2^{-14} |
| 最大规格数(Max Normal) | 0/1 | 5'h1E | 11 | $\pm$(1 + 2^{-1} + 2^{-2}) x 2^15 |
| 无穷值(Infinities) | 0/1 | 5'h1F | 00 | $\pm$ $\infty$ |
| 非数(NaN) | 0/1 | 5'h1F | !=0 | Not a Number |
注意¶
当数值超出范围时会发生溢出(Overflow)或下溢(Underflow)