【大模型推理】大语言模型的推理优化:影响、挑战和实践考量

大语言模型的推理优化:影响、挑战和实践考量

论文链接:https://arxiv.org/abs/2408.03130

摘要-大语言模型在自然语言处理领域随处可见,因为它们可以在不重新训练的情况下适应新任务。然而,它们的规模和复杂性带来了独特的挑战和机遇,促使研究人员和从业者探索新颖的模型训练、优化和部署方法。本文献综述重点关注减少资源需求和压缩大语言模型的各种技术,包括量化、剪枝、知识蒸馏和架构优化。主要目标是深入探讨每种方法,并突出其独特的挑战和实际应用。讨论的方法被分类为一个分类法,提供了优化领域的概述,并帮助导航以更好地理解研究轨迹。

索引词-神经网络,变压器,推理优化,量化,剪枝,知识蒸馏,注意力,注意力优化,解码,解码优化

I. 引言

近年来,大语言模型(LLMs)已成为自然语言处理(NLP)的基石,以前所未有的能力革新了各个领域。这些多功能模型在多种应用中表现出显著的能力,从辅助代码生成[1][2],到促进新闻摘要[3][4],甚至增强信息检索系统以提高搜索精度和效率[5][6]。此外,这些模型的规模和复杂性带来了独特的挑战和机遇,促使研究人员和从业者探索新颖的模型训练、优化和部署方法。优化大型模型以提高速度、减少资源消耗并使其更易于访问,是LLM研究的重要组成部分。

本研究论文的主要目标是探讨减少资源需求和压缩大语言模型的各种技术,包括深入分析每种方法并突出其独特的挑战和实际影响。讨论的方法包括量化、剪枝、知识蒸馏和架构优化。为了更好地理解这些技术之间的关系,它们被归类为一个分类法,提供了优化领域的概述,并帮助导航以更好地理解研究轨迹。有关分类的视觉表示,请参见图1,并在各自的部分中详细了解每个类别讨论的文献。

II. 前提

A. 用于语言建模的变压器

近年来,变压器已成为自然语言处理(NLP)任务的主要架构[7][8][9][10]。这种突出的原因在于注意力机制,使得变压器能够有效地关注文本的不同部分并学习复杂的语言结构[11][12]。该机制旨在确定序列中不同元素相对于特定元素的重要性[11][12]。这些学习到的结构使变压器能够解决复杂的NLP问题。此外,变压器通常由多个变压器块组成,每个块包含一个注意力模块和一个前馈模块[11][13]。前馈模型有助于学习输入与输出之间的映射,并可以用于编码器或解码器块[11][12]。编码器并行处理输入序列,而解码器块是自回归的,每次输出一个标记进行推理[12]。

B. 大语言模型中的涌现能力

近年来,模型被调整以适应不同的任务。这意味着每当需要不同的任务时都会训练一个新模型,例如摘要或问答[14][15]。例如,针对SQuAD数据集[17]训练的用于问答的RoBERTa[16]的微调版本,或在SST-2数据集[19]上用于文本分类的DistillBERT[18]。如果没有合适的模型可以训练,提供不同的模型可能会很有挑战性。然而,大语言模型具有特殊能力,可以通过仅提供一项任务描述和几个示例来简单地理解如何执行新的、未见过的任务。这些能力被称为涌现能力[3][7]。例如,LLM可以使用这些能力解决复杂的数学问题,只需在提示中提供必要的上下文而无需重新训练[20]。因此,解决涌现能力可以根据它们的提示策略进行分类。[3]的作者将其分为少量示例(Few-Shot)和提示增强(Prompt Augmentation)策略。少量示例提示提供相关示例以推断所需的行为。同时,提示增强捕获所有帮助模型更好理解所需行为的策略,而不明确提供少量示例。一个显著的例子是思维链[20],它为模型提供了相关的中间步骤以解决问题和任务描述。

