SpQR: A Sparse-Quantized Representation for Near-Lossless LLM Weight Compression翻译

本文主要是介绍SpQR: A Sparse-Quantized Representation for Near-Lossless LLM Weight Compression翻译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要

大型语言模型(LLM)预训练的最新进展获得了具有令人印象深刻能力的高质量LLM。通过量化将这种LLM压缩至每个参数3-4位,从而可以适配内存有限的设备,例如笔记本电脑和手机,从而实现个性化使用。但是,将每个参数的量化至3-4位通常会导致中度到高度的准确率损失,尤其是对于1-10B参数范围内的较小模型,而这些非常适合边缘部署。为了解决这个准确性问题,我们介绍了一种Sparse-Quantized Representation (SpQR),这是一种新的压缩格式和量化技术,该技术可以首次在各种模型尺寸上对LLM进行几乎无损压缩,同时达到与先前方法相似的压缩水平。SpQR通过识别和隔离主权重来起作用,这些权重会引起量化错误,并将其存储在更高的精度中,同时将其他所有权重压缩到3-4位,并实现LLaMA和Falcon LLM小于1%的相对准确率丢失。这使得可以在单个24 GB消费级GPU上运行33B参数的LLM,并在15%加速情况下不会导致任何性能下降,从而使消费者使用强大的LLM,而没有任何缺陷。SpQR具有高效的算法,用于将权重编码为其自身格式,并在运行时有效地解码它们。具体而言,我们为SpQR提供了有效的GPU推理算法,该算法以相似的准确率获得比16bit基线更快的推理,同时实现了超过4倍的内存压缩。

1.介绍

在这里插入图片描述
  预训练大语言模型(LLM)在特定任务上的性能获得迅速提升,并且如果使用指令提示,则在一般任务上也表现良好。虽然改进的性能可以归因于训练数据和参数的扩展,而最近的趋势则集中在训练具有更多数据的小模型上,这些模型在推理时更容易使用。例如,在1T token上训练的7B参数模型LLaMA尽管比GPT-3小25倍,但其平均性能仅略低于GPT-3。LLM压缩的当前技术可以在保留其性能的同时进一步缩小约4倍的参数。 这会产生与最大的GPT-3模型相当的性能水平,并且在内存需求方面有重大减少。通过这种改进,可以在笔记本电脑等终端用户设备上有效地提供良好的模型。
  主要的挑战是压缩足以适合特定类型设备的模型,同时还可以保留生成质量。具体而言,研究表明,尽管准确,但3至4位量化的现有技术仍会导致明显的准确率下降。由于LLM生成是序列化的,具体取决于先前生成的token,因此小的相对错误会累积并导致严重损坏的输出。与16位模型相比,在确保可比的预测性能的同时设计低比特量化至关重要。
  在这项工作中,我们引入了Sparse-Quantized Representation (SpQR),这是一种混合稀疏量化的格式,可以将准确的将预训练LLM压缩至每个参数3-4位,同时持性能无损:特别是,SpQR是第一个权重量化方法,并且在达到这种压缩比的同时使端到端的准确率误差小于密集极限的相对1%。SpQR通过结合两项创新来起作用。首先,我们隔离了主权重,我们表明的对该权重量化会引起不成比例的高误差:这些权重应保持高精度,而其他权重则以较低精度存储,例如3bit格式。其次,我们实现了一个具有非常小组大小的分组量化变体,例如对于16个连续的元素,但我们表明一组可以将量化本身量化为3位表示。
  为了将给定的预训练LLM转换为SpQR格式,我们采用了GPTQ最近引入的训练后量化(PTQ)方法的扩展版本。具体而言,该方法通过未压缩模型传递校准数据。为了压缩每一层,它针对未压缩模型和量化权重的输出之间的L2误差应用了逐层的求解器。我们的方法将此过程分为两个步骤:一个“主权重检测”步骤,在该步骤中,我们对其进行隔离,因为对该权重进行量化会对层输出行为产生较大影响,一个实际压缩步骤,其中主权重被提取,而其他大多数(≥99%)的权重被压缩在低bit宽度上,并通过进一步压缩量化元数据来提高整个表示形式。
  我们的方法是通过新的分析来驱动的,该分析表明LLM权重量化误差表现出垂直和水平相关性,这对应于输入特征维度和输出隐藏维度的系统性较大误差。尽管以前曾观察到异常输入特征,但我们的工作是第一个证明对于特定的输出隐藏维度,权重中也发生类似的异常权重。与输入特征异常不同,输出隐藏维度的异常仅在小段中出现。
  我们的量化算法分离了此类异常值并以SpQR格式高效编码一个给定的模型。为了利用所得结构,我们基于compressed sparse row(CSR)格式开发了一种专业的稀疏矩阵乘法算法。对于3-4bit权重,为了使用SpQR进行逐token生成,我们将此稀疏算法与密集的量化矩阵乘法结合在一起。这样,SpQR将LLM的内存占用减少了约3.4倍甚至更多,并且以语言建模损失或困惑都衡量而没有准确率下降,同时LLM生成的速度也比16位推理的速度快20-30%。

