论文干货 | 首篇大模型压缩论文综述

首篇大模型压缩综述来啦!!!

来自中国科学院和人民大学的研究者们深入探讨了基于LLM的模型压缩研究进展并发表了该领域的首篇综述《A Survey on Model Compression for Large Language Models》。

Abstract

大型语言模型(LLMs)已经彻底改变了自然语言处理任务,并取得了巨大成功。然而,它们庞大的规模和计算需求给实际部署带来了巨大挑战,尤其是在资源有限的环境中。随着这些挑战变得日益相关,模型压缩领域已成为缓解这些限制的关键研究领域。本文对专为 LLM 量身定制的模型压缩技术进行了全面调查。为了满足高效部署的迫切需要,我们深入探讨了各种方法,包括量化、剪枝、知识提炼等。在每种技术中,我们都重点介绍了最近的进展和创新方法,它们为 LLM 研究的不断发展做出了贡献。此外,我们还探讨了对评估压缩 LLM 的有效性至关重要的基准策略和评估指标。通过提供对最新发展和实际影响的见解,本调查报告成为研究人员和从业人员的宝贵资源。随着 LLM 的不断发展,本调查旨在提高效率和实际应用性,为该领域未来的进步奠定基础。

1 Introduction

大型语言模型(LLMs)[Zhao 等人,2023 年;Huang 和 Chang,2023 年;Chang 等人,2023 年]在各种任务中始终表现出卓越的性能。然而,由于其庞大的体积和计算要求,其卓越的性能也带来了巨大的挑战。例如,GPT-175B 模型[Brown 等人,2020]拥有令人印象深刻的 1750 亿个参数,需要至少 320GB (使用 1024 的倍数)的半精度(FP16)格式存储空间。此外,部署该模型进行推理需要至少 5 个 A100 GPU(每个具有 80GB 内存),以便有效管理操作。为了解决这些问题,一种被称为模型压缩的流行方法[Deng 等人,2020;He 等人,2018]提供了一种解决方案。模型压缩包括将大型、资源密集型模型转化为适合在受限移动设备上存储的紧凑版本。此外,它还可能涉及优化模型,使其执行速度更快,延迟最小,或在这些目标之间实现平衡。

除了技术方面,LLM 还引发了有关环境和伦理问题的讨论。这些模型给发展中国家的工程师和研究人员带来了巨大挑战,因为那里资源有限,无法获得执行模型所需的基本硬件[Lin 等人,2023]。此外,LLMs 的大量能源消耗也会造成碳排放,这凸显了可持续实践在人工智能研究中的重要性。利用模型压缩技术是应对这些挑战的一个很有前景的解决方案,该技术已经展示了在不大幅影响性能的情况下减少排放的潜力[Luccioni 等人,2022]。通过实施模型压缩,我们可以解决环境问题,提高可访问性,并促进 LLM 部署的包容性。

在本文中,我们的主要目标是阐明最近在专为 LLM 量身定制的模型压缩技术领域取得的进展。我们的工作包括对方法论、度量标准和基准进行详尽的调查,并将其精心整理成创新的分类法。如图 1 所示,我们提出的分类法为了解 LLM 的模型压缩方法提供了一个结构化框架。这种探索包括对成熟技术的彻底检查,包括但不限于剪枝、知识提炼、量化和低秩分解。此外,我们的研究还揭示了当前面临的挑战,并为这一不断发展的领域提供了潜在的未来研究轨迹。我们倡导社区内的合作努力,为具有生态意识、包罗万象和可持续发展的未来 LLM 铺平道路。值得注意的是,我们的工作是专门针对LLMs模型压缩领域的首次调查。
在这里插入图片描述

2 Methods

2.1 Pruning

剪枝是一种强大的技术,通过去除不必要或冗余的成分来减小模型的大小或复杂度[LeCun 等,1989;Han 等,2015;Li 等,2017]。我们知道,有很多冗余参数对模型的性能影响很小甚至没有影响,因此,直接剪枝这些冗余参数后,模型的性能下降会最小。同时,剪枝可以使模型存储友好[Ardakani 等,2019]、内存效率高[Han 等,2015;Yang 等,2017]、计算效率高[Li 等,2017]。剪枝可分为非结构化剪枝 [Zhang 等人,2018;Gordon 等人,2020] 和结构化剪枝 [Anwar 等人,2017;Fang 等人,2023]。结构化修剪与非结构化修剪的主要区别在于修剪目标和由此产生的网络结构。结构化剪枝根据特定规则删除连接或层次结构,同时保留整体网络结构。另一方面,非结构化修剪会删除单个参数,从而形成不规则的稀疏结构。近期的研究致力于将 LLM 与剪枝技术相结合,以解决 LLM 的巨大规模和计算成本问题。在本节中,我们将根据这些研究是否采用了结构化或非结构化剪枝策略对其进行系统分类。

