这是用户在 2024-5-22 17:47 为 https://app.immersivetranslate.com/pdf-pro/c0d91070-5997-49af-b650-9cdd14869d26 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?
2024_05_22_751d9dac637e014f337fg


大型模型的参数高效微调:全面调查


韩泽宇 ,高超 ,刘金阳 ,张杰(俊) ,张赛倩 }}

东北大学 加利福尼亚大学河滨分校 亚利桑那州立大学

纽约大学
{han.zeyu,liu.jinyan}@northeastern.edu, cgao037@ucr.edu, jeffzhang@asu.edu, sai.zhang@nyu.edu

 摘要


大型模型代表了多个应用领域的突破性进展,使得在各种任务中取得了显著的成就。然而,它们前所未有的规模带来了巨大的计算成本。这些模型通常由数十亿个参数组成,执行时需要大量的计算资源。特别是,庞大的规模和计算需求在为特定下游任务定制时带来了相当大的挑战,尤其是在受计算能力限制的硬件平台上。


参数高效微调(PEFT)通过有效地调整大型模型以适应各种下游任务,提供了一个实用的解决方案。具体而言,PEFT 是指调整预训练大型模型的参数,使其适应特定任务或领域,同时最大限度地减少引入的额外参数数量或所需的计算资源。当处理具有高参数数量的大规模语言模型时,这种方法尤为重要,因为从头开始微调这些模型可能会耗费大量计算资源,对支持系统平台设计构成相当大的挑战。


在这项调查中,我们对各种 PEFT 算法进行了全面研究,检查它们的性能和计算开销。此外,我们概述了使用不同 PEFT 算法开发的应用程序,并讨论了用于减少 PEFT 计算成本的常见技术。除了算法的角度,我们还概述了各种真实世界系统设计,以调查与不同 PEFT 算法相关的实施成本。这项调查为那些希望了解 PEFT 算法及其系统实施的研究人员提供了必不可少的资源,提供了对最新进展和实际应用的详细见解。


索引词-大型语言模型,参数高效微调,计算机系统,分布式系统。

 我。介绍


大型模型(LMs)最近引起了相当大的公众关注。它们理解上下文和细微差别的能力使它们能够熟练处理跨多个领域的各种任务,包括自然语言处理(NLP)、计算机视觉(CV)等。在自然语言处理领域,大型语言模型(LLMs)在各种任务中取得了显著进展,包括文本生成[1],[2],翻译[3],[4],个性化聊天机器人[5],[6],[7]和摘要[8],展示了卓越的熟练度。

较早的研究[1]表明LLMs表现出高水平的泛化能力,使它们能够将所获知识应用于原始训练中未包含的新任务。这种能力通常被称为零样本学习。然而,微调仍然是必不可少的,以进一步增强LLMs在新用户数据集和任务上的最佳性能。

由于其规模,广泛采用的微调LLMs的策略涉及调整有限数量的LLM参数,同时保持其余参数不变。这种技术被称为参数高效微调(PEFT),涉及有选择地调整一小部分参数,同时保持其余参数不变。此外,PEFT 的应用不仅限于 NLP 领域,还迅速引起了 CV 社区的兴趣,用于处理具有大参数的微调视觉模型,如 Vision Transformers(ViT)和扩散模型,以及视觉-语言模型等学科模型。

在这项调查中,我们系统地审查和分类了最近在 PEFT 算法方面的进展,以及不同场景中与各种 PEFT 算法相关的系统实施成本。图 1 展示了本调查的概述内容。在第 节中,我们介绍了一些关于LLM和 PEFT 的基本概念,包括LLM的计算流程、PEFT 的基本知识以及常用的数据集和任务。

我们根据它们的计算流程在第三部分对所有类型的 PEFT 算法进行了分类。在第 III-A 节中,我们介绍了引入额外权重参数或修改激活的加法算法。对于仅需要与现有参数进行微调的算法,它们属于选择性方法的范畴,其介绍可以在第 III-B 节中找到。在第 III-C 节中,我们探讨了重新参数化的 PEFT,它为训练构建了原始模型参数的(低维)重新参数化,同时将权重转换回以保持推理速度。此外,还存在结合上述技术的算法,我们已将其分类为混合方法,并在第 III-D 节中对其进行了详细阐述。我们还研究了进一步减少不同 PEFT 算法的计算复杂性的策略,包括 KV 缓存管理、修剪、量化和内存优化,在第 IV 节中。