2.相关工作

在这里插入图片描述
  我们将讨论重点放在相关的训练后再量化(post-training quantization , PTQ)方法上,请读者参考最近的 Gholami et al. 综述来了解完整的量化背景知识。PTQ方法是使用精确的求解器和少量校准数据,对各种尺寸的模型进行one-shoat压缩的流行方法,这种压缩通常集中在逐层或逐组压缩的子问题上。大多数PTQ方法,例如AdaRound,BitSplit,AdaQuant,BRECQ或OBQ,都是为视觉模型或小型语言模型而设计的,这些模型的参数少于100M。所有这些最近的方法都倾向于使用准确的求解器,它们不会根据计算或内存成本将类GPT的模型缩放到10-1000x大小。
  最近,人们对将准确的PTQ方法扩展到大规模模型具有重大兴趣。由于计算限制,早期工作(例如ZeroQuant,LLM.int8()和nuQmm)将权重直接近似到最近的量化水平,同时自定义量化粒度(即组大小)来对空间和准确率进行平衡。LLM.int8()提出对“离群特征”进行隔离,这种特征将独立量化为更高的bit宽度上。这些方法能够得到相对较低的量化误差,例如如果量化粒度足够低,则在4bit权重量化下的LLaMA-7B相对LM损失增加5.5%。GPTQ提出了一种更高的准确方法(例如,上述设置中LM损失增加4%),这些工作通过近似大规模求解器,以逐层最小化平方误差。
  Dettmers et al. 对这些基础方法的准确性-压缩权衡取舍提供了一个深入概述,确定4-bit量化是round-to-nearest-based的方法的最优点,而更高的压缩可以通过基于数据的方法来完成,例如GPTQ。SparseGPT提出了一种将LLM权重稀疏到中度稀疏性的方法,以及将剩余权重量化到固定的bit宽度。现有方法的一个常见缺点是相对于原始模型,量化后模型的准确率损失仍然很显著(请参见表1)。特别是在相对较小但易于部署的模型上,例如在7-13B参数范围内,现有方法显示出急剧的精度下降。我们在此处调查了这个问题,并提供了一种新的压缩格式,该格式会得到一个几乎无损的3-4bit压缩模型。
  一个相关的问题是同时执行激活和权重量化。有早期的工作,表明激活和权重可以量化到8bit同时保证精度影响相对较低。这些补充研究对LLM的压缩误差的原因表明了有趣的见解。具体而言, [DLBZ22, XLS+22] 观察到大型LLM的输入/输出中值中有明显更高的“离群特征”的存在,这会引起更高的量化误差,并提出了不同的缓解策略。
  我们从权重量化的角度分析了这种现象。特别是,我们研究了除输入特征异常值之外的权重矩阵中的异常值结构。尽管我们发现当前层的输入特征异常值与上一层中隐藏单元的异常值的权重相关联,但没有严格的对应关系。这种部分结构异常的模式需要一种精细的混合压缩格式,该格式超出了利用以前工作中发现的离群特征的列结构的算法。
  有关深度网络的混合稀疏量化格式已被广泛研究。一些有效的CPU推理引擎支持不同的块稀疏和量化的格式,其中4个连续权重的每个块要么被完全稀疏,要么被量化到8bit格式,而GPU则支持类似的组合格式,其中每4个权重组包含2个零权重,并且可以量化非零权重。FBGEMM软件包提出了一种格式,其中某些“离群”权重被分别量化,以减少其对标准化的影响。但是,以这种格式,“离群”权重仍被量化到与常规权重完全相同的Bit宽度(8-bit)。此外,没有任何程序可以将训练后模型转换为此格式。相比之下,1)我们提供了一种有效,准确的训练后压缩算法,该算法将异常值鉴定为产生高输出误差的权重,2)我们提出了一种将离群值压缩到相对于常规权重更高的bit宽度的格式,而3)我们的格式按块存储离群值,可以有效在GPU核中实现,并且我们也提供了该实现。