Unstructured Pruning

非结构化修剪是在不考虑 LLM 内部结构的情况下,通过删除特定参数来简化 LLM。这种方法的目标是 LLM 中的单个权重或神经元,通常是通过应用一个阈值将低于该阈值的参数清零。然而,这种方法忽略了 LLM 的整体结构,导致模型组成不规则稀疏。这种不规则性要求采用专门的压缩技术来高效存储和计算剪枝模型。非结构化修剪通常需要对 LLM 进行大量的重新训练,以重新获得准确性,这对 LLM 来说尤其昂贵。SparseGPT [Frantar and Alistarh, 2023]是这一领域的一种创新方法。它引入了一种无需重新训练的单次剪枝策略。该方法将剪枝作为一个广泛的稀疏回归问题,并使用近似稀疏回归求解器进行求解。SparseGPT 实现了显著的非结构稀疏性,在最大的 GPT 模型(如 OPT-175B 和 BLOOM-176B)上甚至达到了 60%,而复杂度的增加却微乎其微。与此相反,Syed 等人提出了一种迭代剪枝技术,在剪枝过程中以最少的训练步骤对模型进行微调。另一个进步是 LoRAPrune [Zhang 等人,2023a],它将参数高效调整(PEFT)方法与剪枝相结合,以提高下游任务的性能。它引入了一种独特的参数重要性标准,使用低强度自适应(Low-Rank Adaption,LoRA)[Hu 等人,2022] 的值和梯度。针对 SparseGPT 仍然需要的资源密集型权重更新过程,Wanda [Sun 等人,2023] 提出了一种新的剪枝指标。Wanda 根据每个权重的大小与相应输入激活的常模的乘积来评估每个权重,并使用小型校准数据集进行近似。该指标可用于线性层输出的局部比较,从而从 LLM 中去除优先级较低的权重。

Structured Pruning

结构化剪枝通过删除神经元、通道或层等整个结构组件来简化 LLM。这种方法一次性针对整组权重,在保持 LLM 整体结构不变的同时,还具有降低模型复杂度和内存使用量的优势。LLM-Pruner [Ma等人,2023]就是这方面的一个例子,它采用多功能方法压缩 LLM,同时保护其多任务求解和语言生成能力。LLM-Pruner 还能解决因 LLM 使用大量训练数据而带来的挑战,这些数据会导致大量的数据传输和训练后模型的大小。为了克服这些挑战,LLM-Pruner 采用了一种依赖性检测算法,以确定模型中相互依存的结构。它还实施了一种高效的重要性估计方法,该方法同时考虑了一阶信息和近似Hessian 信息。这种策略有助于选择最佳分组进行剪枝,从而改进压缩过程。

2.2 Knowledge Distillation

知识蒸馏(KD)[Hinton等人,2015;Kim和Rush,2016;Tung和Mori,2019]是一种宝贵的机器学习技术,旨在提高模型性能和泛化能力。它通过将复杂模型(称为教师模型)中的知识转移到较简单的对应模型(称为学生模型)中来实现这一目标。KD 背后的核心思想是将教师模型的综合知识转化为更精简、更有效的表示。在本节中,我们将概述采用 LLM 作为教师的提炼方法。我们对这些方法进行分类的依据是,它们是否侧重于将 LLM 的新兴能力 (EA) 提炼为小语言模型 (SLM)。因此,我们将这些方法分为两个不同的类别: Standard KD 和 EA-base KD 。为便于直观表达,图 2 提供了 LLM 知识提炼的简要分类。
在这里插入图片描述

Standard KD

Standard KD 的重点是让学生模型学习 LLM 所拥有的常识,如输出分布和特征信息。这种方法类似于 vanilla KD [Gou 等人,2021;Park 等人,2019;Zhao 等人,2022;Liu 等人,2021a],但区别在于教师模型是 LLM。MINILLM [Gu 等人,2023] 就是一个很好的例子,它深入研究了从白盒生成式 LLMs 中提炼的问题。它观察到了最小化前向 Kullback-Leibler divergence(KLD)的挑战–这会导致教师分布中不可能区域的概率过高,从而在自由运行生成过程中造成不可能的样本。为了解决这个问题,MINILLM 选择最小化反向 KLD。这种方法可以防止学生高估教师分布中的低概率区域,从而提高生成样本的质量。相比之下,GKD [Agarwal 等人,2023] 探索了从自动回归模型中提炼,其中白盒生成 LLM 是一个子集。这种方法能发现两个关键问题:一是训练期间的输出序列与学生在部署期间生成的输出序列之间的分布不匹配;二是模型规范不足,即学生模型可能缺乏与教师分布相匹配的表现力。GKD 通过在训练期间对学生的输出序列进行采样,来处理分布不匹配问题。它还通过优化反向 KL 等其他发散来解决模型规格不足的问题。