图1. 优化技术分类法

C. 数字的硬件表示

图2. 机器学习中使用的不同表示格式 [28]

在硬件层面显示数字涉及三个部分:符号、范围和精度,如图2所示。一个数字是正数还是负数由符号表示 [24]。范围指的是可表示的数字的数量。范围越大,可以表示的数字(高和低)就越多 [24]。精度指的是可以精确表示多少小数 [24]。精度越大,数字越细致。

对于大语言模型(LLMs),内存使用量由参数的数量及其精度决定。由于FP32的高内存要求,LLMs默认使用FP16。对于大约有1750亿个参数的模型,所需的内存空间大约为 334    G B {334}\mathrm{\;{GB}} 334GB

III. 推理优化

推理优化描述了在保留未压缩基线质量的同时,增强LLM的速度、效率和性能的过程。对于大型语言模型,这涉及更快速地处理输入,并更高效或以更高的资源效率生成输出。

A. 量化

量化涉及将高精度数字转换为低精度空间,同时保留其含义和重要性 [29] [30] [31]。真正的优势在于,由于使用更少的字节在像GPU这样的设备上表示数字,内存需求显著降低。这使得设备能够更快地加载数据并更高效地执行计算,从而在内存消耗、计算速度和能源效率方面带来切实的改善 [32] [12] [33] [27] [34]。这些好处使得在硬件受限的设备上更灵活地部署LLMs成为可能,这也是该技术的实际应用。

实现这一目标的一种方法是将高精度浮点数转换为低精度浮点数。另一种策略是在将浮点数转换为整数时减少精度 [30] [35] [27]。因此,以下段落主要更详细地讨论整数量化,并阐明聚焦于浮点数的文献。

整数量化可分为均匀和非均匀策略。这些策略描述了变换的执行方式。均匀量化以均匀间隔转换浮点数,并将每个间隔映射为一个整数值。非均匀量化可能没有均匀间隔 [12] [29]。然而,由于目前的加速器(如GPU)在使用非均匀量化时面临的困难,研究主要集中在均匀量化上,如 [30] [12] 所强调的那样。

图3. 对称量化示例 [36]

均匀量化分为对称和非对称量化,用于分类和描述变换的执行方式。对称量化以将浮点数范围的零点设定在整数空间的同一位置的方式转换浮点数范围,如图3所示 [30] [29] [37]。非对称量化则将浮点范围的最小值和最大值转换为整数空间的最低和最高值,如图4所示 [30] [29]。

图4. 非对称量化示例 [36]

在Transformer上的应用。精度的降低可以应用于Transformer的各个方面。最常见的两种策略是仅量化权重或量化权重和激活。因此,回顾的文献可以分为讨论仅权重或权重与激活策略的量化论文。欲更深入了解讨论的文献,请参见表1。

将量化应用于LLM有不同的维度。对于每种量化策略,强调压缩影响的是哪个层、哪些层元素以及什么位精度是很重要的。例如,最初的实验之一集中在压缩BERT架构的编码器层,仅关注权重 [30] [27] [35]。这发展为对权重和激活量化的实验 [37] [38]。这导致了对不同位精度的实验,目前主要集中在8位 [30] [37]、4位精度 [27] [35]或更低 [39] [40] [41]。因此,这些维度在每一篇文献中都有所突出,以提供所提议方法的全面图像。首先讨论仅权重的文献,然后讨论权重与激活量化的文献。

