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


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


Zeyu Han , Chao Gao , Jinyang Liu , Jeff (Jun) Zhang , and Sai Qian Zhang

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

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

 摘要


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


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


在这份调查报告中,我们对各种 PEFT 算法进行了全面研究,考察了它们的性能和计算开销。此外,我们还概述了使用不同 PEFT 算法开发的应用,并讨论了为降低 PEFT 计算成本而采用的常见技术。除了算法角度,我们还概述了各种实际系统设计,以研究与不同 PEFT 算法相关的实施成本。对于希望了解 PEFT 算法及其系统实现的研究人员来说,本调查报告是不可或缺的资源,它提供了对最新进展和实际应用的详细见解。


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

 I.引言


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

早先的研究[1]表明,LLMs ,他们表现出很高的概括能力,能够将获得的知识应用于原来训练中没有包括的新任务。这种能力通常被称为 "零点学习"。不过,要进一步提高LLMs 在新的用户数据集和任务中的最佳性能,微调仍然是必不可少的。

由于其规模庞大,一种被广泛采用的微调LLMs 的策略是调整数量有限的LLM 参数,其余参数保持不变。这种技术被称为 "参数-系数-微调"(Parameter-Efficient-Fine-Tuning,PEFT),即有选择地调整一小部分参数,其余参数保持不变。此外,PEFT 的应用范围还超出了 NLP 领域,并迅速引起了 CV 界对处理微调大参数视觉模型(如视觉变换器(ViT)和扩散模型)以及学科模型(如视觉语言模型)的兴趣。

在本调查中,我们系统地回顾了 PEFT 算法的最新进展,并对其进行了分类,同时还介绍了不同场景下与各种 PEFT 算法相关的系统实施成本。图 1 展示了本调查的概览内容。在 部分,我们介绍了LLM 和 PEFT 的一些基本概念,包括LLM 的计算流程、PEFT 的基本知识以及常用数据集和任务。

我们在第三节中根据计算流程对所有类型的 PEFT 算法进行了分类。在第 III-A 节中,我们介绍了引入额外权重参数或修改激活度的加法算法。在第 III-C 节中,我们探讨了重参数化 PEFT 算法,该算法对原始模型参数进行(低维)重参数化以进行训练,同时将权重转换回来以保持推理速度。此外,还有将上述技术结合起来的算法,我们将其归类为混合方法,并在第 III-D 节中详细阐述。

在第 节,我们将调查范围从计算角度扩展到各种潜在应用场景。我们探讨了将 PEFT 技术应用于不同模型架构的创新,包括LLMs

图 1:调查涉及的内容概览。

(第 V-A 节)、Vision Transformer(第 V-B 节)、VisionLanguage 对齐模型(第 V-C 节)和 Diffusion 模型(第 V-D 节),以完成不同的下游任务,凸显了 PEFT 在各种情况下的多功能性和适用性。

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

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

 II.背景情况


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


A.LLaMA 的计算流程


为了更深入地了解LLM 和其他基于 Transformer 的模型,我们采用了最先进的开源LLM 模型 LLaMA-7B 来仔细研究LLM 和 Transformer 的架构。如图 2 (a)所示,LLaMA 由三个主要部分组成:嵌入块、解码器块堆栈以及由线性层和软最大层组成的头部块。嵌入层的主要作用是将非结构化文本信息转化为离散数字向量(标记)块,以便于后续处理。然后,嵌入的标记被传送到解码器层进行进一步处理。每个 LLaMA 解码器都由两个基本组件组成:多头自注意(MSA)和前馈网络(FFN)。在 MSA 模块中,每个词组都将根据输入词组的两个线性映射之间的点生成所获得的注意力图进行分组。然后,分组后的词组将由前馈神经网络进一步处理。


此外,LLaMA 采用了均方根层归一化(RMSNorm)[9] 来替代层归一化,以确保高效训练。

LLM 与卷积神经网络(CNN)等其他深度神经网络(DNN)模型有两个显著的不同之处。首先, 表现出固有的自回归特性,需要多次迭代才能完成生成任务。此外, 还包含注意力机制,该机制的计算复杂度与输入长度成二次方关系。另一方面, 固有的计算特性在于每个解码器层内的注意力块。图 2(c)描述了注意力区块计算流程的高层概览。LLM LLM LLM

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

如公式 9 所述,在位置嵌入之后,中间激活将经过一系列乘法、软最大值和残差加法来生成 MSA 输出。需要注意的是,公式中的 指的是多头注意力机制中的特征维数。

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

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

矩阵 ,以及 ,计算过程可通过以下方式说明:

其中 表示 FFN 层的输入,SiLU 是 LLaMA 中使用的非线性函数。在最初的变换器中,FFN 模块可以通过以下方式进行演示:

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

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