EA-based KD

EA-based KD 不只是从 LLM 中转移常识,还包括提炼其独特的新兴能力。最近的研究[Wei 等人,2022a;Schaeffer 等人,2023;Zhao 等人,2023]强调,尽管强调扩大模型规模,但与 BERT(3.3 亿个参数)和 GPT-2(1.5 亿个参数)等较小模型相比,GPT-3(175B 参数)和 PaLM(540B 参数)等 LLM 展示了独特的行为。这些 LLM 在处理复杂任务时表现出惊人的能力,被称为 “新兴能力”(Emergent Abilities)。新兴能力包含几个有趣的方面,包括In-Context Learning(ICL)[Dong 等人,2023;Wang 等人,2023b]、Chain-of-Thought(CoT)[Wei 等人,2022b;Wang 等人,2023c;Shi 等人,2023]和Instruction Following(IF)[Ouyang 等人,2022;Brooks 等人,2023]。图 3 是 EA-based 的 "知识蒸馏 "概念的简明概括。
在这里插入图片描述

ICL 采用结构化的自然语言提示,其中包含任务描述和一些任务示例。通过这些任务示例,LLM 可以掌握并执行新任务,而无需进行明确的梯度更新。Huang 等人的工作介绍了 ICL 提炼,它将语境中的少量学习和语言建模能力从 LLMs 转移到 SLMs,这是通过将语境中的学习目标与传统的语言建模目标相结合来实现的。为实现这一目标,他们探索了两种少量学习范式下的 ICL 蒸馏法: 元语境调整Meta In-context Tuning(Meta-ICT)和多任务语境调整Multitask In-context(Multitask-ICT)。在 Meta-ICT 中,语言模型利用上下文学习目标在不同任务中进行元训练。这使它能够通过语境内学习适应未知任务,从而扩展其解决问题的能力。另一方面,Multitask-ICT 使用 ICL 目标和目标任务中的少量示例对模型进行微调。随后,它利用上下文学习对这些任务进行预测。比较这两种范式,Multitask-ICT 的性能优于 Meta-ICT。不过,在任务适应过程中,它确实需要更多的计算资源,因此计算量更大。

与 ICL 相比,CoT 采用了一种不同的方法,即在提示中加入中间推理步骤,而不是使用简单的输入-输出对,这样做可以导致最终输出。MT-COT[Li等人,2022]旨在利用LLM产生的解释来加强对小型推理机的训练。它利用多任务学习框架,使较小的模型具有强大的推理能力和生成解释的能力。Fine-tune-CoT[Ho等人,2023]则更进一步,通过随机抽样从LLM中生成多种推理方案。这种训练数据的扩充有助于学生模型的学习过程。Fu 等人的研究发现了语言模型多维能力之间的权衡问题,并建议对指令调整模型进行微调。他们从大型教师模型中提炼出 CoT 推理路径,以改进分布外泛化。Hsieh 等人采用 LLM 推理作为额外的指导,在多任务框架内训练较小的模型。SOCRATIC CoT [Shridhar et al., 2023]训练了两个提炼的模型:一个问题分解器和一个子问题求解器。分解器将原始问题分解为一系列子问题,而子问题求解器则负责解决这些子问题。DISCO [Chen 等人,2023] 基于 LLMs 引入了一种全自动的反事实知识提炼方法。该方法利用 LLMs 设计提示以生成短语扰动,然后通过特定任务的教师模型对这些扰动进行过滤,以提取高质量的反事实数据。对于理由的忠实性,SCOTT [Wang 等人,2023a] 采用了对比解码,将每个理由与答案联系起来。它鼓励教师提供相关理由。此外,还引导学生进行反事实推理,并根据导致不同答案的理由进行预测。

IF 致力于提高语言模型在执行新任务时的能力,这种能力完全基于对任务描述的阅读,而不依赖于少量的示例。通过使用一系列以指令形式表达的任务进行微调,语言模型展示了准确执行以前未见过的指令中描述的任务的能力。例如,Lion [Jiang 等人,2023] 利用 LLM 的适应性来提高学生模型的性能。它促使 LLM 识别并生成 "困难 "指令,然后利用这些指令提高学生模型的能力。这种方法利用了 LLM 的多功能性,指导学生模型在处理复杂指令和任务时的学习。

2.3 Quantization

