近来,LLM以惊人的推理效果惊艳全世界,这得益于它巨大的参数量与计算任务。以GPT-175B模型为例,它拥有1750亿参数,至少需要320GB(以1024的倍数计算)的半精度(FP16)格式存储空间。此外,为了有效管理操作,部署该模型进行推理至少需要五个A100 GPU,每个GPU配备80GB内存。巨大的存储与计算代价让有效的模型压缩成为一个亟待解决的难题。
近来,LLM以惊人的推理效果惊艳全世界,这得益于它巨大的参数量与计算任务。以GPT-175B模型为例,它拥有1750亿参数,至少需要320GB(以1024的倍数计算)的半精度(FP16)格式存储空间。此外,为了有效管理操作,部署该模型进行推理至少需要五个A100
GPU,每个GPU配备80GB内存。巨大的存储与计算代价让有效的模型压缩成为一个亟待解决的难题。
来自中国科学院和人民大学的研究者们深入探讨了基于LLM的模型压缩研究进展并发表了该领域的首篇综述《A Survey on Model Compression for Large Language Models》。
论文链接:https://arxiv.org/pdf/2308.07633.pdf
模型压缩涉及将大型资源密集型模型转化为适合在受限移动设备上存储的紧凑版本。此外,它还可以优化模型以实现更快的执行速度和最小的延迟,或在这些目标之间取得平衡。
该综述主要围绕针对LLMs的模型压缩技术的方法、指标与基准展开,并将相关研究内容组成了一个新的分类,包括:
·
剪枝(Pruning)
·
知识蒸馏(Knowledge Distillation)
·
量化(Quantization)
·
低秩分解(Low-Rank Factorization)
图1:针对大型语言模型的模型压缩方法分类。
一、方法
剪枝(Pruning)
剪枝指移除模型中不必要或多余的组件,比如参数,以使模型更加高效。通过对模型中贡献有限的冗余参数进行剪枝,在保证性能最低下降的同时,可以减小存储需求、提高内存和计算效率。论文将剪枝分为两种主要类型:非结构化剪枝和结构化剪枝。
.
非结构化剪枝:指移除个别参数,而不考虑整体网络结构。这种方法通过将低于阈值的参数置零的方式对个别权重或神经元进行处理。
它会导致特定的参数被移除,模型出现不规则的稀疏结构。并且这种不规则性需要专门的压缩技术来存储和计算被剪枝的模型。此外,非结构化剪枝通常需要对LLM进行大量的再训练以恢复准确性,这对于LLM来说尤其昂贵。
SparseGPT [Frantar and Alistarh, 2023] 引入了一种一次性剪枝策略,无需重新训练。该方法将剪枝视为一个广泛的稀疏回归问题,并使用近似稀疏回归求解器来解决,实现了显著的非结构化稀疏性。
LoRAPrune [Zhang等, 2023a] 将参数高效调整(PEFT)方法与剪枝相结合,以提高下游任务的性能。它引入了一种独特的参数重要性标准,使用了来自Low-Rank Adaption(LoRA)的值和梯度。
Wanda [Sun等, 2023]提出了一种新的剪枝度量。它根据每个权重的大小以及相应输入激活的范数的乘积进行评估,这个乘积是通过使用一个小型校准数据集来近似计算的。这个度量用于线性层输出内的局部比较,使得可以从LLM中移除优先级较低的权重。
.
结构化剪枝:根据预定义规则移除连接或分层结构,同时保持整体网络结构。这种方法一次性地针对整组权重,优势在于降低模型复杂性和内存使用,同时保持整体的LLM结构完整。
LLM-Pruner [Ma等, 2023] 采用了一种多功能的方法来压缩LLMs,同时保护它们的多任务解决和语言生成能力。它引入了一个依赖检测算法,以定位模型内部的相互依赖结构。它还实施了一种高效的重要性估计方法,考虑了一阶信息和近似Hessian信息。
知识蒸馏(Knowledge
Distillation,KD)
KD通过从一个复杂的模型(称为教师模型)向一个简化的模型(称为学生模型)转移知识来实现。在这一部分中,我们概述了使用LLM作为教师的蒸馏方法,并根据这些方法是否强调将LLM的涌现能力(EA)蒸馏到小型语言模型(SLM)中来进行分类,包括:Standard KD和EA-based KD。
图2:对语言模型知识蒸馏的简要分类。
Standard KD旨在使学生模型学习LLM所拥有的常见知识,如输出分布和特征信息。这种方法类似于传统的KD,但区别在于教师模型是LLM。
MINILLM [Gu
等,2023] 深入研究了从白盒生成LLMs进行蒸馏的方法,并选择最小化反向KLD,防止了学生过高估计教师分布中的低概率区域,从而提高了生成样本的质量。
GKD [Agarwal
等,2023] 探索了从自回归模型进行蒸馏的方法,其中白盒生成LLMs作为其中一个子集。它通过在训练期间从学生模型中采样输出序列来处理分布不匹配问题,并通过优化替代的散度,如反向KL散度,来解决模型不足的问题。
相比之下,EA-based KD不仅仅是将LLM的常见知识转移到学生模型中,还涵盖了蒸馏它们独特的涌现能力。具体来说,EA-based
KD又分为了上下文学习(ICL)、思维链(CoT)和指令跟随(IF)。
.
ICL采用了一个结构化的自然语言提示,其中包含任务描述和可能的一些演示示例。通过这些任务示例,LLM可以在不需要显式梯度更新的情况下掌握和执行新任务。
黄等人的工作引入了ICL蒸馏,将LLMs的上下文少样本学习和语言建模能力转移到SLMs中。它将上下文学习目标与传统的语言建模目标相结合,并在两种少样本学习范式下探索了ICL蒸馏,即Meta-ICT 和 Multitask-ICT。
.
CoT与ICL相比,在提示中加入了中间推理步骤,这些步骤可以导致最终的输出,而不是使用简单的输入-输出对。
MT-COT [Li等, 2022]旨在利用LLMs产生的解释来增强较小的推理器的训练。它利用多任务学习框架,使较小的模型具备强大的推理能力以及生成解释的能力。
Fine-tune-CoT [Ho等, 2023]通过随机采样从LLMs生成多个推理解决方案。这种训练数据的增加有助于学生模型的学习过程。
傅等人发现了语言模型的多维能力之间的权衡,并提出了微调的指令调整模型。他们从大型教师模型中提取CoT推理路径以改进分布外泛化。
谢等人在多任务框架内使用LLM原理作为额外的指导,训练较小的模型。
SOCRATIC CoT [Shridhar等, 2023]训练了两个蒸馏模型:问题分解器和子问题解决器。分解器将原始问题分解为一系列子问题,而子问题解决器则处理解决这些子问题。
DISCO [Chen等, 2023]引入了一种基于LLMs的完全自动反事实知识蒸馏方法。它通过工程化的提示生成短语扰动,然后通过任务特定的教师模型将这些扰动数据过滤,以提取高质量的反事实数据。
SCOTT [Wang等, 2023a]采用对比解码,将每个原理与答案联系起来。它鼓励从教师那里提取相关的原理。此外,指导学生进行反事实推理并基于导致不同答案的原理进行预测。
.
IF仅依赖于任务描述而不依赖于少量示例。通过使用一系列以指令形式表达的任务进行微调,语言模型展现出能够准确执行以前未见过的指令描述的任务的能力。
Lion等, 2023]利用LLMs的适应性来提升学生模型的性能。它促使LLM识别和生成“困难”指令,然后利用这些指令来增强学生模型的能力。
图3:EA-based
KD概述。a)上下文学习蒸馏,(b)思维链式蒸馏,(c)指令跟随蒸馏。
量化(Quantization)
量化技术将传统的表示方法中的浮点数转换为整数或其他离散形式,以减轻深度学习模型的存储和计算负担。谨慎的量化技术,可以在仅有轻微精度降低的情况下实现大规模的模型压缩。依据应用量化压缩模型的阶段,可以分为以下三种方法:
.
量化感知训练(Quantization-Aware Training,QAT):
在QAT中,量化目标无缝地集成到模型的训练过程中。这种方法使LLM在训练过程中适应低精度表示,增强其处理由量化引起的精度损失的能力。这种适应旨在保持在量化过程之后的更高性能。
LLM-QAT [Liu等,2023] 利用预训练模型生成的结果来实现无数据蒸馏。此外,LLM-QAT不仅量化权重和激活,还量化关键-值(KV)缓存。这个策略旨在增强吞吐量并支持更长的序列依赖。LLM-QAT能够将带有量化权重和KV缓存的大型LLaMA模型蒸馏为仅有4位的模型。这一突破性的结果证明了制造准确的4位量化LLM的可行性。
.
量化感知微调(Quantization-Aware Fine-tuning,QAF)
QAF涉及在微调过程中对LLM进行量化。主要目标是确保经过微调的LLM在量化为较低位宽后仍保持性能。通过将量化意识整合到微调中,LLM旨在在模型压缩和保持性能之间取得平衡。
PEQA [Kim等,2023]和QLORA
[Dettmers等,2023a]都属于量化感知参数高效微调(PEFT)技术的范畴。这些技术侧重于促进模型压缩和加速推理。
PEQA采用了双阶段过程。在第一阶段,每个全连接层的参数矩阵被量化为低位整数矩阵和标量向量。在第二阶段,对每个特定下游任务的标量向量进行微调。
QLORA引入了新的数据类型、双重量化和分页优化器等创新概念。这些想法旨在在不影响性能的情况下节省内存。QLORA使得大型模型可以在单个GPU上进行微调,同时在Vicuna基准测试上实现了最先进的结果。
.
训练后量化(Post-Training Quantization,PTQ)
PTQ涉及在LLM的训练阶段完成后对其参数进行量化。PTQ的主要目标是减少LLM的存储和计算复杂性,而无需对LLM架构进行修改或进行重新训练。
PTQ的主要优势在于其简单性和高效性。然而,值得注意的是,PTQ可能会在量化过程中引入一定程度的精度损失。
在PTQ中,某些方法专注于仅对LLM的权重进行量化,以提高效率并减少计算需求。
LUT-GEMM [Park等,2022]通过仅对权重进行量化以及使用BCQ格式在LLM中优化矩阵乘法,通过提高计算效率来增强延迟降低和性能。
LLM.int8() [Dettmers等,2022]对LLM
transformers中的矩阵乘法采用8位量化,在推理过程中有效地减少GPU内存使用量,同时保持性能精度。该方法采用矢量量化和混合精度分解来处理异常值,以实现高效的推理。
ZeroQuant [Yao等,2022]将硬件友好的量化方案、逐层知识蒸馏和优化的量化支持整合在一起,将Transformer-based模型的权重和激活精度减少到最小的INT8,并且对准确性几乎没有影响。
GPTQ [Frantar等,2022]提出了一种基于近似二阶信息的新型分层量化技术,使得每个权重的比特宽度减少到3或4位,与未压缩版本相比,几乎没有准确性损失。
Dettmers和Zettlemoyer通过分析推理缩放定律,深入探讨了LLM中模型大小和位精度之间在零样本性能方面的权衡。他们在各种LLM家族之间进行了广泛的实验,发现4位精度几乎普遍是在总模型位数和零样本准确性之间实现正确平衡的最佳选择。
AWQ [Lin等,2023]发现对于LLM的性能,权重并不是同等重要的,仅保护1%的显著权重可以大大减少量化误差。在此基础上,AWQ采用了激活感知方法,考虑与较大激活幅度对应的权重通道的重要性,这在处理重要特征时起着关键作用。该方法采用逐通道缩放技术来确定最佳缩放因子,从而在量化所有权重的同时最小化量化误差。
OWQ [Lee等,2023]通过分析激活异常如何放大权重量化中的误差,引入了混合精度量化方案,将更高的精度应用于易受激活异常影响的权重。
SpQR [Dettmers等,2023b]确定并隔离了异常权重,将其存储在更高的精度中,并将所有其他权重压缩为3-4位。
此外,许多PTQ中的工作尝试对LLM的权重和激活进行量化。
SmoothQuant [Xiao等,2022]解决了量化激活的挑战,这往往由于异常值的存在而变得更加复杂。SmoothQuant观察到不同的标记在它们的通道上展示出类似的变化,引入了逐通道缩放变换,有效地平滑了幅度,使得模型更易于量化。
鉴于量化LLM中激活的复杂性,RPTQ [Yuan等,2023]揭示了不同通道之间不均匀范围的挑战,以及异常值的存在所带来的问题。为了解决这个问题,RPTQ将通道策略性地分组为簇进行量化,有效地减轻了通道范围的差异。此外,它将通道重排集成到层归一化操作和线性层权重中,以最小化相关的开销。
OliVe [Guo等,2023]进一步采用了outlier-victim对(OVP)量化,并在低硬件开销和高性能增益的情况下局部处理异常值,因为它发现异常值很重要,而其旁边的正常值却不重要。
Outlier Suppression+ [Wei等,2023]通过确认激活中的有害异常呈现出不对称分布,主要集中在特定通道中,引入了一种新的策略,涉及通道级的平移和缩放操作,以纠正异常的不对称呈现,并减轻问题通道的影响,并定量分析了平移和缩放的最佳值,同时考虑了异常的不对称性以及下一层权重引起的量化误差。
ZeroQuant-FP [Wu等,2023]探索了浮点(FP)量化的适用性,特别关注FP8和FP4格式。研究揭示,对于LLM,FP8激活在性能上持续优于INT8,而在权重量化方面,FP4在性能上与INT4相比具有可比性,甚至更优越。为了解决由权重和激活之间的差异引起的挑战,ZeroQuant-FP要求所有缩放因子为2的幂,并将缩放因子限制在单个计算组内。值得注意的是,ZeroQuant-FP还集成了Low Rank Compensation (LoRC)
策略,以进一步增强其量化方法的有效性。
此外,将相关工作根据LLM权重中的位数(精度)进行分类,又可以分为8位量化和低位量化。
图4:对语言模型(LLM)的量化方法概述。我们将它们分为8位量化和低位量化两类,根据LLM权重中的位数(即精度)来进行划分。
低秩分解(Low-Rank
Factorization)
低秩分解旨在通过将给定的权重矩阵分解成两个或多个较小维度的矩阵,从而对其进行近似。低秩分解背后的核心思想是找到一个大的权重矩阵W的分解,得到两个矩阵U和V,使得W≈U V,其中U是一个m×k矩阵,V是一个k×n矩阵,其中k远小于m和n。U和V的乘积近似于原始的权重矩阵,从而大幅减少了参数数量和计算开销。
在LLM研究的模型压缩领域,研究人员通常将多种技术与低秩分解相结合,包括修剪、量化等,例如LoRAPrune [Zhang等,2023a]和ZeroQuant-FP [Wu等,2023],以实现更有效的压缩同时保持性能。随着这一领域的研究继续进行,可能会在将低秩分解应用于压缩LLM方面出现进一步的发展,但仍需要持续的探索和实验来充分发挥其在LLM方面的潜力。
二、指标和基准
指标
·
Number of Parameters:LLM中可学习权重或变量的总数,LLM在训练期间需要优化这些权重。
·
Model Size:指存储整个LLM所需的磁盘空间或内存占用,包括权重、偏置和其他必要组件。
·
Compression Ratio:未压缩LLM的原始大小与压缩LLM的大小之间的比率。
·
Inference time:衡量LLM在推理或预测期间处理输入数据并生成响应所花费的时间。
·
Floating point operations (FLOPs):衡量LLM在处理输入数据时执行的涉及浮点数(通常是32位或16位)的算术操作数量。
基准
·
常见的NLP基准:GLUE、LAMBADA、LAMA、SQuAD;
·
HULK:全面评估了预训练语言模型(PLMs)的能效;
·
ELUE:整合了六个NLP数据集,涵盖了情感分析、自然语言推断、相似性和改写任务。
三、挑战和未来方向
·
专用的基准。首先,模型压缩的评估缺乏普遍接受的标准设置。其次,可能不是在移动设备上典型任务的最佳代表。并且,为预训练模型设计的基准也可能不适用在移动设备上的常见任务。
·
性能与大小的权衡。当前的工作仍缺乏对这种权衡理论和实证的洞见。
·
动态LLM压缩。目前压缩方法仍然依赖于手动设计来确定LLMs的压缩大小和结构,这种手动尝试会在实际工作带来阻碍。
·
可解释性。可解释性压缩方法的整合应成为LLM压缩应用进展的重要必要条件。采用可解释性压缩不仅针对解释性问题,还简化了压缩模型的评估过程。反过来也增强了模型在生产阶段的可靠性和可预测性。
出自:https://zhuanlan.zhihu.com/p/652434165
本文档由网友提供,仅限参考学习,如有不妥或产生版权问题,请联系我们及时删除。
客服请加微信:skillupvip