3.Quantization sensitivity of LLM weights

3.1 Parameter sensitivity under quantization

神经网络中的所有参数并非同样重要的。直觉上,如果权重的舍入误差很大(即它不接近量化点并且/或输入通常会通过相乘放大,即使是一个小的近似误差),则可以将其视为对量化敏感的。然而,这些简单的敏感概念忽略了LLM在具有显着相关性的非常大的向量上运行的事实:权重 w a w_a wa可能具有较大的近似误差,同时与另一个重量 w b w_b wb密切相关,这意味着通过近似 w b w_b wb w a w_a wa的舍入误差可以得到很好的补偿。现代量化算法利用了这一想法,并可能导致对原始舍入的重大改进,尤其是低bit宽度。正确捕获敏感度需要更鲁棒的定义。
  对于计算障碍性,我们使用一小部分校准输入集 X X X在每层上评估其敏感度,该校准集通过将它们在模型上运行到特定层来收集。我们将层权重矩阵 W W W中某些重量 w i j w_{ij} wij的敏感度 s i j s_{ij} sij定义为 X X X上的原始预测与任何被量化权重矩阵 W ′ W' W的最小平方差,即 w i j ′ = q u a n t ( w i j ) w'_{ij}=quant(w_{ij}) wij=quant(wij)