在模型压缩领域,量化已成为一种广受欢迎的技术,可减轻深度学习模型的存储和计算开销[Liu 等人,2021b;Gholami 等人,2022;Guo 等人,2020]。传统表示法采用浮点数,而量化则将其转换为整数或其他离散形式。这种转换大大降低了存储要求和计算复杂度。虽然会有一些固有的精度损失,但仔细的量化技术可以在实现大量模型压缩的同时,将精度降低到最低程度。量化可分为三种主要方法:量化感知训练quantization-aware training(QAT)[Tailor 等人,2021;Kim 等人,2022;Ding 等人,2022]、量化感知微调quantization-aware fine-tuning(QAF)[Cai 等人,2019;Dong 等人,2019]和训练后量化post-training quantization(PTQ)[Liu 等人,2021b;Nagel 等人,2020;Fang 等人,2020]。这些方法的主要区别在于何时应用量化来压缩模型。QAT 在模型训练过程中采用量化,QAF 在预训练模型的微调过程中采用量化,而 PTQ 则在模型完成训练后对其进行量化。近期的研究利用量化技术压缩 LLM,取得了令人瞩目的成果。这些研究分为上述三种方法: 量化感知训练(Quantization-Aware Training)、量化感知微调(Quantization-Aware Finetuning)和训练后量化(Post-Training Quantization)。此外,表 1 综述了应用于 LLM 的量化方法。该表根据 LLM 权重的位数(精度),将这些作品分为 8 位量化和低位量化。
在这里插入图片描述

Quantization-Aware Training

在 QAT 中,量化目标被无缝集成到模型的训练过程中。这种方法能让 LLM 在训练过程中适应低精度表示,增强其处理量化造成的精度损失的能力。这种适应性旨在即使在量化过程之后也能保持更高的性能。例如,LLM-QAT [Liu 等人,2023] 深入研究了为 LLM 获取训练数据所面临的挑战。鉴于为 LLMs 收集训练数据要求很高,LLM-QAT 提出了一种创新的解决方案。它利用预训练模型产生的世代来实现无数据蒸馏。这种方法大大有助于规避数据收集难题。此外,LLM-QAT 更进一步,不仅量化了权重和激活,还量化了键值 (KV) 缓存。这一策略旨在提高吞吐量并支持更长的序列依赖性。LLM-QAT 的一个显著成就是,它能将带有量化权重和 KV 缓存的大型 LLaMA 模型压缩到仅 4 位。这一突破性成果证明了生成精确的 4 位量化 LLM 的可行性。

Quantization-Aware Fine-tuning

QAF 包括在微调过程中量化 LLM。其主要目标是确保经过微调的 LLM 在量化到较低位宽后仍能保持其性能。通过将量化意识融入微调,LLM 可以在模型压缩和保持性能之间取得平衡。PEQA [Kim 等人,2023] 和 QLORA [Dettmers 等人,2023a] 都属于量化感知参数高效微调(PEFT)技术[Liu 等人,2022a;Ding 等人,2023;Fu 等人,2023b]。这些技术的重点是促进模型压缩和加速推理。PEQA 采用双阶段过程。在第一阶段,每个全连接层的参数矩阵被量化为一个低位整数矩阵和一个标量向量。在第二阶段,针对每个特定的下游任务对标量向量进行微调。QLORA 引入了新的数据类型、双量化和分页优化器等创新概念。这些理念旨在节省内存,同时不影响性能。QLORA 能让大型模型在单个 GPU 上进行微调,同时在 Vicuna 基准上取得最先进的结果[Chiang 等人,2023]。

Post-Training Quantization

PTQ 是指在 LLM 的训练阶段结束后,对 LLM 的参数进行量化。PTQ 的主要目的是降低 LLM 的存储和计算复杂度,而无需修改 LLM 架构或重新训练。PTQ 的主要优势在于实现模型压缩的简单性和高效性。不过,值得注意的是,由于量化过程,PTQ 可能会带来一定程度的精度损失。这种方法可以直接提高 LLM 的效率,而无需进行重大改动或大量训练工作。