LLM.Int8() [30] 应用8位权重量化,使用逐向变换方案。研究发现,异常值维度在量化超过十亿参数的模型时具有显著影响。他们得出结论,想要实现高质量量化,需要混合精度分解,这将这些异常值保持在更高的精度格式中。GTPQ [35] 研究了使用4位进行压缩的可能性。他们的方法采用层级方案,在每一层中解决重建问题。这通过减少变换不准确性获得了更高质量的量化。Dettmers和Zettlemoyer [43] 研究了量化位宽与模型大小之间的权衡。他们发现4位压缩几乎普遍最佳,既可实现性能提升,又能保持质量。AWQ [27] 专注于线性层,采用逐通道量化方案。分析每个通道中的激活,以识别显著权重,并以不同的方式进行量化,以保持这些权重的重要性。然而,所有权重都分配相同的位宽,以避免混合精度量化的性能成本。OWQ [39] 仅关注线性层,并遵循与AWQ相同的原则,分析权重的重要性。他们最后得出一种不同的量化方案,使重要的权重保持在更高精度,同时压缩其他所有权重。SpQR [41] 基于GPTQ的见解,采用逐层方法。量化过程分为两个步骤。首先,基于输出行为识别并孤立权重。其次,对剩余权重应用量化步骤,将其减少到3-4位。

表I 量化文献概述

除了仅进行权重量化外,量化还可以应用于权重和激活。ZeroQuant [37] 进行了关于大型语言模型的权重和激活压缩的研究。他们发现,量化激活的颗粒度比权重更细致对于保持质量至关重要。他们得出结论,权重允许4位压缩,但量化激活保持在更高的8位精度以保留质量。他们指出,对于BLOOM [44] 系列模型,较粗颗粒度和更高精度的量化会比较细颗粒度和较低精度的量化效果更好。SmoothQuant [42] 专注于线性层,使用逐通道光滑技术。他们得出结论,将量化难度从激活转移到权重可以保留更多激活信息。OmniQuant [40] 通过为权重和激活引入独立的可学习参数来优化权重和激活的量化。这种方法使得可以更有效地调整各种量化设置。

实践方面。量化的实际应用可分为量化感知训练(QAT)和后训练量化(PTQ)。QAT旨在通过在训练期间应用量化来提高语言模型的效率和可访问性。在训练期间采用量化后,模型现在可以学习低精度表示,随后的权重更新可以帮助减轻由于数据类型转换所造成的潜在质量下降。该原理首次应用于小型BERT模型,展示了量化的可能性 [29] [31]。这使得可以用仅少量GPU高效地微调拥有数十亿参数的LLMs [30] [45]。现在可以高效地训练多个LLM,并在需要时进行推理切换。

如果目标是训练一个针对特定任务的模型,同时考虑到高资源需求,量化感知训练将是有帮助的。然而,许多微调模型,例如llama2-chat [46]或CodeLlama [47],已经可用。后训练量化可以帮助管理存储和部署挑战,而无需显著的权重变化或广泛的训练努力。因此,当前重点研究对质量影响最小的PTQ技术。量化错误。量化可能引入由于数据类型转换导致的不准确性,这可能会显著影响压缩模型的质量。为了使 PTQ 可行,重点是在尽可能保持模型特性和知识表示的同时,减少这些不准确性。以下段落讨论了有效使用量化所面临的挑战。

LLM.Int8() [30] 识别了将量化应用于超过十亿参数的变换器时遇到的挑战:大型模型中异常值特征的出现。这些异常值因其极端的大小而难以量化,可能导致整数表示的偏移。此外,AWQ [27] 通过对结果激活的分析发现,并不是所有权重都是同等重要的。ZeroQuant [37]、ZeroQuant-V2 [38] 和 SmoothQuant [42] 发现量化激活显著更具挑战性,并导致质量的显著下降。这个结论就是后者建议将复杂性从激活转移到权重的原因。

实际约束。必须考虑实际挑战,以减少资源消耗并加快计算速度。许多方法依赖于特定数据类型的硬件支持,如 8 位整数和特定操作符,以高效利用它们 [48]。因此,有两个实际维度需要记住:计算压缩所需的资源量和实现实际加速所需的推理约束。

