KronQ: LLM Quantization via Kronecker-Factored Hessian
Kronecker 是一个通过将梯度协方差引入量化目标函数(利用 Kronecker 分解的海森矩阵近似)来改进大语言模型压缩的训练后量化框架,它实现了双向不相干性处理和增强的敏感度指标,从而在极低比特场景下取得了优于 GPTQ 等现有方法的困惑度表现。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你拥有一个巨大的、极其聪明的机器人大脑(大型语言模型),它能写故事、解数学题,还能像人类一样聊天。问题在于?这个大脑如此庞大,以至于需要一整层仓库的计算机才能装下它。为了让它能在普通的笔记本电脑或手机上运行,科学家们尝试通过压缩其内存来“缩小”它,这个过程被称为量化(quantization)。这就像是在打包行李:你想把所有的衣服(模型的知识)装进一个小提包里,同时又不丢失任何重要的东西。
有一段时间,这种打包行李的最佳方法叫做 GPTQ。它通过观察机器人的“输入”(它阅读的词汇)是如何变化的,并据此调整权重。但开发这种新方法 KronQ 的作者们注意到,这种策略存在一个缺陷。他们意识到 GPTQ 只观察了方程的“输入”侧,假设每一个可能的“输出”(机器人接下来要说的词)都是同等重要的。
大错误:忽略了“输出”侧
论文指出,这种假设就像是试图通过只看衣服有多重来打包行李,却忽略了它们有多脆弱。事实上,机器人的大脑中有些部分是非常敏感的。如果过度挤压这些部分,整个系统就会崩溃。
作者们测量了这一点,并发现了一个惊人的现象:在像 LLaMA-3-70B 这样的大型模型中,“输出”通道(机器人生成答案所使用的路径)的重要性差异巨大。有些通道就像易碎的玻璃;而另一些则像坚固的砖块。旧的方法将它们一视同仁,这导致模型在被过度压缩时会变得异常混乱。事实上,当他们尝试将 LLaMA-3-70B 缩小到仅 2 位(bits)(极小的内存量)时,旧的方法完全失败了,产生的“困惑度”(perplexity,衡量模型多么困惑的分数)超过了 2000。这就像是一个机器人完全忘记了如何说英语。
新解决方案:KronQ
于是,KronQ 登场了。作者提出了一种新的打包方式,它同时观察“输入”和“输出”。他们使用了一个名为**克罗内克因子分解海森矩阵近似(Kronecker-factored Hessian approximation)**的数学技巧。
这里有一个类比:想象机器人的大脑是一个巨大的鼓。
- 旧方法 (GPTQ): 你从正面敲击鼓面(输入),并根据正面的振动来调整张力。你假设背面是正面的镜像。
- KronQ: 你既从正面敲击,也从背面敲击。你意识到背面振动得不同!背面的某些部分是松动且摇晃的,而另一些则是紧绷的。KronQ 测量这种“背面振动”(梯度协方差),并利用它更细致地打包行李。
KronQ 的两个超能力
双向不相关性(“洗牌”):
在打包之前,KronQ 会在两个方向(输入和输出)上对权重进行洗牌,以确保没有任何一个位置会被过重或过于脆弱的物品所占据。这就像是将一堆乱七八糟的书均匀地铺开,以免行李箱在某个地方凸起。论文显示,这降低了权重的“变异性”,使其更容易在不损坏的情况下进行压缩。智能比特分配(“VIP 通行证”):
并不是所有的机器人部分都需要同样多的空间。KronQ 为大脑的每个子层计算了一个“敏感度分数”。它为“VIP”层(最敏感的层)分配更多的比特(更多内存空间),而为不太重要的层分配较少的比特。至关重要的是,因为它观察了输出侧,所以它能够分辨出那些从输入侧看完全相同、但在实际表现上截然不同的层。
结果:拯救局面
作者在多个模型(从 70 亿到 700 亿参数)上进行了测试。结果非常显著,尤其是在他们尝试将模型压缩到 2 位这一极端极限时。
- 失败: 在巨大的 LLaMA-3-70B 模型上,旧方法(GPTQ 和 GPTAQ)出现了发散或产生垃圾结果的情况(困惑度 > 2000)。
- 成功: KronQ 成功将这个同样的 700 亿参数模型压缩到了 2 位,并保持了完美运行,在 WikiText-2 数据集上的困惑度仅为 7.93。这在“坏掉的机器人”与“聪明的机器人”之间有着天壤之别。
即使在 4 位和 3 位的设置下,KronQ 也始终优于竞争对手,在 PiQA 和 Arc-Challenge 等推理测试中表现出更低的困惑度和更高的准确率。例如,在 LLaMA-2-7B 的 2 位设置下,KronQ 的困惑度为 8.15,而 GPTQ 则挣扎在 31.11。
代价
有代价吗?论文承认,为了获取这种“输出振动”数据,KronQ 在打包前需要对模型进行一次额外的反向传播。这在设置阶段会多花一点时间和内存(每个层比 GPTAQ 多大约 8–11 秒)。然而,一旦模型打包完成,在实际运行时的速度和内存占用与旧方法一样高效。这种额外的开销是一次性的设置成本,它换取的是允许模型在不损坏的情况下被大幅度缩小的能力。
他们排除了什么
论文明确反对了“你可以忽略数学中输出侧”的观点。他们证明,假设所有输出方向都是相等的(即将梯度协方差设为单位矩阵)是一种“次优近似”,会导致在超低比特场景下的失败。他们还表明,仅观察输入统计数据的模型(如标准 GPTQ)无法区分具有相同输入的不同子层,从而导致在分配内存时的错误决策。
他们有多确定?
作者对这些结果非常有信心,因为这些结果是基于硬性测量而非仅仅是模拟。他们在真实硬件(A100 GPU)上使用真实模型(LLaMA-2, LLaMA-3, Gemma, DeepSeek)进行了测试,并测量了实际的困惑度和准确率。他们不仅仅是建议这可能奏效,而是展示了在这些特定实验中,旧方法在 2 位设置下确实无法产生可用的模型,而 KronQ 则成功了。
简而言之,KronQ 就像是一位大师级的打包员,他意识到要将一个巨大的大脑装进一个小盒子,你必须理解大脑如何输出信息,而不只是如何输入信息。通过这样做,它解锁了在以前认为不可能的设备上运行大规模 AI 模型的能力。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。