在 PTQ 中,某些方法侧重于仅量化 LLM 的权重,以提高效率并降低计算需求。具体来说,LUT-GEMM [Park 等人,2022] 使用仅权重量化和 BCQ 格式[Rastegari 等人,2016]优化了 LLM 内的矩阵乘法,通过提高计算效率减少了延迟并增强了性能。LLM.int8()[Dettmers等人,2022]在LLM transfomers 中采用8位量化进行矩阵乘法,在保持性能精度的同时,有效地将推理过程中的GPU内存使用量减半。这种方法采用向量量化和混合精度分解来处理异常值,从而实现高效推理。值得注意的是,LLM.int8()能在不影响性能的情况下推断多达1750亿个参数的模型。ZeroQuant[Yao等人,2022]集成了硬件友好的量化方案、逐层知识提炼和优化的量化支持,将基于Transformer的模型的权重和激活精度降低到INT8,同时将精度影响降到最低。GPTQ [Frantar 等人,2022] 认识到,上述方法对于 8 位权重等低压缩目标效果良好,但在更高速率下保持准确性方面面临挑战。为了应对这些挑战,GPTQ 提出了一种基于近似二阶信息的新型层量化技术。结果是每个权重的位宽减少到 3 或 4 比特,与未压缩版本相比,精度损失最小。Dettmers 和 Zettlemoyer 通过分析推理标度律,深入研究了 LLM 中模型大小和比特精度之间的权衡,这关系到零点性能。他们在各种 LLM 系列中进行的大量实验表明,4 位精度几乎是在总模型位数和零点精度之间实现适当平衡的最佳选择。AWQ [Lin 等人,2023] 发现权重对 LLM 性能的重要性并不相同,只保护 1%的突出权重就能大大减少量化误差。基于这一见解,AWQ 采用了一种激活感知方法,即考虑与较大激活幅度相对应的权重通道的重要性,这些通道在处理重要特征时发挥着关键作用。该方法采用了一种按通道缩放技术,以确定最佳缩放因子,从而在量化所有权重的同时将量化误差降至最低。OWQ [Lee 等人,2023 年] 对激活异常值如何放大权重量化误差进行了理论分析。根据这一分析,OWQ 引入了一种混合精度量化方案,对易受激活异常值影响的权重进行更高精度的量化。为了进一步将精确的 LLM 压缩到每个参数 3-4 比特,同时保持接近无损,SpQR [Dettmers 等人,2023b] 识别并隔离离群权重,以更高精度存储它们,并将所有其他权重压缩到 3-4 比特。

除了上述只量化 LLM 权重的研究之外,PTQ 领域的很多研究都尝试量化 LLM 的权重和激活度。具体来说,SmoothQuant [Xiao 等人,2022] 解决了激活度量化的难题,由于异常值的存在,激活度量化往往更为复杂。SmoothQuant 观察到不同的标记在其通道中表现出相似的变化,因此引入了一种按通道的缩放变换,有效地平滑了幅度,使模型更适于量化。RPTQ [Yuan 等人,2023] 认识到量化 LLM 中激活的复杂性,揭示了不同通道范围不均以及异常值的存在所带来的挑战。为了解决这个问题,RPTQ 有策略地将信道排列成簇进行量化,有效地减少了信道范围的差异。此外,它还将信道重新排序整合到层规范操作和线性层权重中,以最大限度地减少相关开销。OliVe [Guo 等人,2023] 进一步采用离群值-受害者对(OVP)量化,并在本地处理离群值,硬件开销低,性能提升高,因为它发现离群值很重要,而其旁边的正常值却不重要。RPTQ [Yuan 等人,2023] 认识到量化 LLM 中激活的复杂性,揭示了不同通道范围不均以及异常值的存在所带来的挑战。为了解决这个问题,RPTQ 有策略地将信道排列成簇进行量化,有效地减少了信道范围的差异。此外,它还将信道重新排序整合到层规范操作和线性层权重中,以最大限度地减少相关开销。OliVe [Guo 等人,2023] 进一步采用离群值-受害者对(OVP)量化,并在本地处理离群值,硬件开销低,性能提升高,因为它发现离群值很重要,而其旁边的正常值却不重要。离群值抑制 [Wei et al、 2023] 通过证实激活中的有害离群值呈现非对称分布,主要集中在特定通道中,扩展了这一认识,并引入了一种新颖的策略,涉及通道移动和缩放操作,以纠正离群值的非对称呈现,减轻有问题通道的影响,并定量分析了移动和缩放的最佳值,同时考虑到离群值的非对称性质和下一层权重产生的量化误差。ZeroQuant-FP [Wu 等人,2023] 探索了浮点(FP)量化的适用性,特别侧重于 FP8 和 FP4 格式。研究发现,对于 LLMs,FP8 激活的性能一直优于其整数对应格式(INT8),而在权重量化方面,FP4 与 INT4 相比,即使没有优势,也表现出了相当的性能。为了应对权重和激活度之间的差异所带来的挑战,ZeroQuant-FP 规定所有缩放因子都是 2 的幂次,并将缩放因子限制在单个计算组内。值得注意的是,ZeroQuant-FP 还集成了低秩补偿(LoRC)策略,以进一步提高其量化方法的有效性。

2.4 Low-Rank Factorization

