与量化感知训练(QAT)所需的数据量相比,CBQ仅需0.1%的训练数据,就能将大型模型压缩至原体积的1/7——同时,浮点模型的性能保持高达99%,成功实现了“轻量化而不降低智能”的目标。
特别值得一提的是,这一卓越的成就成功入选了ICLR 2025 Spotlight栏目,而该栏目的录取率仅有5%。
这不仅体现了大模型压缩技术领域的创新精神与实际应用价值,更犹如一枚信号弹,昭示着大模型在国产算力支持下的广泛应用时代已经到来!
目前,昇腾模型压缩工具包ModelSlim已正式接纳CBQ作为其可调用的算法之一,此举措旨在协助开发者们在昇腾芯片上高效地部署大型语言模型(LLM)。
极低比特量化,为何如此难?
长期以来,后训练量化(PTQ)被视为压缩大型语言模型的“神秘法宝”——它通过处理异常值并运用层级或块级损失优化技术,实现了较为显著的成效。
但是当把参数比特「压得特别低」的时候,模型性能会严重下降。
极低比特量化为何如此艰巨?究其原因,答案深藏于大模型那错综复杂的结构之中。
研究人员对低比特量化环境中大型语言模型(LLM)所出现的量化误差进行了详尽的研究,并揭示了问题的核心所在:
随着模型参数数量不断上升以及量化位数逐渐降低,模型内部各层之间的相互依赖以及同一层内的依赖关系均将显著增强,这一现象严重削弱了量化的精确度。
实验结果明确揭示了LLAMA-7B模型在层间以及层内存在的依赖性特征。
图1展示了Llama-7B模型内部权重及其层间依赖关系的演变,同时揭示了层间缩放因子(scale)对误差所产生的作用。
图1(a)展示了LLAMA-7B模型单一层中权重构成的Hessian矩阵的绝对值可视化情况,其中2比特的图像相较于4比特的图像显得更加朦胧,且非对角线上的噪声明显增多,这表明在低比特级别下,权重之间的“干扰”现象有所加剧。
图1(b)展示了LLAMA-7B 32层模型中损失函数相对于scale参数的Hessian矩阵的图像。在该图像中,采用2-bit量化时,非对角线元素相较于4-bit量化显得更为明亮。这一现象表明,层与层之间的相互依赖性有所增强,意味着一个层的误差更容易传播并影响到其他层。
图1(c)展示了LLAMA-7B模型前两个Transformer块的平均scale与相应损失的关系。在4-bit量化条件下,误差保持在平稳区域的时间较长,表明模型对scale的变化不敏感。然而,在2-bit量化时,误差对scale的变化极为敏感,若选择不当,误差会迅速增加。此时,黑色区域更为集中,出错的可能性也随之增大。
概括而言,将模型的参数从高精度降至低精度,这一转化过程中主要遭遇三大关键难题:
1. 层间依赖的「雪球效应」
大型模型是由众多Transformer层构成的,这些层之间的参数相互之间存在着错综复杂的依赖关系。
在极低比特量化过程中,层与层之间的量化误差会持续累积并加剧,这种累积效应宛如滚雪球一般,进而导致整体性能大幅降低。
然而,传统的分层量化手段,难以准确把握这些层级间的相互依赖关系,从而导致精度上的下降。
2. 层内依赖的复杂性
同一层内的参数并非独立存在,而是存在紧密的关联性。
极低比特量化会损害这些层内依赖的精细性,进而使得模型在应对复杂任务时显得力不从心。
例如,大型模型的语义理解或推理功能,很可能会因为参数精度的下降而出现明显的性能下降。
3. 权重和激活的异常值
模型在低比特量化过程中,若权重或激活值存在异常,将导致显著误差。
传统的手段难以准确辨别及处理这些异常数值,这无疑进一步扩大了量化误差的程度。
可见,这些挑战让低比特量化,成为大模型压缩的「拦路虎」。
华为的CBQ方案究竟是如何实现突破这些限制的?让我们深入探究其奥秘!
CBQ打破层间壁垒,精准又高效
CBQ的核心在于运用跨块依赖机制(简称CBD)以及自适应的LoRA-Rounding技术,这一做法旨在对多个Transformer块的量化参数进行同步优化,进而更有效地维护模型内部的关联性。
具体而言,该技术凭借三项重大创新,为极低比特量化带来了前所未有的生机与活力。
跨块依赖机制(CBD)
正如之前所述,传统量化策略在层层优化过程中,却未能充分考虑到层与层之间相互依赖的复杂性。
CBQ采用了CBD技术,以滑动窗口的形式对多个Transformer模块进行优化,相邻窗口间存在部分重叠的模块,以此增强模块间的联系与协同作用。
此方法能够高效地识别模型内部存在的远距离依赖性,并确保邻近的模块能协同参与量化操作,进而显著增强量化效果。
在实验过程中,观察到随着滑动窗口内块体数量的逐步增多,该模型的表现亦呈现出明显的增强趋势。
自适应LoRA-Rounding技术
为了解决层内依赖的复杂性问题,CBQ推出了自适应的LoRA-Rounding技术,该技术通过使用两个低秩矩阵来学习并确定量化权重的自适应补偿数值。
相较于传统的AdaRound算法,LoRA-Rounding技术显著降低了可学习参数的数量,从而提升了训练效率,同时减少了GPU的内存占用。
此方法可在训练阶段灵活调整权重的度量精细度,进而更有效地匹配模型的内在构造与数据分布特征。
粗到细的预处理策略(CFP)
针对异常值处理,CBQ实施了从粗略到精细的预处理方法(称为粗细预处理,简称CFP)。
CFP策略基于统计学原理,逐步对权重与激活过程中的异常数据进行检测与处理。
在粗略检测阶段,我们运用四分位数和四分位距的计算,对异常值的区间进行初步估算;而在细致检测阶段,则通过缩小异常值集合与正常值集合之间的差距,并尽可能增大内部集合的方差,从而精确锁定异常值的具体位置。
这种分步骤的策略,显著降低了量化误差,使得模型即便在低比特环境下,也能保持稳定如山。
那么,CBQ在场景中的真实表现又如何呢?
实验结果:性能与效率的双赢
众多研究成果表明,CBQ在华为盘古模型以及开源模型中均展现出卓越的成效。
盘古模型:端侧部署「杀手锏」
CBQ量化技术在华为盘古大模型PanGu-7B和PanGu-1.5B的端侧部署中取得了显著成效,该技术以其卓越的量化精度,有力地保障了盘古大模型在众多业务领域的实际应用与推广。
如表格所示,在W8A8/W4A16的精度标准下,PanGu-1.5B模型在中文(C-eval/CMMLU)以及多任务语言理解(MMLU)的基准测试中,其表现与全精度模型相比毫不相让。
在中文领域、多语言处理以及数学基础测试中,PanGu-7B的发挥亦然出色。
这些成果,足以让盘古模型在手机等终端设备上,轻松运行。
开源模型:超越最优
此外,CBQ在诸如OPT和LLaMA等众多开源大型语言模型中,也实现了最先进的性能水平。
在W4A16、W2A16以及W4A8等低比特量化配置中,CBQ的表现均超越了当前最顶尖的技术,同时与全精度模型之间的性能差异已经缩小至1%以下。
尤为令人称奇的是,CBQ仅需短短4.3小时便能够实现对四位权重级别的LLaMA1-65B模型的量化处理,这一成果充分体现了在压缩率和精度之间达到了一种理想的平衡状态。
未来展望
华为的CBQ方案凭借其跨块依赖机制、自适应的LoRA-Rounding技术,以及由粗至细的预处理策略,成功攀登了极低比特量化的“三大高峰”。
该创新举措成功克服了大模型在低比特量化过程中遇到的层间和层内依赖的挑战。
该模型不仅在众多大型语言模型和数据集上显著提升了性能,有效缩短了与全精度模型的差距,而且通过高效率的量化手段,实现了对复杂模型的快速压缩。
最终,盘古以及众多开源模型在昇腾硬件平台上实现了高效部署,同时也为更广泛的应用场景开辟了平坦的道路。