s i j = m i n W ′ ∣ ∣ W X − W ′ X ∣ ∣ 2 2 s . t . w i , j ′ = q u a n t ( w i j ) (1) s_{ij}=min_{W'}||WX-W'X||^2_2\qquad s.t.\qquad w'_{i,j}=quant(w_{ij})\tag{1} sij=minW∣∣WXWX22s.t.wi,j=quant(wij)(1)
  至关重要的是,除 w i j ′ w'_{ij} wij外, W ′ W' W中的所有权重都可以是任意值,而不需要被量化,以补偿通过舍入 w i j w_{ij} wij所产生的量化误差,从而捕获上述所描述相关方面。此外,由于我们允许连续值,此问题允许闭式解。这可以通过遵循通用的Optimal Brain Surgeon框架来确定,其中 ( X X T ) − 1 (XX^T)^{-1} (XXT)1是与最优化问题相对应的逆海森矩阵:
s i j = ( w i j − q u a n t ( w i j ) ) 2 2 ( X X T ) − 1 . (2) s_{ij}=\frac{(w_{ij}-quant(w_{ij}))^2}{2(XX^T)^-1}.\tag{2} sij=2(XXT)1(wijquant(wij))2.(2)
  通过量化求解器(例如GPTQ)可以有效地近似此显着性度量。更详细地,GPTQ逐列量化权重矩阵,同时在每一步中调整尚未量化的部分,以补偿与上面定义的类似意义上的量化误差。因此,与提前静态决定所有敏感度不同,可以在算法过程通过使用与尚未量化权重相对应的Hessian子选择的逆,动态地计算出每一列的敏感度。该矩阵已经由GPTQ有效地计算出来,因此不会施加任何其他开销。这种方法的主要优点是 s i j s_{ij} sij始终基于 w i j w_{ij} wij的最新值确定,并且也由先前量化的权重进行调整。

3.2 Exploring parameter sensitivity

在这里插入图片描述
  在定义我们的方法SpQR之前,我们提供了对参数敏感度的驱动分析,该分析发现,权重矩阵中敏感权重的位置不是随机的,而是具有特定的结构。为了在量化过程中突出这些结构元素,我们计算了每个权重的敏感度,并可视化了目前广泛流行且具有高精确的LLaMA-65B模型。作为量化方法,我们使用GPTQ量化到3bit,而无需权重分组,这遵循[FAHA22]。我们使用C4作为校准数据集,并在128条序列上估计每个序列包含的2048token的误差。图2描述了LLaMA-65B最后一个自注意力层的输出投影。
  使用敏感度分析,我们在权重矩阵中观察到几种模式,这些模式经常以单行或单列的形式出现。由于LLaMA-65B中的大权重矩阵具有太多的行和列,无法在紧凑的图像(默认图像:8k×32k像素)中重新说明,因此我们执行最大池化来可视化该矩阵,也就是我们在每个32×32行和列的方形中获取具有最大敏感度的值,这种最大池化仅影响最左边的图像。使用此可视化,我们观察到量化误差模式会因层的类型和深度而改变,例如注意力与多层感知器(MLP)。特别是,我们发现更深层具有更敏感的异常值(其他细节请看附录A)。现在,我们继续对异常结构进行分类,并以注意力权重矩阵作为样例。我们得到了如下的观测结果:

  • Row outliers and Column outliers。如图2底部中心显示,行异常值为一个输出单元内高敏感度的区域。这些模式中的一些涵盖了整个行,而另一些则是涵盖部分。在注意力层中,某些部分行异常值对应于注意力头的某些子集。列异常值出现在图2右下方,显示了所有行上特定输入维度(列)的高敏感度。后者与DDettmers et al. [DLBZ22]中报道的“离群特征”现象相关。
  • Sensitive attention heads。如图2上中部所示,宽度128的维度条纹突出显示了与一个注意力头相对应的所有权重。这可能与一些注意力头具有更重要的功能有关。相应的“条纹”位于注意力Q&K投影的水平方向,输出投影的垂直方向,而值投影和MLP权重啧没有这种情况。值得注意的是,即使在高敏感度注意力头内,个体间的权重敏感性也存在显着差异。
  • The Rotary embedding pattern。旋转嵌入模式是一种高敏感度的的重复垂直模式,周期为64个单元。我们将其归因于旋转嵌入的使用:每个注意力头(dim=128)被分为两半:前64个单元用余弦“旋转”,而后64则单元使用正弦。正弦和余弦旋转都使用相同的频率集。通常,如图2所示(右上)所示,与低频正弦和余弦相对应的权重比其对应的高频更敏感。正如预期的那样,任何不使用旋转嵌入的层都不存在此模式。
  • Unstructured outliers。除上述外,每一层都有许多单独的敏感度权重,这些权重不适合上述任何模式。对于具有最大索引的输入(即在图像的右侧),这些非结构化异常值更频繁地发生。 在热图上很难看到这种效果,因此我们在附录A中提供了其他数字和统计测试。我们认为,我们可能是GPTQ算法的缺陷,该算法使用尚未压缩的权重来补偿误差。因此,最右侧权重累积了最大的误差。

接下来,我们将利用这些发现来提出一个可以支持所有这些不同异常类型的压缩表示。

4.SpQR: A Sensitivity-aware compressed representation

4.1 Overview

在这里插入图片描述
  现有的LLM量化算法将低敏感度和高敏感度的权重都等同处理。但是,我们上述讨论表明这可能会导致次优的量化。理想情况下,我们希望量化表示将更多的“大小预算”分配给敏感权重。但是,这些权重散布在权重矩阵的单个权重或一个较小的权重组中,例如部分行或注意力头。为了捕获这种结构,我们引入了对量化过程的两个更改:一个用于捕获小敏感组,另一个用于捕获单个异常值。
  Capturing small groups of weights with bilevel quantization。在上一节中,我们观察到了几种情况,即权重在一个小组中具有相似地行为,而组之间具有较大的变化,例如,某些注意力头和部分行异常值(见图4左和底部中心)。应用标准量化方法时,将有许多情况的这些权重分组在一起,并共享相同的量化统计数据。为了减少此类情况的数量,我们使用具有非常小的组的逐组量化,通常为 β 1 = 8 ∼ 32 β_1=8\sim 32 β1=832个权重。也就是说,对于每 β 1 β_1 β1个连续权重,都有一个单独的量化尺度和零点。这种选择与当前的直觉背道而驰:例如,Yao et al. [YLW+23]的最新工作明确建议反对小组量化,认为存储量化统计数据的开销将超过精度损失较小所带来的优势。
  为了避免此问题,我们使用与权重相同的量化算法对每一个组的统计量进行量化,即asymmetric (min-max) quantization。由于min-max量化的工作原理,量化值的范围将适合具有最大(或最小)量级的组,从而完美量化它们。换句话说,我们将来自 β 2 = 16 β_2=16 β2=16个连续统计量组以相同的Bit统一进行量化,以便出现具有非典型量化参数的组具有更多的量化预算。最后,第一和第二级量化都直接包含在量化过程中,从而使算法在可能的情况下可以补偿第二级量化误差。
  High-sensitivity outliers。我们的分析表明,存在一小部分高敏感权重的情况,这种情况来自一些小组(自注意力)或单个“异常值”(MLP)。在某些情况下,权重的1%占总量化错误的75%以上。由于这些权重似乎会导致较高的,不可简化的错误,因此我们选择将这些异常值保持高精度(16位)。由于这些异常值通常是非结构化的,因此我们将它们逐行单独编码,类似于compressed-sparse-row (CSR) 表示。这可以编码不适合上述组定义的单个离群值和小结构。
  算法1中详细描述了检测异常值的过程。如果遵循一个比较奥粗糙的两步过程:(1)查找并将异常值隔离为16位权重,(2)将非异常的“基础”权重量化为3-4位,然后将其余的权重量化转移到16位异常值的权重。对于异常值隔离步骤,该算法根据等式(2)中的敏感度标准实现了过滤技术,用于从基本权重中隔离和分离异常值。在全局范围内,对于每个矩阵,该算法旨在选择一个敏感度阈值 τ τ τ来获得整个模型中所需数量的异常值,通常约为权重的1%。具体而言,如果将权重保持在16位会将等式(2)中的误差减少 τ \tau τ,则该权重被认为是异常值。
  在第一个异常值检测步骤之后,我们量化了除异常值以外的同一量化组中所有基本权重。因此,通过排除异常值来计算量化统计量(例如尺度)。这会导致误差方面的显着改善,因为例如min-max尺度将大大减少。然后,该算法继续使用GPTQ来量化剩余的权重。有趣的是,与[DLBZ22]不同,一个权重能被选择为异常值不仅仅是因为其会造成误差,也因为GPTQ算法能够利用该权重来补偿来自其他权重的误差。因此,由此产生的16位值不包含原始权重,而是经过调整以最小化输出误差的权重。因此,SpQR将异常值的监测延伸到隔离和处理在量化过程中发生的异常值的这一更通用概念。最后,该算法聚集并压缩了具有双级量化的稀疏异常矩阵和最终量化统计量,并返回压缩权重及其元数据。
  Implementation details。我们的算法还包含多种优化。当我们使用教小的组尺寸时,通常出现一个组包含都是正(或都是负)的值。标准量化器要求最大值为正,最小值为负。对于教小的组尺寸,删除此需求会导致质量稍好一些。作为量化统计数据的副产品,我们的算法允许非整数零点。我们在第五节中对这些优化和其他SpQR的组件进行消融实验。

4.2 Implementing and Leveraging the Sparse Quantized Representation

在这里插入图片描述
在这里插入图片描述

这篇关于SpQR: A Sparse-Quantized Representation for Near-Lossless LLM Weight Compression翻译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287225

相关文章

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

linux dlopen手册翻译

名称 dlclose, dlopen, dlmopen 打开和关闭一个共享对象 简介 #include <dlfcn.h>void *dlopen(const char*filename, int flags);int dlclose(void *handle);#define _GNU_SOURCE#include <dlfcn.h>void *dlmoopen(Lmid_t lm

从计组中从重温C中浮点数表示及C程序翻译过程

目录 移码​编辑  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 例子:   ​编辑 浮点数取的过程   C程序翻译过程 移码  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 根据国际标准IEEE(电⽓和电⼦⼯程协会)  32位 例子:    64位    IEEE754对有效数字M和

[论文笔记]QLoRA: Efficient Finetuning of Quantized LLMs

引言 今天带来LoRA的量化版论文笔记——QLoRA: Efficient Finetuning of Quantized LLMs 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 我们提出了QLoRA,一种高效的微调方法,它在减少内存使用的同时,能够在单个48GB GPU上对65B参数的模型进行微调,同时保持16位微调任务的完整性能。QLoRA通过一个冻结的4位量化预

HumanNeRF:Free-viewpoint Rendering of Moving People from Monocular Video 翻译

HumanNeRF:单目视频中运动人物的自由视点绘制 引言。我们介绍了一种自由视点渲染方法- HumanNeRF -它适用于一个给定的单眼视频ofa人类执行复杂的身体运动,例如,从YouTube的视频。我们的方法可以在任何帧暂停视频,并从任意新的摄像机视点或甚至针对该特定帧和身体姿势的完整360度摄像机路径渲染主体。这项任务特别具有挑战性,因为它需要合成身体的照片级真实感细节,如从输入视频中可能