低阶因式分解[Cheng 等人,2017 年;Povey 等人,2018 年;Idelbayev 和 Carreira-Perpi ̃ n ́ an,2020 年]是一种模型压缩技术,旨在通过将给定权重矩阵分解为两个或两个以上维数更小的矩阵来逼近该矩阵。低秩因式分解的核心思想包括将一个大权矩阵 W W W分解成两个矩阵 U U U V V V,使得 W ≈ U × V W\approx U\times V WU×V,其中 U U U m × k m\times k m×k矩阵, V V V k × n k\times n k×n矩阵, k k k m m m n n n小得多。 U U U V V V的乘积逼近原始权重矩阵,导致参数数量和计算开销的显著减少。在 LLM 研究领域,低阶因式分解已被广泛用于高效微调 LLM,例如 LORA [Hu 等人,2022] 及其变体 [Valipour 等人,2023;Zhang 等人,2023b;Chavan 等人,2023]。与上述工作不同的是,我们关注的是这些使用低阶因式分解来压缩 LLM 的工作。在 LLM 的模型压缩研究领域,研究者通常会将多种技术与低阶因式分解相结合,包括剪枝、量化等,如 LoRAPrune [Zhang 等,2023a] 和 ZeroQuantFP [Wu 等,2023],以在保持性能的同时实现更有效的压缩。随着该领域研究的不断深入,应用低阶因式分解来压缩 LLM 可能会有进一步的发展,但要充分发挥低阶因式分解在 LLM 中的潜力,似乎还需要不断的探索和实验。

3 Metrics and Benchmarks

3.1 Metrics

LLM 的推理效率可以使用各种指标来衡量,这些指标捕捉了性能的不同方面。这些指标通常与准确度和zero-shot能力一起提出,以全面评估 LLM。

Number of Parameters

LLM 中的参数数[Ma 等人,2023 年;Dasgupta 等人,2023 年]是指 LLM 在训练过程中需要优化的可学习权重或变量的总数。在 LLM 中,参数代表神经元或注意层之间连接的权重。一般来说,LLM 的参数越多,其表现力就越强,但同时也需要更多的计算资源和内存来进行训练和推理。

Model Size

模型大小 [Shridhar 等人,2023;Li 等人,2022;Magister 等人,2023] 通常是指存储整个 LLM(包括权重、偏置和其他必要组件)所需的磁盘空间或内存空间。模型大小与参数数量密切相关,因为参数越多,模型越大。不过,用于表示参数的数据类型和模型架构等其他因素也会影响整体大小。

Compression Ratio

压缩比[Frantar 和 Alistarh,2023 年;Tao 等人,2023 年]表示未压缩 LLM 原始大小与压缩 LLM 大小之间的比率。压缩比越高,说明压缩效率越高,因为 LLM 在保留其功能和性能的同时,体积已大幅缩小。

Inference time

推理时间(即延迟)[Kurtic 等人,2023 年;Frantar 等人,2022 年] 衡量 LLM 在推理或预测过程中处理输入数据并生成响应所需的时间。推理时间对于 LLM 需要实时响应用户查询或处理大量数据的实际应用尤为重要。

Floating point operations (FLOPs)

FLOPs [Dettmers 和 Zettlemoyer,2022;Yuan 等人,2023;Wei 等人,2023] 衡量 LLM 在处理输入数据时执行的涉及浮点数(通常为 32 位或 16 位)的算术运算次数。FLOPs 是估算 LLM 计算要求和比较不同 LLM 或压缩技术效率的有效方法。

3.2 Benchmarks

这些基准的主要目标是测量压缩 LLM 与非压缩 LLM 相比的有效性、效率和准确性。这些基准通常由不同的任务和数据集组成,涵盖了一系列自然语言处理挑战。

Common Benchmarks

大多数研究都是在成熟的 NLP 基准上评估压缩 LLM。例如,GLUE [Wang 等人,2019b] 和 SuperGLUE [Wang 等人,2019a] 旨在评估语言模型在各种自然语言理解(NLU)任务中的性能。LAMBADA [Paperno 等人,2016] 设计用于评估语言模型的上下文相关理解。LAMA [Petroni 等人,2019] 和 StrategyQA [Geva 等人,2021] 都旨在评估语言模型的推理能力。SQuAD [Rajpurkar 等人,2016] 是为机器阅读理解(MRC)任务设计的。

HULK

HULK 基准[Zhou 等人,2021]全面评估了预训练语言模型(PLM)的能效。它采用了研究界广泛使用的经典数据集,评估了 MNLI [Williams 等人,2018]、SST-2 [Socher 等人,2013] 和 CoNLL-2003 [Sang 和 Meulder,2003] 等任务的能效。这种多任务方法量化了预训练、微调和推理阶段的能效,考虑了达到特定性能水平所需的时间和成本。HULK 揭示了预训练模型中的能耗,增强了对实际部署的理解。

ELUE

