,难以在实际应用中使用,也就难以利用峰值算力最高的 INT4 Tensor Core 加速 LLM 的实际推理部署。我们发现,量化前权重和激活值分布的平坦度 (flatness) 是影响 LLM 量化误差的关键因素。
直观来看,分布越平坦,离群值就越少,量化时的精度也就越高。已有方法大多使用 pre-quantization transformations,通过在量化前对权重和激活值做等价变换得到更平坦的分布来降低量化误差,常用的变换主要有 Per-channel Scaling [1] 和 Hadamard 变换 [2]。
然而,我们发现这些变换并不是最优的,为此我们提出 FlatQuant (Fast and Learnable Affine Transformation),为每个线性层学习一个最优的仿射变换来有效缓解权重和激活值上的离群值,从而得到平坦的权重和激活值分布,有效提升了量化精度。此外,针对推理中的在线变换,我们进行了算子融合进一步降低访存开销,使得在线变换仅带来极小的推理开销。
LLM 的权重和激活值上存在较多的离群值,特别是激活值上常常存在离群值通道 (outlier channels),导致 LLM 难以量化。目前针对 LLM WA 量化的方法大多在量化前对权重和激活值做等价变换来用其他通道吸收离群值,从而得到更加平坦的分布以降低量化损失。例如:
权重和激活值分布可以看作两个斜坡,变换就类似于用铲子搬土,土不会凭空增加或者减少,所以目标是通过把两个坡中高处(离群值)的土填到低处(非离群值通道),从而把这两个坡填平。
相比之下,FlatQuant 方法可以被看作是一种更加精细和智能的“搬土”策略。在这个方法中,我们不再局限于只在单个斜坡内部移动土,也不只是在两个斜坡的相同位置上进行土的转移。相反,FlatQuant 允许我们对每个斜坡进行定制化的调整,这意味着我们可以针对每个斜坡的独特形状和需求,设计出最佳的“搬土”方案。
这就相当于为模型的每一层学习一个特定的仿射变换,以得到更平坦的分布,并且可以自适应地平衡权重和激活值的量化难度。
在下图 1 中,我们画出了 LLM 的不同权重和激活值在变换前后的分布情况,理想情况下,我们希望能利用所有通道吸收离群值,使得变换后的分布呈现一条平坦的水平线:等价变换前后模型的权重和激活值分布,具体来说,按通道幅值
Per-channel Scaling,离群值仍然被限制在了权重和激活值的相同通道上,非离群值通道得不到有效利用
,例如图 1(a)(b) 中,LLaMA-3-8B 的权重和激活值经过 Hadamard 变换后仍然比较陡峭,特别是激活值上的离群值无法得到有效平滑。此外,
,这导致正交变换后的激活值量化难度也会显著高于权重,无法像 Per-channel Scaling 一样灵活地平衡权重和激活值上的量化难度。
FlatQuant 通过给每一层针对性地学习仿射变换,不仅可以得到平坦的分布,还可以自适应地平衡权重和激活值的量化难度
,对于 LLaMA-2-7B,这些在线K 时的 FLOPs 仅为 FP16 模型的 2.61%,对在线变换中两个小矩阵乘以及量化操作的算子融合还可以帮助进一步降低 FlatQuant 的额外推理开销。
。3. 实验结果量化设置. 实验中,我们保持了与 QuaRot [2] 相同的量化设置,权重和激活值分别
3.1 量化精度我们测试了 W4A4 下量化模型的 PPL 和 QA 任务上的精度结果,从表 1 和表 2 中可以看到,
对于较大的 13B/70B 模型,QA 精度损失均在 1% 左右。更小的 7B/8B 模型的精度损失也维持在了 2% 左右。
现有的量化方法在 W4A4 下量化损失大难落地。量化前权重和激活值分布的平坦度显著影响量化误差。 FlatQuant
。总的来说,FlatQuant 是一种创新的量化方法,它通过学习最优的仿射变换来提高 LLM 量化精度,保持高加速比的同时,显著降低量化损失。这项工作对于推动大型语言模型在实际应用中的部署具有重要意义。
0 条