AWQ: ACTIVATION-AWARE WEIGHT QUANTIZATION FOR ON-DEVICE LLM COMPRESSION AND ACCELERATION
文章标题: AWQ: 面向设备端大语言模型压缩和加速的激活感知权重方法
作者/机构: Ji Lin, Jiaming Tang, Haotian Tang, Shang Yang, Wei-Ming Chen, Wei-Chen Wang, Guangxuan Xiao, Xingyu Dang, Chuang Gan, Song Han (来自多个机构,包括MIT等)
A1 主要贡献
本文旨在解决在边缘设备上部署大语言模型(LLM)所面临的巨大模型尺寸和有限硬件资源的挑战。现有方案中,量化感知训练(QAT)成本过高,而训练后量化(PTQ)在低比特设置下精度损失严重,例如GPTQ方法可能过拟合校准集,损害模型的泛化能力。
为解决这些问题,本文提出了激活感知权重方法(Activation-aware Weight Quantization, AWQ),一种硬件友好的低比特纯权重方法。其核心贡献和创新点如下:
-
关键观察与洞见: 论文发现LLM中的权重并非同等重要。存在一小部分(0.1%-1%)的显著权重,仅保护这些权重不被量化就能显著降低量化误差。更重要的是,识别这些显著权重的关键在于参考激活值的分布,而非权重本身的分布,因为对应较大激活值幅度的权重通道处理的是更重要的特征。
-
激活感知缩放方法: 为了避免混合精度带来的硬件效率低下问题,论文通过数学推导证明,通过按通道缩放(per-channel scaling)来放大显著权重通道,可以有效降低其相对量化误差。AWQ设计了一种方法,通过离线收集激活值的统计数据来自动搜索最优的缩放因子,从而在保护显著权重的同时,对所有权重进行均匀的低比特量化。
-
卓越的泛化能力: AWQ不依赖任何反向传播或重构过程,仅需测量每个通道的平均激活幅度。这使其对校准集的依赖性极小,有效避免了过拟合问题,并能很好地保持LLM在不同领域和模态上的泛化能力。实验证明,AWQ在语言建模、指令微调模型(如Vicuna)乃至多模态模型(如OpenFlamingo)上均表现出色。
-
高效推理系统TinyChat: 为将AWQ的理论内存节省转化为实际的推理加速,本文设计并实现了TinyChat,一个专为4比特量化LLM/VLM优化的推理框架。通过即时反量化(on-the-fly dequantization)、平台感知的权重打包和核函数融合(kernel fusion)等技术,TinyChat在桌面和移动GPU上相比Huggingface的FP16实现取得了超过3倍的加速,并成功在移动GPU上部署了70B的Llama-2模型。
图 1. 我们介绍了AWQ,一种用于LLM的多功能权重量化方法。为了实现AWQ,我们开发了TinyChat,将4位量化LLM部署到各种边缘平台,实现了比FP16高3-4倍的性能提升。值得注意的是,我们还制造了一台由TinyChat驱动的TinyChat计算机,它包含一个NVIDIA Jetson Orin Nano,仅有8GB内存和15W功耗。演示:https://youtu.be/z91a8DrfgEw。
A3 背景知识/关键Observation/设计原则
通过保留1%的显著权重来改善LLM量化
权重重要性的不对等性。我们观察到LLM的权重并非同等重要:存在一小部分显著权重,它们对LLM性能的贡献远超其他权重。通过跳过对这些显著权重的量化,可以在没有任何训练或回归的情况下,弥补由量化损失引起的性能下降(如图2(b)所示)。为了验证这一想法,我们在表1中对跳过部分权重通道量化时的性能进行了基准测试。我们测量了INT3量化模型在保持不同比例的权重通道为FP16时的性能。一种广泛使用的方法是通过权重的大小或L2范数来判断其重要性【索引25, Han等人,Learning both weights and connections for efficient neural network,2015】【索引18, Frankle & Carbin,The lottery ticket hypothesis: Finding sparse, trainable neural networks,2018】。但我们发现,跳过具有大范数的权重通道(即基于W的FP16%)并不能显著提高量化性能,其边际改进与随机选择相似。有趣的是,尽管只保留0.1%-1%的通道为FP16,基于激活值幅度来选择权重可以显著提高性能。我们假设,具有较大幅度的输入特征通常更重要。将相应的权重保持为FP16可以保留这些特征,从而有助于提升模型性能。
表 1. 保持一小部分权重(0.1%-1%)为FP16,可以显著提高量化模型相对于四舍五入(RTN)的性能。只有当我们通过观察激活分布而非权重分布来选择重要的FP16权重时,这种方法才有效。我们将性能尚可的困惑度结果以绿色突出显示。我们使用了组大小为128的INT3量化,并测量了WikiText的困惑度(↓)。
当前方法的局限性。尽管保持0.1%的权重为FP16可以在模型尺寸(以总比特数衡量)没有明显增加的情况下提高量化性能,但这种混合精度的数据类型会使系统实现变得困难。我们需要找到一种方法来保护重要的权重,而无需实际将它们保留为FP16。
图 2. 我们观察到,可以根据激活分布(中)在LLM中找到1%的显著权重。将显著权重保持在FP16可以显著提高量化性能(PPL从43.2(左)提高到13.0(中)),但混合精度格式硬件效率不高。我们遵循激活感知原则,提出了AWQ(右)。AWQ采用每通道缩放来保护显著权重并减少量化误差。我们测量了OPT-6.7B在INT3-g128量化下的困惑度。
A2 方法细节
通过激活感知的缩放保护显著权重
我们提出了一种替代方法,通过逐通道缩放来减少显著权重的量化误差,这种方法不会有硬件效率低下的问题。
量化误差分析。我们首先分析纯权重量化带来的误差。考虑一个权重组/块$w$;线性操作可以写成$y = wx$,其量化对应操作为$y = Q(w)x$。具体来说,量化函数定义为:
其中$N$是量化比特数,$\Delta$是由绝对最大值决定的量化缩放因子。现在考虑一个权重元素$w \in w$,如果我们用$s > 1$乘以$w$,并反向缩放$x$,我们得到$Q(w \cdot s)(x/s)$,即:
其中$\Delta'$是应用$s$后的新量化缩放因子。我们根据经验发现:(1) Round(·)
函数的期望误差(表示为RoundErr(·)
)不变:由于四舍五入函数将浮点数映射到整数,误差大致均匀分布在[0, 0.5]之间,平均误差为0.25;即RoundErr(·)
~ 0.25。(2) 放大单个元素$w$通常不会改变组$w$中的最大值。因此我们有$\Delta' \approx \Delta$。(3) 由于$\Delta$和$x$以FP16表示,它们没有量化误差。因此,公式1和2的量化误差可以表示为:
新误差与原始误差的比率为$\frac{\Delta'}{\Delta} \cdot \frac{1}{s}$。鉴于$\Delta' \approx \Delta$且$s > 1$,显著权重$w$的相对误差更小。
缩放方法的有效性验证。为了验证这一想法,我们对OPT-6.7B模型中1%的显著通道乘以$s > 1$,并在表2中测量了每个组的$\Delta$变化。我们发现放大显著通道非常有效:当$s=1$时(即简单的RTN),困惑度为23.54,而当$s=2$时,困惑度提高到11.92。随着$s$变大,变化的$\Delta$百分比通常会变大,但对于$s < 2$的情况,该百分比仍然很小(小于5%);显著通道的相对误差随着$s$的增加而持续变小。然而,最佳的困惑度实际上出现在$s=2$时。这是因为如果我们使用一个非常大的$s$,当$\Delta$增加时,它会增加非显著通道的相对误差(非显著通道的误差将被$\frac{\Delta'}{\Delta}$放大,在$s=4$时,该比率对21.2%的通道大于1),这可能会损害模型的整体准确性。因此,在保护显著通道时,我们也需要考虑非显著通道的误差。
表 2. 将1%的显著通道乘以s > 1时的统计数据。放大显著通道显著改善了困惑度(从23.54到11.92)。随着s变大,变化的∆百分比增加,显著通道的误差减少率也增加。然而,最佳困惑度在s = 2时达到,因为进一步增加s会增加非显著通道的量化误差。
搜索缩放因子。为了同时考虑显著和非显著权重,我们选择自动搜索一个最优的(每个输入通道的)缩放因子,以最小化某一层量化后的输出差异。形式上,我们希望优化以下目标:
这里$Q$表示权重量化函数(例如,组大小为128的INT3/INT4量化),$W$是FP16格式的原始权重,$X$是从小校准集中缓存的输入特征(我们从预训练数据集中取一小部分校准集,以避免对特定任务过拟合)。$s$是每个(输入)通道的缩放因子;对于$s^{-1} \cdot X$,它通常可以融合到前一个算子中【索引77, Wei等人,Outlier suppression: Pushing the limit of low-bit transformer language models,2022】【索引79, Xiao等人,Smoothquant: Accurate and efficient post-training quantization for large language models,2022】。由于量化函数不可微,我们无法直接用普通的反向传播来优化这个问题。虽然有一些依赖近似梯度的技术【索引4, Bengio等人,Estimating or propagating gradients through stochastic neurons for conditional computation,2013】【索引16, Esser等人,Learned step size quantization,2019】,但我们发现它们仍然存在收敛不稳定的问题。
定义搜索空间并优化。为了使过程更稳定,我们通过分析影响缩放因子选择的因素来定义最优缩放因子的搜索空间。如上一节所示,权重通道的显著性实际上由激活值的尺度决定(因此称为“激活感知”)。因此,我们采用一个非常简单的搜索空间:
其中,$s_X$是激活值的平均幅度(逐通道),我们使用单个超参数$\alpha$来平衡对显著和非显著通道的保护。我们可以通过在区间[0, 1]上进行快速网格搜索来找到最佳的$\alpha$(0表示不进行缩放;1对应于我们搜索空间中最激进的缩放)。我们进一步应用权重裁剪以最小化量化的均方误差(MSE)。我们在表3中提供了OPT模型在INT3-g128量化下的消融研究;AWQ持续优于四舍五入量化(RTN),并取得了与混合精度(1% FP16)相当的性能,同时更具硬件友好性。
表 3. AWQ通过使用基于缩放的方法保护显著权重并减少量化误差。它始终优于四舍五入量化(RTN),并实现了与混合精度(1% FP16)相当的性能,同时对硬件更友好。我们使用组大小为128的3位量化。
AWQ方法的优势。我们的方法不依赖于任何回归【索引19, Frantar等人,Gptq: Accurate post-training quantization for generative pretrained transformers,2022】或反向传播,而许多量化感知训练方法都需要这些。它对校准集的依赖性极小,因为我们只测量每个通道的平均幅度,从而防止了过拟合(图8)。因此,我们的方法在量化过程中需要的数据更少,并且能够保留LLM在校准集分布之外的知识。更多细节见第5.3节。
使用TinyChat将AWQ部署到边缘平台
AWQ可以显著减小LLM的规模。然而,将W4A16(4位权重,16位激活)量化带来的理论内存节省转化为实测加速并非易事。像SmoothQuant【索引79, Xiao等人,Smoothquant: Accurate and efficient post-training quantization for large language models,2022】这样的W8A8量化方法,其存储和计算都保持相同的数据精度,这使得反量化过程可以无缝集成到计算核的结尾部分。而W4A16量化在内存访问和计算中使用不同的数据类型,因此其反量化必须被整合到主计算循环中才能获得最佳性能,这带来了实现上的挑战。为了解决这个问题,我们引入了TinyChat:一个用于AWQ模型推理的轻量级系统。它拥有一个PyTorch前端和一个利用设备特定指令集(如CUDA/PTX, Neon, AVX)的后端。
为什么AWQ有助于加速设备端LLM
LLM推理瓶颈分析。为了理解在边缘设备上量化LLM的加速机会,我们首先分析了LLaMA-7B模型【索引71, Touvron等人,Llama: Open and efficient foundation language models,2023】在RTX 4090 GPU上的延迟构成。我们采用批处理大小为1的推理,以适应边缘使用场景,并使用NVIDIA FasterTransformer以FP16实现该模型。
图 3. 在NVIDIA RTX 4090上对Llama-2-7B的瓶颈分析。左:在设备端LLM应用中,生成阶段比上下文阶段慢得多。中:生成阶段是内存密集型的,算术强度低。W4A16量化可以有效地将算术强度提高4倍。右:权重访问量比激活访问量大几个数量级。因此,纯权重量化对设备端LLM更有效。
上下文与生成延迟。如图3(a)所示,生成20个token需要310毫秒,而处理一个200个token的提示仅需10毫秒。因此,生成阶段比上下文阶段慢得多,尤其对于设备上的交互式应用。
生成阶段是内存密集型的。为了加速生成阶段,我们在图3(b)中进行了屋顶线分析。4090 GPU的峰值计算吞吐量为165 TFLOPS,内存带宽为1TB/s。因此,任何算术强度(FLOPs与内存访问量的比率)低于165的工作负载在4090 GPU上都是内存密集型的。值得注意的是,当以FP16执行时,设备端LLM的生成阶段算术强度约为1。这突显了该工作负载的内存密集型特性。由于给定模型的FLOPs是固定的,提高峰值性能的唯一方法是减少总内存流量。AWQ将权重内存减少了四倍。
权重访问主导内存流量。因此,我们进一步在图3(c)中分解了权重和激活的内存访问。显然,权重访问在设备端LLM的内存流量中占主导地位。将模型权重化为4位整数将大约使算术强度增加到4 FLOPs/Byte,从而在图3(b)中实现4 TFLOPS的峰值性能。由于纯权重量化导致权重的比特宽度更低(因此理论性能上限更高),AWQ自然地遵循这一设置为设备端LLM应用。
使用TinyChat部署AWQ
系统设计总览。为此,我们证明了4位权重量化可以带来4倍的理论峰值性能。我们进一步设计了TinyChat来实现这种加速。在GPU上,我们只关注实现基本组件,包括注意力、层归一化和线性投影核。灵活的前端使得可以轻松定制和快速支持新模型。在GPU上,使用4位AWQ的TinyChat与Huggingface FP16实现相比,在不同系列的LLM上实现了超过3倍的加速。在CPU上,我们将整个计算图降级到C++以最小化开销。
即时权重反量化。对于量化层,由于硬件不提供INT4和FP16之间的乘法指令,我们需要在执行矩阵计算之前将整数反量化为FP16。我们通过将反量化核与矩阵乘法核融合,避免将反量化后的权重写入DRAM。请注意,这种融合适用于矩阵-矩阵(MM)和矩阵-向量(MV)乘积核。
SIMD感知的权重打包。即时权重反量化减少了中间DRAM访问,但仍然昂贵。例如,反量化一个4位权重涉及1次移位、1次位与和1次FMA缩放操作,而反量化后的权重仅进行1次FMA计算。这个过程在具有偏好向量化指令的SIMD架构的CPU上尤其昂贵。为了缓解这个问题,我们建议根据设备SIMD单元的位宽进行平台特定的权重打包。图4展示了我们针对具有128位SIMD寄存器的ARM CPU的策略,可提供高达1.2倍的加速。在这里,每个寄存器持有32个4位权重,序列为w0, w16, w1, w17, ..., w15, w31。这种方法只需要三个SIMD指令就可以解包所有32个权重,而传统打包(w0, w1, ..., w31)中每个权重需要3个标量指令。通常,对于$2^n$位SIMD寄存器,相邻权重的索引将相差$1/8 \times 2^n$,因为每个寄存器可以容纳$1/8 \times 2^n$个8位整数。在GPU上,我们发现将每8个权重打包成$w\{0,2,4,6,1,3,5,7\}$更高效,这遵循了【索引31, Kim等人,Who says elephants can’t run: Bringing large scale moe models into cloud scale production,2022】的方法。
图 4. ARM NEON 128位SIMD单元的SIMD感知权重打包。原始权重经过重新排序和打包以与位宽对齐,以便在运行时使用AND和移位位操作以及一个128位掩码将权重解包为字节。
核函数融合。我们还广泛应用核函数融合来优化设备端LLM推理。对于层归一化,我们将所有操作符(例如乘法、除法和平方根)融合成一个单一的核。对于注意力层,我们将QKV投影融合成一个单一的核,并进行即时位置嵌入计算。我们还预分配KV缓存并在注意力核内执行缓存更新。核函数融合对于前向传播实现效率低下的模型特别有用,例如Falcon【索引58, Penedo等人,The refinedweb dataset for falcon llm: outperforming curated corpora with web data, and web data only,2023】和StarCoder【索引37, Li等人,Starcoder: may the source be with you!,2023】。值得注意的是,在4090 GPU上,每个FP16核的计算时间约为0.01毫秒,与GPU核启动开销相当。因此,通过核函数融合减少核调用次数可直接带来加速。
A4 实验环境
-
量化配置:
- 方法:纯权重量化,分组量化,组大小(group size)为128。
- 精度:主要测试INT4和INT3。
- 校准集:使用来自Pile数据集【索引21, Gao等人,The pile: An 800gb dataset of diverse text for language modeling,2020】的一小部分样本,以避免过拟合。
- AWQ超参数:使用大小为20的网格搜索来寻找最优的$\alpha$。
-
模型架构:
- 基础模型:LLaMA【索引71, Touvron等人,Llama: Open and efficient foundation language models,2023】、Llama-2【索引72, Touvron等人,Llama 2: Open foundation and finetuned chat models,2023】和OPT【索引83, Zhang等人,Opt: Open pre-trained transformer language models,2022】系列模型。
- 指令微调模型:Vicuna【索引9, Chiang等人,Vicuna: An open-source chatbot impressing gpt-4 with 90%* chatgpt quality,2023】。
- 多模态模型:OpenFlamingo-9B【索引3, Awadalla等人,Openflamingo,2023】和LLaVA-13B【索引43, Liu等人,Visual instruction tuning,2023】。
- 其他前沿模型:Mistral【索引29, Jiang等人,Mistral 7b,2023】、Mixtral【索引30, Jiang等人,Mixtral of experts,2024】、CodeLlama【索引37, Li等人,Starcoder: may the source be with you!,2023】和VILA【索引42, Lin等人,Vila: On pre-training for visual language models,2024】。
-
硬件配置:
- 桌面GPU:NVIDIA RTX 4090。
- 笔记本GPU:NVIDIA RTX 4070 (8GB 内存)。
- 移动/边缘GPU:NVIDIA Jetson Orin (64GB 内存版本)。
- IoT设备:Raspberry Pi 4B。
-
软件配置:
- 实现框架:AWQ使用PyTorch前端实现,TinyChat推理系统后端针对CUDA/PTX、Neon、AVX等指令集进行了优化。
- 基线实现:Huggingface Transformers (FP16)、GPTQ、AutoGPTQ、llama.cpp、exllama。
-
评估任务与数据集:
- 语言建模:在WikiText-2【索引48, Merity等人,Pointer sentinel mixture models,2016】上评估困惑度(Perplexity)。
- 指令遵循:使用GPT-4评估Vicuna模型在80个样本问题上的回答质量。
- 多模态-图像描述:在COCO Captioning【索引8, Chen等人,Microsoft coco captions: ´ Data collection and evaluation server,2015】数据集上评估OpenFlamingo-9B。
- 多模态-视觉语言基准:在11个基准上评估VILA,包括VQA-v2, GQA, MMBench等。
- 代码生成:在MBPP【索引2, Austin等人,Program synthesis with large language models,2021】数据集上评估CodeLlama-7b-Instruct-hf。
- 数学推理:在GSM8K【索引12, Cobbe等人,Training verifiers to solve math word problems,2021】数据集上评估Llama-2。
A4 实验结果
语言建模性能 (LLaMA & Mistral/Mixtral)
* 实验内容: 在LLaMA、Llama-2、Mistral和Mixtral等模型家族上,对不同尺寸的模型进行INT4/INT3量化,并在WikiText-2上评估困惑度。
* 实验结果:
* 如表4所示,对于LLaMA和Llama-2模型(7B到70B),AWQ的困惑度始终优于RTN和GPTQ(包括使用重排序的版本)。
* 如表5所示,AWQ在Mistral-7B和Mixtral-8x7B等采用GQA和MoE架构的新模型上也表现出色,证明了其对不同模型架构的有效性。
* 分析结论: AWQ在各种规模和架构的基础语言模型上均能实现比现有SOTA方法更低的量化误差。
表 4. AWQ在不同模型尺寸和不同位精度下均优于四舍五入量化(RTN)。在LLaMA和Llama-2模型上,它始终比GPTQ(有/无重排序)获得更好的困惑度。
表 5. AWQ在Mistral-7B-Instructv0.2和Mixtral-8x7B-Instruct-v0.1模型上的量化结果。在wikitext上的PPL结果表明,AWQ可以在包括GQA和MoE模型在内的不同模型架构上实现卓越的量化性能。
泛化能力评估 (指令微调与多模态模型)
* 实验内容:
1. 对指令微调模型Vicuna(7B和13B)进行INT3量化,并使用GPT-4评分评估其与FP16版本的对话质量。
2. 对多模态模型OpenFlamingo-9B、LLaVA-13B和VILA进行INT4量化,并在COCO图像描述、视觉推理和11个视觉语言基准上进行评估。
* 实验结果:
* Vicuna: 如图5所示,AWQ量化后的模型在GPT-4评分中胜过RTN和GPTQ,表现出更强的指令遵循能力。
* OpenFlamingo: 如表6所示,在零样本和少样本设置下,AWQ均优于现有方法,将32-shot下的量化性能下降从4.57(CIDEr)减少到1.17,实现了4倍模型压缩且性能损失可忽略。图7的定性结果也显示AWQ生成的图像描述质量更高。
* VILA: 如表7所示,AWQ在11个视觉语言基准上均实现了无损的量化性能。
* LLaVA: 如图6所示,AWQ量化后的LLaVA-13B在视觉推理任务上能提供比RTN更合理、更准确的回答。
* 分析结论: AWQ具有出色的泛化能力,因为它不依赖于特定任务的校准集重构,能够有效保持模型在指令遵循、多模态理解和上下文学习等复杂任务上的能力。
图 5. 在GPT-4评估协议下比较INT3-g128量化的Vicuna模型与FP16对应模型。更多的获胜案例(蓝色)表示更好的性能。AWQ与RTN和GPTQ相比,持续提高了量化性能,显示出对指令调优模型的泛化能力。
表 6. 视觉语言模型OpenFlamingo-9B在COCO Captioning数据集上的量化结果。激活感知权重量化在零样本和各种少样本设置下均优于现有方法,展示了其对不同模态和上下文学习工作负载的泛化能力。激活感知权重量化在INT4-g128下将量化退化(32-shot)从4.57降至1.17,以可忽略的性能损失提供了4倍的模型大小缩减。
表 7. VILA-7B和VILA-13B在11个视觉语言基准上的INT4-g128结果。AWQ在所有基准上始终表现出无损性能。基准名称因空间限制而缩写。
图 6. LLaVA-13B模型的视觉推理示例。AWQ相比于四舍五入(RTN)基线有所改进,提供了更合理的答案。我们用颜色标记文本以显示正确或错误的响应。
图 7. 在COCO字幕数据集上量化的OpenFlamingo-9B的定性结果(4-shot,INT4-g128量化)。与四舍五入(RTN)基线相比,我们的方法显著提高了字幕质量。我们用颜色标记文本以显示正确或错误的字幕。
复杂推理任务 (编程与数学)
* 实验内容: 对CodeLlama-7b和Llama-2模型进行INT4量化,分别在MBPP(编程)和GSM8K(数学)数据集上进行评估。
* 实验结果: 如表8所示,AWQ在两个数据集上均优于现有方法,其INT4-g128配置的性能与原始FP16模型相当。
* 分析结论: AWQ能够保留模型在需要复杂逐步推理的生成任务上的性能。
表 8. CodeLlama-7b-Instruct-hf在MBPP数据集上和Llama-2(7B/13B/70B)在GSM8K数据集上的INT4-g128量化结果。AWQ在编程和数学数据集上均优于现有方法,展示了其在不同场景和评估设置下的泛化能力。值得注意的是,AWQ在INT4-g128配置下,在两个数据集上均表现出与原始FP16模型相当的性能。
极端低比特量化 (INT2)
* 实验内容: 对OPT模型进行INT2量化。
* 实验结果: 如表9所示,RTN完全失效,而AWQ在GPTQ的基础上带来了显著的困惑度改善。将AWQ与GPTQ结合使用,可以进一步提升INT2量化性能。
* 分析结论: AWQ与GPTQ是正交的,可以组合使用以应对极端内存限制的场景。
表 9. 我们的方法与GPTQ正交:当与GPTQ结合使用时,它能进一步缩小在极端低比特量化(INT2-g64)下的性能差距。结果是OPT模型在WikiText-2上的困惑度。
数据效率与鲁棒性
* 实验内容: 1. 改变校准集大小,评估OPT-6.7B的量化性能。2. 使用不同领域(PubMed, Enron Emails)的数据进行交叉校准和评估。
* 实验结果: 如图8所示:
* AWQ数据效率更高,使用比GPTQ小10倍的校准集(16个序列 vs 192个)即可达到更好的性能。
* AWQ对校准集分布更鲁棒。当校准集和评估集分布不同时,AWQ的困惑度仅增加0.5-0.6,而GPTQ则恶化2.3-4.9。
* 分析结论: AWQ对校准集依赖小,使其在实际应用中更可靠、更易用。
图 8. 左:AWQ需要更小的校准集才能达到良好的量化性能。与GPTQ相比,它使用10倍小的校准集就能实现更好的困惑度。右:我们的方法对校准集分布更具鲁棒性。总的来说,使用相同的校准和评估分布效果最好(PubMed-PubMed,Enron-Enron)。但是当使用不同的校准分布时(PubMed-Enron,Enron-PubMed),AWQ的困惑度仅增加0.5-0.6,而GPTQ的困惑度则差2.3-4.9。所有实验均在OPT-6.7B模型上以INT3-g128量化完成。
系统加速性能 (TinyChat)
* 实验内容: 在RTX 4090、Jetson Orin、RTX 4070等平台上,评估TinyChat对4-bit AWQ量化模型的推理加速效果,并与Huggingface FP16、AutoGPTQ、llama.cpp等系统进行比较。
* 实验结果:
* 与FP16对比: 如图9所示,在RTX 4090和Jetson Orin上,TinyChat相比Huggingface FP16实现对Llama-2、MPT、Falcon等模型平均带来3.2-3.3倍的加速。同时,它使得Llama-2-13B能在仅有8GB内存的笔记本RTX 4070上以33 tokens/s的速度运行。
* VLM加速: 如表10所示,TinyChat为VILA-7B和VILA-13B带来了约3倍的加速。
* 与其他系统对比: 如图10所示,在Jetson Orin上,TinyChat比llama.cpp快1.7倍,比AutoGPTQ快2.6倍以上,并支持更广泛的模型。它甚至能在树莓派4B上以0.7 tokens/s的速度运行7B模型。
* 分析结论: TinyChat成功将AWQ的理论内存优势转化为显著的实际推理加速, democratizing(普及了)在各种边缘设备上部署LLM。
图 9. TinyChat提供了一个一站式解决方案,将理论上的内存占用减少转化为可量化的加速。因此,在4090(桌面GPU)和Orin(移动GPU)上,TinyChat分别比Huggingface的FP16实现快了高达3.9倍和3.5倍。AWQ还普及了在仅有8GB内存的笔记本GPU(4070)上部署Llama-2-13B。
表 10. TinyChat还支持在多个GPU平台上无缝部署VILA,这是一种最先进的视觉语言模型。利用我们的4位AWQ量化技术,TinyChat将VILA-7B加速高达3.1倍,VILA-13B加速高达2.9倍。
图 10. 在NVIDIA Jetson Orin上运行4位量化的Llama模型时,TinyChat比现有系统快1.2-3.0倍。它还支持各种通用和特定于编码的LLM,比同样支持这些工作负载的AutoGPTQ快至少2.6倍。此外,TinyChat可在树莓派上无缝运行,并能在资源极其受限的物联网设备上部署高达70亿参数的LLM。
A5 结论
本文提出了激活感知权重量化(AWQ),一种简单而有效的低比特纯权重量化LLM压缩方法。该方法基于LLM中权重重要性不均等的观察,通过逐通道缩放来减小显著权重的量化损失。由于AWQ不依赖于对校准集的过拟合,它能很好地保留LLM在不同领域和模态上的泛化能力,其性能在语言建模任务上超越了现有工作,并成功应用于指令微调模型和多模态模型。此外,配套的TinyChat推理系统将AWQ的理论内存节省转化为了实际的性能提升,在桌面和移动GPU上相比FP16实现取得了3.2-3.3倍的实测加速,极大地推动了LLM在边缘设备上的部署和普及。
💬 评论讨论
欢迎在这里分享您的想法和见解!