位宽、量化方案和精度对量化效率的影响显著。例如,ZeroQuant [37] 和 SpQR [41] 能在数小时内压缩大约 1750 亿参数的模型,而其他方法则需要更多的计算时间才能实现相同程度的压缩 [42] [30] [29]。因此,在选择量化变体时,考虑这一因素至关重要。

在压缩期间的资源需求和使用压缩模型的限制对于考虑至关重要。每种方法以不同的方式应用压缩,这可能导致不同的推理行为。像 LLM.Int8() [30] 这样的方法可以有效减少 LLM 的内存消耗,但由于推理过程中需要去量化,因此没有显著提高计算速度。其原因是提出的混合精度方法,这对量化和分解开销有显著影响,并依赖于优化的 GPU 核心。另一个制约是硬件对量化目标的支持。如果硬件不支持量化目标,额外的开销将使压缩模型变慢。例如,ZeroQuant [37] 提供了一个名为 CUTLASS 的自定义 Nvidia GPU 核心,以改进整数乘法并减少数据加载开销。OWQ [39] 和 SpQR [41] 提供自定义核心和后端实现,以加速数据加载开销和矩阵乘法。

因此,目标部署环境对选择的优化技术有重大影响。此外,有必要考虑到如果方法依赖于特定硬件的自定义代码,其部署可能比预期更复杂。在 AWQ [27] 中,作者提到他们在默认的 PyTorch [21] API 上构建算法,这不依赖于自定义代码,使得使用广泛的硬件配置成为可能。

总结。量化方法的选择取决于多个因素,包括资源需求、推理约束以及压缩效率和模型质量之间的期望平衡。

  • 量化涉及将数字数据表示为硬件(如 GPU)可理解的格式。

  • 主要概念是将精确的数值转换为不那么精确的数值,同时保持其含义,从而减少内存和计算复杂性。

  • 量化可以分为均匀和非均匀。均匀量化均匀地分隔浮点数的区间。

  • 均匀量化,无论是对称还是非对称,都可能影响数据分布的映射。

  • 量化可以在训练期间应用,称为量化感知训练(QAT),或在训练后应用,称为后训练量化(PTQ)。

  • 由于数据类型转换,可能会出现不准确性,这可能会显著影响模型质量。

  • 有许多不同的方法专注于量化权重、激活或两者。他们使用不同的量化方案和位宽。

  • 必须考虑优化的资源需求和推理约束。

  • 量化的约束包括量化开销、对量化目标的硬件支持以及部署复杂性。

B. 剪枝

剪枝描述了识别和移除冗余权重的过程,同时试图保留未压缩基线的属性 [49] [50]。剪枝有两种类型:结构化和非结构化剪枝。结构化剪枝专注于通过仅移除高粒度结构(如行和列、连接和层次结构)来保留网络的原始结构 [51] [52] [53]。非结构化剪枝可以移除单个权重,导致不规则的稀疏结构 [50] [54] [55]。被调查的文献可以在表 II 中查看。

表 II 剪枝文献概述

几项研究正在研究非结构化剪枝。Frantar [50] 提出了 SparseGPT,专注于权重矩阵和剪除单个权重。该方法旨在通过将剪枝问题重新表述为稀疏回归来保持质量下降在可控范围内。剪枝和调优 [54] 在每个剪枝步骤中引入了微调,改进了 SparseGPT。文献 [55] 不依赖于重新训练或迭代权重更新。该方法与 LLM.Int8() [30] 类似,通过根据激活计算权重的重要性,然后剪除不重要的权重。

