常见精度 — 每个数值占多少 Bytes?
■
S
= 符号位 | ■
E
= 指数位 (决定数值范围) | ■
M
= 尾数位 (决定精度)
FP32
4 B
训练精度,推理基本不用
1-8-23
S
E (8)
M (23)
FP16 / BF16
2 B
推理默认,公式中 B=2
1-5-10
S
E (5)
M (10)
FP8 (E4M3)
1 B
H100/H200 原生支持
1-4-3
S
E (4)
M (3)
INT8
1 B
整数量化,需 calibration
8-bit integer
INT (8)
INT4
0.5 B
极致量化
4-bit integer
INT (4)
浮点数
value = (
−1
)
S
× 2
(E−bias)
× 1.
M
1.M 的 "1" 是隐含前导位 (隐藏位),实际有效数字 = 1 + M 的二进制小数部分
整数
value = (int_val − zero_point) × scale
精度对 KV Cache 的影响 (Qwen2.5-7B, T=2048, L=28, H_kv=4, D=128)
精度
Bytes/元素
单 token KV
T=2048 总 KV
vs FP16 节省
HW 支持
FP16 / BF16
2
56 KiB
112 MiB
基准
全系列 GPU
FP8 (E4M3)
1
28 KiB
56 MiB
↓ 50%
H100/H200+
INT8
1
28 KiB
56 MiB
↓ 50%
全系列 GPU
INT4
0.5
14 KiB
28 MiB
↓ 75%
B200+
KV Cache 存的是 Attention 的中间结果,对精度不敏感。FP8 几乎无损 (< 0.1% 困惑度上升),INT4 per-channel 也在 1% 以内。
所以 B 是最容易优化的参数 — 改一行配置 (kv-cache-dtype: fp8),显存直接减半。