1 大语言模型量化背景
模型量化本质上是一种模型“瘦身”技术。在大语言模型(LLM)场景中,量化通常将FP32、FP16或BF16精度的权重、激活值或KV Cache,转换为INT8、FP8、INT4、FP4等更紧凑的数据类型。LLM推理中的量化方式多种多样,不同分类标准对应不同分支,具体分类可参考下图。本文主要聚焦LLM的PTQ(训练后量化),其收益主要体现在三个方面:
-
显存优化:LLM的权重显存占用远高于传统AI模型,甚至直接决定是否能在特定GPU上运行。对权重进行量化,显存节省效果立竿见影。
-
吞吐提升:LLM推理过程中,KV Cache占用的显存极为庞大。将其量化后存储,意味着同一显存容量可容纳更多请求的KV Cache,吞吐量显著增加,推理成本大幅下降。
-
延迟降低:LLM的Decoding阶段通常是访存瓶颈。权重或激活值量化后,算子访存压力减小,加之NVIDIA GPU上低精度硬件单元的算力普遍高于高精度单元,算子运行耗时缩短,推理延迟自然降低。
2 FP8数据格式详解
LLM推理中常见的量化格式包括INT8和FP8。FP8是NVIDIA在Hopper和Ada Lovelace架构GPU上引入的数据类型,包含两种子格式:
- E4M3:4个指数位 + 3个尾数位 + 1个符号位
- E5M2:5个指数位 + 2个尾数位 + 1个符号位
关键区别在于:E4M3动态范围更小但精度更高;E5M2动态范围更宽但精度较低。LLM推理对精度敏感,对数值范围要求相对宽松,因此FP8-E4M3更为适用。
由于浮点数的特性,FP8表示的数值呈非均匀分布——越靠近0,数值密度越大;越远离0,分布越稀疏。这意味着FP8对大值的精度不太友好,但对小值的把握更精准。Yijia Zhang在《Integer or Floating Point? New Outlooks for Low-Bit Quantization on Large Language Models》中给出了FP8与INT8数值分布对比图,直观展示了这一差异。

3 量化精度对比分析
既然FP8多了尾数位,那么它相比INT8在精度上究竟有何优势?
3.1 数值分布对精度的影响
针对不同数据分布,Mart van Baalen在《FP8 versus INT8 for efficient deep learning inference》中对比了INT8和FP8的量化精度(纵坐标越大,精度越高)。结果表明:
- 均匀分布下,INT8精度最优,FP8-E4和FP8-E5明显逊色。
- 正态分布下,FP8-E2(2个指数位+5个尾数位+1个符号位)精度最好,INT8紧随其后,FP8-E4和FP8-E5再次落后。
- 而在包含异常值的t-分布下,所有格式量化精度整体较低,但FP8-E4表现略好。
3.2 权重量化精度对比
实际大模型权重参数中,哪种格式更准确?Yijia Zhang统计了LLaMA-65B各层权重做Per Channel量化后的偏差,并排序。结果显示:INT8在所有层的权重精度上显著优于FP8-E4。
3.3 激活值量化精度对比
Yijia Zhang还统计了LLaMA-65B各层激活值做Per Tensor量化后的偏差。结论发生逆转:FP8-E4在大多数层的激活值精度上优于INT8。原因是激活值是动态的,随输入变化,需要校准集来确定量化Scale;校准过程会取所有Batch的最大值计算Scale,导致非最大值的Batch量化后数值整体偏小,而FP8-E4恰好对小值更友好。
3.4 精度小结
综合Mart van Baalen和Yijia Zhang的实验结果,FP8-E4在精度上并未形成压倒性优势——INT8更适合权重,FP8-E4更适合多数层的激活值。
4 量化性能深度评估
既然精度不占优势,那么FP8的性能是否更好?毕竟NVIDIA在Hopper和Ada Lovelace架构上加入了专门的FP8 Tensor Core,理论上可直接加速FP8运算。
4.1 硬件参数对比
以NVIDIA L40 GPU为例,其硬件规格显示:FP8 Tensor Core与INT8 Tensor Core在各自数据类型上的计算能力完全相同。这一规格在H800、L20、L40S上也保持一。

4.2 计算效率分析
Mart van Baalen从累加器硬件角度进行了计算:以FP32累加器为例,FP8-E4的效率比INT8低183%。Bita Rouhani在《With Shared Microexponents, A Little Shifting Goes a Long Way》中假设两种格式均使用浮点累加器,预估FP8性能比INT8下降40%。基于这些分析,Mart van Baalen得出结论:FP8的计算成本远超INT8,这意味着对于计算瓶颈的网络,FP8量化后性能反而更差。
这里留一个待验证的要点:需要在Hopper或Ada Lovelace架构GPU上实测计算瓶颈算子(如GEMM)在INT8和FP8-E4下的实际性能表现。
4.3 性能小结
根据Mart van Baalen和Bita Rouhani的研究结果,FP8-E4在性能上同样不具备优势。
5 混合量化策略实践
既然FP8-E4的亮点在于激活值精度,那么不妨将两种格式结合起来。Yijia Zhang针对LLaMA和OPT模型提出了MoFQ8(Mixture-of-Formats Quantization)混合量化方案,实现W8A8。核心思路是逐层选择量化格式,每层只用一种类型。在WikiText-2、LAMBADA、PIQA和HellaSwag四个数据集上,MoFQ8的效果明显优于单一的FP8-E4或INT8,精度接近FP16。
从工程实践角度看,LLM PTQ量化的主要结论如下:
- FP8 vs INT8:尽管NVIDIA在Hopper和Ada Lovelace上力推FP8 Tensor Core,但FP8-E4在精度和性能上均无明显优势,因此当前工程界仍以INT8为主,同时持续探索FP8的适用场景。如果某模型使用INT8量化后精度下降过多,可借鉴Yijia Zhang的MoFQ8混合量化,或参考Tim Dettmers在《LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale》中的混合量化思路。
- W8A16 vs W8A8:以INT8为例,相比FP32/FP16/BF16,W8A16(仅量化权重)在几乎不损失精度的前提下,有两个核心优势:一是大幅降低权重的显存占用;二是显著缓解Decoding阶段对权重的访存压力,降低推理延迟。W8A8同时量化权重和激活值,增加了激活值带来的显存和访存收益,收益大小与输入Prompt和输出序列长度正相关——序列越长,收益越明显。此外,W8A16仍使用FP16/BF16 Tensor Core,而W8A8能利用算力更高的INT8 Tensor Core,进一步降低延迟,提升GPU硬件利用率。