除了结构化剪枝,还有几项研究调查非结构化剪枝的应用。LoRAPrune 旨在通过使用 LoRA 机制来估计权重的重要性,从而提高剪枝效率 [51]。利用结构化剪枝和 LoRA 机制进行重要性估计,使得剪枝模型能够合并微调后的 LoRa 权重,从而提高效率。权重重要性的计算也是文献 [52] 的一个主要因素,其遵循与 LLM.Int80 [30] 和 AWQ [27] 相似的策略。他们提出通过计算两个关键数据来识别可剪枝的权重:敏感性和唯一性。敏感性查看神经元的输出,并提供有关其重要性的见解。唯一性则提供有关方差的见解,表明一个神经元与其他神经元的差异。低唯一性表明冗余,其他神经元可以重构输出。结合使用这些关键数据识别可剪枝的结构。LLM-Pruner [53] 提出了一个三步过程:(1)发现阶段,识别相关的结构及其依赖关系。(2)估计阶段,对识别的结构进行估值,并决定哪些结构可以剪枝。(3)恢复阶段,通过有效的训练步骤来减轻剪枝造成的错误。

剪枝的挑战。之前,剪枝需要重新训练步骤以保持未压缩基线的质量和特性 [53] [56] [50]。然而,最近的研究尝试在没有显著再训练工作的情况下进行零次剪枝 [53] [55]。识别所有相关的剪枝结构是具有挑战性的,可能导致错误或过度剪枝的糟糕模型,或错过潜在的优化 [50] [53] [55]。

剪枝的实际约束。对数十亿参数的模型进行非结构化和结构化剪枝可能很难有效实现,因为可剪枝的结构数量庞大。找到合适的剪枝结构可能既具有挑战性又计算密集 [50]。例如,Frantar 等 [50] 利用 GPTQ [35] 的见解对一个 1750 亿参数的 GPT 风格模型进行剪枝,大约花费了四个小时。然而,Sun 等 [55] 改进了剪枝度量的效率,以实现更快的压缩,从而允许在需要时进行实时剪枝。非结构化剪枝则面临自己的一系列挑战。例如,由于在压缩后留下的不规则结构,剪枝模型不再兼容 LoRA 权重 [51]。这一限制可能会阻碍特定部署场景,在这些场景中,需要特定任务模型并应用实时剪枝。

考虑到使用剪枝模型进行推理的约束至关重要。为了实现加速,生产环境中的硬件必须支持稀疏模型。LoRA-Prune [51] 强调,为了利用改进,非结构化剪枝需要特定的独特硬件配置。SpraseGPT [50] 在其性能评估中提到以结构化剪枝为目标的特定硬件支持。因此,识别目标硬件是否支持结构化或非结构化剪枝模型很重要。

总结。

  • 剪枝涉及识别和移除冗余权重,同时保持未压缩基线的属性。

  • 剪枝分为结构化和非结构化两种类型。- 非结构化剪枝专注于移除单个权重,导致不规则的稀疏结构。

  • 结构化剪枝通过移除行、列和连接等高粒度结构来保留网络的原始结构。

  • 剪枝需要重新训练以维持质量和特征,但最近的研究尝试在没有显著重新训练的情况下实现零-shot剪枝。

  • 识别所有相关剪枝结构可能具有挑战性,这影响了零-shot剪枝方法的有效性。

  • 在推理过程中,硬件限制、稀疏模型支持和剪枝比例显著影响效率。

C. 知识蒸馏

知识蒸馏描述了一种微调和压缩技术,允许将大型复杂模型的知识转移到更小、更精简和更高效的模型中[57][58][59][60]。转移知识的方式是训练一个更小的学生模型,使用更大教师模型的输出[61]。 有两种不同的方法,黑箱知识蒸馏,仅允许访问教师模型的输出[62][63][64][65],和白箱知识蒸馏,在这种情况下也利用了教师模型的参数[61][66][67]。所有已审阅文献的详细列表见表III。

白箱知识蒸馏。利用教师模型的内部工作来改善学生模型的学习称为白箱知识蒸馏。其核心思想是使用教师的分布和参数设置来使学生更有效地学习。通过减少Kullback-Leibler散度(KLD)来实现学生模型的质量提升。[61][66][67]

