大语言模型中的低精度数据格式

如果用一句话概括过去三年大模型训练与推理的硬件趋势 — 训练在从 BF16 走向 FP8,推理在从 FP8 走向 FP4。每一次精度下移一档,同样面积的硅片就能多塞一倍的乘加(MAC)单元,训练吞吐与推理 token/s 直接翻倍。这条主线背后是一整张数据格式的谱系:FP32 / TF32 / FP16 / BF16 / FP8(两个变体)/ FP6(两个变体)/ FP4(MX 与 NV 两个版本)/ INT8 / INT4。

很多人对低精度的第一反应是「省显存」。这只对了一半。省显存当然重要 — BF16 权重比 FP32 小一半,INT4 权重比 FP16 小四倍,长上下文推理时 KV cache 甚至比权重还占地方。但真正让 NVIDIA、AMD、Google 集体扑向低精度的,是四条红利同时兑现:

  • 显存:位宽减半,同一张卡能装下更大的模型或更长的上下文。
  • 带宽:权重和激活从显存搬到计算单元的字节数减半,而 LLM 推理的解码阶段几乎完全被内存带宽卡住。
  • 算力:每一代 Tensor Core 在更低精度下的峰值吞吐大致翻倍 — 位宽减半,同代硅片上的 MAC 单元数量翻倍。
  • 成本:以上三者叠加,直接压低每 token 的训练与推理美元成本。

其中算力这一条最容易被低估。把几代旗舰卡的峰值放在一起看,规律一目了然[13][14]

架构旗舰卡主精度算力最低精度算力
Ampere (2020)A100312 TF (FP16)624 TOPS (INT8)
Hopper (2022)H100990 TF (FP16)1979 TF (FP8)
Blackwell (2024)B2002250 TF (FP16)9000 TF (FP4)

位宽每减半,算力大致翻倍。所以低精度不只是「同样模型更省显存」,更是「同样硅片能跑得更快」— 这才是这条路走得下去的根本原因。

但「精度下移」从来不是「整个模型换一种格式」这么简单。同一个 Transformer block 里,矩阵乘法可能跑 FP8、Softmax 在 FP32 下做、KV cache 又压到 INT8 — 精度是按运算类型混用的,不是按层混用

Transformer block 内部的精度分配 — 左列训练、右列推理。训练侧几乎是「两层结构」:所有 GEMM 用 BF16 / FP8 输入但在 FP32 下累加,对数值敏感的 norm / softmax / residual 保持 FP32,再加上必须保留的 FP32 master weights 与优化器状态。推理侧走向另一个极端:权重压到 INT4 / FP4,激活仍是 BF16,KV cache 单独压到 FP8 / INT8。

这篇文章按四步把这张谱系图铺开:先补齐浮点数与整数到底怎么在位里表示,再逐一拆解每种格式,然后用 Qwen 最新一代模型看真实模型怎么选精度,最后是硬件支持。全文只覆盖有硬件原生 Tensor Core / 矩阵引擎支持的格式,纯软件模拟或只停留在论文里的格式(INT2、二值化、posit 等)不谈。

数值表示

要理解为什么 BF16 适合训练、FP4 只能靠外挂 scale 才能用,必须先回到「数值在计算机里到底怎么存」这一层。低精度格式的所有取舍,本质上都是在一个固定的位预算里,重新切分「范围」和「精度」这两块蛋糕。

浮点数

任何一个 IEEE 754 风格的浮点数都由三段位组成 — 符号(sign)、指数(exponent)、尾数(mantissa)[1]

x=(1)S×(1.M)2×2Ebiasx = (-1)^{S} \times (1.M)_2 \times 2^{\,E - \text{bias}}
  • S(符号位):1 位,决定正负。
  • E(指数位):共 ee 位,存的是「偏置后」的指数。真实指数等于 EbiasE - \text{bias},其中偏置 bias=2e11\text{bias} = 2^{e-1} - 1。用偏置而不是补码,是为了让浮点数按位比较大小时和整数比较结果一致。
  • M(尾数位):共 mm 位。规格化(normal)数在小数点前隐含一个「1.」,所以尾数实际有 m+1m+1 位有效精度,但只花 mm 位存储 — 这一位是白送的。

