AWQ: ACTIVATION-AWARE W EIGHT QUANTIZATION FOR ON-DEVICE LLM COMPRESSION AND ACCELERATION阅读

ABSTRACT

大型语言模型(LLM)已经改变了众多人工智能(AI)应用。在设备上运行的LLM变得越来越重要:在边缘设备上本地运行LLM可以降低云计算成本并保护用户隐私。然而,模型体积庞大和硬件资源有限给部署带来了重大挑战。我们提出了激活感知权重量化(AWQ),这是一种对硬件友好的LLM仅低比特权重量化方法。AWQ发现,在LLM中,并非所有权重都同等重要。只需保护1%的显著权重,就能大幅降低量化误差。为了识别显著权重通道,我们应参考激活分布,而非权重。为了避免硬件效率低下的混合精度量化,我们从数学上推导出,放大显著通道可以减少量化误差。AWQ采用了一种等效变换来放大显著权重通道以保护它们。该放大比例是通过离线收集激活统计信息来确定的。AWQ不依赖于任何反向传播或重构,因此能够泛化到不同领域和模态,而不会出现过拟合校准集的情况。在各种语言建模和特定领域基准测试(如编码和数学)中,AWQ的表现优于现有工作。得益于更好的泛化能力,它在指令调优的语言模型(LM)上实现了出色的量化性能,并且首次在多模态语言模型(VLM)上实现了这一性能。除了AWQ,我们还实现了TinyChat,这是一个高效且灵活的推理框架,专为4比特在设备上的LLM/VLM量身定制。通过内核融合和平台感知权重打包,TinyChat在桌面和移动GPU上比Huggingface的FP16实现快3倍以上。它还使得70B参数的Llama-2模型能够在移动GPU上实现民主化部署。

1 INTRODUCTION

直接在边缘设备上部署大型语言模型(LLM)至关重要。设备端使用消除了将数据发送到云服务器所引起的延迟,并使LLM能够离线运行,这对虚拟助手、聊天机器人和自动驾驶汽车等实时应用大有裨益。同时,维护和扩展集中式云基础设施的运营成本也可随之降低。此外,通过将敏感信息保存在本地,LLM在设备端运行还增强了数据安全,减少了数据泄露的风险。LLM基于Transformer架构(Vaswani等,2017),在各类基准测试(Brown等,2020;Zhang等,2022;Touvron等,2023a;Scao等,2022)中展现出了卓越性能,因此备受瞩目。然而,模型体积庞大导致服务成本高昂。例如,GPT-3拥有1750亿个参数,在FP16格式下占用350GB空间,而最新的B200 GPU仅有192GB内存,边缘设备更是望尘莫及。对LLM进行低比特权重量化可以显著减少设备端LLM推理的内存占用,但实施起来颇为困难。量化感知训练(QAT)因训练成本高昂而效率不高,而训练后量化(PTQ)在低比特设置下会导致较大的精度损失。最接近的研究工作是GPTQ(Frantar等,2022),它利用二阶信息进行误差补偿。然而,在重构过程中,它可能会过度拟合校准集,导致对分布外域(Figure 8)的已学习特征产生扭曲,这对于通用模型LLM而言是个问题。

在本文中,我们提出了激活感知权重量化(AWQ),这是一种针对LLM的硬件友好型低比特仅权重量化方法。我们的方法基于以下观察:对于LLM的性能而言,权重并非同等重要。存在一小部分(0.1%-1%)显著权重;不对这些显著权重进行量化将显著减少量化损失(Table 1)。为了找到显著权重通道,我们的见解是,尽管我们仅对权重进行量化,但应参考激活分布而非权重分布:对应较大激活幅度的权重通道更为显著,因为它们处理的是更重要的特征。为了避免硬件效率低下的混合精度实现,我们分析了权重量化带来的误差,并推导出放大显著通道可以减少其相对量化误差(Equation 2)。基于这一直觉,我们设计了一种逐通道缩放方法,以自动搜索在全权重量化下使量化误差最小的最优缩放。AWQ不依赖于任何反向传播或重构,因此能够很好地保留LLM在各种领域和模态上的泛化能力,而不会过度拟合校准集。