MiniLLM的作者[61]旨在最小化教师与学生之间的分布差异,但指出这可能会因LLMs庞大的输出空间而导致漂移,学生模型可能无法复制。为了减轻这一问题,他们建议优化逆KLD,鼓励学生学习优先考虑正确性的概率。Agarwal等人[66]调查了两个模型在蒸馏过程中的分布行为,结果发现两个基本问题:(1)教师与学生之间的分布不匹配,(2)学生缺乏有效模仿教师的表达能力。为了实现更精确的模仿,他们在训练过程中对学生的输出进行了采样以改善学习。他们还研究了欠规范化,提出了优化KDL。文献[67]的作者批评说,知识蒸馏的固有原则存在问题,因为以往的策略专注于特定的任务设置,而不是传递当今LLMs中存在的广泛技能。为了实现任务无关的蒸馏,他们建议截断更大的模型并用其层来初始化更小的模型。然后,使用语言建模目标对更小的模型进行蒸馏。

黑箱知识蒸馏。黑箱知识蒸馏的不同之处在于只能访问教师的回应,不能再使用教师模型的部分[62][63][65][73]。为了有效地使用黑箱知识蒸馏,学习过程通过最新的关于突现能力的研究得到了增强,这使得使用链式思维等方法来提高质量成为可能[9]。这意味着使用各种提示技术来支持将较大的教师模型蒸馏为更小、更高效的模型。

这些提示技术之一是上下文学习,它结合相关描述和示例使用自然语言提示,以使模型能够完成或解决一个任务。这种技术将较小的模型蒸馏,以从教师模型转移上下文少样本和语言建模能力。转移上下文学习有两种蒸馏策略:元上下文调优(Meta In-Context Tuning,Meta-ICT)和多任务上下文调优(Multitask In-context Tuning,Multitask-ICT)[62]。Meta-ICT在预训练阶段训练较小的模型,使用不同任务上的上下文学习示例。结果是一个微调模型,它学会识别不同的任务,并利用这种能力在任务适应阶段将这些知识转移到未见的任务上。由[62]提出的Multitask-ICT则是在任务适应阶段进行调整,而不是在预训练阶段进行调整。结果表明,Multitask-ICT更为精确,相较于Meta-ICT具有优势。

接下来的蒸馏策略使用链式思维帮助学生学习教师模型的能力。通过逐步指导寻找解决方案来增强提示,这是与仅提供任务描述的上下文调优的区别[20]。文献[63]的作者研究了提示增强,发现包含推断解决方案的说明对学生在任务适应时提供了显著帮助。[68]的作者将这些洞察调整为知识蒸馏,并将微调阶段分为几个步骤。第一步是用教师生成的链式思维解释增强现有的指令调优数据集。然后,学生通过模仿教师生成的解释来学习这些增强的数据集。提供中间步骤来寻找解决方案以及说明解决方案为何正确,进一步增强了学生模型的学习[69]。作者进一步认为,提供不止一种理由有助于学生模型更有效地学习,因为复杂问题可能有多种解决方案。学生模型的质量取决于用于蒸馏的Dataset的质量。[64]认识到评估能力的不足,不在用于蒸馏的数据集中,可能是一个潜在的问题。他们认为,将学生模型专注于特定任务集合使其成为一个专门模型,而无法进行一般推理。[70]的作者转变了蒸馏的范式,从使用问题和理由进行学习,转向通过合适的理由来预测答案。他们利用未标记的数据集,并生成带有理由的标签作为证明。然后,使用标签和理由蒸馏较小的模型。分解蒸馏问题为理解问题结构和提供这些子问题的解决步骤,是[71]提出的。这种划分导致训练两个模型,其中第一个模型学习将问题分解为更小的子问题,并用子问题标注提示。第二个模型学习利用这些子问题生成更高质量的答案。将链式思维与理由生成相结合被[72]认定为有问题。存在两个基本问题:LLMs容易产生幻觉并可能提供错误的理由,学生学习这些错误理由。其次,学生可能会采取捷径,独立于提供的理由生成答案。为了解决这些问题,他们提出了对比解码,将答案与理由联系起来。这种解码过程意味着学生必须使用反事实推理,这使得其更加真实。[73]的作者还专注于通过生成以小型Python程序形式的理由来提高真实度。这些程序随后会被自动评估,错误的推理更容易被发现。提高质量的另一种方法是为学生提供反馈[74]。教师模型使用学生的生成内容,并在学生遇到困难时决定干预。干预是通过心理模型的方法实施的。这意味着教师为干预决策创建学生的小型心理模型。