几种特殊情况值得单独点出:

  • 规格化数(normalized)0<E<2e10 < E < 2^e - 1,隐含前导 1,是绝大多数数值的表示方式。
  • 非规格化数(subnormal / denormal)E=0E = 0 时,前导变成 0,数值为 (0.M)2×21bias(0.M)_2 \times 2^{\,1-\text{bias}}。它填补了 0 附近的空隙,让下溢是「渐进」的而不是「断崖式」跳到 0。
  • 特殊值E=2e1E = 2^e - 1(全 1)时表示 ±\pm\infty 或 NaN。

关键结论:一个浮点格式的全部性格,由「总位数 + ee + mm」三个数唯一决定。其中

  • 动态范围由 ee 决定ee 越大,能表示的最大与最小数相差越多个数量级。
  • 精度由 mm 决定。浮点数是「等比」而非「等距」分布的 — 相对精度大致恒定为机器精度 2m2^{-m},跟数值大小无关。mm 每多一位,相对误差减半。

在总位宽固定的前提下,eemm 是此消彼长的:给指数多一位,尾数就少一位。「重范围」还是「重精度」的取舍,是所有低精度浮点格式设计的第一性问题 — 后面会看到,BF16 和 FP16 同样 16 位,只是把这一位分给了不同的地方。

整数

整数格式可以看成「全部是尾数、零位指数」的特例 — 数值在一段固定区间内均匀等距分布,没有浮点的等比刻度。

  • 无符号(unsigned) nn 位整数表示 02n10 \sim 2^n - 1有符号(signed) 用补码表示 2n12n11-2^{n-1} \sim 2^{n-1}-1
  • 定点数(fixed-point) 就是「整数 + 一个约定好的固定小数点位置」,等价于整数乘一个常数缩放。

整数本身没有小数、也没有跨数量级的范围,要拿它表示神经网络里那些又小又跨度大的权重,必须外挂一个浮点 scale factor 把整数区间「拉伸」到目标数值范围。这就是量化(quantization)的核心公式:

xfps(qz)x_{\text{fp}} \approx s \cdot (q - z)

其中 qq 是存下来的整数,ss 是 FP16 / FP32 的缩放因子,zz 是零点(zero point):

  • 对称量化(symmetric)z=0z = 0,整数区间关于 0 对称。实现简单,适合分布大致对称的权重。
  • 非对称量化(asymmetric)z0z \neq 0,可以把区间整体平移去贴合单边分布(比如 ReLU 之后全为正的激活)。

scale 的粒度决定了量化质量:一个 scale 管整个张量(per-tensor)最省、管一列/一通道(per-channel)更准、每 32 / 64 / 128 个数一组(per-group)最准但 metadata 开销最大。位宽越低,越要靠更细的粒度兜住误差 — 这条规律在浮点侧同样成立,只是换了个名字叫「微缩放」。

常见的数据精度

先把几种代表性浮点格式按同尺度铺开,每一格就是一个比特位。指数位宽决定动态范围、尾数位宽决定精度,这两个数轴的取舍是所有格式设计的核心:

六种代表性浮点格式的位域分解(每格 = 1 bit):符号 S、指数 E(决定动态范围)、尾数 M(决定精度)。BF16 跟 FP32 共享 8 位指数,动态范围相同但精度只剩一半;FP8 的两个变体是同位宽下范围与精度的两种取舍;FP4(E2M1) 一共只有 4 位,必须以微缩格式形式使用。

下面逐格式拆开。约定用 ExMy 记指数 xx 位、尾数 yy 位。

FP32

  • 位宽:1 + 8 + 23 = 32 位(E8M23)。
  • 范围与精度:bias = 127,动态范围约 1.2×10383.4×10381.2\times10^{-38} \sim 3.4\times10^{38},约 7 位十进制有效数字。
  • 用途:所有现代 CPU / GPU 的基准格式,也是低精度训练里累加器(accumulator)、master weights、优化器状态的默认精度。
  • 取舍:精度和范围都够用,但每个数占 4 字节、算得慢。在 LLM 里它主要退居幕后,负责「兜底」而不是「主算」。