为了实施AWQ,我们设计了TinyChat,这是一个高效的推理框架,可将4比特LLM的理论内存节省转化为实测加速。我们的框架通过即时去量化显著加快了线性层的速度。我们还利用高效的4比特权重打包和内核融合来最小化推理开销(例如,中间DRAM访问和内核启动开销),从而尽管计算机是字节对齐的,我们仍能更好地实现将权重量化到4位所带来的加速。

实验表明,AWQ在不同模型家族(例如,LLaMA(Touvron等,2023a),OPT(Zhang等,2022))和模型大小的各种任务上均优于现有工作。得益于更好的泛化能力,它还为指令调优的语言模型(例如,Vicuna)以及首次为多模态语言模型(OpenFlamingo(Awadalla等,2023))实现了良好的量化性能。TinyChat进一步将约4倍的低内存占用转化为实测加速。在台式机、笔记本电脑和移动GPU上,我们观察到与Huggingface的FP16实现相比,各类LLM的平均加速比为3.2-3.3倍。此外,它促进了Llama-2-70B模型在单个NVIDIA Jetson Orin(64GB内存)上的无缝部署。它还使得13亿参数的LLM能够在仅有8GB内存的笔记本电脑RTX 4070 GPU上以每秒30个令牌的交互速度运行。AWQ已被业界和开源社区广泛采用:HuggingFace Transformers、NVIDIA TensorRT-LLM、Microsoft DirectML、Google Vertex AI、Intel Neural Compressor、Amazon SageMaker、AMD、FastChat、vLLM、LMDeploy,并使Falcon 180B能够在单个H200 GPU上部署。

2 RELATED WORK

模型量化方法。量化降低了深度学习模型的位精度(Han等人,2016;Jacob等人,2018;Nagel等人,2019;Wang等人,2019;Nagel等人,2020;Lin等人,2020),这有助于减小模型大小并加速推理。量化技术通常分为两类:量化感知训练(QAT,依赖反向传播来更新量化权重)(Bengio等人,2013;Gholami等人,2021;Nagel等人,2021;Choi等人,2018)和训练后量化(PTQ,通常无需训练)(Jacob等人,2018;Nagel等人,2019;2020)。QAT方法难以扩展到大模型,如大型语言模型(LLMs)。因此,人们通常使用PTQ方法来量化LLMs。

LLMs的量化。人们研究LLMs量化的两种设置:(1)W8A8量化,其中激活和权重都被量化为INT8(Dettmers等人,2022;Xiao等人,2022;Yao等人,2022;Wei等人,2022a;2023);(2)低比特仅权重量化(例如W4A16),其中仅权重被量化为低比特整数(Frantar等人,2022;Dettmers & Zettlemoyer,2022;Sheng等人,2023;Park等人,2022)。本文聚焦于第二种设置,因为它不仅降低了硬件障碍(需要更小的内存大小),还加速了令牌生成(解决了内存密集型工作负载)。除了最基本的四舍五入基线(RTN)外,GPTQ(Frantar等人,2022)与我们的工作最为接近。然而,GPTQ的重构过程会导致对校准集的过拟合问题,可能无法保留LLMs在其他模态和领域中的通用能力。它还需要一种重排序技巧才能适用于某些模型(例如,LLaMA-7B(Touvron等人,2023a)和OPT-66B(Zhang等人,2022))。除了为通用硬件设计的量化方法外,SpAtten(Wang等人,2020)设计了一种渐进方法,逐步增加softmax计算中使用的位数。

低比特量化LLMs的系统支持。低比特量化LLMs已成为降低推理成本的一种流行设置。有一些系统支持可以实现实际的速度提升。GPTQ(Frantar等人,2022)为OPT模型提供了INT3内核,GPTQ-for-LLaMA借助Triton(Tillet等人,2019)扩展了对INT4重排序量化的内核支持。FlexGen(Sheng等人,2023)、llama.cpp*和exllama†执行组级INT4量化,以减少I/O成本和卸载。Faster Transformer实现了FP16×INT4通用矩阵乘法(GEMM),用于仅权重的逐张量量化,但不支持组量化。LUT-GEMM(Park等人,2022)在GPU CUDA内核上借助查找表执行位运算。我们的同期工作MLC-LLM(MLC团队,2023)得益于强大的TVM(Chen等人,2018;Feng等人,2023)后端,在多个边缘CPU和GPU平台上取得了显著成果。

3 AWQ:ACTIVATION-AWAREWEIGHT QUANTIZATION