ELUE 框架[Liu 等人,2022b]可通过性能-效率权衡分析对方法进行全面比较。ELUE 整合了六个 NLP 数据集,涵盖情感分析、自然语言推理、相似性和仿写任务。ELUE 有四个基于参数数量的评估轨道(40M、55M、70M 和 110M),采用 ELUE 分数来衡量模型在不同 FLOPs 设置下相对于 ElasticBERT 的性能优势。这种方法提供了模型性能和效率的多维视角。ELUE 有助于进行深入评估和方法评估。

4 Challenges and Future Directions

Specialized Benchmarks

尽管前面介绍了用于评估模型压缩的基准,但这些基准仍然存在几个缺点。首先,对模型压缩的评估缺乏公认的标准设置。不同的研究通常会产生速度提升率、参数数量和准确度水平各不相同的模型。因此,在这些研究之间进行直接比较具有挑战性,而硬件的差异又使这种比较更加复杂。其次,常见的基准,如 LAMA [Petroni 等人,2019] 和 StrategyQA [Geva 等人,2021],可能并不是移动设备上典型任务的最合适代表。第三,为预训练模型设计的基准可能也不太适合 LLM。一般来说,为 LLM 设计专门的基准非常重要。

Performance-Size Trade-offs

先前的研究[Magister 等人,2023 年;Dettmers 和 Zettlemoyer,2022 年]强调了大型语言模型(LLM)性能与模型大小之间的微妙平衡。通过分析这种平衡,可以在硬件限制条件下实现最佳性能。然而,目前的工作缺乏对这种权衡的理论和经验见解。未来的 LLM 压缩研究应进行全面分析,为先进技术提供指导。了解性能和大小之间的关系,有助于研究人员开发量身定制的压缩方法,有效地浏览设计空间,以获得高效的解决方案。

Dynamic LLM Compression

尽管当前的压缩方法取得了进步,但它们仍然依赖人工设计来确定 LLM 的压缩大小和结构。这通常需要根据输入数据或任务要求进行反复试验。在知识提炼等情况下,这一过程尤其具有挑战性,因为在这种情况下,需要进行多次试验才能在计算限制条件下找到合适的学生模型。这种手工操作带来了实际障碍。将神经架构搜索(NAS)技术[Elsken等人,2019;Zoph和Le,2016;Zhu等人,2021;Zhu等人,2023]整合到压缩LLM领域,是一种很有前景的解决方案。NAS 有可能减少对人类设计架构的依赖,从而彻底改变 LLM 压缩,提高效率和效果。
Explainability

早先的研究[Stanton 等人,2021;Xu 等人,2021]对应用于预训练语言模型(PLMs)的压缩技术的可解释性提出了极大的担忧。值得注意的是,这些挑战同样适用于 LLM 压缩方法。因此,整合可解释的压缩方法对 LLM 压缩应用的发展至关重要。此外,采用可解释压缩不仅能解决可解释性问题,还能简化压缩模型的评估程序。这反过来又提高了模型在整个生产阶段的可靠性和可预测性。

5 Conclusion

技术的可解释性提出了极大的担忧。值得注意的是,这些挑战同样适用于 LLM 压缩方法。因此,整合可解释的压缩方法对 LLM 压缩应用的发展至关重要。此外,采用可解释压缩不仅能解决可解释性问题,还能简化压缩模型的评估程序。这反过来又提高了模型在整个生产阶段的可靠性和可预测性。

5 Conclusion