TF32

  • 位宽:1 + 8 + 10 = 19 位有效宽度,存在 32 位寄存器里(E8M10)。
  • 范围与精度:指数位和 FP32 完全一样(8 位),尾数砍到和 FP16 一样(10 位)。动态范围等同 FP32,精度只剩约 3 位十进制。
  • 用途:NVIDIA 在 A100 引入的工程巧思,作为 FP32 GEMM 的默认替代 — 因为动态范围和 FP32 相同,训练时不改一行代码、不需要 loss scaling 就能加速。
  • 取舍:名字里带「32」但其实只有 19 位。牺牲精度换速度,是从 FP32 迈向低精度的第一个台阶。

FP16

  • 位宽:1 + 5 + 10 = 16 位(E5M10),IEEE 754 半精度。
  • 范围与精度:bias = 15,动态范围约 6×105655046\times10^{-5} \sim 65504,约 3–4 位十进制。
  • 用途:早期混合精度训练与大量推理场景。
  • 取舍:尾数多、精度不错,但动态范围对训练太窄 — 梯度一旦小到 10710^{-7} 量级就下溢成零,必须配合 loss scaling(把 loss 放大到不下溢的量级再反向传播)。这个痛点直接催生了 BF16。

BF16

  • 位宽:1 + 8 + 7 = 16 位(E8M7),Google Brain 在 TPU v2 时代提出。
  • 范围与精度:保留 FP32 的全部 8 位指数,尾数砍到 7 位。动态范围几乎等同 FP32,精度约 2–3 位十进制(比 FP16 还低)。
  • 用途:2020 年之后大模型训练的事实标准。
  • 取舍:动态范围和 FP32 相同 → 训练不再需要 loss scaling,几乎可以无痛替换 FP32;FP32 ↔ BF16 只是截断/补零 → 硬件转换代价几乎为零。代价是精度低,但大模型训练对动态范围远比对精度敏感 — 这条经验是后面 FP8 设计的直接原型。

FP8(E4M3 / E5M2)

FP8 由 NVIDIA / Arm / Intel 在 2022 年联合提出[2]同时定义两个变体,因为激活和梯度的动态范围差很多:

变体位结构最大值最小 normal 数精度分工
E4M31+4+3±448262^{-6}较高前向:权重 / 激活
E5M21+5+2±573442142^{-14}较低反向:梯度
  • E4M3 重精度、轻范围,适合 LayerNorm 之后集中在小范围的激活。它不严格遵循 IEEE 754:没有 inf,把本该表示 inf 的编码挪来扩展数值范围(最大值 448 而非 240)。
  • E5M2 重范围、轻精度,用来兜住可能跨好几个数量级的梯度。它严格遵循 IEEE 754,有 inf 和 NaN。
  • scaling:单看 8 位完全覆盖不了训练数值范围,所以 FP8 几乎总要搭一个 per-tensor 的 FP32 scale(H100 的 Transformer Engine 自动维护[15]),实际数值是 FP8_value×scale\text{FP8\_value} \times \text{scale}

FP6

  • 位宽:6 位,OCP 微缩格式规范的一部分[4],有两个变体:E3M2(范围大、精度低)和 E2M3(范围小、精度高)。
  • 用途:介于 FP8 和 FP4 之间的折中档,主要用于推理。在精度掉太多不能接受、但又想比 FP8 更省的场景里补位。
  • 取舍:和 FP4 一样属于微缩格式家族,单个数表达能力弱,必须按块共享 scale 才能用。硬件支持从 Blackwell 才开始原生。

FP4(MXFP4 / NVFP4)

FP4 只有 4 位(E2M1),能表示的不同数值只有 16 个(含正负零)。单看完全不可用 — 它能跑起来全靠微缩放(microscaling):把一组数打包,共享一个外层 scale。Tensor Core 上有两个版本:

版本元素位结构块大小块 scale外层 scale
MXFP4(OCP)E2M1 (4 bit)32 元素E8M0(8 bit,纯指数)
NVFP4(NVIDIA)E2M1 (4 bit)16 元素FP8 E4M3(8 bit)FP32 per-tensor
  • MXFP4 每 32 个数共享一个 E8M0 的纯指数 scale(2E2^E,无符号无尾数),块内数值 = FP4_value×2E\text{FP4\_value} \times 2^E。scale 用纯指数是为了让缩放在硬件上退化成移位、几乎免费。
  • NVFP4 把块缩到 16、块 scale 换成更精细的 FP8(E4M3)、外面再套一层 FP32 per-tensor scale — 三层 scale 结构。这让它在 Blackwell 推理上的精度明显好过 MXFP4,代价是 metadata 稍多。NVIDIA 的 NVFP4 预训练实验里,相对误差约 1.5%,而 MXFP4 约 2.5%[5]
  • 用途:Blackwell 之后推理的主力低精度格式,也开始进入预训练。

INT8

  • 位宽:8 位有符号整数(128127-128 \sim 127),配一个 FP16 / FP32 scale。
  • 范围与精度:值域均匀等距,动态范围完全由外部 scale 决定。
  • 用途:LLM 推理里最成熟的量化格式,per-tensor 或 per-channel 一个 scale 通常就够。也常用于 W8A8(权重和激活都 8 位)和 KV cache 压缩。
  • 取舍:难点在离群值(outlier) — 激活里少数极大值会撑大 scale、淹没其余数值。LLM.int8()[6] 把离群值单独拎出来做,SmoothQuant[7] 则把激活的离群值「转移」到权重上,让 W8A8 可行。

INT4

  • 位宽:4 位有符号整数(87-8 \sim 7),只有 16 个值。
  • 范围与精度几乎必须 group-wise — 每 32 / 64 / 128 个数共享一个 scale,否则精度损失过大。
  • 用途:消费级/本地部署侧的权重量化主力。GPTQ[8] 用二阶信息逐层求最优 scale,AWQ[9] 按激活幅度挑选 group-wise scale,是 llama.cpp / Ollama 等本地栈的默认路线。
  • 取舍:4 倍压缩、跑得动大模型,但离开合适的 group scale 就崩。它和 FP4 是「同位宽的两种哲学」 — INT4 靠密集分组的外部 scale,FP4 靠格式内置的 2 位指数加块 scale。
整数量化的仿射映射 xfps(qz)x_{\text{fp}} \approx s\cdot(q-z) — 整数码 qq 均匀等距,缩放因子 ss 把定点区间拉伸到目标浮点范围,零点 zz 平移去贴合分布(z=0z=0 即对称量化)。INT4 一共只有 16 个值,离开外部 scale 完全不能用;GPTQ、AWQ 做的就是「找一组合适的 group-wise scale,让量化后的精度损失最小」。

把九种浮点格式加两种整数格式汇成一张对比表:

格式位结构(S+E+M)动态范围(约)精度(十进制)典型用途
FP321+8+231038103810^{-38} \sim 10^{38}~7 位累加器 / master / 优化器
TF321+8+10同 FP32~3 位FP32 GEMM 的加速替代
FP161+5+101056.5×10410^{-5} \sim 6.5\times10^4~3–4 位早期训练 / 推理
BF161+8+7同 FP32~2–3 位大模型训练事实标准
FP8-E4M31+4+3±448前向:权重 / 激活
FP8-E5M21+5+2±57344更低反向:梯度
FP61+3+2 / 1+2+3推理折中档
FP41+2+1极窄,靠块 scale极低Blackwell 推理 / 预训练
INT88 位整数靠 scale均匀W8A8 / KV cache
INT44 位整数靠 group scale均匀本地部署权重量化

再把所有浮点格式的动态范围叠在同一条对数轴上,「重范围 vs 重精度」的分野一眼可见:

各浮点格式的动态范围(对数轴)与精度对照。FP32 / TF32 / BF16 三条 bar 长度一致,因为共享 8 位指数(精度各异);FP16 与 FP8-E5M2 都是「重指数」的设计;FP4 的 bar 几乎只是一个点 — 这正是它必须依赖块 scale 才能用的直观证据。

以 Qwen 为例

前面都是抽象的格式,落到一个真实模型上是什么样?拿阿里 2026 年 2 月发布的 Qwen3.5 系列来看最合适 — 它是当前开源权重里覆盖精度最全的一代[10]

Qwen3.5 从 0.8B 一路铺到旗舰 Qwen3.5-397B-A17B:3970 亿总参数、每 token 激活 170 亿、512 个专家、60 层,用 Gated DeltaNet 线性注意力和完整 softmax 注意力大约 3:1 交错的混合结构,原生 262K 上下文。这么大的 MoE,精度选择直接决定它能不能被部署得起。

多精度发布矩阵

Qwen3.5 最能说明问题的地方是:同一个模型官方或合作方同时发布了多种精度的权重,形成一张「发布矩阵」:

  • BF16:原始权重,训练与对齐都在这一精度上完成,是所有量化版本的参照基准。
  • 官方 FP8:细粒度 FP8 量化,块大小 128(正是前面讲的 per-group scale 思路搬到浮点侧)。关键工程细节是 — 共享专家(shared expert)和注意力层保持 16 位不量化,只压其余专家的权重。实测精度几乎与 BF16 无异[12]
  • 官方 GPTQ INT4:4 位权重量化,同样把共享专家和注意力留在 16 位。适合显存吃紧的部署。
  • 社区 / 合作方 AWQ、NVFP4、GGUF:AWQ 走激活感知的 group-wise INT4;NVIDIA 直接发布了 Qwen3.5-397B-A17B-NVFP4,把权重压到 4 位 FP4 加块级 FP8 scale,专为 Blackwell 推理;GGUF 则服务 llama.cpp 本地栈。

一份针对 Qwen 量化的系统评测给出了几条很实用的结论[11]

  • 不开思考时,FP8 / INT4 / NVFP4 在 MMLU 上几乎和 BF16 打平 — 4 倍压缩基本白拿。
  • 共享专家一旦被量化,精度显著掉 — 这正是官方 FP8 / INT4 都特意把共享专家留在 16 位的原因,印证了「精度按运算/组件混用,而非一刀切」。
  • 开思考时,小模型(9B 级)在部分基准掉幅可达 33% — 但原因不完全是精度损失,而是量化版本倾向生成更长的推理链、撞上序列长度上限被截断。27B 及以上则对量化相当稳健。

FP8 训练的落地

Qwen3.5 敢把 FP8 当成一等公民发布,背后是 DeepSeek-V3 在 2024 年底趟平的路[3]。在它之前,业界普遍怀疑「FP8 比 FP16 还少那么多位,怎么可能稳定训出超大模型」。DeepSeek-V3 的关键贡献就是细粒度量化 — 对激活用 1×128 的 tile-wise 分组、对权重用 128×128 的 block-wise 分组,用更细的 scale 粒度对抗离群值,最终把 6710 亿参数的 MoE 在 FP8 下稳定训完。

这套「块级 scale + 敏感组件留高精度」的思路,正是 Qwen3.5 官方 FP8 用块大小 128、并把共享专家和注意力留在 16 位的直接延续。从格式设计(FP8 的 per-tensor scale)到训练框架(DeepSeek-V3 的 tile/block 分组)到发布矩阵(Qwen3.5 的多精度权重),是同一条「细粒度 scale」逻辑的层层落地。

推理侧则清晰地「双轨」:服务端(vLLM、TensorRT-LLM、SGLang)走 FP8,既省显存又跑得快[17];本地端走 INT4 AWQ / GPTQ,因为消费级显卡上 FP4 硬件还稀缺;而随着 Blackwell 铺开,NVFP4 正成为服务端 FP4 的新选项。Qwen3.5 的发布矩阵恰好把这三条轨都覆盖到了。

主流大模型的训练与推理精度选择。绿色 = BF16,橙色 = FP8,红色 = INT4 / FP4。一条清晰的迁移路径:训练从 BF16 切向 FP8(DeepSeek-V3 破冰、Qwen 与 Meta 跟进),推理从 FP16 一路压到 INT4 / FP4;而绑死 TPU 的 Gemini 因为硬件原因长期停在 BF16。

硬件支持

低精度真正能「飞起来」的根本,是硬件加速 — 没有原生 Tensor Core / 矩阵引擎支持,低精度只省内存、不省时间。一种格式在硬件上「原生支持」意味着:Tensor Core 内部有对应位宽的乘加电路、以及自动解码块 scale 的电路,能直接吞这种格式做矩阵乘,而不是先在寄存器里转成高精度再算。

主流加速器对各种低精度格式的硬件支持矩阵。绿色对角线从 FP16(2017 全员支持)一路下降到 FP4(2024 才出现于 Blackwell),大约每两年下移一格。FP32 / FP16 / INT8 是三个全员支持的「栈底」,越往下越锁定到特定厂商与代际。

NVIDIA

  • Volta (2017) 首次引入 Tensor Core,支持 FP16 矩阵乘 + FP32 累加,开启了混合精度训练。
  • Ampere (2020) 补上 BF16 和 TF32,让「无痛替换 FP32」成为可能,同时把 INT8 推理做成主流。
  • Hopper (2022) 引入第一代 Transformer Engine 和原生 FP8 Tensor Core(E4M3 / E5M2),并自动维护 per-tensor scale。这是 FP8 训练与推理落地的硬件起点。
  • Blackwell (2024) 带来第二代 Transformer Engine,核心是微张量缩放(micro-tensor scaling) — 硬件层面内置块级 scale 的解码电路,因而原生支持 FP4 和 FP6,且同时支持 MXFP4(块 32、E8M0 scale)与 NVFP4(块 16、E4M3 scale)两种微缩格式[13]。同一张卡上,FP4 Tensor Core 的吞吐大约是 FP8 的 2 倍[16]
  • Blackwell Ultra 进一步把注意力层加速做到 2 倍、整体 AI 算力提升约 1.5 倍,专门服务长上下文与 MoE。

微缩格式之所以要硬件配合,是因为「每 16 或 32 个元素解码一次 scale、再做 4 位乘加」这套流程如果用软件模拟,开销会吃掉低精度省下的时间;只有把 scale 解码电路焊进 Tensor Core,FP4 才真正比 FP8 快。这就是为什么 FP4 直到 Blackwell 才「能用」,而不是 2022 年就有。

其他加速器

  • AMD:Instinct MI300(2023)支持 FP8,格式覆盖度大致对标 NVIDIA 的 H100,落后约一代;MI350(2025)才补上 FP6 / FP4。
  • Google TPU:一个刻意「克制」的路线 — 长期只押 BF16 + INT8,跳过 FP8 / FP4。因为 Google 既是硬件设计方又是模型设计方,可以让「软件迁就硬件」,在自家 workload 上验证 BF16 + INT8 已经够用。Gemini 训练栈一直围绕 BF16 就是这个选择的直接结果。
  • Intel Gaudi、各类推理 ASIC:多在 FP8 / INT8 这一档,FP4 仍是 NVIDIA / AMD 高端 GPU 的专属。

一个贯穿始终的模式:FP32 / FP16 / INT8 是三个「全员支持」的栈底,用它们写的代码部署到任何加速器都没问题;越往下(FP8 → FP6 → FP4)越锁定到特定厂商和特定代际。选精度不只是选精度,也是在选硬件绑定的深度。

总结

把全文拎成几条:

  • 低精度的红利是四合一的 — 显存、带宽、算力、成本同时下降,其中「位宽减半、算力翻倍」是这条路走得下去的根本。
  • 格式的性格由三个数决定 — 总位宽、指数位 ee(管范围)、尾数位 mm(管精度)。训练偏好指数多(BF16、FP8-E5M2)兜住梯度范围,推理偏好尾数多(FP8-E4M3、FP6-E2M3)榨取已知分布的精度。
  • 位宽越低越离不开外部 scale — FP8 还能 per-tensor,FP6 / FP4 必须块级微缩(MXFP4 / NVFP4),INT4 必须 group-wise。整数与 4 位浮点是「同位宽的两种哲学」,殊途同归到「细粒度 scale」。
  • 精度是按运算和组件混用的 — Qwen3.5 官方 FP8 / INT4 都特意把共享专家和注意力留在 16 位,正是这条规律在真实模型上的印证。
  • 每一步落地都被一代硬件卡着 — FP8 等到 Hopper、FP4 等到 Blackwell。一种格式「能用」的时间点,取决于 Tensor Core 什么时候把它的乘加与 scale 解码电路焊进去。

一句话收尾:训练在 BF16 → FP8 的路上,推理在 FP8 → FP4 的路上,而 Qwen3.5 那张同时发布 BF16 / FP8 / INT4 / NVFP4 的权重矩阵,就是这场迁移正在发生的活证据。

参考资料 — 标准 · 论文 · 工程报告

  • IEEE. IEEE Standard for Floating-Point Arithmetic (IEEE 754-2019) — 浮点数 sign / exponent / mantissa、规格化与非规格化、偏置指数的权威定义. standards.ieee.org
  • NVIDIA / Arm / Intel. FP8 Formats for Deep Learning (2022) — E4M3 / E5M2 两个变体的设计动机与训练实验. arxiv.org/abs/2209.05433
  • DeepSeek-AI. DeepSeek-V3 Technical Report (2024) — 首个超大规模 FP8 训练报告,详述 fine-grained tile-wise / block-wise scaling 与离群值处理. arxiv.org/abs/2412.19437
  • Open Compute Project. OCP Microscaling Formats (MX) Specification v1.0 (2023) — MXFP4 / MXFP6 / MXFP8 / E8M0 块 scale 的官方规范. opencompute.org · MX v1.0 spec
  • NVIDIA. Pretraining Large Language Models with NVFP4 (2025) — NVFP4 块结构与其相对 MXFP4 的收敛/误差对比. arxiv.org/abs/2509.25149
  • Dettmers et al. LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale (2022) — 首次把 INT8 稳定用到大模型,发现并处理激活离群值. arxiv.org/abs/2208.07339
  • Xiao et al. SmoothQuant: Accurate and Efficient Post-Training Quantization for LLMs (2022) — 把激活离群值「转移」到权重,使 W8A8 量化可行. arxiv.org/abs/2211.10438
  • Frantar et al. GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers (2022) — INT4 权重量化,基于二阶信息的逐层最优 scale 求解. arxiv.org/abs/2210.17323
  • Lin et al. AWQ: Activation-aware Weight Quantization (2023) — 基于激活幅度的 group-wise scale 选择. arxiv.org/abs/2306.00978
  • Qwen Team. Qwen3.5-397B-A17B — 旗舰 MoE 的规模、混合注意力结构与多精度发布. huggingface.co · Qwen3.5-397B-A17B
  • Benjamin Marie. Qwen3.5 Quantization: Similar Accuracy, More Thinking (2026) — FP8 / INT4 / NVFP4 相对 BF16 的系统评测与共享专家发现. kaitchup.substack.com
  • Qwen Team. Qwen3.5-397B-A17B-FP8 — 块大小 128 的细粒度 FP8 量化模型卡. huggingface.co · Qwen3.5-397B-A17B-FP8
  • NVIDIA. NVIDIA Blackwell Architecture — 第二代 Transformer Engine、微张量缩放、MXFP4 / NVFP4 与 FP4 / FP6 Tensor Core. nvidia.com · Blackwell
  • NVIDIA. NVIDIA Hopper Architecture Whitepaper (2022) — 第一代 Transformer Engine、FP8 Tensor Core、per-tensor scaling 机制.
  • NVIDIA. Transformer Engine — Hopper / Blackwell 上 FP8 与 FP4 训练/推理的开源实现,delayed scaling 机制. github.com/NVIDIA/TransformerEngine
  • Luo et al. Microbenchmarking NVIDIA’s Blackwell Architecture (2025) — 对 Blackwell 各精度 Tensor Core 实测吞吐的架构级分析. arxiv.org/abs/2512.02189
  • vLLM. Quantization — INT8 / FP8 / INT4 推理量化的开源实现细节. docs.vllm.ai · Quantization