IEEE 754

  • IEEE 754 是国际上通用的 浮点数表示标准,定义了计算机中如何表示和运算带小数的实数。它被广泛用于 CPU、GPU、FPGA 等各种芯片中。

  • WiKipedia: IEEE 754

  • IEEE 754 是计算机里“实数”的通用表示法,让浮点数可以被可靠、高效、跨平台地处理。

工具

📦 IEEE 754 定义的内容包括:

✅ 1. 浮点数格式

常见有几种格式(以二进制为主):

名称

总位数

指数位

尾数位

精度

Half

16

5

10

~3 位小数

Single

32

8

23

~7 位小数

Double

64

11

52

~15 位小数

FP8(扩展)

8

4/5

3/2

低精度,用于 AI

✅ 2. 浮点数结构(三部分)

  • 浮点数由三部分组成:

[ 符号位 ][ 指数(加了 bias) ][ 尾数(有效数字) ]
  • 非 subnormal 公式

值 = (−1)^sign × (1 + fraction) × 2^(exponent - bias)
  • sign:0 表示正,1 表示负

  • exponent:偏移编码的指数(存的时候加了 bias)

  • fraction:尾数的小数部分(没有包括前导 1,默认是 1.xxx,非subnormal则是0.xxx)

  • bias:2^(exponent长度-1)-1

  • 示例

    • 0 00001 0000000010

    • 参数:

      • sign = 0

      • 16位半精度的exponent长度: 5

      • bais: 2^(exponent长度-1)-1 = 2^4-1=15

      • exponent = 00001 = 1

      • fraction = 0000000010 = 0.0000000010

    • 计算过程

      • = (−1)^sign × (1 + fraction) × 2^(exponent - bias)

      • = (-1)^0 × (1 + 0.0000000010) × 2^(1 - 15)

      • = 2^(-14)× 1.0000000010

      • ≈ 6.1*10^(−5)

✅ 3. 特殊值支持

  • subnormal的公式

值 = (−1)^sign × (0 + fraction) × 2^(1 − bias)
  • IEEE 754 支持一些特殊情况:

    • ±0:所有位为 0

    • ±∞:指数全 1,尾数为 0

    • NaN(不是一个数):指数全 1,尾数非 0

    • 次正规数(subnormal):指数为全 0,尾数非 0,用于表示极小的非零数

  • 次正规数(subnormal)

    • 是指那些 非常接近于 0 的正数或负数,它们太小了,小到 已经无法用标准的规格化浮点表示法来表达。

    • 只能表示很小很小的数,但不能表示 0

    • 示例: 0 00000 0000000001 = 2^(-10)*2^(1-15) 5.96*10^−8

      • 参数

        • 16位半精度的exponent长度: 5

        • bais: 2^(exponent长度-1)-1 = 2^4-1=15

        • fraction = 0.0000000001

        • sign: 0

      • 计算过程:

        • = (−1)^sign × (0 + fraction) × 2^(1 − bias)

        • = (−1)^0 × (0 + 0.0000000001) × 2^(1 − 15)

        • = 2^(-10)*2^(1-15)

        • ≈ 5.96*10^(−8)

📚 衍生标准(对深度学习重要)

格式

来自 IEEE754 吗

用途

FP16

GPU 加速计算

bfloat16

否(Google 扩展)

保留动态范围,精度差

FP8(E4M3/E5M2)

否(非官方,但参照 IEEE)

AI 推理/训练,节省显存

FP4

  • FP4(4-bit Floating Point)是一种仅使用4位比特表示的浮点数格式,主要用于深度学习模型的极限量化(extreme quantization),以进一步压缩模型大小、提升推理速度和节省内存带宽。

  • 由于其极低的位宽,FP4 通常用于在模型权重和激活值上的量化,尤其适用于边缘设备和资源受限环境。

FP4 的基本结构

  • 虽然 FP4 并没有一个严格统一的标准(不像 FP16、FP32 有 IEEE-754 标准)

  • 但常见的变体通常有以下结构形式:

名称

位数

格式说明

E3M1

1符号位 + 3指数位 + 1尾数位

类似于小型 IEEE 格式

E2M2

1符号位 + 2指数位 + 2尾数位

更高尾数精度,较低动态范围

自定义FP4

一些架构使用非IEEE方式编码,牺牲精度保留分布特征

  • 举个例子(E2M2):

  • S E E M M(共5位,某些情况下会padding为8位对齐)

  • 示例:0 10 11 → 正数,指数为2,尾数为0.75