在这份详尽的调查报告中,我们探讨了大型语言模型(LLM)的模型压缩技术。我们的研究涵盖了压缩方法、评估指标和基准数据集。通过深入研究 LLM 压缩技术,我们强调了其面临的挑战和机遇。随着 LLM 压缩技术的发展,人们明确要求研究专门针对 LLM 的先进方法,以挖掘其在各种应用中的潜力。本调查旨在提供有价值的参考,让我们深入了解当前的状况,并促进对这一关键主题的持续探索。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spark Streaming 和 Flink 都是流处理框架,但在一些方面有所不同。 1. 数据处理模型 Spark Streaming 基于批处理模型,将流数据分成一批批进行处理。而 Flink 则是基于流处理模型,可以实时处理数据流。 2. 窗口处理 Spark Streaming 的窗口处理是基于时间的,即将一段时间内的数据作为一个窗口进行处理。而 Flink 的窗口处理可以基于时间和数据量,可以更加灵活地进行窗口处理。 3. 状态管理 Spark Streaming 的状态管理是基于 RDD 的,需要将状态存储在内存中。而 Flink 的状态管理是基于内存和磁盘的,可以更加灵活地管理状态。 4. 容错性 Flink 的容错性比 Spark Streaming 更加强大,可以在节点故障时快速恢复,而 Spark Streaming 则需要重新计算整个批次的数据。 总的来说,Flink 在流处理方面更加强大和灵活,而 Spark Streaming 则更适合批处理和数据仓库等场景。 ### 回答2: Spark Streaming 和 Flink 都是流处理框架,它们都支持低延迟的流处理和高吞吐量的批处理。但是,它们在处理数据流的方式和性能上有许多不同之处。下面是它们的详细比较: 1. 处理模型 Spark Streaming 采用离散化流处理模型(DPM),将长周期的数据流划分为离散化的小批量,每个批次的数据被存储在 RDD 中进行处理,因此 Spark Streaming 具有较好的容错性和可靠性。而 Flink 采用连续流处理模型(CPM),能够在其流处理过程中进行事件时间处理和状态管理,因此 Flink 更适合处理需要精确时间戳和状态管理的应用场景。 2. 数据延迟 Spark Streaming 在处理数据流时会有一定的延迟,主要是由于对数据进行缓存和离散化处理的原因。而 Flink 的数据延迟比 Spark Streaming 更低,因为 Flink 的数据处理和计算过程是实时进行的,不需要缓存和离散化处理。 3. 机器资源和负载均衡 Spark Streaming 采用了 Spark 的机器资源调度和负载均衡机制,它们之间具有相同的容错和资源管理特性。而 Flink 使用 Yarn 和 Mesos 等分布式计算框架进行机器资源调度和负载均衡,因此 Flink 在大规模集群上的性能表现更好。 4. 数据窗口处理 Spark Streaming 提供了滑动、翻转和窗口操作等灵活的数据窗口处理功能,可以使用户更好地控制数据处理的逻辑。而 Flink 也提供了滚动窗口和滑动窗口处理功能,但相对于 Spark Streaming 更加灵活,可以在事件时间和处理时间上进行窗口处理,并且支持增量聚合和全量聚合两种方式。 5. 集成生态系统 Spark Streaming 作为 Apache Spark 的一部分,可以充分利用 Spark 的分布式计算和批处理生态系统,并且支持许多不同类型的数据源,包括Kafka、Flume和HDFS等。而 Flink 提供了完整的流处理生态系统,包括流SQL查询、流机器学习和流图形处理等功能,能够灵活地适应不同的业务场景。 总之,Spark Streaming 和 Flink 都是出色的流处理框架,在不同的场景下都能够发挥出很好的性能。选择哪种框架取决于实际需求和业务场景。 ### 回答3: Spark Streaming和Flink都是流处理引擎,但它们的设计和实现方式有所不同。在下面的对比中,我们将比较这两种流处理引擎的主要特点和差异。 1. 处理模型 Spark Streaming采用离散流处理模型,即将数据按时间间隔分割成一批一批数据进行处理。这种方式可以使得Spark Streaming具有高吞吐量和低延迟,但也会导致数据处理的粒度比较粗,难以应对大量实时事件的高吞吐量。 相比之下,Flink采用连续流处理模型,即数据的处理是连续的、实时的。与Spark Streaming不同,Flink的流处理引擎能够应对各种不同的实时场景。Flink的实时流处理能力更强,因此在某些特定的场景下,它的性能可能比Spark Streaming更好。 2. 窗口计算 Spark Streaming内置了许多的窗口计算支持,如滑动窗口、滚动窗口,但支持的窗口计算的灵活性较低,只适合于一些简单的窗口计算。而Flink的窗口计算支持非常灵活,可以支持任意窗口大小或滑动跨度。 3. 数据库支持 在处理大数据时,存储和读取数据是非常重要的。Spark Streaming通常使用HDFS作为其数据存储底层的系统。而Flink支持许多不同的数据存储形式,包括HDFS,以及许多其他开源和商业的数据存储,如Kafka、Cassandra和Elasticsearch等。 4. 处理性能 Spark Streaming的性能比Flink慢一些,尤其是在特定的情况下,例如在处理高吞吐量的数据时,在某些情况下可能受制于分批处理的架构。Flink通过其流处理模型和不同的调度器和优化器来支持更高效的实时数据处理。 5. 生态系统 Spark有着庞大的生态系统,具有成熟的ML库、图处理库、SQL框架等等。而Flink的生态系统相对较小,但它正在不断地发展壮大。 6. 规模性 Spark Streaming适用于规模小且不太复杂的项目。而Flink可扩展性更好,适用于更大、更复杂的项目。Flink也可以处理无限制的数据流。 综上所述,Spark Streaming和Flink都是流处理引擎,它们有各自的优缺点。在选择使用哪一个流处理引擎时,需要根据实际业务场景和需求进行选择。如果你的业务场景较为复杂,需要处理海量数据并且需要比较灵活的窗口计算支持,那么Flink可能是更好的选择;如果你只需要简单的流处理和一些通用的窗口计算,Spark Streaming是更为简单的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷心菜不卷Iris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值