表III 知识蒸馏文献概述

另一种蒸馏策略是仅使用指令的详细描述,而不提供示例或中间步骤的描述。为了使较小的模型能够解决未见的任务,它在大量不同指令上进行训练[76][77]。Lion [75] 将蒸馏过程分为三个步骤。在模仿阶段,学生的响应与教师的对齐。然后,教师识别错误答案,以便在随后的区分阶段收集复杂的指令。最后,在生成阶段,利用收集到的指令并丰富它们以帮助学生更有效地学习。La-Mini-LM [65] 研究了当前的指令跟随蒸馏策略。他们发现缺乏可用的小规模蒸馏数据集,而可用数据集需要提供更多多样性以产生高质量模型。此外,学生评估过于狭隘地集中在一个模型系列上,评估过程需要更加精确。为了改善数据集的多样性,提出了一种新的蒸馏数据集。此外,在该数据集上训练的模型使用全面的测试方法进行了深入评估。挑战。影响蒸馏质量的挑战非常显著。为了使更多学生具备教师的能力,积极研究减少分布不匹配的问题 [61] [66]。减少的困难可能源于缺乏公开的多样化蒸馏数据集 [65]。这使得要么人工创建,要么增强现有数据集。然而,当前数据集的多样性和细节也可能是蒸馏出有能力学生的挑战 [65]。此外,为学生达到特定质量方面也具有挑战性。[66] 的作者发现,蒸馏出具有与教师相似的分布和表现力的学生是富有挑战的。一项被研究的可能原因 [78] 认为,学生的能力只能与所用教师的表现一样好。这意味着学生学习的是教师中已有的幻觉、偏见和毒性行为。如果只使用黑箱知识蒸馏,存在仅模仿教师风格而不真正学习行为的风险 [78]。

实际约束。在许多知识蒸馏策略中,会部署学生-教师设置。这导致在白箱和局部黑箱蒸馏过程中需要将两个模型加载到内存中,这需要一个内存强大的环境 [61] [66] [67]。运行两个模型的成本很高,因为计算和内存都是昂贵的。这些成本也适用于 API,其中内存成本包含在 API 使用成本中。因此,必须考虑是否需要微调,鉴于资源要求,以及它是否优于简单的优化技术,如量化。

总结。

  • 知识蒸馏是一种用于微调和压缩模型的技术,目标是将知识从更大的模型转移到更小的模型。

  • 这涉及使用更大的“教师”模型的输出训练一个更小的“学生”模型。

  • 使用了两种方法,黑箱和白箱知识蒸馏。

  • 白箱知识蒸馏使学生能够利用教师的参数以便更好地理解。

  • 黑箱知识蒸馏仅依赖教师的预测。

  • 白箱设置中的标准学生-教师配置需要两个模型在内存中操作,这可能计算上要求很高。

  • 分布不平衡、缺乏多样化数据集以及模仿不良教师行为是知识蒸馏中质量挑战的一部分。

  • 黑箱知识蒸馏的性质也带来了挑战,学生可能会模仿教师的风格而不理解所需的行为。

D. 架构优化

变换器由于注意机制而表现良好。该机制的计算需要大量内存,因为需要关键-值缓存。在生成过程中,预测下一个令牌需要缓存所有先前的令牌以计算联合概率 [12] [79]。因此,一个重要的重点是提高解码过程或注意机制的效率 [80]。以下讨论用于优化解码阶段的流行优化策略。

