几年前,大模型尚未兴起时,我们还在通过编写 graph pass 来进行 graph rewrite,这属于静态图的操作方式。PyTorch 并没有这种机制,因此性能自然会略逊一筹。当时,Transformer 的量化技术远不如现在这般丰富多样,主要集中在 fp16 和 int8 量化上。我曾尝试用 int8 对 GPT/GPT2 进行量化,结果发现准确率损失非常严重,整体性能提升也非常有限,仅在 1 倍到 1.1 倍之间,显然难以接受。我当时很困惑:如果要保证精度达标,可能需要将多个 matmul 操作退回到 fp32 或 fp16,这样一来,量化的意义也就大打折扣了。如今再回顾,这些问题已经得到了有效解决,而且各种方法层出不穷,形成了百花齐放的局面。本文简要介绍量化基本术语及当前流行的各大模型量化方案,如Int8、WOQ、FP8、NF4等。用低精度数据有效近似高精度数据。比如刚结束的S14英雄联盟全球总决赛,超高清画质虽清晰,但对设备性能要求高,容易卡顿。调至720P后流畅许多,虽然画质稍逊,但依然不影响观看体验。网上许多教程喜欢将量化分为线性量化、非线性量化、离线量化和在线量化,但我觉得这种叫法并不通用(有误请指正)。从芯片厂商或学术论文的角度看,这类划分并不准确,更合适的命名方式应该是:这篇论文是大模型量化的开创性工作,引用率极高,成功解决了传统Int8量化存在的问题。其主要创新在于高层设计,通过更谨慎地处理激活值中的异常值(outlier),具体做法是提取并保留这些异常值不进行量化,仅对非异常值(non-outlier)进行量化。在底层实现上,内核层面的创新较少,主要是直接调用了PyTorch的相关功能。这是大模型在Int8量化上的前沿方案,主要创新点在于将激活值中的异常值部分转移到权重上,以此更高效地利用Int8量化技术。而在核心计算层面的创新较少,主要是直接使用了Cutlass进行实现。不知不觉间,从GPTQ开始,activation的量化逐渐淡出了历史舞台。继承自上世纪的OBQ、OBS、OBC等OB*系列方法,说实话,我也不太懂,而且觉得没必要花时间去研究,因为它们不仅复杂,结果也不够理想。主要提出了一种算法:先更新部分权重列,然后计算量化误差,并依据误差调整剩余权重列,如此反复迭代。在kernel层面,最初实现了fp16与int4的GEMM和GEMV,但性能不尽如人意。随着MARLIN的出现,后续工作主要围绕调优MARLIN展开。不过,这个MARLIN kernel确实让人头疼,各种索引、slice、offset以及PTX指令满天飞。值得期待的是,随着cutlass3引入了cute编程范式,它极大地抽象了GEMM在GPU层次结构中的数据搬运、计算及循环操作,未来这种复杂的索引与offset计算或将不复存在。最后致命的是,GPTQ间接证实了AWQ的正确性,你能接受吗?MLSys 2024最佳论文提出了一种目前在大模型权重量化(weight-only quantization)中的领先方案。该方法通过激活值(activation)的幅度确定显著权重(salient weight),并为其分配更大的缩放比例(scale),从而有效保留关键权重信息。这一思路简单而高效,取得了优异效果。从这里开始,我们进入非均匀量化的研究领域。其核心思想是准备一张查找表(Look Up Table,简称LUT),用于替代传统量化方法。那么,如何生成这张表?这需要巧妙的设计,也是产生创新思路的关键点,划重点!以squeezeLLM为例,所示,红色部分表示对精度影响极为敏感的值。如果使用均匀量化,很可能无法准确捕捉这些关键值。因此,我们必须对这些敏感值进行特殊处理,这就是非均匀量化的核心意义,如紫色部分所示。这是实现大模型超低bit量化的前提条件,技术要求非常高,非常苛刻。
FP8是一种非均匀数据类型,其值间差不相等,可视为一张表。实际上,FP8在大模型推理中的优势并不显著,不及INT8或WOQ突出,但FP8在训练阶段效果较好。由于训练出的模型为FP8格式,因此通常会直接采用FP8进行推理,流程更加自然流畅。源于qlora,作者与llm.int8相同,原理类似squeezeLLM,核心是查表。关键在于如何生成这张表,这是论文创意的核心!具体方法是:对数据排序后进行分位数量化,将数据分为16部分,从而构建出量化表,至此完成。以上内容可以说是量化方面的精炼全面讲解。量化核心就在于这些关键点,抓住了就足以驾驭量化。网络上存在许多复杂的量化算法(如qdrop、adaround等),在我看来,这些更多是附加优化,不必投入过多精力研究。依据阿姆达尔定律,我们应专注于关键环节进行优化,这样才能实现整体效益的最大化。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号