PrefixQuant: Eliminating Outliers by Prefixed Tokens for Large Language Models Quantization

📄 arXiv: 2410.05265v2 📥 PDF

作者: Mengzhao Chen, Yi Liu, Jiahao Wang, Yi Bin, Wenqi Shao, Ping Luo

分类: cs.LG, cs.CL

发布日期: 2024-10-07 (更新: 2025-01-27)

备注: PrefixQuant improves quantization accuracy across various precision and quantization settings

🔗 代码/项目: GITHUB


💡 一句话要点

PrefixQuant通过前缀化异常token解决LLM量化中的token级离群点问题

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 大语言模型量化 低比特量化 token级离群点 KV缓存 模型压缩

📋 核心要点

  1. 现有LLM量化方法主要关注通道级离群点,忽略了token级离群点,导致量化模型精度受限。
  2. PrefixQuant通过前缀化KV缓存中的离群token来消除token级离群点,并引入可训练参数补偿量化误差。
  3. 实验表明,PrefixQuant在多种精度和粒度设置下均优于现有动态量化方法,并显著提升了LLM的推理速度。

📝 摘要(中文)

本文提出了一种新的量化方法PrefixQuant,旨在解决大型语言模型(LLM)量化中token级离群点问题,现有方法主要关注通道级离群点,忽略了token级离群点,限制了量化模型的精度。PrefixQuant通过在前缀中添加KV缓存中的离群token来消除token级离群点,该过程无需训练且高效(例如,Llama-3-70B只需1分钟)。此外,PrefixQuant引入了新的可训练参数进行块状训练,以补偿量化误差。实验表明,PrefixQuant显著优于现有的动态量化方法,即使在更粗粒度的静态量化设置下也是如此。例如,在W4A4KV4 Llama-3-8B上,PrefixQuant在五个zero-shot推理任务中,动态和静态量化设置下分别比SpinQuant(动态量化)平均提高了+3.08和+2.85个百分点。此外,PrefixQuant在W4A4量化下,LLM的预填充速度提高了2.74倍,解码速度提高了2.16倍。代码已开源。

🔬 方法详解

问题定义:论文旨在解决大型语言模型(LLM)量化过程中存在的token级别离群点问题。现有的量化方法主要关注通道级别的离群点,忽略了token级别的异常激活值,这会导致量化后的模型精度下降,尤其是在低比特量化的情况下。

核心思路:PrefixQuant的核心思路是通过识别并隔离KV缓存中的离群token,具体做法是在这些token前添加一个“前缀”,从而将这些异常值从正常的量化流程中分离出来。同时,为了补偿量化带来的误差,引入了可训练的参数进行块状训练。这样做的目的是在不显著增加计算复杂度的前提下,有效地处理token级别的离群点,提高量化模型的精度。

技术框架:PrefixQuant主要包含两个阶段:离群token前缀化和量化误差补偿。首先,对KV缓存中的token进行分析,识别出离群token。然后,在这些token前添加一个前缀,将其隔离。其次,为了补偿量化带来的误差,引入了可训练的参数,并进行块状训练。整个过程无需额外的训练数据,并且可以与现有的量化方法相结合。

关键创新:PrefixQuant的关键创新在于它首次关注并解决了LLM量化中的token级别离群点问题。与现有方法相比,PrefixQuant不是简单地忽略或平均化这些离群值,而是通过前缀化的方式将其隔离,从而更有效地保留了模型的信息。此外,引入可训练参数进行误差补偿,进一步提高了量化模型的精度。

关键设计:PrefixQuant的关键设计包括:1) 离群token的识别方法,需要确定一个合适的阈值来判断哪些token是离群值;2) 前缀化的具体实现方式,如何将前缀添加到KV缓存中,并保证模型的兼容性;3) 可训练参数的引入方式,如何设计这些参数,以及如何进行块状训练,以有效地补偿量化误差。论文中可能涉及损失函数的设计,用于指导可训练参数的优化。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

PrefixQuant在Llama-3-8B模型上进行了实验,结果表明,在W4A4KV4量化设置下,PrefixQuant在五个zero-shot推理任务中,动态和静态量化设置下分别比SpinQuant(动态量化)平均提高了+3.08和+2.85个百分点。此外,PrefixQuant在W4A4量化下,LLM的预填充速度提高了2.74倍,解码速度提高了2.16倍。这些结果表明,PrefixQuant在精度和效率方面均优于现有方法。

🎯 应用场景

PrefixQuant可应用于各种需要部署在资源受限设备上的大型语言模型,例如移动设备、边缘计算设备等。通过降低模型大小和提高推理速度,PrefixQuant可以使这些设备能够运行更复杂的LLM应用,例如智能助手、机器翻译、文本摘要等。该技术还有助于降低云计算成本,使更多用户能够负担得起LLM服务。

📄 摘要(原文)

Existing weight-activation quantization methods for Large Language Models (LLMs) primarily address channel-wise outliers but often neglect token-wise outliers, which limits the accuracy of quantized models. In this work, we propose PrefixQuant, a novel quantization method that achieves state-of-the-art performance across various precision levels (W4A4KV4 and W4A8KV4) and granularities (dynamic and static quantization) by effectively isolating token-wise outliers. First, PrefixQuant eliminates token-wise outliers by prefixing outlier tokens in the KV cache, a process that is training-free and highly efficient (e.g., 1 minutes for Llama-3-70B). Second, PrefixQuant introduces new trainable parameters for block-wise training to compensate for quantization error. Our experiments show that PrefixQuant significantly outperforms existing dynamic quantization methods, even under coarser static quantization settings. For instance, PrefixQuant achieves an average accuracy improvement of +3.08 and +2.85 points over SpinQuant (dynamic quantization) on five zero-shot reasoning tasks under dynamic and static quantization settings, respectively, on W4A4KV4 Llama-3-8B. Additionally, we demonstrate up to 2.74x prefilling speedup and 2.16x decoding speedup for LLMs using W4A4 PrefixQuant. Our code is available at https://github.com/ChenMnZ/PrefixQuant.