INT4 和 FP4 的数学表示范围

核心区别:

INT4:本身只表示整数,真实范围靠 scale 决定
FP4:本身带指数,裸值就有非均匀动态范围,也仍然要配合 scale

1. INT4 的裸编码范围

常见 INT4 有三种:

类型 4 bit 原始整数范围 说明
unsigned INT4 / UINT4 [0, 15] 无符号
signed INT4 / two’s complement [-8, 7] 有符号二补码
symmetric INT4 量化常用 [-7, 7] 为了正负对称,常不用 -8

在大模型权重量化里,常用的是:

q ∈ [-7, 7] 或 [-8, 7]

真实数值不是 q 本身,而是:

x ≈ scale × q

或者带 zero point:

x ≈ scale × (q - zero_point)

例如:

scale = 0.1
signed INT4 [-8, 7] → 真实范围 [-0.8, 0.7]

如果:

scale = 2
signed INT4 [-8, 7] → 真实范围 [-16, 14]

所以:

INT4 的真实动态范围不是固定的,是由 scale 决定的。


2. FP4 / NVFP4 的裸编码范围

现在大模型里常说的 FP4,尤其 NVIDIA Blackwell 的 NVFP4,通常是 E2M1

1 bit sign
2 bit exponent
1 bit mantissa

也就是:

S E E M

FP4 E2M1 的裸值集合是:

{+0, +0.5, +1, +1.5, +2, +3, +4, +6,
 -0, -0.5, -1, -1.5, -2, -3, -4, -6}

所以裸范围是:

[-6, 6]

注意:这不是连续范围。它只能表示这些离散点。


3. INT4 和 FP4 的关键差别

格式 裸值范围 裸值分布 是否有指数 真实范围由什么决定
INT4 signed [-8, 7] 等间距整数 scale
INT4 symmetric [-7, 7] 等间距整数 scale
FP4 E2M1 / NVFP4 [-6, 6] 非均匀:越大间隔越大 FP4 值 × block scale × global scale

INT4 是线性的:

-7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7

FP4 是非线性的:

-6, -4, -3, -2, -1.5, -1, -0.5, -0,
+0, +0.5, +1, +1.5, +2, +3, +4, +6

也就是说:

INT4 的刻度是均匀的;FP4 的刻度是不均匀的。


4. 为什么 FP4 比 INT4 更适合某些大模型路径?

神经网络里的数值分布通常不是均匀的:

大多数值接近 0
少数值比较大

INT4 是等间距:

0, 1, 2, 3, 4, 5, 6, 7

FP4 E2M1 是非等间距:

0, 0.5, 1, 1.5, 2, 3, 4, 6

FP4 给小值保留了一定相对精度,同时还能用指数覆盖更大的幅值。

再叠加 block scale 后,它可以更灵活地适配每个 block 的动态范围。

NVFP4 的真实值可以理解成:

x = x_e2m1 × s_block × s_global

其中:

x_e2m1  :4-bit E2M1 值
s_block :局部 block scale
s_global:整个 tensor 的 global scale

5. 最简洁结论

INT4 signed 裸范围:[-8, 7]
INT4 symmetric 常用范围:[-7, 7]
UINT4 裸范围:[0, 15]

FP4 E2M1 / NVFP4 裸范围:[-6, 6]
可表示值:
0, ±0.5, ±1, ±1.5, ±2, ±3, ±4, ±6

真正用于大模型时:

INT4 真实值 ≈ INT4 整数 × scale

FP4 / NVFP4 真实值 ≈ FP4_E2M1 值 × block_scale × global_scale

一句话:

INT4 是等间距整数格点;FP4 是带指数的非均匀浮点格点。A800 有 INT4 Tensor Core 路线,但没有 Blackwell 那种 NVFP4 / FP4 原生 Tensor Core 路线。

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