量化将浮点数映射到低位整数。这是一种有效的方法,可以减小大型语言模型(LLMs)的模型大小和推理成本(Dettmers等,2022;Frantar等,2022;Yao等,2022;Xiao等,2022)。在本节中,我们首先提出一种仅对权重进行量化的方法,通过保护更多“重要”的权重来提高准确性,而不需要训练或回归。然后,我们开发了一种数据驱动的方法,以搜索最佳缩放因子,从而减少量化误差(图2)。

3.1 通过保留1%的显著权重来改善LLM量化

我们观察到LLMs的权重并非同等重要:有一小部分显著权重对LLMs的性能比其他权重更为重要。跳过这些显著权重的量化可以在没有任何训练或回归的情况下(图2(b))帮助弥补量化损失造成的性能下降。为了验证这一想法,我们在表1中对量化后的LLMs的性能进行了基准测试,跳过了部分权重通道。

我们测量了INT3量化模型的性能,同时保留了一些比例的FP16权重通道。一个广泛使用的方法是通过权重的大小或L2范数来确定其重要性(Han等,2015;Frankle & Carbin,2018)。但我们发现,跳过具有大范数权重通道(即基于W的FP16%)并不能显著提高量化性能,导致的提升与随机选择相似。有趣的是,即使只保留0.1%-1%的通道在FP16中,基于激活幅度选择权重也能显著提高性能。我们假设输入特征具有较大幅度通常更为重要。保留对应的权重在FP16中可以保留这些特征,从而有助于更好的模型表现。

3.2 通过激活感知缩放保护显著权重

尽管保留0.1%的权重在FP16中可以提高量化性能而不会显著增加模型大小(以总位数衡量),这种混合精度数据类型会使系统实现变得困难。因此,我们需要提出一种方法来保护重要权重,而无需实际保留它们在FP16中。

我们提出了一种替代方法,通过每通道缩放来减少显著权重的量化误差,这不会有硬件效率问题。

分析量化误差

我们首先分析权重量化造成的误差。考虑一个权重组/块 ( w ),线性操作可写为 ( y = wx ),量化后的对应操作是 ( y = Q(w)x )。具体而言,量化函数定义为:

Q ( w ) = Δ ⋅ Round ( w Δ ) , Δ = max ⁡ ( ∣ w ∣ ) 2 N − 1 Q(w) = \Delta \cdot \text{Round}\left( \frac{w}{\Delta} \right), \Delta = \frac{\max(|w|)}{2^N-1} Q(w)=ΔRound(Δw),Δ=2N1max(w)

其中 ( N ) 是量化位数,( \Delta ) 是由绝对最大值确定的量化标度因子。现在考虑权重元素 ( w \in w ),如果我们将 ( w ) 乘以 ( s > 1 ) 并反向缩放 ( x ),我们将得到:

Q ( w ⋅ s ) ( x s ) = Δ ′ ⋅ Round ( w s Δ ′ ) ⋅ x ⋅ 1 s Q(w \cdot s)(\frac{x}{s}) = \Delta' \cdot \text{Round}\left( \frac{ws}{\Delta'} \right) \cdot x \cdot \frac{1}{s} Q(ws)(sx)=ΔRound(Δws)xs1

其中 ( \Delta’ ) 是应用 ( s ) 后的新量化标度因子。我们经验性地发现:(1)来自Round(·)的预期误差(记作RoundErr(·))不变:由于舍入函数将浮点数映射到整数,误差大致均匀分布在[0,0.5],导致平均误差为0.25;即RoundErr(·)≈0.25;(2)通常在组 ( w ) 中缩放单个元素 ( w ) 不会改变最大值。因此我们有 ( \Delta’ ≈ \Delta );(3)由于 ( \Delta ) 和 ( x ) 以FP16表示,它们没有量化误差。因此,方程1和2的量化误差可以表示为:

Err ( Q ( w ) x ) = Δ ⋅ RoundErr ( w Δ ) ⋅ x \text{Err}(Q(w)x) = \Delta \cdot \text{RoundErr}\left( \frac{w}{\Delta} \right) \cdot x Err(Q(w)x)=ΔRoundErr(Δw)x

Err ( Q ( w ⋅ s ) ( x s ) ) = Δ ′ ⋅ RoundErr ( w s Δ ′ ) ⋅ x ⋅ 1 s \text{Err}(Q(w \cdot s) \left( \frac{x}{s} \right)) = \Delta' \cdot \text{RoundErr}\left( \frac{ws}{\Delta'} \right) \cdot x \cdot \frac{1}{s} Err(Q(ws)(sx))=ΔRoundErr(Δws)xs1

