Arixv 2403 | Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey
大型模型代表了多个应用领域的突破性进步,在各种任务中取得了显着的成就。然而,其前所未有的规模伴随着巨大的计算成本。这些模型通常由数十亿个参数组成,需要大量的计算资源来执行。特别是,在为特定下游任务定制它们时,特别是在受计算能力限制的硬件平台上,广泛的规模和计算需求带来了相当大的挑战。
参数高效微调 (PEFT) 通过在各种下游任务中有效地调整大型模型,提供了实用的解决方案。具体来说,PEFT 是指调整预训练大型模型的参数以使其适应特定任务或领域,同时最大限度地减少引入的附加参数或所需的计算资源的数量的过程。在处理具有高参数量的大规模语言模型时,这种方法尤其重要,因为从头开始微调这些模型可能 computationally expensive 并且 resource-intensive,从而给支撑系统平台的设计带来相当大的挑战。
这份综述:
- 对各种 PEFT 算法进行了全面研究,检查了它们的性能和计算开销。
- 概述了使用不同 PEFT 算法开发的应用程序,并讨论了用于减轻 PEFT 计算成本的常用技术。
- 除了算法角度之外还概述了各种现实世界的系统设计,以研究与不同 PEFT 算法相关的实施成本。
这对于旨在了解 PEFT 算法及其系统实现的研究人员来说是不可或缺的资源,提供了对最新进展和实际应用的详细见解。
大型模型 (LM) 最近引起了公众的极大兴趣。他们理解上下文和细微差别的能力使他们能够熟练地处理跨多个领域的不同任务,包括自然语言处理(NLP)、计算机视觉(CV)等。在 NLP 领域,大型语言模型(LLM)在各种任务上取得了显着的进步,包括文本生成、翻译、个性化聊天机器人和摘要生成,展现出出色的熟练程度。
早期的研究【Language models are few-shot learners】表明 LLM 表现出高水平的泛化能力,**使他们能够应用所学知识到在原始训练未包含的新任务,这种能力通常称为零样本学习。尽管如此,微调对于在新用户数据集和任务上进一步增强 LLM 性能仍然重要。由于其规模,广泛采用的微调 LLM 的策略主要为参数高效微调(PEFT),这有选择地调整一小部分参数,同时保持其余参数不变。**此外,PEFT 的应用超出了 NLP 领域,并迅速引起了 CV 社区的兴趣,用于微调具有大量参数视觉模型,例如 Vision Transformer 和扩散模型,以及诸如视觉语言模型(VLM)等学科模型。
这份综述系统回顾和分类 PEFT 算法最新进展,以及不同场景下各种 PEFT 算法相关的系统实施成本。图 1 概述了本文内容。
LLM 和 PEFT 的一些基本概念
PEFT 的背景知识
微调对于提高未见过的用户数据集和任务上的 LLM 性能仍然至关重要。随着模型规模的不断增长(例如,GPT-2 中的 1.5B 到 GPT-3 中的 175B),标准的完全微调范式需要数千个 GPU 并行工作,这是非常低效且不可持续的。人们提出参数高效微调(PEFT)来调整最小参数,以在下游任务的全面调整上获得更好的性能。
在并行发展中,视觉和多模态领域的大规模预训练模型也展示了其有效的表征学习能力,能够通过微调实现从大型数据集到较小数据集的适应或跨各种数据模式的适应。因此,这种能力使 PEFT 对更广泛的研究界越来越有吸引力。
常用的数据集和任务
语言方面:
- 通用语言理解评估(GLUE)基准:
- 它集成了九个句子或句子对语言理解任务(CoLA、SST-2、MRPC、STS-B、QQP、MNLI、QNLI、RTE 和 WNLI),数据集选择过程考虑了数据集大小、文本类型和难度级别的多样性,并建立在现有数据集上。
- 它还包括专门设计用于评估和分析自然语言中固有的各种语言现象的性能诊断数据集。
- 它还具有一个公共排行榜来跟踪基准测试的性能,以及一个仪表板来可视化诊断集上的模型性能。
- 最近的 LLM 论文使用的另一类数据集是常识推理:
- OpenBookQA 旨在促进高级问答领域的研究,深入研究对主题及其表达语言的深刻理解。
- PIQA 主要强调日常场景,表现出对非常规解决方案的偏爱。
- Social IQA 作为一种新颖的问答基准而出现,专门用于衡量社会常识智力。
- HellaSwag 作为一个数据集,其本质是确定机器恰当地总结句子的能力。
- BoolQ 是一个专用于问答的数据集,特别是二元响应(是或否的查询)。
- WinoGrande 作为新的集合引入,包含 44,000 个问题。
- ARC-easy 是一个新数据集,包含真正的小学水平的多选的科学问题,旨在激发复杂问答的研究。
- ARC-challenges 只包含那些基于检索的算法和单词共现算法都不能准确解决的问题。
视觉方面:
- 图像识别,例如细粒度视觉分类(FGVC)和视觉任务适应基准(VTAB)。
- 视频动作识别,涉及 Kinetics-400、SSv2 和 HMDB51 等数据集。
- 此外 MSCOCO、ADE20K 和 PASCAL VOC 等密集预测任务数据集也被关注。
根据计算流程分类 PEFT 算法
根据操作将 PEFT 算法分为加性、选择性、重新参数化和混合四种类型。
Transformer 上应用不同类型 PEFT | 不同类型的 PEFT 对比 |
---|---|
![]() |
![]() |
Additive PEFT
通常要么引入额外的权重参数,要么修改激活。在不同的附加可调模块或参数方面彼此不同。
标准的完全微调需要大量的计算费用,并且还可能损害模型的泛化能力。为了缓解这个问题,一种广泛采用的方法是保持预训练主干不变,并仅引入在模型架构中策略性定位的最少数量的可训练参数。在针对特定下游任务进行微调时,仅更新这些附加模块或参数的权重,这会导致存储、内存和计算资源需求的大幅减少。由于其添加参数的特点,这些技术可以称为附加性调整。
大体分为三类:
Adapter
在 Transformer 块内插入小型适配器层。通常适配器层由降维投影矩阵、非线性激活函数和升维投影矩阵,以及残差框架组成。配置适配器时会将内部的维度变化配置设置为超参数。
- 顺序形式:
- Serial Adapter 中最初提出了 NLP 领域适配器概念。每个 Transformer 块都通过添加两个适配器模块来增强,一个适配器模块分别位于自注意力层之后,另一个位于 FFN 层之后。随后的研究旨在解决与适配器层相关的额外计算成本。
- AdapterFusion中提出了一种修改后的框架,其中仅在 FFN 层之后的 “Add & Norm” 步骤之后插入适配器层,以提高计算效率。
- 并行形式:这避免前述顺序形式可能会降低模型的并行性,并需要在推理效率和准确性之间进行权衡的问题。
- **Parallel Adapter (PA)**将传统的顺序适配器层重新组织为与每个 Transformer 子层并行的网络。
- CIAT、CoDA 和 KronA也采用并行适配器设计。
- 稀疏激活:
- CoDA还采用稀疏激活机制来提高推理效率。其使用软 top-k 选择过程识别每层中的 k 个重要标记,这些标记将由冻结的预训练 Transformer 层和适配器分支进行处理,以保持模型的准确性。那些不重要的标记仅由适配器分支处理,同时跳过繁重的预训练层,因此在不影响整体性能的情况下优化了推理效率。
为了提高适配器的性能和泛化能力,各种研究已经实现了多任务学习策略。
- **AdapterFusion **将所有预训练的适配器保留在模型中,并采用融合模块来合并多任务信息。
- MerA 通过基于权重和激活的最佳传输将预训练的适配器合并为一个适配器。这种方法避免了引入任何额外的可训练参数,从而提高了计算效率。
- Hyperformer 将多任务信息存储在共享的超网络中,该超网络根据任务和层 ID 嵌入生成特定于任务和层的适配器参数。给定一个新任务,只需要学习一个额外的任务嵌入,因此减少了训练参数的数量。
Soft Prompt
人们普遍认为,软提示的连续嵌入空间本质上包含更多信息,而不是通过上下文学习来优化离散 token 表示【When do prompting and prefix-tuning work? a theory of capabilities and limitations】。受到这个概念的启发,研究人员直接将可调整向量(称为软提示)附加到输入序列的开头。这可以表示如下:
- Prefix-tuning将可学习向量添加到所有 Transformer 层中的 k 和 v 序列之前。为了确保优化过程中的稳定性,Prefix-tuning 采用了重参数化策略,利用 MLP 层来生成这些前缀向量,而不是直接对其进行优化。微调后,仅保存前缀向量以供推理。该技术在多项研究中得到了调整和改进。
- P-tuning v2删除了重参数化并将其用途扩展到更广泛的模型规模和 NLP 任务。
- **APT (Adaptive Prefix Tuning)**通过引入自适应门机制来控制每层中的前缀重要性来增强前缀调整。
- 同期的工作 P-tuning 和 Prompt-tuning 仅在初始词嵌入层,而不是所有层应用可学习向量,以提高训练和推理效率。需要强调的是,后者主要在大型模型中证明了其有效性,特别是那些拥有超过 110 亿个参数的模型。
- 作为补充,Xprompt 通过分层结构修剪消除了负面提示标记,从而缩小了较小模型规模的性能差距。 并且 Universality and limitations of prompt tuning 中提供了一些针对即时调整的理论分析,证明了其在有限深度 Transformer 中的普遍性和局限性。
- **IDPG (InstanceDependent Prompt Generation)**通过使用轻量级提示生成器根据每个输入句子生成提示来改进提示调整。
- **LPT (Late Prompt Tuning)**还利用提示生成器来获取实例感知提示。与之前的工作不同,LPT 仅在中间层之后添加这些提示,而不是在初始层或所有层。这种策略性的布局消除了中间层以下的梯度计算,从而显着加快了训练速度。同时,LPT 可以提高整体性能,因为较短的反向传播路径保留了更多的任务相关信息。
- **SPT (Selective Prompt Tuning)**受 LPT 的启发,更深入地研究了提示插入策略的重要性。它在每一层中引入一个可学习的概率门控,来确定是使用从前一层传播的提示还是注入新生成的提示。
- APrompt采用了另一种提示插入策略。除了在每个 Transformer 层的输入序列开头插入输入提示之外,APrompt 还为自注意力模块中的相应的 Q、K、V 矩阵添加额外的可学习的 prompt,以学习新的注意力模式。此外,APrompt 还结合了任务特定头的学习。
软提示的概念已被用于各种下游任务,尽管它们的训练可能容易不稳定且收敛缓慢。
- SPoT 为了解决这个问题,使用从一个或多个任务中学习到的源提示来初始化新任务的提示。
- TPT (transferable prompt tuning) 提出将 Soft Prompt 从一个任务迁移来初始化另一个任务,这表明更好的提示初始化会带来很大的训练收敛加速。
- InfoPrompt 开发了两种基于互信息的损失函数,即头损失和表示损失,以找到更好的提示初始化并学习足够的任务相关信息,从而也加速收敛。
- PTP 深入研究了训练不稳定的根本原因。它识别了传统即时调整中损失情况的陡峭性质,其中输入数据的微小变化可能导致显着的损失波动。为了缓解这个问题,PTP 引入了基于扰动的正则化器来平滑损失情况,从而稳定训练过程。
- DePT 将软提示分解为带有一对低秩矩阵的较短的软提示,并使用两种不同的学习率进行优化。该策略不仅提高了性能,还提高了训练和推理效率。
- SMoP (Sparse Mixture-of-Prompts) 通过利用简短的软提示来减少训练和推理成本。在训练过程中,训练多个简短的软提示,每个提示都针对数据集的特定子集进行定制。在推理过程中,SMoP 集成了一种门控机制,将每个输入实例路由到适当的简短提示。该技术不仅提高了训练和推理阶段的效率,而且还保持了与较长软提示所实现的性能相当的性能。
- IPT (Intrinsic Prompt Tuning) 为了进一步减少软提示参数的数量,通过在多个任务上训练自动编码器来识别内在任务子空间。然后,调整新任务只需调整该子空间内的几个参数,从而显着减少训练参数的数量。
其他的一些方案
除了上面提到的方法之外,还出现了其他在微调过程中策略性地合并附加参数的方法。
- **(IA)**3 引入了三个一维的可学习重缩放向量,分别重新缩放 K、V 和 FFN 的激活。而 Q 和 K 的尺度向量可以无缝地集成到 Q 和 K 的权重矩阵中。这种集成有效地消除了推理过程中的额外计算成本。
- SSF,与之类似,也对模型激活执行线性变换。在预训练模型中的每个操作(即 MSA、FFN 和层归一化)之后,注入 SSF-ADA 层,该层对操作生成的特征执行缩放和移位。在微调过程中,只有 SSF-ADA 层可以更新。而在推理过程中,与 (IA)3 类似,这些 SSF-ADA 层可以合并到模型权重中,因此不会产生额外的推理开销。
- IPA (InferenceTime Policy Adapters) 提供了一种新颖的方法来使 LLM(例如 GPT-4)与用户特定的要求保持一致,而无需修改基本模型的参数。当处理参数非常大且通常无法直接访问的模型时,这一点尤其重要。IPA 通过在解码阶段将基本 LLM(基本策略)的输出分布与较小规模模型(适配器策略)的输出分布相结合(通过乘法和归一化)来实现这一目标。在训练过程中,策略适配器的参数使用强化学习进行微调,而基本策略的参数保持固定。在推理过程中,IPA 使用基本模型和经过训练的策略适配器的组合分布进行解码,对其进行定制以满足特定的用户定义标准。
Selective PEFT
专门需要对现有参数进行微调的算法。不需要任何额外的参数,它从主干模型中选择一小部分参数(就像是乘上了了一个二值掩码一样),仅使它们可学习,同时在下游任务的微调过程中保持大多数参数不变。根据所选参数的分组可以分类为非结构化掩码和结构化掩码。
- 非结构化掩码
- Diff pruning是一项代表性工作,它在微调过程中将可学习的二进制掩码应用于模型权重。为了实现参数效率,掩模通过 L0 范数惩罚的可微近似进行正则化。
- PaFi 只需选择具有最小绝对量级的模型参数作为可训练的。
- FishMask 使用近似 Fisher 信息确定参数重要性。然后它根据此信息选择前 k 个参数以形成掩码。
- Fish-Dip 也使用 Fisher 信息来计算掩码,但掩码将在每个训练周期动态重新计算。
- LT-SFT 引入了另一种技术来确定参数重要性,该技术受到彩票假设的启发,其中选择在初始微调阶段变化最大的参数子集来形成掩码。
- SAM【On the effectiveness of parameter-efficient fine-tuning】提出了一种二阶近似方法,该方法用可分析求解的优化函数来近似原始问题,以帮助确定参数掩码。
- Child-tuning提出了两种在每次训练迭代期间选择子网络的方法,其中仅可以更新该子网络内的参数。
- 结构化掩码:上述非结构化参数掩码会导致非零掩码分布不均匀,并在实现 PEFT 时降低硬件效率。以规则模式组织参数掩码可以提高训练期间的计算和硬件效率。因此各种结构化选择性 PEFT 技术得到了广泛的研究。
- Diff pruning提出了一种结构化剪枝策略,将权重参数划分为局部组并策略性地将它们一起消除。
- FAR 通过将 Transformer 块中 FFN 的权重分组为节点来微调 BERT 模型,然后使用 L1 范数对学习器节点进行排序和选择。为了进一步降低内存访问频率,他们还通过将学习器节点分组在一起来重新配置 FFN。
- Bitfit 仅仅调整每个 DNN 层的 bias 参数,并在小模型上取得有竞争力的结果。然而,这种方法无法处理大型模型。
- S-BitFit【Neural architecture search for parameter-efficient fine-tuning of large pre-trained language models】将 NAS 应用到 Bitfit,保留了 Bitfit 中的结构化性质,限制 NAS 算法必须为每个 bias 模块选择是否倒数为的。
- Xattn Tuning 其仅微调交叉注意层。
- SPT (sensitivity-aware visual parameter-efficient fine-tuning) 首先识别调整时通过损失的减少测量的敏感参数。该灵敏度是使用一阶泰勒展开式计算的,该展开式是在单次微调之前从单个前向和后向传递中导出的。接下来,SPT 找到敏感参数数量超过预定义阈值的权重矩阵,然后将 PEFT(例如 LoRA 和 Adapter)应用于这些目标权重,以实现结构调整。
- LayerNorm Tuning 只调整每个注意力块中的 LayerNorm 的权重。这种简单的技术可以实现与微调相当甚至更好的性能,同时提供比 LoRA 高约 10 倍的参数效率。
Reparameterized PEFT
这通常意味着构建低秩参数化以在训练期间实现参数效率的目标。重新参数化微调在训练期间引入了额外的低秩可训练参数,然后将其与原始模型集成来推理以保持推理速度。该方法分为低秩分解和 LoRA 衍生形式两大类。
早期的研究Intrinsic SAID【Intrinsic dimensionality explains the effectiveness of language model finetuning】表明,常见的预训练模型表现出极低的内在维度。换句话说,可以找到对整个参数空间进行有效微调的低维重新参数化。 Intrinsic SAID 是在 LLM 微调过程中研究内在维度特征的开创性工作。然而,最广泛认可的重新参数化技术是LoRA (Low Rank Adaptation)。
对于给定的预训练权重矩阵,如图 8(a),LoRA 引入了两个可训练的权重矩阵(其中秩 r ≪ m i n ( d , k ) r \ll min(d,k) r≪min(d,k))与预训练权重并行操作,从而实现结果对预训练组件输出的增量更新,从而封装了特定于任务的知识。在训练开始时,使用随机高斯分布对降维矩阵进行初始化,而升维矩阵初始化为零,确保增量最初保持为零值。微调完成后,LoRA 的自适应权重将与预先训练的主干权重无缝集成。这种集成确保 LoRA 保持模型的效率,在推理过程中不会增加额外的负担。
在 LoRA 训练中,选择合适的 rank 一直是一个具有挑战性的问题。为了解决这个问题,出现了一些工作:
- DyLoRA在预定义的训练预算内训练了一系列的具有不同秩的 LoRA 模块。DyLoRA 在训练过程的每次迭代中动态选择一个秩。则两个矩阵针对所选的秩定制,从而产生两个空间截取的版本,并且本次迭代期间后续的前向和反向传播将被限制在选定位置,而不是完整权重。通过这种动态且免搜索的方法,DyLoRA 显着减少了为特定任务找到最佳且固定的 LoRA 秩所需的训练时间。
- AdaLoRA使用奇异值分解 (SVD) 重新表述整个增量变换,表示为 Δ W = P Λ Q \Delta W = P \Lambda Q ΔW=PΛQ,三个矩阵都设置可学习,其中 P ∈ R d × r P \in \mathbb{R}^{d