5 混合量化
模型量化,说白了就是一种模型压缩技术。在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的低精度硬件单元算力都比高精度单元高,所以延迟也能跟着降一截。
延迟收益
1 背景
(同上,此处为章节标题,内容已整合进上文)
2 FP8格式
LLM推理里,常见的量化格式有INT8和FP8两种。FP8是Nvidia在Hopper和Ada Lovelace架构GPU上推出的数据类型,它有两大“变体”:
- :4个指数位、3个尾数位,再加1个符号位
E4M3
- :5个指数位、2个尾数位,再加1个符号位
E5M2
简单来说,
E4M3的动态范围小一些,但精度更高;E5M2则动态范围更大,精度稍低
因为浮点数本身的特性,FP8表示的数值分布是不均匀的。Yijia Zhang在《Integer or Floating Point? New Outlooks for Low-Bit Quantization on Large Language Models》里给出了一个很直观的对比图——FP8与INT8的数值分布示意。FP8越靠近0,数值越稠密;越远离0,数值越稀疏。换句话说,FP8对大值的精度不太行,但对小值倒是很擅长。
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个尾数位)拔得头筹,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并没有精度的全面优势。
INT8更适合量化权重,FP8-E4更适合大多数层的激活值。
4 量化性能
既然精度没优势,那FP8在性能上是不是能扳回一局?毕竟Nvidia在Hopper和Ada Lovelace架构GPU里专门加了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%
这里留一个TODO:需要在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(混合格式量化)方案,实现W8A8。
核心思路是逐层选择量化方法,每层内部保持格式一致
6 总结
对于LLM PTQ推理量化,从工程视角来看:
FP8 vs INT8
W8A16 vs W8A8
W8A16走的是FP16/BF16 Tensor Core,而W8A8可以用算力更高的INT8 Tensor Core,既能降低延迟,又能提升Nvidia GPU的硬件利用率
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名