在第 节中,我们将这项调查的范围扩大到涉及各种潜在应用场景,从而超越计算视角。我们探索将 PEFT 技术应用于不同模型架构的创新,包括LLMs。

图 1:调查涵盖的内容概述。

(第五部分-A),视觉 Transformer(第五部分-B),视觉语言对齐模型(第五部分-C)和扩散模型(第五部分-D),用于各种下游任务,强调 PEFT 在各种场景中的多功能性和适用性。

在第六部分,我们探讨了 PEFT 方法的系统设计挑战。讨论包括三种实际 PEFT 部署的高级系统解决方案:分布式调整(第 VI-B 节),PEFT 查询服务(第 VI-C 节)和并发 PEFT 调整(第 VI-D 节)。

在最后的第七部分,我们总结了我们的调查,并从算法和系统的角度提出了几个潜在的未来方向,希望为该领域的进一步研究和发展提供有价值的见解。

 背景


在本节中,我们首先讨论了LLM的计算流程,包括其基本组成部分、计算复杂性以及涉及的计算流程作为案例研究。然后在第 II-B 节中提供了对不同 PEFT 算法的简要概述。


LLaMA 的计算流程


为了更深入地了解LLM和其他基于 Transformer 的模型,我们采用 LLaMA-7B,这是一种尖端的开源LLM模型,来审查LLM和 Transformer 的架构。如图 2(a)所示,LLaMA 由三个主要组件组成:嵌入块、一堆解码器块和一个由线性和 softmax 层组成的头块。嵌入层的主要作用是将非结构化的文本信息转换为离散的数字向量块(标记),以便后续处理。嵌入的标记然后传递给解码器层进行进一步处理。每个 LLaMA 解码器由两个基本组件组成:多头自注意力(MSA)和前馈网络(FFN)。在 MSA 模块中,每个标记将通过输入标记的两个线性映射之间的点积获得的注意力图进行聚类。然后,分组的标记将通过前馈神经网络进一步处理。


此外,均方根层归一化(RMSNorm)[9]在 LLaMA 中被采用作为层归一化的替代,以确保高效训练。

LLM以两种显著方式区别于其他深度神经网络(DNN)模型,如卷积神经网络(CNN)。首先,LLM表现出固有的自回归特性,需要多次迭代才能完成生成任务。此外,LLM融入了注意力机制,这是一个具有计算复杂度的组件,随着输入长度的增加呈二次方增长。另一方面,LLM的固有计算特性在每个解码器层内的注意力块中。图 2(c)展示了注意力块中计算流程的高级概述。

在推理过程中,每个解码器将一个 4 维张量 作为输入标记。首先,输入标记将与三个权重矩阵 相乘,产生所谓的查询 和数值 的输出。鉴于 MSA 模块无法识别位置数据以及LLMs固有的自回归特性,查询和键将经过使用旋转位置嵌入[10](RoPE,表示为 的过程。 随后,键和数值将与先前的标记组合在一起。

在位置嵌入之后,中间激活将经历一系列乘法、softmax 和残差相加,以生成 Eq9 中描述的 MSA 输出。需要注意的是,在方程中 指的是多头注意力机制中的特征维度数量。

SA 输出将被转发到 FFN 块进行进一步处理。FFN 块将有另外三

图 2:(a) LLaMA 架构。(b) LLaMA 自回归模式。(c) 三种常见的 PEFT 操作。所有可学习组件都用红色突出显示,而冻结组件则用灰色突出显示。LoRA 应用于所有查询、键和值块。适配器针对 FFN 模块。Soft-Prompt 专注于调整每个解码器的输入激活。为了简化说明,我们只展示一个解码器。

矩阵 ,计算过程如下:

其中 表示 FFN 层的输入,SiLU 是 LLaMA 中使用的非线性函数。在原始 Transformer 中,FFN 块可以通过以下方式展示:

最后一个解码器层的输出将被发送到一个线性层,该线性层然后生成一个横跨完整词汇表的概率分布,以预测序列中的下一个标记。生成的标记然后将与先前的标记连接起来,并用作下一轮处理的输入。这个生成过程以自回归的方式重复,直到生成一个完整的标记序列,称为完成(图 2(b))。对于训练,计算流程与推理过程类似,不同之处在于生成的句子直接与地面真实输出进行比较并生成训练损失。然后将计算梯度跨越LLM个权重以最小化这个训练损失。

为了分析LLM中的计算成本和内存开销,我们还设置了一系列在后文第 III 节中使用的参数。表 I 显示了 LLaMA-7B 模型中的参数大小和计算维度,作为一个起始示例。

LLM模型生成令牌(单词),每轮一个,如图 2 所示,基于先前的提示(输入)和先前生成的序列。这个过程将重复进行,直到模型输出命中和终止令牌。为了加速LLM模型中的推理过程,人们采取了将先前的键和值存储在 KeyValue 缓存(KV 缓存)中的策略,这样他们就不需要为每个新令牌重新计算它们。在数学上,我们可以用方程 6 表示总解码器的 kv-cache 内存成本。在方程中,1 和 分别是上下文长度和批处理大小, 表示层数。 是头维度, 是头的数量。


参数高效微调概述


微调仍然是提高LLM在未见用户数据集和任务上性能的关键。随着模型规模的增长(例如,GPT-2 中的 15 亿到 GPT-3 中的 175 亿),标准的全微调范式需要成千上万个 GPU 并行工作,这是非常低效和不可持续的。一种算法被提出,即参数高效微调(PEFT),旨在调整最小参数以在下游任务上实现比全面调整更好的性能。

在平行发展中,视觉和多模态领域的大规模预训练模型也展示了它们有效的表征学习能力,使得能够通过微调从大型数据集适应到较小的数据集或跨越各种数据模态。因此,这种能力使得 PEFT 对更广泛的研究社区越来越具吸引力。

我们根据它们的操作将 PEFT 算法分类为加性、选择性、重新参数化和混合微调。如图 3 所示,通常使用三种主要的加性微调算法:(1)适配器;(2)软提示;(3)其他。它们在不同的可调模块或参数方面有所不同。另一方面,选择性微调不需要任何额外参数,它从骨干模型中选择一小部分参数,并只使它们可调,同时在下游任务的微调过程中保持大多数参数不变。我们根据所选参数的分组将选择性微调分类为:(1)非结构化掩蔽;(2)结构化掩蔽。重新参数化
Operation  重量符号  重量尺寸  输入张量维度 Complexity
 等式 1
 等式 2, - -
 等式 3
 等式 4 OR

表 I:LLaMA-7B 架构的配置参数和计算操作

代表将模型参数在两种等效形式之间进行转换。具体而言,重新参数化微调在训练过程中引入了额外的低秩可训练参数,然后将其与原始模型集成以进行推断。这种方法分为两种主要策略:(1)低秩分解,和(2)LoRA 导数。混合微调探索了不同 PEFT 方法的设计空间,并结合它们的优势。


LLM评估的下游任务


两种类型的任务已广泛用于LLM评估,第一种类型是通用语言理解评估(GLUE)[11]基准测试,它整合了九个句子或句对语言理解任务(CoLA,SST-2,MRPC,STS-B,QQP,MNLI,QNLI,RTE 和 WNLI),这些任务因其数据集大小、文本流派和难度级别的多样性而被选择,并且基于已建立的现有数据集。它还包括一个专门设计的诊断数据集,用于评估和分析模型在自然语言中固有的各种语言现象上的表现。此外,它还设有一个公开排行榜,用于跟踪基准测试的表现,并有一个仪表板来可视化模型在诊断集上的表现。

最近LLM篇论文中使用的另一种数据集是融入到我们研究中的常识推理,适用于各种研究方面:(1)OpenBookQA [12] 旨在促进高级问答研究,深入理解主题内容及表达语言。 (2)PIQA [13] 主要强调日常场景,展示对非传统解决方案的偏好。 (3)Social IQA [14] 是一种新颖的问题回答基准,旨在评估社会常识智能。 (4)HellaSwag [15] 是一个数据集,其本质在于确定机器在恰当地得出句子结论方面的能力。 (5)BoolQ [16] 是一个专门用于问答的数据集,特别适用于二元响应(是/否查询)。 (6)WinoGrande [17] 被介绍为一个新的编译,包含大量的 44,000 个问题。 (7) -easy [18] 作为一个新的数据集,包含真实的小学水平的多项选择科学问题,旨在激发复杂问答研究。 (8)ARC 挑战[18],独特地,仅包括那些由检索算法和词共现算法都错误地处理的问题。

图像识别是视觉模型的主要基准和应用,以细粒度视觉分类(FGVC)和视觉任务适应基准(VTAB)等基准为例。除了图像分类之外,视频动作识别是另一个关键应用领域,涉及 Kinetics-400 [19]、SSv2 [20]和 HMDB51 [21]等数据集。此外,PEFT 已被用于密集预测任务,使用 MSCOCO [22]、ADE20K [23]和 PASCAL VOC [24]等数据集。

 III. PEFT 分类


PEFT 策略可以广泛分为四类:加性 PEFT(第 III-A 节),通过注入新的可训练模块或参数来修改模型架构;选择性 PEFT(第 III-B 节),在微调期间使一部分参数可训练;重新参数化 PEFT(第 III-C 节),为训练构建原始模型参数的(低维)重新参数化,然后等效地将其转换回推断;混合 PEFT(第 III-D 节),结合不同 PEFT 方法的优势构建统一的 PEFT 模型。图 4 展示了不同类型的 PEFT 算法概述。

 添加剂 PEFT


标准的全面微调需要大量的计算开销,还可能损害模型的泛化能力。为了缓解这个问题,一个广泛采用的方法是保持预训练的主干网络不变,并仅引入一小部分可训练参数,这些参数被战略性地放置在模型架构中。在为特定的下游任务微调时,只更新这些额外模块或参数的权重,这导致存储、内存和计算资源需求大幅减少。由于增加参数的特性,这些技术可以称为增量调整,如图 4(a)所示。接下来,我们将讨论几种流行的增量 PEFT 算法。

  1. 适配器:适配器方法涉及在 Transformer 块内插入小的适配器层。通常,适配器层由一个下投影矩阵 ,后跟一个非线性激活函数 ,和一个上投影矩阵 组成。在这个上下文中, 代表隐藏层的维度, 作为瓶颈维度,这是用于配置适配器的超参数。将 表示为适配器的输入,带有残差的适配器模块内的计算可以总结如下:

图 3:大型模型参数高效微调方法的分类。
 添加剂 PEFT

(c) 重新参数化 PEFT

图 4:不同类型的 PEFT 算法。

在自然语言处理领域,适配器的概念最初是由 Serial Adapter [25]引入的,如图 5(a)所示。在他们的方法中,每个 Transformer 块通过添加两个适配器模块进行增强,一个位于自注意力层之后,另一个位于 FFN 层之后。随后的研究旨在解决适配器层带来的额外计算成本。提出了一种修改后的框架 AdapterFusion [29],其中适配器层仅在 FFN 层后的“加和归一化”步骤之后插入,以增强计算效率。上述适配器遵循顺序设计,将适配器层放置在 Transformer 块内部作为瓶颈。这种方法可能会降低模型的并行性,并需要在推理效率和准确性之间进行权衡。相比之下,[26]引入了一种并行适配器(PA)方法,如图 5(b)所示,将传统的顺序适配器层重新组织为一个并行的侧网络,与每个 Transformer 子层并行运行。类似地,CIAT [27]、CoDA [28]和 KronA [72]也采用了并行适配器设计。 除了并行设计外,CoDA 还采用了稀疏激活机制来提高推理效率,如图 5(c)所示。


具体来说,CoDA 使用软顶 选择过程,识别每一层中的 个重要标记,这些标记将由冻结的预训练 Transformer 层和适配器分支处理,以保持模型准确性。相比之下,那些不重要的标记只由适配器分支处理,跳过繁重的预训练层,因此在不影响整体性能的情况下优化推理效率。

为了提高适配器的性能和泛化能力,各种研究已经实施了多任务学习策略,例如 AdapterFusion [29],AdaMix [30],PHA [31],AdapterSoup [32],MerA [33]和 Hyperformer [34]。AdapterFusion 保留模型中的所有预训练适配器,并采用融合模块来合并多任务信息。与 AdapterFusion 不同,MerA 通过基于权重和激活的最优传输将预训练适配器合并为一个单一适配器。这种方法避免引入任何额外的可训练参数,从而提高了计算效率。Hyperformer 将多任务信息存储在共享的超网络中,该超网络生成基于任务和层 ID 嵌入的任务和层特定适配器参数。对于新任务,只需要学习一个额外的任务嵌入,从而减少了训练参数的数量。

  1. 软提示:另外,提示调整提供了另一种通过微调来改进模型以实现更好性能的方法。与通过上下文学习优化离散标记表示不同,有一种普遍的观念认为软提示的连续嵌入空间本质上包含更多信息[96]。受到这一概念的启发,研究人员直接在输入序列的开头附加可调整向量,称为软提示。这可以表示为:
 串行适配器
 并行适配器
 适配器层

图 5:三种代表性的基于适配器的微调算法示例。蓝色代表冻结,黄色代表可训练。

其中 是第 层的输入令牌序列,包括软提示令牌 和原始输入令牌 是软提示令牌的数量, 是原始输入令牌的数量。

Prefix-tuning [35] 引入了可学习的向量,这些向量被添加到所有 Transformer 层的键 和值 之前。为了确保在优化过程中的稳定性,Prefixtuning 采用了重新参数化策略,该策略利用 MLP 层生成这些前缀向量,而不是直接优化它们。微调后,只保存前缀向量以进行推断。这种技术在几项研究中得到了改进和应用[36],[37],[38]。例如,ptuning v2 [37] 去除了重新参数化,并将其用法扩展到更广泛的模型规模和 NLP 任务。APT(自适应前缀调整)[38] 通过引入自适应门机制来增强 Prefix-tuning,以控制每层中前缀的重要性。同时进行的工作 p-tuning [39] 和 prompttuning [40] 仅在初始词嵌入层应用可学习向量,而不是所有层,以增强训练和推断效率。值得强调的是,prompttuning 主要在大型模型的背景下展示了其有效性,特别是那些具有超过 110 亿参数的模型[40]。 与此相辅相成的是,Xprompt [41] 通过分层结构修剪消除了负面提示标记,从而在较小的模型规模下缩小了性能差距。[97] 的工作对提示调整进行了一些理论分析,展示了其在有限深度的 Transformer 中的普适性和局限性。IDPG(InstanceDependent Prompt Generation)[42] 通过基于每个输入句子生成提示的轻量级提示生成器改进了提示调整。在相关方法中,LPT(Late Prompt Tuning)[43] 也利用提示生成器获得实例感知提示。与以往的工作不同,LPT 仅在中间层之后添加这些提示,而不是在初始或所有层。这种策略性的放置消除了中间层以下的梯度计算,从而显著加快了训练速度。同时,由于更短的反向传播路径保留了更多与任务相关的信息,LPT 可以提高整体性能。受到 LPT 的启发,SPT(Selective Prompt Tuning)[44] 深入探讨了提示插入策略的重要性。 它在每一层引入了一个可学习的概率门,用于确定是使用从前一层传播的提示还是注入新生成的提示。APrompt [45]采用另一种提示插入策略。除了在每个 Transformer 层的输入序列开头插入输入提示外,APrompt 还在自注意力块中的相应查询、键和值矩阵前置额外的可学习提示,以学习新的注意力模式。此外,APrompt 还结合了任务特定头的学习。

软提示的概念已经被用于各种下游任务[98],[99],尽管它们的训练可能容易不稳定且收敛缓慢。为了解决这个问题,SPoT [46] 使用从一个或多个任务中学习的源提示来初始化新任务的提示。类似地,TPT(可转移提示调整)[47] 提出了从一个任务转移软提示以初始化另一个任务的方法,表明更好的提示初始化会导致训练收敛速度加快。InfoPrompt [48] 开发了两个基于互信息的损失函数,即头损失和表示损失,以找到更好的提示初始化并学习足够的任务相关信息,从而加快收敛速度。PTP [49] 深入研究了训练不稳定的根本原因。它确定了传统提示调整中损失景观的陡峭特性,其中输入数据的微小变化可能导致显著的损失波动。为了缓解这一问题,PTP 引入基于扰动的正则化器来平滑损失景观,从而稳定训练过程。 DePT [52] 将软提示分解为一对低秩矩阵的较短软提示,这些矩阵使用两个不同的学习率进行优化。这种策略不仅提高了性能,还增强了训练和推断效率。SMoP(Sparse Mixture-of-Prompts)[51] 通过利用短软提示来减少训练和推断成本。在训练过程中,会训练多个短软提示,每个提示都针对数据集的特定子集。在推断过程中,SMoP 集成了一个门控机制,将每个输入实例路由到适当的短提示。这种技术不仅提高了训练和推断阶段的效率,而且保持了与较长软提示实现的性能相媲美。为了进一步减少软提示参数的数量,IPT(Intrinsic Prompt Tuning)[50] 通过在多个任务上训练自动编码器来识别内在任务子空间。然后,对新任务进行调整只需要调整这个子空间内的少量参数,从而显著减少训练参数的数量。

  1. 其他添加方法:除了上述提到的方法之外,在微调过程中还出现了其他方法,这些方法在战略上整合了额外的参数。例如, [53] 引入了三个可学习
 (a)
(b) SSF

图 6:(IA) 和 SSF 的示意图。蓝色代表冻结,黄色代表可训练。

重新调整向量: