AI 数值格式全景解析:FP64 / FP32 / TF32 / BF16 / FP16 / FP8 / INT8 / INT4 / NVFP4

核心命题:计算机用多少 bit 表示数字、如何表示数字,本质是在精度、数值范围、显存占用、计算速度之间做取舍。
对推理服务而言,这道题最终会翻译成一句话:在给定硬件上,用最低的成本(显存 + 算力 + 时延)把最多的 token 送出去。


一、底层逻辑:用 π 理解精度

表示方式 精细程度 成本
3.141592653589793 极高 极高
3.1415926
3.14 够用 中等
3 粗糙 极低

核心规律:位数越多越接近真实值,但越费显存、越慢;位数越少越省资源,但误差越大。

模型精度的一句话总结:在准确度、显存、速度之间做取舍。


二、浮点数结构:符号 + 指数 + 尾数

浮点数 = 二进制科学计数法:数值 ≈ 符号 × 尾数 × 2^指数

1
2
3
4
┌─────────────────────────────────────┐
│ [符号位 S] │ [指数位 E] │ [尾数位 M] │
1 bit │ E bit │ M bit │
└─────────────────────────────────────┘
字段 作用 口诀
符号位 S 决定正负(0正1负)
指数位 E 决定范围(能表示多大/多小的数) E越多,范围越大
尾数位 M 决定精度(小数细节有多细) M越多,精度越高

⚠️ 范围大 ≠ 精度高;精度高 ≠ 范围大。这是后面所有”格式取舍”的根。


三、各格式位宽分配一览表

格式 总bit 结构(S+E+M) 特点 典型场景
FP64 64 1+11+52 超高精度,超贵 科学计算、仿真、金融
FP32 32 1+8+23 传统深度学习标准精度 早期训练基准 / 混合精度兜底
TF32 19(计算)/32(存储) 1+8+10 FP32 的快速计算模式,省算力不省显存 NVIDIA Tensor Core 加速
BF16 16 1+8+7 范围≈FP32,精度较粗,训练稳 大模型训练主力
FP16 16 1+5+10 精度较细,范围较小,易溢出 早期半精度训练
FP8 E4M3 8 1+4+3 偏精度 权重、激活值(推理常用)
FP8 E5M2 8 1+5+2 偏范围 梯度等变化大的值
NVFP4 4 1+2+1 4bit 浮点,需两级缩放 Blackwell 架构超大规模推理
INT8 8 整数编码 256档位,靠 scale 表示小数 成熟推理量化
INT4 4 整数编码 16档位,靠 scale 表示小数 极致省显存权重量化

四、各格式详解

4.1 FP64

  • 结构:1+11+52
  • 特点:双精度浮点,精度最高、范围最大
  • 代价:显存和计算成本极高
  • 用途:科学计算、数值仿真、金融建模;大模型基本不用

4.2 FP32

  • 结构:1+8+23
  • 特点:传统深度学习标准单精度
  • 代价:显存和算力开销大
  • 用途:早期训练基准;现多作为混合精度中的高精度兜底(master weight / 优化器状态常驻 FP32)

4.3 TF32

  • 存储:FP32(32bit)
  • 计算:1+8+10(仅19bit参与运算)
  • 特点:保留 FP32 的 8 位指数→范围不变;尾数砍至 10 位→精度降低
  • 本质FP32 的快速计算模式,省算力但不省显存
  • 用途:NVIDIA Tensor Core 上加速矩阵乘法(训练/推理都可用,但只影响计算不省存储)

4.4 BF16 vs FP16(16bit 双雄)

对比项 BF16 FP16
结构 1+8+7 1+5+10
指数位 8位(≈FP32) 5位
尾数位 7位 10位
范围 大,不易溢出 小,易 overflow/underflow
精度 较粗 较细
训练表现 更稳定 易数值爆炸 ❌
结论 大模型训练首选 逐渐被替代

形象比喻

  • FP16 = 细刻度但短尺子 → 刻得细但量不了太大的数
  • BF16 = 粗刻度但长尺子 → 刻度粗但覆盖范围大 → 训练更稳

4.5 FP8(两种规格)

规格 结构 偏向 适合场景
E4M3 1+4+3 偏精度 权重、激活值(推理默认)
E5M2 1+5+2 偏范围 梯度等变化幅度大的值
  • 特点:省显存、省带宽、吞吐高(Hopper/Ada 上 FP8 Tensor Core 算力约为 FP16 的 2 倍)
  • 依赖:需要 scale、校准、框架和硬件支持
  • 用法:H100+ 硬件上用于推理主力;配合 W8A8(权重+激活同量化到 FP8,高精度累加)保稳定

4.6 NVFP4(Blackwell 架构专属,Microscaling 格式)

  • 结构:1+2+1(4bit 浮点)
  • 缩放机制(两级缩放,这是它能保精度的关键)
    • 每 16 个值共享 1 个 FP8 E4M3 scale(block scale)
    • 每个 tensor 额外配 1 个 FP32 scale(global scale)
  • 显存开销:4bit 本体 + 分摊 0.5bit scale ≈ 4.5bit/值 ≈ 0.5625 Byte/值
  • 性能表现(NVIDIA 实测)
    • 相比 FP8 精度损失 < 1%(见第十节 DeepSeek-R1 实测表)
    • 相比 FP16 显存减少约 3.5 倍
    • 相比 FP8 显存减少约 1.8 倍
  • 用途:超大规模模型推理,追求极致显存/带宽/吞吐效率(B200/GB200/GB300)

NVFP4 之所以比”裸 INT4”更稳:INT4 只是 16 个均匀档位,遇到权重动态范围大就失真;NVFP4 用两级 scale 把动态范围拉开,精度接近 FP8。


4.7 INT8 / INT4(整数量化)

整数怎么表示小数?→ 靠 scale

1
真实值 ≈ 整数值 × scale
格式 表示范围(有符号) 档位数量 特点
INT8 -128 ~ 127 256 量化成熟,推理常见
INT4 -8 ~ 7 16 极省显存,但易失真

量化核心:不是整数神奇地能表示小数,而是「整数 + scale」一起近似表示小数。

scale 的粒度决定精度:per-tensor(整张量一个 scale,快但粗)→ per-channel / per-group(每通道/每组一个 scale,更准但稍慢)→ per-token(推理时对激活逐 token 动态量化,最常用)。粒度越细,低比特越稳。


五、显存占用直观对比(700亿参数模型,仅权重)

格式 单参数字节数 总显存占用
FP16 / BF16 2 Byte ~140 GB
INT8 1 Byte ~70 GB
INT4 0.5 Byte ~35 GB
NVFP4 ~0.5625 Byte ~39 GB

计算公式模型权重显存 ≈ 参数量 × 每个参数占用字节数

⚠️ 这只是权重。推理真正吃显存的是另一座大山——KV Cache(见第十节)。


六、范围 vs 精度:取舍维度

用两个维度理解所有格式的定位:

  • 横轴(尾数精度):越往右,小数越精细
  • 纵轴(指数范围):越往上,能表示的数值越大/越小
格式 范围 精度 成本
FP64 ★★★★★ ★★★★★ 极高
FP32 ★★★★☆ ★★★★☆
BF16 ★★★★☆ ★★☆☆☆ 中等
FP16 ★★☆☆☆ ★★★★☆ 中等
FP8 ★★~★★★☆ ★★☆☆☆
NVFP4 ★★☆☆☆ ★☆☆☆☆ 极低
INT8 依赖 scale 依赖 scale
INT4 依赖 scale 依赖 scale 极低

七、训练 vs 推理:选型误区纠正

❌ 常见误解

  • “训练都用 BF16” → 错(BF16 是计算格式,master weight / 优化器状态仍用 FP32)
  • “推理都用 FP8” → 错(取决于硬件、模型大小、精度容忍度)

✅ 实际情况

训练:更看重数值稳定

  • 主力计算:BF16(范围大,不易溢出)
  • 兜底:关键累加、归一化、优化器状态、master weight 仍保留 FP32
  • 本质:混合精度训练,不是全程单一精度

推理:更看重速度、显存、成本

需求 推荐格式
追求稳定 FP16 / BF16
成熟量化方案 INT8
极致省显存 INT4(AWQ / GGUF)
新硬件高吞吐 FP8 / NVFP4

八、一句话速查表

格式 一句话理解
FP64 最稳最贵,科学计算用
FP32 传统深度学习标准精度,常作 FP32 兜底
TF32 NVIDIA 上 FP32 的快速计算模式,省算力不省显存
BF16 大模型训练常用,范围大更稳
FP16 半精度,范围小但小数更细
FP8 Hopper+ 推理主力,W8A8 + FP8 KV 组合拳
INT8 成熟推理量化方案
INT4 极致省显存的大模型量化
NVFP4 Blackwell 架构 4-bit 浮点,极致压缩且精度接近 FP8

九、终极结论

没有一种格式永远最好。

  • 训练更看重数值稳定
  • 推理更看重速度、显存和成本
  • 真正落地时,取决于硬件能力、模型特性、业务目标三者的匹配

四句口诀

  1. 符号位决定正负
  2. 指数位决定范围
  3. 尾数位决定精度
  4. scale决定低 bit 量化怎么还原小数

十、实战篇:数值格式如何决定推理服务的成本与性能(干货)

这一节是给”自己复习 + 准备模型部署/推理服务”用的。结论先行:在推理里,权重只占一次显存,KV Cache 才是随上下文和并发线性膨胀的真瓶颈;低精度格式的价值,一半在”算得快”,一半在”装得多”。

10.1 推理显存的两座大山:权重(静态)+ KV Cache(动态)

  • 权重:加载一次,常驻显存,大小由参数量和格式固定(见第五节)。
  • KV Cache:每生成一个 token 都要缓存 Key/Value,随 batch_size × 序列长度 线性增长,长上下文 / 高并发时往往超过权重本身

KV Cache 显存估算公式:

1
KV Cache 显存 ≈ batch_size × seq_len × num_layers × 2 × (num_kv_heads × head_dim) × precision_bytes

真实量级(Llama-3-70B,GQA,8K 上下文,batch=32,FP16):

  • 每 token 缓存 ≈ 2.5 MB
  • 单请求 8K 上下文 ≈ 20 GB
  • batch=32 总 KV Cache ≈ 640 GB(已经远超 70B 权重本身的 ~140GB)

结论:优化推理成本,不能只盯着权重量化,KV Cache 量化 + 分页管理才是高并发/长上下文的命脉。

10.2 KV Cache 量化:把”动态显存”拦腰砍

精度 显存节省 质量影响 适用场景
FP16 基准 默认,质量敏感
FP8 ~50% 极小 生产推理主力(Hopper/Blackwell 原生支持)
INT8 ~50% 成本敏感
INT4 ~75% 中等(实验性) 极端内存受限
  • PagedAttention(vLLM)把 KV 碎片从 60–80% 压到 <4%,直接带来 2–4× 吞吐——这是推理框架层最大的单点优化,与数值格式正交但经常一起用。
  • FP8 KV Cache 在 vLLM:--kv-cache-dtype fp8(或 fp8_e4m3 / fp8_e5m2)。注意:Ampere(如 3090)不支持 FP8,Hopper/Ada(H100/4090)和 AMD MI300 才支持;且要确认 attention 后端走的是快速 kernel,否则可能反而变慢。

10.3 推理的两段式:Prefill(算力密集)vs Decode(带宽密集)

  • Prefill:处理整段 prompt,计算密集(compute-bound),一次算出所有 prompt token 的 KV。
  • Decode:逐 token 生成,每步只算一个 token,但每步都要读全部 KV Cache,受显存带宽限制(memory-bound)

低精度对两者的收益不同:

  • FP8/NVFP4 的算力红利主要加速 GEMM(prefill 和 decode 里的矩阵乘)。
  • KV Cache 量化对 decode 帮助最大——因为它直接减小每步要读的”带宽账单”。
  • 因此生产常用”两层 FP8”组合拳(以 vLLM + H100 为例):
    1. W8A8:权重和激活都量化到 FP8,在 Tensor Core 做 GEMM,高精度累加保稳定;
    2. FP8 KV Cache:写入 PagedAttention 前把 K/V 压成 FP8,抬升并发上限。

实测(H100,Llama-3-8B,vLLM):

  • 吞吐:BF16 ≈ 7.4k tok/s → FP8 ≈ 11.9k tok/s(+60%,约 1.6×
  • 峰值并发:BF16 ≈ 170 → FP8 KV ≈ 1033(约 5×),基本消除常规负载 OOM
  • 建议单卡可持续服务基线:约 60 QPS(该数据分布下),再加压只会增加排队

10.4 硬件能力对照表(决定你能用哪种格式)

GPU 架构 代表型号 支持的低精度 备注
Ampere A100 / 3090 FP16 / BF16 / TF32 / INT8 无原生 FP8
Hopper H100 / H200 FP8(E4M3/E5M2) / FP16 / BF16 / INT8 Transformer Engine,FP8 算力≈2× FP16
Ada Lovelace L4 / L40S / 4090 FP8 / INT8 / FP16 消费/推理卡也有 FP8
Blackwell B200 / GB200 NVFP4(原生4-bit TC) / FP8 / FP6 / INT8 NVFP4 推理主力
Blackwell Ultra GB300 同 Blackwell,NVFP4 算力 +1.5×,注意力 +2×,288GB HBM3e MLPerf v5.1 记录保持者
AMD CDNA3/4 MI300X / MI325X / MI355X FP8 / FP4(MXFP4) ROCm + AITER 路径

选型第一原则:先看硬件支持什么。A100 就别想 FP8;B200 才值得上 NVFP4。

10.5 量化工具箱(权重侧)

方法 类型 典型比特 特点
GPTQ PTQ(训练后量化) INT4 经典 4-bit 权重量化
AWQ PTQ(激活感知) INT4 保住”显著权重”,4-bit 质量更好
GGUF / k-quants PTQ INT4~INT8 混合 llama.cpp / Ollama,CPU+GPU 通吃
SmoothQuant PTQ W8A8 把激活离群值迁到权重,使 FP8 激活更稳
TensorRT Model Optimizer PTQ / QAT FP8 / FP4(NVFP4) Blackwell 官方量化路径,QAT 可回精度
FP8 预量化模型 FP8 直接拉 HuggingFace 上的 -fp8 权重,免在线量化开销

术语:PTQ(训练后量化,快、零训练)vs QAT(量化感知训练,用少量数据微调回精度,FP4 部署常用)。

10.6 主流推理框架支持矩阵

框架 FP8 权重 FP4(NVFP4) FP8 KV Cache 亮点
vLLM ✅(B200) PagedAttention、continuous batching、speculative decoding
TensorRT-LLM ✅(原生) ✅(原生) Blackwell 深度优化、disaggregated serving、in-flight batching
SGLang ✅(modelopt_fp4) RadixAttention 前缀缓存,分支前缀也能复用
Ollama / llama.cpp GGUF(INT4/8) 实验 实验 本地/边缘、CPU 友好
LMDeploy / TGI 部分 国产/生产常用

10.7 NVFP4 生产实测(NVIDIA,最有说服力的一组数)

精度损失极小(PTQ,对比 FP8 基线):

模型 指标 FP8 NVFP4(FP4)
DeepSeek-R1 (671B MoE) MMLU 90.8% 90.7%
GSM8K 96.3% 96.1%
AIME 2024 80.0% 80.0%
GPQA Diamond 69.7% 69.2%
MATH-500 95.4% 94.2%
Llama-3.1-405B MMLU 86.5% 86.1%
Llama-3.3-70B MMLU 82.5% 80.5%

小模型(70B)FP4 损失略大,说明模型越小、对低精度越敏感;大模型/MoE 几乎无损。若精度不达标,上 QAT 即可回血。

吞吐与成本

  • B200(FP4 GEMM + FP8 KV)对比 H200(FP8 GEMM + FP8 KV):在 Llama-3.1-70B / 405B / DeepSeek-R1 上推理吞吐超 3×
  • GB200 NVL72 对比 Hopper:MLPerf v5.1 上单 GPU 吞吐约 5×
  • 真实降本:某 MoE 模型 token 成本 Hopper 20¢ → Blackwell 10¢ → NVFP4 5¢(共 4×)

10.8 落地选型清单(拿着照做)

  1. 看硬件:A100→BF16/FP16;H100/H200→FP8;B200/GB200→NVFP4(配合 FP8 KV)。
  2. 看权重放不放得下:放不下→INT4(AWQ/GGUF) 或 NVFP4;能放下但有富余→FP8。
  3. 看上下文 & 并发:KV Cache 成瓶颈→开 --kv-cache-dtype fp8(或 INT8/INT4);长上下文优先 PagedAttention + 前缀缓存。
  4. 看精度容忍度:质量敏感→BF16/FP16 或 FP8;能接受 <1% 损失→NVFP4;小模型慎用 FP4。
  5. 看成本目标:追求最低 token 成本→B200 + NVFP4(实测 ~4× 降本);边缘/CPU→GGUF INT4。
  6. 通用默认:Hopper 上推理直接 --quantization fp8 --kv-cache-dtype fp8,优先用预量化好的 -fp8 权重,省去在线量化开销与不确定性。

参考阅读