新误差相对于原始误差的比例为:

Δ ′ Δ ⋅ 1 s \frac{\Delta'}{\Delta} \cdot \frac{1}{s} ΔΔs1

由于 ( \Delta’ ≈ \Delta ) 并且 ( s > 1 ),显著权重 ( w ) 的相对误差较小。

为了验证这一想法,我们将1%的显著通道乘以 ( s > 1 ) 进行OPT-6.7B模型,并测量每组中 Δ \Delta Δ 的变化。在表2中,我们发现增加显著通道的缩放因子是非常有效的:困惑度从23.54(当 s = 1 s = 1 s=1 时,仅使用RTN)提高到11.92(当 ( s = 2 ) 时)。随着 ( s ) 增大,变化的 Δ \Delta Δ 百分比通常会变大,但对于 ( s < 2 ) 仍然很小(少于5%);显著通道的相对误差随着 ( s ) 增加继续变小。然而,最佳PPL实际上出现在 ( s = 2 ) 时。这是因为如果我们使用非常大的 ( s ),当 Δ \Delta Δ 增加时会增加非显著通道的相对误差(非显著通道的误差将被 Δ ′ / Δ \Delta' / \Delta Δ 放大,并且在 ( s = 4 ) 时有21.2%的通道的比例大于1),这可能会损害模型的整体准确性。因此,在保护显著通道时,我们还需要考虑非显著通道的误差。

缩放搜索

为了同时考虑显著和非显著权重,我们选择自动搜索最优(每个输入通道)缩放因子,以最小化某一层量化后的输出差异。形式上,我们希望优化以下目标:

s ∗ = arg ⁡ min ⁡ s L ( s ) s^* = \arg\min_s L(s) s=argsminL(s)

L ( s ) = ∥ Q ( W ⋅ diag ( s ) ) ( diag ( s ) − 1 ⋅ X ) − W X ∥ L(s) = \|Q(W \cdot \text{diag}(s))(\text{diag}(s)^{-1} \cdot X) - WX\| L(s)=Q(Wdiag(s))(diag(s)1X)WX

这里 ( Q ) 代表权重量化函数(例如,组大小为128的INT3/INT4量化),( W ) 是FP16中的原始权重,( X ) 是从小校准集缓存的输入特征(我们从预训练数据集中提取小校准集,以避免过拟合特定任务)。( s ) 是每(输入)通道缩放因子;对于 diag ( s ) − 1 ⋅ X \text{diag}(s)^{-1} \cdot X diag(s)1X,它通常可以融合到前一个操作中(Wei等,2022b;Xiao等,2022)。由于量化函数不可微,我们无法直接用普通的反向传播优化问题。有一些依赖近似梯度的技术(Bengio等,2013;Esser等,2019),我们发现这些技术仍然存在不稳定的收敛问题。

为了使过程更加稳定,我们通过分析影响缩放因子选择的因素来定义一个搜索空间。如前所述,权重通道的显著性实际上由激活幅度决定(因此称为“激活感知”)。因此,我们使用一个非常简单的搜索空间:

s = s X α , α ∗ = arg ⁡ min ⁡ α L ( s X α ) s = s_X^\alpha, \alpha^* = \arg\min_{\alpha} L(s_X^\alpha) s=sXα,α=argαminL(sXα)

其中 s X s_X sX 是激活的平均幅度(每通道),我们使用单个超参数 α \alpha α来平衡显著和非显著通道的保护。我们可以通过快速网格搜索在[0,1]区间内找到最佳 α \alpha α(0表示不缩放;1对应于搜索空间中最激进的缩放)。
我们进一步应用权重剪裁以最小化量化的MSE误差。在表5中,我们对INT3-g128量化下的OPT模型进行了消融研究;AWQ在硬件友好的情况下,一直优于最接近舍入量化(RTN),并且实现了与混合精度(1% FP16)相当的性能。

优点

我们的方法不依赖于任何回归(Frantar等,2022)或反向传播,这是许多量化感知训练方法所需的。它对校准集的依赖最小,因为我们只测量每通道的平均幅度,从而防止过拟合(图8)。因此,我们的方法在量化过程中需要更少的数据,并且可以保留校准集分布之外的LLMs知识。更多细节请参阅第5.3节。

4 TINYCHAT: MAPPING AWQ ONTO EDGE PLATFORMS

AWQ可以显著减少LLMs(大型语言模型)的大小。然而,将W4A16(4位权重,16位激活)量化的理论内存节省转化为实际的速度提升并非易事。另一种W8A8量化方法,如SmoothQuant(Xiao等人,2022),在存储和计算中保持相同的数据精度。这使得反量化过程能够无缝集成到计算内核的尾声部分。另一方面,W4A16量化在内存访问和计算中使用不同的数据类型。因此,为了获得最佳性能,其反量化必须融入主计算循环中,这给实现带来了挑战。为了解决这一问题,我们推出了TinyChat:一个用于AWQ模型推理的灵活系统。它拥有一个PyTorch前端和一个利用设备特定指令集(如CUDA/PTX、Neon、AVX)的后端。

4.1 为什么AWQ有助于加速设备上的LLMs

为了了解量化LLMs在边缘设备上的加速机会,我们首先分析了在RTX 4090 GPU上LLaMA-7B(Touvron等人,2023a)模型的延迟分布。我们采用了适用于边缘用例的推理批大小为1,并使用NVIDIA FasterTransformer在FP16中实现了该模型。

上下文与生成延迟。如图3(a)所示,生成20个令牌需要310毫秒,而总结一个包含200个令牌的提示仅需10毫秒。因此,生成阶段明显慢于上下文阶段,特别是在设备上的交互式应用中。

生成阶段是内存受限的。为了加速生成阶段,我们进行了如图3(b)所示的屋顶线分析。4090 GPU的峰值计算吞吐量为165 TFLOPS,内存带宽为1TB/s。因此,任何算术强度(FLOPs与内存访问的比例)小于165的工作负载在4090 GPU上都是内存受限的。值得注意的是,当在FP16中执行时,设备上LLMs的生成阶段算术强度约为1。这突显了工作负载的内存受限特性。由于给定模型的FLOPs是固定的,提高峰值性能的唯一方法是减少总内存流量。AWQ将权重内存减少了四倍。

权重访问主导内存流量。因此,我们进一步在图3(c)中分解了权重和激活的内存访问。显然,权重访问主导了设备上LLMs的内存流量。将模型权重量化为4位整数将大约使算术强度增加到4 FLOPs/Byte,从而在图3(b)中实现4TFLOPS的峰值性能。由于仅权重量化导致权重的位宽降低(从而提高了理论性能上限),因此AWQ自然采用此设置用于设备上的LLM应用。

4.2 使用TinyChat部署AWQ

为此,我们证明了4位权重量化可以实现4倍的理论峰值性能。我们进一步设计了TinyChat来实现这一加速。在GPU上,我们只关注实现关键组件,包括注意力机制、层归一化和线性投影内核。灵活的前端允许轻松定制并快速支持新模型。与Huggingface的FP16实现在不同家族的GPU上LLMs相比,TinyChat结合4位AWQ实现了超过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倍的速度提升。在这里,每个寄存器按w0,w16,w1,w17,…,w15,w31的顺序存储32个4位权重。这种方法只需要3条SIMD指令即可解包所有32个权重,而传统打包(w0,w1,…,w31)中每个权重需要3条标量指令。一般来说,对于2n位SIMD寄存器,相邻权重的索引将相差1/8×2n,因为每个寄存器可以存储1/8×2n个8位整数。在GPU上,我们发现按照(Kim等人,2022)的方法,将每8个权重打包成w{0,2,4,6,1,3,5,7}更为高效。

内核融合。我们还广泛应用内核融合来优化设备上的LLM推理。对于层归一化,我们将所有操作符(如乘法、除法和平方根)融合到一个内核中。对于注意力层,我们将QKV(查询、键、值)投影融合到一个内核中,并即时计算位置嵌入。我们还预先分配KV缓存,并在注意力内核内执行缓存更新。内核融合对于前向传播实现效率较低的模型特别有用,如Falcon(Penedo等人,2023)和StarCoder(Li等人,2023c)。值得注意的是,在4090 GPU上,每个FP16内核的计算时间约为0.01毫秒,与GPU内核启动开销相当。因此,通过内核融合减少内核调用次数可以直接实现速度提升。

5 EXPERIMENTS

5.1 设置

量化。在本文中,我们专注于仅权重的分组量化。如先前工作(Dettmers & Zettlemoyer, 2022; Frantar et al., 2022)所示,分组量化总是有助于改善性能/模型大小的权衡。除非另有说明,否则我们在整个工作中使用了128的组大小。我们重点关注INT4/INT3量化,因为它们能够最大程度地保留LLMs(大型语言模型)的性能(Dettmers & Zettlemoyer, 2022)。对于自适应权重量化(AWQ),我们使用了来自Pile(Gao et al., 2020)数据集的一个小校准集,以避免过度拟合到特定的下游领域。我们使用了一个大小为20的网格来搜索方程5中的最优α值。

模型。我们在LLaMA(Touvron et al., 2023a)和OPT(Zhang et al., 2022)系列模型上对我们的方法进行了基准测试。还有其他开源的LLMs,如BLOOM(Scao et al., 2022),但它们在质量上通常较差,因此我们没有将它们纳入本研究。我们还进一步对指令调优模型Vicuna(Chiang et al., 2023)以及视觉语言模型OpenFlamingo-9B(Awadalla et al., 2023)和LLaVA-13B(Liu et al., 2023a)进行了基准测试,以证明我们方法的通用性。

评估。遵循先前的文献(Dettmers et al., 2022; Xiao et al., 2022; Frantar et al., 2022; Dettmers & Zettlemoyer, 2022; Yao et al., 2022),我们主要在语言建模任务(在WikiText-2(Merity et al., 2016)上的困惑度评估)上对量化模型进行了评估,因为困惑度可以稳定地反映LLMs的性能(Dettmers & Zettlemoyer, 2022)。

基线。我们的主要基线是普通的四舍五入到最近值量化(RTN)。当使用像128这样的小组大小时,它实际上相当强大(Frantar et al., 2022; Dettmers & Zettlemoyer, 2022)。我们还与最先进的LLM权重量化方法GPTQ(Frantar et al., 2022)进行了比较。对于GPTQ,我们还与使用了“重排序”技巧(表示为GPTQ-Reorder或GPTQ-R)的更新版本进行了比较。其他技术,如ZeroQuant(Yao et al., 2022)、AdaRound(Nagel et al., 2020)和BRECQ(Li et al., 2021),依赖于反向传播来更新量化权重,这可能不太容易扩展到大型模型;它们也没有超越GPTQ(Frantar et al., 2022),因此没有纳入本研究。

5.2 评估

LLaMA模型的结果。我们重点关注LLaMA模型(包括LLaMA(Touvron et al., 2023a)和Llama-2(Touvron et al., 2023b)),因为与其他开源LLMs(如Zhang et al., 2022; Scao et al., 2022)相比,它们具有卓越的性能;同时,它们也是许多受欢迎的开源模型(如Taori et al., 2023; Chiang et al., 2023)的基础。我们在表4中评估了量化前后的困惑度。自适应权重量化(AWQ)在不同模型规模(7B-70B)和代际间,始终优于四舍五入到最近值(RTN)和GPTQ(Frantar et al., 2022)(无论是否使用重排序)。

Mistral/Mixtral模型的结果。我们还评估了AWQ在Mistral和Mixtral模型上的表现,这两个模型分别是最受欢迎的开源LLMs和专家混合(MoE)模型之一(Jiang et al., 2023; 2024)。结果表明,AWQ在Mistral和Mixtral模型上都取得了优越的性能。这证明了AWQ在各种模型架构中都是有效的。

指令调优模型的量化。指令调优可以显著提高模型的性能和可用性(Wei et al., 2021; Sanh et al., 2021; Ouyang et al., 2022; Chung et al., 2022)。它已成为模型部署前必不可少的程序。我们在图5中进一步评估了我们的方法在流行的指令调优模型Vicuna(Chiang et al., 2023)上的性能。我们使用GPT-4评分来评估量化模型与FP16对应版本在80个样本问题上的性能。我们比较了两种顺序(量化-FP16,FP16-量化)的响应,以消除顺序效应(我们发现GPT-4倾向于提高第一个输入的评分),从而进行了160次试验。AWQ在两个规模(7B和13B)下,相对于RTN和GPTQ,始终改善了INT3-g128量化的Vicuna模型,证明了AWQ对指令调优模型具有通用性。

多模态语言模型的量化。大型多模态模型(LMMs)或视觉语言模型(VLMs)是增强了视觉输入的LLMs(Alayrac et al., 2022; Li et al., 2023b; Koh et al., 2023; Driess et al., 2023; Zhang et al., 2023; Liu et al., 2023a)。这些模型能够根据图像/视频输入进行文本生成。由于我们的方法不存在对校准集的过拟合问题,因此可以直接应用于VLM,以提供准确且高效的量化。我们在COCO字幕(Chen et al., 2015)数据集上对OpenFlamingo-9B模型(Awadalla et al., 2023)(Alayrac et al., 2022的开源复现)进行了实验(表6)。我们测量了在不同少样本设置下5000个样本的平均性能。由于语言部分占主导地位,因此我们只量化模型的语言部分。AWQ在零样本和各种少样本设置下均优于现有方法,证明了AWQ对不同模态和上下文学习工作负载的通用性。在INT4-g128下,它将量化退化(32个样本)从4.57降低到1.17,在模型大小减少4倍的同时,性能损失可忽略不计。为了进一步证明AWQ的通用性,我们还评估了AWQ在最新的多图像视觉语言模型VILA上的表现。表7的结果显示,AWQ在11个视觉语言基准上实现了无损量化性能。我们还在图7中提供了一些定性字幕结果,以展示我们相对于RTN的优势。我们的方法为LMM/VLM量化提供了一种一键式解决方案。据我们所知,这是关于VLM低比特量化的首项研究。

视觉推理结果。我们在图6中进一步提供了LLaVA-13B(Liu et al., 2023a)模型的定性视觉推理示例。与INT4-g128量化的四舍五入到最近值(RTN)相比,AWQ改进了响应,从而得出了更合理的答案。在第一个示例中,AWQ模型能够理解其从太空看时类似于地球的记忆,而RTN则产生了错误的描述(用红色标记)。

编程和数学任务的结果。为了进一步评估AWQ在涉及复杂生成任务上的性能,我们还测试了AWQ在MBPP(Austin et al., 2021)和GSM8K(Cobbe et al., 2021)上的表现。MBPP包含约1000个Python编程问题,旨在由入门级程序员解决,涵盖编程基础、标准库功能等。GSM8K是为了支持基本数学问题的问答任务而创建的,这些问题需要多步推理。我们将CodeLlama-7b-Instruct-hf和Llama-2量化为INT4-g128,并在编程和数学数据集上进行了实验(表8)。AWQ在两个数据集上都优于现有方法,证明了AWQ对复杂生成的通用性。在INT4-g128配置下,AWQ在两个数据集上的性能都与原始FP16模型相当。

极低比特量化。我们进一步将LLM量化为INT2,以适应有限的设备内存(表9)。四舍五入到最近值(RTN)完全失败,而AWQ在GPTQ的基础上带来了显著的困惑度改进。我们的方法与GPTQ是正交的。我们可以将我们的方法与GPTQ相结合,以进一步改善INT2量化性能,使其成为一个更实用的设置。

5.3 数据效率与泛化能力

校准集的数据效率更高。我们的方法所需的校准集更小,因为我们不依赖回归/反向传播;我们仅测量校准集的平均激活尺度,这种方法数据效率更高。为了说明这一点,我们在图8(a)中比较了OPT-6.7B模型与INT3-g128量化的困惑度。AWQ(自适应权重量化)达到良好量化性能所需的校准集要小得多;与GPTQ(生成式预训练Transformer量化)相比,使用小10倍的校准集(16个序列对比192个序列),AWQ即可实现更好的困惑度。

对校准集分布具有鲁棒性。我们的方法对校准集分布的敏感性较低,因为我们仅测量校准集的平均激活尺度,这在不同数据集分布中更具泛化能力。我们在图8(b)中进一步评估了不同校准集分布的影响。我们从Pile数据集(Gao等,2020)中选取了两个子集:PubMed摘要和Enron电子邮件(Klimt&Yang,2004)。我们将每个子集作为校准集,并在两个子集上评估量化模型(校准集和评估集没有重叠;我们使用1000个样本进行评估)。总体而言,使用相同的校准集和评估集分布效果最佳(PubMed-PubMed,Enron-Enron)。但是,当使用不同的校准集分布时(PubMed-Enron,Enron-PubMed),AWQ的困惑度仅增加0.5-0.6,而GPTQ的困惑度则恶化2.3-4.9。这证明了AWQ对校准集分布的鲁棒性。

5.4 加速评估

设置。在图9中,我们展示了TinyChat的系统加速结果。TinyChat优化了线性层以及没有量化权重的层。我们按照exllama‡中描述的协议,在RTX4090和Jetson Orin上进行了基准测试实验。我们对所有大型语言模型(LLM)使用批量大小=1的推理,固定提示长度为4个标记。我们为每个推理运行生成200个标记,并将中位延迟作为最终结果。

结果。如图9(a)所示,与Huggingface的FP16实现相比,TinyChat在4090上为三个系列的大型语言模型(Llama-2、MPT和Falcon)带来了2.7-3.9倍的加速。对于Llama-2-7B,我们通过FP16内核融合将推理速度从52个标记/秒提高到62个标记/秒。在更强大的FP16基线之上,我们进一步从快速量化线性内核中获得了3.1倍的额外加速。对于Falcon-7B,其官方实现在推理期间未能正确支持键值(KV)缓存,因此比其他模型慢得多。在这种情况下,我们的FP16优化带来了更大的1.6倍加速。在只有8GB内存的笔记本电脑4070 GPU上,我们仍然能够以33个标记/秒的速度运行Llama-2-13B模型,而FP16实现则无法容纳7B模型。我们还展示了视觉-语言模型(Lin等,2024)的加速结果,如表10所示。TinyChat在NVIDIA Jetson Orin上为VILA-7B和VILA-13B带来了约3倍的加速。值得注意的是,我们使用原生的PyTorch API实现了所有AWQ模型的前向传播,并且该代码可在各种GPU架构上重用。因此,TinyChat提供了出色的可扩展性。

与其他系统的比较。在图10中,我们将TinyChat与现有的边缘大型语言模型推理系统AutoGPTQ、llama.cpp和exllama进行了比较。我们的系统在Orin上比llama.cpp快1.7倍。此外,llama.cpp和exllama的适应性有限,主要针对LLaMA和Llama-2模型。相比之下,我们的TinyChat支持广泛的应用,包括StarCoder(Li等,2023c)、StableCode(GPT NeoX)(Black等,2022)、Mistral(Jiang等,2023)和Falcon(Penedo等,2023),同时相对于AutoGPTQ始终提供显著加速。TinyChat甚至使大型语言模型在资源极度受限的边缘设备上部署成为可能。

6 结论

在本工作中,我们提出了激活感知权重量化(AWQ),这是一种简单而有效的大型语言模型低比特仅权重压缩方法。基于大型语言模型中权重重要性不同的观察,AWQ执行逐通道缩放,以减少显著权重的量化损失。AWQ不会过度拟合校准集,并保留了大型语言模型在不同领域和模态中的泛化能力。它在语言建模方面优于现有工作,并适用于指令调优模型和多模态模型。我们的TinyChat系统进一步将AWQ实现的理论内存节省转化为相对于Huggingface桌面和移动GPU上FP16实现的3.2-3.3倍实测加速,从而在边缘设备上普及了大型语言模型的部署。

### 关于 Mistral-Large-Instruct-2407-AWQ 的详细介绍 #### 模型概述 Mistral-Large-Instruct-2407-AWQ 是一款基于量化技术优化的大规模预训练语言模型,旨在降低运行成本并提高推理效率。该版本采用了 AWQ (Activation-aware Weight Quantization) 技术,在保持较高精度的同时显著减少了计算资源需求[^1]。 #### 获取文档与下载链接 为了方便开发者获取最新资料,建议访问官方发布的教程页面以及魔搭社区中的 Hugging Face 镜像站点来查找详细的安装指南和技术文档。这些平台通常会提供最全面的说明和支持材料[^3]。 ```bash # 访问HuggingFace镜像站获取更多详情 https://hf-mirror.com/ ``` #### 使用方法简介 对于希望快速上手此模型的应用场景而言,可以通过 OpenWebUI 工具实现一键部署功能。这使得即使是不具备深厚技术背景的人也能轻松完成配置工作。具体操作流程可参照相关视频教程了解每一步骤的具体实施细节[^2]。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "mistral-large-instruct-2407-awq" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) input_text = "<|user|>\nWhat is the capital of France?<|end|>" inputs = tokenizer(input_text, return_tensors="pt") outputs = model.generate(**inputs) response = tokenizer.decode(outputs[0], skip_special_tokens=True) print(response) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值