分页注意。vLLM [79] 的作者集中于使关键-值缓存更加内存高效。这一优化通过转移操作系统中存储内存的概念并将其应用于注意机制而实现。在这里,关键-值缓存被分成有效分配到内存中的块。这种分配通过将块置于物理内存的不连续部分中,更加高效。

窗口化注意。窗口化注意由 [80] 提出,试图缓解大序列变换器的巨大的计算需求。由于关键-值缓存,内存需求随着序列长度的增加而以平方级别增长 [80]。窗口化注意使用滑动窗口来更加局部地聚焦注意,从而减少复杂性。这个关注对于掩码语言建模是有益的,因为只需要局部关注,但对于需要更广泛关注的分类则是适得其反。为此,作者建议使用带有扩展全局窗口的滑动窗口,这有助于扩展上下文。

注意力汇。使用滑动窗口注意时存在一些挑战。当滑动窗口超过缓存大小时,模型可能崩溃,需要 costly 重新计算 [81]。作者发现前面的令牌获得了显著的注意力分数。因此,他们得出结论,认为与其在滑动窗口进一步推进后丢弃前面的令牌,不如保留几个前面的令牌。这导致了质量和性能的提升,如 [81] 所述。

闪电注意。注意算法的复杂性不仅可能是一个瓶颈,而且填充数据的设备数据管理也可能存在问题 [82]。Flash-Attention [82] 的目标是尽量减少在计算注意矩阵时对数据移动的需求。他们通过重新组合 LLM 不同部分的操作,并将相关数据保留在内存中以减少内存加载开销来实现这一目标。

推测解码。仅解码变换器的解码阶段由于生成的顺序特性而成本高昂 [79] [82] [83]。推测解码 [83] 并不是优化注意,而是专注于提高解码过程的效率。它依据在并行中执行生成的原理,同时验证其必要性。并行性通过使用两个模型实现:一个主模型和一个支持模型。支持模型提供令牌建议,主模型根据需要接受或拒绝这些建议。推测解码通过最大化这些推测任务的接受概率,同时确保其输出与仅来自目标模型的输出保持相同的分布,从而显著降低了推断时间和资源消耗。作者提到推测解码在各种任务和模型大小中都非常有效,包括无条件生成、翻译、摘要和对话任务,导致延迟显著改善 2 x 2\mathrm{x} 2x - 3 x 3\mathrm{x} 3x ,而不影响输出质量。

总结。

  • 变换器的注意机制需要大量计算资源。

  • 为了优化关键-值缓存,可以将其分为存储在物理内存不连续部分的块。

  • 随着变换器序列长度的增加,注意的复杂性呈指数级增长。

  • 滑动窗口和注意力汇可以帮助降低这种复杂性。- 闪电注意力通过重新组装操作并将相关数据保留在内存中,最小化了昂贵的数据移动。

  • 推测解码从更高效的模型中抽样生成,并通过减少对更大模型的运行需求来实现加速。

IV. 结论

本文献综述探讨了多种优化技术及其挑战和实际应用。旨在提供对当前研究状态及其实用考虑的见解。探讨的方法包括量化、剪枝、知识蒸馏,以及对注意力机制和解码过程的优化。优化发展研究和适用性有不同的级别。这种分级使得将这些技术分类到其当前的研究和适用状态成为可能。与量化相比,剪枝方法需要开发更精确的方法来找到所有可用的压缩结构。相比之下,量化文献详细讨论了将其应用于不同LLM元素的影响。研究的进展使量化主要集中在权重上,并试图通过位宽推动压缩。知识蒸馏通过选择蒸馏数据集和提示技术提供了最大的灵活性,影响能力。然而,它需要更多的训练,这使得设置和资源要求成本高昂。总之,所选择的优化技术取决于优化目标、可用资源和目标环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数智笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值