LLM 模型根据前一个提示(输入)和之前生成的序列,每轮生成一个标记(词),如图 2 所示。这个过程会一直重复,直到模型输出命中和终止标记。为了加快 模型的推理过程,人们采取的策略是将之前的键值和值存储在键值缓存(KV-cache)中,这样就不需要为每个新标记重新计算键值和值了。在数学上,我们可以用公式 6 来表示解码器的 KV 缓存内存总成本。式中,1 和 是上下文长度和批量大小, 指层数。 是磁头维度, 是磁头个数。LLM


B.参数高效微调概述


微调对于提高LLM 在未知用户数据集和任务上的性能仍然至关重要。随着模型规模的不断扩大(例如,GPT-2 中的 1.5B 到 GPT-3 中的 175B),标准的完全微调范式需要数千个 GPU 并行工作,效率极低,难以为继。有人提出了一种算法,即参数高效微调(PEFT),其目的是调整最小参数,以获得比对下游任务进行全面调整更好的性能。

与此同时,视觉和多模态领域的大规模预训练模型也展示了其有效的表征学习能力,能够通过微调从大型数据集适应小型数据集或跨各种数据模态。因此,这种能力使 PEFT 对更广泛的研究界越来越有吸引力。

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

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

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


C.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-challenges [18]与众不同,它只包含那些用基于检索的算法和词语共现算法都无法准确解答的问题。

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

 III.蕨类植物分类法


PEFT 策略可大致分为四类:添加式 PEFT(III-A 节),通过注入新的可训练模块或参数来修改模型结构;选择式 PEFT(III-B 节),在微调过程中使参数子集成为可训练参数;重参数化 PEFT(III-C 节),对原始模型参数进行(低维)重参数化以进行训练,然后等价转换回来进行推理;混合式 PEFT(III-D 节),结合不同 PEFT 方法的优点以建立统一的 PEFT 模型。不同类型的 PEFT 算法概览见图 4。

 A.添加型 PEFT


标准的全面微调需要大量的计算费用,还可能损害模型的泛化能力。为了缓解这一问题,一种被广泛采用的方法是保持预先训练的骨干模块不变,只引入极少量的可训练参数,这些参数在模型架构中处于战略位置。在针对特定下游任务进行微调时,只更新这些附加模块或参数的权重,从而大幅减少对存储、内存和计算资源的需求。如图 4 (a)所示,由于这些技术具有增加参数的特点,因此可将其称为 "加法调整"。接下来,我们将讨论几种流行的加法 PEFT 算法。

  1. 适配器适配器方法是在变换器模块中插入小型适配器层。通常情况下,适配器层包括一个向下投影矩阵 ,然后是一个非线性激活函数 和一个向上投影矩阵 。在这种情况下, 代表隐藏层的维度,而 作为瓶颈维度,是用于配置适配器的超参数。将 作为适配器的输入,适配器模块内的计算(含残差)可总结如下:

图 3:大型模型的参数效率微调方法分类学。
 (a) 加法 PEFT

(c) 重参数化 PEFT

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

如图 5(a)所示,NLP 领域的适配器概念最初由 Serial Adapter [25] 提出。在他们的方法中,通过添加两个适配器模块来增强每个 Transformer 模块,其中一个模块位于自我注意层之后,另一个模块位于 FFN 层之后。随后的研究旨在解决与适配器层相关的额外计算成本问题。有人提出了一个改进的框架 AdapterFusion [29],即在 FFN 层之后的 "添加与规范 "步骤之后才插入适配器层,以提高计算效率。上述适配器采用顺序设计,将适配器层作为瓶颈置于变换器块中。这种方法可能会降低模型的并行性,需要在推理效率和准确性之间做出权衡。与此相反,[26] 引入了并行适配器 (PA) 方法,如图 5 (b) 所示,该方法将传统的顺序适配器层重组为并行侧网络,与每个变换器子层并行运行。同样,CIAT [27]、CoDA [28] 和 KronA [72] 也采用了并行适配器设计。除了并行设计,CoDA 还采用了稀疏激活机制来提高推理效率,如图 5(c)所示。


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

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

  1. 软提示:另外,提示调整也是一种改进模型的方法,通过微调来提高性能。人们普遍认为,软提示的连续嵌入空间本质上包含更多信息,而不是通过上下文学习来优化离散标记表征[96]。研究人员从这一概念中汲取灵感,直接将可调整向量(称为软提示)附加到输入序列的起始位置。具体表现如下
 (a) 串行适配器
 (b) 并行适配器
 (d) 适配器层

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

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

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

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

  1. 其他附加方法:除上述方法外,还有一些方法在微调过程中战略性地加入了附加参数。例如, [53] 引入了三种可学习的
 (a)
(b) SSF

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

重定向向量: