Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey 大模型的参数高效微调:综述
索引术语 - - 大型语言模型、参数高效微调、计算机系统、分布式系统。
原文链接: Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey
# 摘要
大型模型代表了多个应用领域的开创性进展,在不同的任务中取得了显著的成就。然而,它们前所未有的规模伴随着巨大的计算成本。这些模型往往由数十亿个参数组成,需要耗费大量的计算资源才能执行。特别是在受计算能力限制的硬件平台上,扩展的规模和计算需求为定制特定的下游任务带来了相当大的挑战。
参数高效微调 (Parameter Efficient Fine-Tuning,PEFT) 通过高效地适应各种下游任务的大模型,提供了一种实用的解决方案。特别地,PEFT 是指在最小化引入的额外参数数量或所需的计算资源的同时,调整预先训练好的大型模型的参数,使其适应特定的任务或领域的过程。这种方法在处理具有高参数计数的大规模语言模型时尤为重要,因为从零开始微调这些模型可能会导致计算开销大和资源密集型,从而在支撑系统平台设计中带来相当大的挑战。
在这项调查中,我们对各种 PEFT 算法进行了全面的研究,考察了它们的性能和计算开销。此外,我们提供了使用不同 PEFT 算法开发的应用程序的概述,并讨论了用于减轻 PEFT 计算成本的常用技术。除了算法角度,我们还概述了各种真实世界的系统设计,以调查与不同 PEFT 算法相关的实现成本。这项调查是研究人员了解 PEFT 算法及其系统实现的不可或缺的资源,对最近的进展和实际应用提供了详细的见解。
# I. 导语
大型模型 (LMs) 最近引起了公众的极大兴趣。他们对上下文和细微差别的理解能力使他们能够熟练地处理跨多个领域的多样化任务,包括自然语言处理 ( NLP )、计算机视觉 ( CV ) 等。在 NLP 领域,大型语言模型 ( Large Language Models,LLMs ) 在文本生成 [ 10 ],[ 243 ],翻译 [ 239 ],[ 61 ],个性化聊天机器人 [ 192 ],[ 103 ],[ 187 ] 和摘要 [ 212 ] 等任务中取得了显著的进步,表现出卓越的能力。
早期的研究 [10] 表明,LLMs 表现出高度的泛化能力,使其能够将获得的知识应用到原始训练中没有包含的新任务中。这种能力通常被称为零样本学习。尽管如此,微调仍然是必要的,以进一步提高 LLMs 在新的用户数据集和任务上的最优性能。
由于 LLM 的规模,广泛采用的 LLM 微调策略是在保持其余参数不变的情况下,调整有限个 LLM 参数。这种技术称为参数高效微调 (Parameter-Efficient-Mining,PEFT),是指在保持其他参数不变的情况下,选择性地调整其中一小部分参数。此外,PEFT 的应用超越了 NLP 领域,并迅速引起了 CV 界的兴趣,用于处理具有大参数的微调视觉模型,如 Vision Transformers ( ViT ) 和扩散模型,以及视觉语言模型等学科模型。
图 1:综述内容概览
在该篇综述中,我们系统地回顾和分类了 PEFT 算法的最新进展,以及在不同场景下与各种 PEFT 算法相关的系统实现成本。图 1 呈现了本次调查的概况内容。第 2 节介绍了 LLM 和 PEFT 的一些基本概念,包括 LLM 的计算流程、PEFT 的基本知识以及常用的数据集和任务。
在第三节中,我们根据 PEFT 算法的计算流程对其进行了分类。在第三节 - A 中,我们介绍了加性算法,这些算法要么引入额外的权重参数,要么修改激活函数。对于只需要利用现有参数进行微调的算法,属于选择性方法的范畴,其介绍可参见第 III - B 节。在第 III - C 节中,我们探索了重新参数化的 PEFT,它对原始模型参数进行 (低维) 重新参数化以进行训练,同时将权重转换回来以保持推断速度。此外,还有结合上述技术的算法,我们将其归类为混合方法,在第 III - D 节中进行阐述
在第五节中,我们将本次调查的范围扩展到计算视角之外,以涉及各种潜在的应用场景。我们探索了将 PEFT 技术应用于不同模型架构的创新,包括 LLMs (第 V ~ A 段),Vision Transformer (第五部分 - - B),Vision Language 对齐模型 (第五部分 - - C) 和 Diffusion 模型 (第 V - D 部分),以适用于不同的下游任务,强调了 PEFT 在一系列场景中的通用性和适用性。在第六节中,我们探讨了 PEFT 方法的系统设计挑战。讨论内容包括 3 个面向实际 PEFT 部署的高级系统解决方案:分布式调优 (第六部分 - - B)、服务于 (第六部分 - - C) 的 PEFT 查询和并发 PEFT 调优 (第六部分 - - D)。
在最后的第七节中,我们总结了我们的研究,并从算法和系统的角度提出了几个潜在的未来方向,希望为该领域的进一步研究和发展提供有价值的见解。
# II. 背景
在这一部分中,我们首先讨论了 LLM 的计算流程,包括它的基本组成部分,计算复杂性,以及作为案例研究它所涉及的计算流程。我们在第 II - B 节中对不同的 PEFT 算法进行了简要概述。
图 2:(a) Llama 结构。( b ) Llama 自回归模型。( c ) 三种常见的 PEFT 操作。所有可学习的成分都用红色突出显示,而冻结的成分用灰色突出显示。LoRA 应用于所有的 Query、Key 和 Value 块。适配器针对的是 FFN 模块。Soft - Prompt 侧重于调整每个解码器的输入激活。为了简单起见,我们只展示了一个解码器。
# A. LLaMA 的计算流
为了更深入地理解 LLM 和其他基于 Transformer 的模型,我们采用了 LLaMA - 7B 这一前沿的开源 LLM 模型来研究 LLM 和 Transformer 的架构。如图 2 (a) 所示,LLaMA 由三个主要部分组成:嵌入块,解码器块的堆栈和由线性层和 softmax 层组成的头块。嵌入层的主要作用是将非结构化的文本信息转化为离散的数值向量 ( tokens ) 块,以方便后续处理。然后将嵌入的 token 传递到解码器层进行进一步的处理。每个 LLaMA 解码器由两个基本部件组成:多传感头自注意力 ( MSA ) 和前馈网络 ( FFN )。在 MSA 模块中,每个 token 都会被输入 token 的两个线性映射之间通过点生成得到的注意力图进行聚类。然后将分组后的 token 进一步通过前馈神经网络进行处理。此外,LLaMA 采用均方根图层标准化 ( RMSNorm ) [ 211 ] 作为图层标准化的替代,以保证训练的高效性。
LLM 以两种显著的方式区别于其他深度神经网络 (DNN) 模型,如卷积神经网络 ( CNN )。首先,LLM 表现出固有的自回归特性,需要多次迭代才能完成生成任务。此外,LLM 包含一个注意力机制,它是一个计算复杂度与输入长度成二次方关系的组件。另一方面,LLM 固有的计算特性在于每个解码器层内部的注意力块。图 2 ( c ) 描绘了注意力块中计算流程的高层概貌。
在推理过程中,每个解码器使用一个 4 维张量 作为输入表征。输入的 token 首先与三个权重矩阵, 和 相乘,产生的输出称为查询 ( ),键 ($K $) 和值 ( )。考虑到 MSA 模块无法识别位置数据和 LLMs 固有的自回归性质,查询和键将经历一个使用旋转位置嵌入 [165] ( RoPE , 在式 ( 1 ) 中记为 Rp . q) 编码位置信息的过程。随后,键和值将与先前的 token 相结合。
在位置嵌入之后,中间激活将经历一系列的乘法,softmax 和残差加法,以产生如方程 9 所述的 MSA 输出。这里需要注意的是,方程中的 是指多头注意力机制中特征维度的个数。
然后将 SA 输出转发给 FFN 块进行进一步处理。FFN 块将有另外三个矩阵,,和,计算可以用图来说明:
其中 x 表示 FFN 层的输入,SiLU 是 LLaMA 中使用的非线性函数。在原始 Transformer 中,FFN 块可以表示为:
最后一个解码器层的输出将被发送到一个线性层,该线性层产生一个跨越完整词表的概率分布来预测序列中的下一个 token。然后将产生的 token 与之前的 token 进行拼接,并将其作为下一轮处理的输入。这个生成过程以自回归的方式重复,直到产生一个完整的 token 序列 (称为完成) ( (图 2 ( b )) )。对于训练,其计算流程与推理类似,只是将生成的句子直接与真值输出进行比较,产生训练损失。然后通过 LLM 权重计算梯度,以最小化这种训练损失。
为了分析 LLM 中的计算开销和内存开销,我们还设置了后面第三节中使用的一系列参数。表 1 以 LLaMA - 7B 模型为例,给出了模型的参数大小和计算维数。
LLM 模型根据先前的提示 (输入) 和先前生成的序列,为每一轮生成 token (单词) 一,如图 2 所示。这个过程会重复进行,直到模型输出命中和终止 token。为了加速 LLM 模型中的推理过程,人们采取将之前的 Key 和 Value 存储在语义相关缓存 ( KV-cache ) 中的策略,因此不需要为每个新的 token 重新计算它们。从数学上讲,我们可以在式 ( 6 ) 中表示总解码器的 kv - cache 内存开销。
在该方程中, 和 是上下文长度和批大小, 是层数。 为头部尺寸, 为头部数量。
表 1:LLaMA - 7B 体系结构的配置参数和计算操作
# B. 参数高效微调概述
微调对于增强隐形用户数据集和任务上的 LLM 性能仍然是必不可少的。随着模型规模的不断增大,标准的全微调范式需要成千上万的 GPU 并行工作,效率极低且不可持续。一种算法被提出,即参数有效的微调 (PEFT),其目的是调整最小的参数,以获得比完全调整下游任务更好的性能。
在并行开发中,视觉和多模态领域的大规模预训练模型也展示了其有效的表示学习能力,能够通过微调从大数据集适应到较小的数据集或跨越各种数据模态。因此,这种能力使 PEFT 对更广泛的研究社区具有越来越大的吸引力。
图 3:大模型的高效参数微调方法的分类。
我们根据 PEFT 算法的操作将其分为加性、选择性、重新参数化和混合微调。如图 3 所示,通常使用三种主要的加法微调算法:(1) 适配器;( 2 ) 软提示;( 3 ) 其他。它们的不同之处在于附加的可调模块或参数不同。另一方面,选择性微调不需要任何额外的参数,它从骨干模型中选择一小部分参数,只使它们可调,而在下游任务的微调过程中保持大多数参数不变。我们根据所选参数的分组情况对选择性微调进行了分类:
(1) 非结构性遮蔽(Structural Masking);( 2 ) 结构遮蔽(Structural Masking)。重新参数化表示模型参数在两种等效形式之间的转换。具体来说,重新参数化微调在训练过程中引入额外的低秩可训练参数,然后将其与原始模型集成进行推理。该方法分为两种主要策略:( 1 ) 低秩分解 ( Lowrank Decomposition );( 2 ) LoRA 衍生。混合微调探索了不同 PEFT 方法的设计空间,并结合了它们的优点。
# C. 用于 LLM 评估的下游任务
有两类任务已被广泛用于 LLM 评估,第一类是通用语言理解评估 (GLUE) [ 175 ] 基准,该基准集成了 9 个句子或句子对语言理解任务 ( Co LA、SST - 2、MRPC、STS - B、QQP、MNLI、QNLI、RTE、WNLI),其选择依据是数据集大小、文本类型和难度等级的多样性,并基于已建立的现有数据集。它还包括一个专门设计的诊断数据集,用于评估和分析模型在自然语言中固有的各种语言现象中的性能。此外,它还具有一个公共的排行榜来跟踪基准测试集上的性能,以及一个仪表板来可视化模型在诊断集上的性能。
在最近的 LLM 论文中使用的另一种类型的数据集是常识推理,集成到我们的研究中迎合了多种研究方面:(1) OpenBook QA [ 135 ] 的目的是促进高级问答的研究,深入理解主题和语言。( 2 ) PIQA [ 8 ] 主要强调日常场景,体现了对非常规解决方案的偏好。( 3 ) 社会 IQA [ 157 ] 作为一个新颖的问答基准,专门用于衡量社会常识智能。( 4 ) HellaSwag [ 208 ] 作为一个数据集,其本质是确定机器在恰当地总结句子方面的能力。( 5 ) Bool Q [ 30 ] 是一个专门用于问答的数据集,特别是针对二进制响应 (是 / 否查询)。( 6 ) WinoGrande [ 156 ] 是一个新的汇编,包含 44,000 个问题。( 7 ) ARC-easy [ 31 ] 是一个新颖的数据集,它构成了真正的年级 - 学校层面的多选科学问题,旨在通过复杂的问题回答来激发研究的活力。( 8 ) ARC - 挑战 [ 31 ],与众不同的是,仅仅包含了那些基于检索算法和词共现算法都不能准确解决的问题。
图像识别是视觉模型的主要基准和应用,例如细粒度视觉分类基准 (FGVC) 和视觉任务适配基准 ( VTAB )。除了图像分类,视频行为识别是另一个关键的应用领域,涉及 Kinetics-400 [ 92 ],SSv2 [ 56 ] 和 HMDB51 [ 96 ] 等数据集。此外,PEFT 已被用于密集预测任务,使用数据集如 MSCOCO [ 113 ],ADE20K [ 230 ] 和 PASCAL VOC [ 43 ]。
# Ⅲ. PEFT 分类
PEFT 策略大致可以分为四类:添加型 PEFT (第三节 - A),它通过注入新的可训练模块或参数来修改模型结构;选择性 PEFT (第三节 - B),使微调过程中的参数子集可训练;再参数化 PEFT (第三节 - C),即对原始模型参数进行 (低维) 再参数化构造,用于训练,然后等效变换回来进行推断;而混合 PEFT (第三节 - D) 则结合了不同 PEFT 方法的优点,构建了统一的 PEFT 模型。不同类型的 PEFT 算法的概述如图 4 所示。
图 4:不同类型的 PEFT 算法。
# A . 添加型 PEFT
标准的完全微调需要大量的计算开销,并且可能会损害模型的泛化能力。为了缓解这个问题,一种广泛使用的方法是保持预训练的主干不变,只引入在模型架构中具有战略地位的最小数量的可训练参数。在对特定下游任务进行微调的同时,只更新这些额外模块或参数的权重,这将导致存储、内存和计算资源需求的大幅减少。由于这些技术具有增加参数的特点,这些技术可以被称为添加微调,如图 4 (a) 所示。接下来,我们讨论了几种流行的 Additive PEFT 算法。
1 ) 适配器 (Adapter):适配器方法涉及在 Transformer 块中插入小的适配器层。通常,适配器层由一个下投影矩阵,一个非线性激活函数 和一个上投影矩阵 组成。在该上下文中, 表示隐藏层的维度, 作为瓶颈维度,是用于配置适配器的超参数。将 作为适配器的输入,适配器模块 (带残差) 内的计算可以概括如下:
图 5:3 种具有代表性的基于适配器的微调算法示意图。蓝色代表冷冻,黄色代表可训练。
NLP 领域中适配器的概念最初是由 Serial Adapter [75] 引入的,如图 5 ( a ) 所示。在他们的方法中,每个 Transformer 块通过增加两个适配器模块来增强,其中一个位于自注意力层之后,另一个位于 FFN 层之后。后续的研究旨在解决与适配器层相关的额外计算成本。提出了一个改进的框架 AdapterFusion [ 145 ],其中适配器层仅在 FFN 层之后的 "Add & Norm" 步骤后插入,以提高计算效率。相反,文献 [ 67 ] 介绍了一种并行适配器 ( PA ) 方法,如图 5 ( b ) 所示,它将传统上顺序的适配器层重组为一个并行的侧网络,并与每个 Transformer 子层一起运行。类似地,CIAT [ 242 ]、CoDA [ 101 ] 和 Kron A [ 42 ] 也采用了并行适配器设计。除并行设计外,CoDA 采用稀疏激活机制提高推理效率,如图 5 ( c ) 所示。具体来说,CoDA 采用软的 top - k 选择过程,在每一层中识别 k 个重要的 token,这些 token 将由冻结的预训练 Transformer 层和适配器分支共同处理,以保持模型的准确性。相反,那些不重要的 token 只由适配器分支处理,而跳过繁重的预训练层,从而在不影响整体性能的情况下优化推理效率。
为了增强适配器的性能和泛化性,各种研究实现了多任务学习策略,如 AdapterFusion [145],AdaMix [ 180 ],PHA [ 226 ],AdapterSoup [ 29 ],MerA [ 70 ] 和 Hyperformer [ 129 ]。AdapterFusion 将所有预先训练好的适配器保留在模型中,并使用融合模块对多任务信息进行融合。与 AdapterFusion 不同,MerA 通过基于权重和激活的最优传输将预训练的适配器合并为单个适配器。该方法避免了引入任何额外的可训练参数,从而提高了计算效率。Hyperformer 将多任务信息存储在一个共享的超网络中,该网络根据任务和层 id 嵌入生成任务和层特定的适配器参数。给定一个新的任务,只需要学习一个额外的任务嵌入,从而减少了训练参数的数量。
2 ) 软提示 (Soft Prompt):或者说,提示调优提供了一种额外的方法来改进模型,通过微调来实现性能的提高。人们普遍认为,软提示的连续嵌入空间内在地包含了更多的信息,而不是通过语境学习来优化离散的 token 表示 [144]。受这一概念的启发,研究人员直接在输入序列的开始处添加可调向量,称为软提示。这可以表示为:
其中 是第 层的输入 token 序列,包括软提示 token 和原始输入 token 。 为软提示 token 数量, 为原始输入 token 数量。
前缀微调 (Prefix-tuning)[105] 在所有 Transformer 层中引入了与键值 和值 相关的可学习向量。为了保证优化过程中的稳定性,Prefix-tuning 采用了一种重新参数化的策略,利用 MLP 层来生成这些前缀向量,而不是直接对其进行优化。微调后,只保存前缀向量进行推理。该技术在多个研究 [104]、[ 121 ]、[ 224 ] 中被采用和改进。例如,p-tuning v2 [121] 去除了重新参数化,并将其应用扩展到更广泛的模型规模和 NLP 任务中。APT (自适应前缀调谐) [ 224 ] 通过引入自适应门机制控制各层中前缀的重要性来增强前缀调优。并行工作 p - tuning [123] 和即时调整 [ 102 ] 仅在初始词嵌入层而不是所有层应用可学习向量来提高训练和推理效率。值得注意的是,及时调整主要在大型模型的背景下显示其有效性,特别是那些具有超过 110 亿参数的模型 [ 102 ]。作为补充 **,Xprompt** [ 126 ] 通过一种层次化的结构化剪枝来消除负提示令牌,从而在较小的模型规模上弥合性能差距。文献 [ 179 ] 的工作为快速调谐提供了一些理论分析,证明了其在有限深度 Transformers 中的普遍性和局限性。IDPG (依赖实例的提示生成) [ 189 ] 通过使用轻量级提示生成器根据每个输入句子生成提示来改善提示调整。在相关的方法中,LPT (晚期提示调谐) [ 122 ] 也利用了一个提示生成器来获得实例感知的提示。与之前的工作不同,LPT 只在一个中间层之后添加这些提示,而不是在初始层或所有层。这种策略性放置消除了中间层以下的梯度计算,从而显著加快了训练速度。同时,由于较短的反向传播路径保留了更多与任务相关的信息,LPT 可以提高整体性能。受 LPT 的启发,SPT (选择性提示微调) [ 240 ] 更深入地研究了即时插入策略的重要性。它在每一层中引入一个可学习的概率门来决定是使用上一层传播过来的提示还是注入新生成的提示。APrompt [177] 采用了另一种提示插入策略。除了在每个 Transformer 层的输入序列开始处插入输入提示外,APrompt 还在自注意力块中的各自查询、键和值矩阵中预先添加额外的可学习提示,以学习新的注意力模式。除此之外,APrompt 包含了对特定任务头部的学习。
软提示的概念已经被用于各种下游任务 [28],[ 184 ],尽管它们的训练容易出现不稳定和收敛缓慢的问题。为了解决这个问题,SPoT [173] 使用从一个或多个任务中学习到的源提示来初始化新任务的提示。类似地,TPT (可迁移提示调优) [ 166 ] 提出了将软提示从一个任务转移到另一个任务的初始化,这表明更好的提示初始化可以获得较大的训练收敛加速比。InfoPrompt [185] 开发了两个基于互信息的损失函数,即头损失和表征损失,以找到更好的提示初始化,并学习足够的任务相关信息,从而也加快了收敛。PTP [18] 深入研究了训练不稳定的根本原因。它识别了传统即时调整中损失景观的陡峭性质,其中输入数据的微小变化可能会导致显著的损失波动。为了缓解这种情况,PTP 引入了基于扰动的正则化器来平滑损失景观,从而稳定训练过程。DePT [160] 用一对低秩矩阵将软提示分解成一个较短的软提示,并用两个不同的学习率进行优化。该策略不仅提高了性能,而且提高了训练和推理效率。SMoP (稀疏混合提示 ( Sparse Mixture-of-Prompts)) [ 27 ] 通过使用短的软提示来降低训练和推理成本。在训练过程中,训练多个简短的软提示,每个提示针对数据集的特定子集。在推理过程中,SMoP 集成了一个门控机制,将每个输入实例路由到一个适当的短提示。这种技术不仅提高了训练和推理阶段的效率,而且保持了与使用更长的软提示所获得的性能相当。为了进一步减少软提示参数的数量,IPT (内在的提示调谐) [ 148 ] 通过在多个任务上训练一个自动编码器来识别一个内在的任务子空间。然后在新的任务上进行调整,只需要在这个子空间内调整几个参数,大大减少了训练参数的数量。
图 6: 和 SSF 插图。蓝色代表冻结,黄色代表可训练。
3 ) 其他加法方法:除上述方法外,还有其他方法在微调过程中策略性地加入了额外的参数。例如,[116] 引入了三个可学习的重标度向量:,,和,如图 6 (a) 所示,分别对 key,value 和 FFN 激活进行重新标度。自注意力块内的操作可以描述如下:
在 FFN 中,重标度可以表示为:
式中: 为 Hadamard 积。此外,尺度向量 和 可以无缝集成到 和 的权重矩阵中。这种整合有效地消除了推断过程中额外的计算成本。类似的方法 SSF [109] 也对模型的激活进行线性变换,如图 6 ( b ) 所示。具体来说,在预训练模型中的每个操作 (即 MSA、FFN 和层归一化) 之后,注入一个 SSF - ADA 层,该层对操作产生的特征进行缩放和移位。在微调过程中,只有那些 SSF - ADA 层可以被更新,而在推理过程中,类似于,这些 SSF-ADA 层可以合并到模型权重中,因此不会产生额外的推理开销。IPA (推理时间策略适配器) [ 124 ] 提供了一种新颖的方法,在不修改基模型参数的情况下,将 LLMs (如 GPT-4 ) 与用户特定的需求对齐。这在处理参数极大且往往无法直接获取的模型时尤为显著。IPA 通过在解码阶段将一个基 LLM 的输出分布 (基策略) 与一个较小的模型的输出分布 (适配器策略) 结合 (通过乘法和归一化) 来实现。在训练过程中,策略适配器的参数使用强化学习进行微调,而基本策略的参数保持不变。在推理过程中,IPA 利用基模型和训练好的策略适配器的联合分布进行解码,并对其进行裁剪以满足特定的用户定义标准。
# B. 选择性 PEFT
与加性 PEFT 通过增加更多的参数来增加模型复杂度不同,选择性 PEFT 对现有参数的子集进行微调,以增强模型在下游任务中的性能,如图 4 (b) 所示。具体来说,给定一个含有参数 的模型,其中每个 表示一个单独的模型参数, 表示这些参数的总数,选择性 PEFT 的过程通过对这些参数施加一个二进制掩码 来表示。 中的每个 要么为 0,要么为 1,表明相应的参数 是选择 (1) 还是不选择 (0) 进行微调。微调后更新的参数集 由下式给出:
其中 表示学习率, 表示损失函数关于参数 的梯度。在这个公式中,只有被选中 (即) 的参数在反向传播过程中更新。
Diff 剪枝 [59] 是将可学习的二进制掩码应用于微调过程中的模型权重的代表性工作。为了达到参数效率,掩模通过 L0 范数惩罚的可微近似进行正则化。PaFi [111] 简单地选择绝对震级最小的模型参数作为可训练的。FishMask [169] 利用近似 Fisher 信息确定参数重要性。然后根据这些信息选择前 k 个参数组成掩码 M。类似地,Fish-Dip [34] 也使用 Fisher 信息来计算 M,但是掩码会在每个训练周期中动态地重新计算。受彩票假说 [ 46 ],[ 130 ] 的启发,LTSFT [3] 介绍了另一种确定参数重要性的技术,在初始微调阶段选择变化最大的参数子集组成掩码 M。SAM [48] 提出了一种二阶近似方法,用一个解析可解的优化函数来近似原问题,以帮助确定参数掩模。Child-tuning [194] 提出了两种方法来在每次训练迭代中选择一个子网络,其中只有这个子网络中的参数可以被更新。
图 7:两种参数掩模方法示意图。蓝色代表冷冻,黄色代表可训练。
然而,在实现 PEFT 时,上述非结构化参数掩码会导致非零掩码分布不均,降低硬件效率。如图 7 所示,结构化掩码以规则的方式组织参数掩码,而非结构化掩码随机应用,因此可以提高训练过程中的计算和硬件效率。因此,各种结构化的选择性 PEFT 技术得到了广泛的研究。Diff 剪枝提出了一种结构化剪枝策略,通过将权重参数划分为局部组,并策略性地将它们一起消除。类似地,FAR [174] 对 BERT 模型进行微调,将 Transformer 块中 FFN 的权重分组为节点,然后使用 L1 范数对学习器节点进行排序和选择。为了进一步降低内存访问频率,他们还通过将学习器节点分组来重新配置 FFN。Bitfit [207] 提出只对每个 DNN 层的偏置参数进行微调,对于小模型取得了有竞争力的结果。然而,该方法无法处理大型模型。文献 [ 99 ] 的工作将 NAS 应用到 Bitfit 中,其中 S-BitFit 保持了 Bitfit 的结构特性,限制了 NAS 算法必须为每个偏置模块选择是否为。与 Bitfit 在 Transformer 中对特定模块进行微调类似,Xattn Tuning [54] 只对交叉注意力层进行微调。SPT (灵敏度感知的视觉参数高效微调) [ 66 ] 首先确定了由调谐时的损耗减少量测量的敏感参数。这种灵敏度是使用一阶泰勒展开式计算的,它来源于单触发中微调前的单次前向和后向传递。接下来,SPT 找到敏感参数数量超过预定义阈值的权重矩阵,然后将选定的 PEFT 技术 (如 LoRA、Adapter 等) 应用于这些目标权重,以实现结构的微调。
# C. 重新参数化 PEFT
再参数化是指通过变换模型的参数,将模型的结构从一个模型等价地变换到另一个模型。在 PEFT 的背景下,这往往意味着构建一个低秩的参数化,以实现训练过程中参数效率的目标。对于推理,可以将模型转换为其原始的权重参数化,保证推理速度不变。这个过程在图 4 (c) 中描述。
图 8:3 种具有代表性的重参数化 PEFT 算法示意图。蓝色代表冷冻,黄色代表可训练。
早期的研究 [1] 表明,常见的预训练模型表现出异常低的内在维度。换句话说,可以找到一个低维的重新参数化,作为整个参数空间的微调是有效的。Intrinsic SAID [1] 是研究 LLMs 微调过程中本征维度特征的开创性工作。然而,最被广泛认可的再参数化技术是 LoRA (低秩适应) [ 76 ],如图 8 ( a ) 所示。对于给定的预训练权重矩阵,LoRA 引入了两个可训练的权重矩阵 和,其中秩 ,与 并联运行。令 表示输入。在正常情况下,通过 的输出为。相反,LoRA 通过引入一个封装任务特定知识的增量更新 来修改这个输出:
式中: 为缩放因子。在训练开始时, 使用随机高斯分布初始化,而 初始化为零,以确保 最初保持为零的值。LoRA 的实现非常简单,并且已经在具有高达 1750 亿参数的模型上进行了评估。图 8 (c) 以单个解码器为例,冻结的和可学习的成分分别用灰色和红色突出。一旦微调完成,LoRA 的自适应权重与预训练的骨干权重无缝集成。这种整合保证了 LoRA 保持了模型的效率,在推理过程中不会增加额外的负担。
在 LoRA 训练中,选择合适的秩一直是一个具有挑战性的问题。为了解决这个问题,DyLoRA [171],如图 8 ( b ) 所示,在预定义的训练预算范围内对 LoRA 模块进行一系列秩的训练,而不是坚持单一的固定秩。具体来说,对于给定的秩范围,DyLoRA 在训练过程的每一次迭代中动态地选择一个秩。因此,矩阵 和 被裁剪为选定的秩,从而产生截断版本 和,并且在此迭代过程中,后续的前向和后向传递将被限制在 和 上,而不是 和。通过这种动态和免搜索的方法,DyLoRA 显著减少了为特定任务寻找最优和固定的 LoRA 秩所需的训练时间。AdaLoRA [217] 用奇异值分解 ( Singular Value Decomposition,SVD ) 重新计算了,记为,其中 且 是正交矩阵, 是包含奇异值 的对角矩阵。所有的三个权重矩阵都是可学习的。在训练过程中,奇异值根据其重要性得分进行迭代剪枝,这些奇异值是由梯度权重乘积大小的移动平均值构造的。为了保证 和 之间的正交性,即,在损失函数中加入了一个额外的正则项:
这种自适应方法使模型能够动态调整每个 LoRA 模块内的秩,有效地根据权重矩阵的重要性管理其参数计数。然而,根据 SoRA [ 39 ],AdaLoRA 中使用的重要性评分是启发式构造的,缺乏严谨的理论动机。此外,移动平均运算和式 (5) 的计算也是如此。公式 13 在训练过程中引入了额外的计算开销。为了解决这个问题,SoRA 消除了 和 的正交性前提,取而代之的是在 和 之间直接应用和优化一个门控单元:
式中: 为 Hadamard 积。门 的更新采用 损失的近端梯度迭代变化 [7],[ 13 ],具有明确的数学意义,不需要启发式前提。训练完成后,通过移除 和 中对应的列和行,对归零门单元进行剪枝。
随后的几项研究旨在从多个方面提高 LoRA 的性能。例如,Laplace-LoRA [197] 注意到微调后的 LLMs 往往表现出过度自信。为了加强微调后的 LLMs 的校准,Laplace-LoRA 使用贝叶斯方法,特别是事后 Laplace 近似 [ 127 ],[ 5 ],对 LoRA 参数进行后验估计。LoRA+ [65] 提出对 LoRA 矩阵 和 设置不同的学习率,使得 且 固定, 可调。LoRAHub [80] 和 MOELoRA [ 119 ] 都从多任务学习中得到启发。LoRAHub 聚合了在不同任务上训练的各种 LoRA 模块。LoRAHub 在给定一个新任务的少量实例的情况下,通过无梯度的方法 Shiwa [117],可以在没有人工干预的情况下自主地组成兼容的 LoRA 模块。MOELoRA 采用混合专家 (Mixture-of-Experts,MOE) 方法在多任务环境下训练 LoRA,产生多个专家 LoRA 模块。为了检索特定任务的参数,MOELoRA 使用任务驱动的门函数,该门函数根据任务 ID 为每个专家分配贡献权重,通过所有专家的加权求和计算最终的参数。
除了 LoRA 外,其他几种再参数化技术也在不断涌现,具有很大的潜力。例如,Compacter [91] 通过将 和 参数化为,引入了一个轻量级的适配器模块,其中,, 表示 Kronecker 积。他们通过将 指定为共享参数,并利用两个低秩矩阵的乘积对 进行重新参数化,进一步减少了参数个数,有效地将参数复杂度从 降低到了。相关研究如 KronA [ 42 ]、KAdaptation [71] 等也采用 Kronecker 积对适配器权重进行重新参数化,以实现参数约简。HiWi [111] 提出了一种适配器微调方法,将适配器直接应用于预训练的参数,而不是隐藏表示为:
其中 W 表示 Transformer 块前馈层中的权重或偏置。值得注意的是,在推理过程中,该方法提前计算,保证了模型的推理延迟与传统完全微调的推理延迟相当。DoRA (权重分解的低秩适应) [ 120 ] 提出了一种新颖的方法,如图 8 ( c ) 所示,将模型权重 分解为大小和方向:
其中 是震级向量, 是方向矩阵, 是矩阵在每一列上的向量值范数。随后,DoRA 对 和 采用独特的微调策略。虽然两者都是可调的,但只有 经历了 LoRA 再参数化,定义为:
其中, 是 LoRA 学习到的增量方向更新,下划线参数表示可训练参数。通过这种方法,DoRA 在各种任务和模型中始终优于 LoRA,证明了其优越性。
# D. 混合 PEFT
不同的 PEFT 方法在不同任务中的效能存在显著差异。因此,许多研究旨在结合不同 PEFT 方法的优点,或者通过分析这些方法之间的相似性来建立统一的视角。例如,UniPELT [133] 将 LoRA、前缀调整和适配器集成到每个 Transformer 模块中。为了控制哪些 PEFT 子模块应该被激活,他们还引入了门控机制。该机制由三个小的 FFN 组成,每个 FFN 产生一个标量值,然后分别应用于 LoRA、前缀和适配器矩阵。在各种设置下,UniPELT 一直表现出从 1 % 到 4 % 不等的精度提升。S4 [16] 探索了几种 PEFT 方法 (即 Adapter ( A)、Prefix ( P )、BitFit ( B ) 和 LoRA ( L ) 的设计空间,以揭示潜在的设计模式。经过一系列的实验,他们的研究结果包括:( 1 ) 对 Transformer 层进行主轴分组划分,得到 的四层组。一个组中的层与层之间具有相似的行为,也就是说应该采用相似的 PEFT 策略。(2) 将可训练参数的个数均匀分配到层。( 3 ) 对所有组进行调优。( 4 ) 在不同组别中分配不同的 PEFT 策略。由此得到的设计空间具有最佳的性能:
MAM Adapter [67] 探索了三种加性 PEFT 方法之间的内在相似性:适配器,前缀调优和 LoRA,这导致了三种变体的发展:Parallel Adapter,它将适配器层放在特定层 ( SA 或 FFN) 的旁边,而不是在它们之后;多头并行适配器,它将并行适配器分为多个头,每个头影响 SA 中头注意力的输出;和 Scaled Parallel Adapter,即在并行适配器层之后增加一个缩放项,类似于 LoRA。大量的实验表明,最有效的配置包括在 SA 层使用前缀调整和在 FFN 层使用缩放的并行适配器,称为 MAM Adapter。LLM- Adapters [78] 构建了一个易于使用的框架,将各种 PEFT 技术集成到 LLM 中。通过跨多个数据集的全面对标,本研究揭示了几个关键的见解:( 1 ) 串联适配器、并联适配器和 LoRA 的最有效位置分别在 MLP 层之后、MLP 层旁边以及同时跟随 Attention 层和 MLP 层。( 2 ) 与较大的 LLMs 相比,使用 PEFT 的较小的 LLMs 可以在某些任务上取得有竞争力的甚至更好的结果。( 3 ) 在合适的分布内微调数据下,较小的模型能够在特定任务的性能上超越较大的模型。
一些研究利用神经结构搜索 (NAS) 来寻找更好的 PEFT 组合方法。例如,NOAH [222] 发现不同的 PEFT 配置是专门为不同的任务量身定做的。为了解决这个问题,NOAH 使用 NAS 来确定每个数据集最有效的 PEFT 配置。具体来说,NOAH 的搜索空间包含 3 种 PEFT 方法:Adapter、LoRA 和 Visual Prompt Tuning ( VPT )。它使用一次性 NAS 算法自耦变压器 [ 20 ] 来有效地发现最优提示模块。在一个相关的脉络中,AUTOPEFT [231] 首先建立了一个搜索空间,其中包括串行适配器,并行适配器和前缀调谐。之后,他们提出了一种基于高维多维贝叶斯优化的有效 NAS 方法 [ 47 ]。NOAH 和 AUTOPEFT 都证明了 NAS 在各种任务中增强 PEFT 配置的能力。
# Ⅳ. 高效的 PEFT 设计
处理延迟和峰值内存开销是从计算角度考虑的关键因素。这一部分介绍了 LLMs 中的一个关键特性,旨在平衡延迟和内存使用之间的 (第四节 - A)。接下来,我们探索开发高效的 PEFT 方法来应对计算挑战的策略,包括 PEFT 剪枝 (第四节 - B)、PEFT 量化 (第四节 - C) 和存储高效 PEFT 技术 (第四节 - D),它们都旨在提高模型性能的同时最小化资源消耗。值得注意的是,量化本质上解决了内存开销问题。然而,鉴于其独特的特性,我们将这些量化方法分开处理,而不是在存储高效 PEFT 部分下合并它们。
# A. 面向 Peft 效率的 KV-Cache 管理
LLMs 模型的核心是自回归 Transformer 模型,如图 2 所示。当我们考虑自回归特性时,这就成为设计一个推理系统的主要挑战,因为每产生一个新的令牌,整个 LLM 模型就必须将所有来自不同内存的权重转移到图形处理器的内存中,这对单用户任务调度或多用户负载均衡是非常不友好的。服务于自回归范式的挑战性部分是所有先前的序列都必须被缓存并保存以备下一次进行迭代,先前序列产生的缓存激活被存储为 Key-Value Cache (KV-cache)。
KV - cache 的存储会消耗存储空间和 IO 性能,导致工作负载内存受限和系统的计算能力没有得到充分利用。之前的工作提出了一系列解决方案,如 KV-cache 控制管理 [98] 或 KV-cache 压缩 [ 159 ],以提高吞吐量或降低延迟。在设计 PEFT 方法时,考虑 KV-cache 的特性以补充其特性是至关重要的。例如,当在推理阶段应用软提示时,有效地利用这些额外输入的 KVcache 可以通过确保提示相关的数据容易获得来加速响应时间。
# B. PEFT 的剪枝策略
剪枝的加入可以大幅提高 PEFT 方法的效率。特别地,AdapterDrop [154] 在 AdapterFusion [145] 中探讨了从下层转换层和多任务适配器中移除适配器的问题,表明剪枝可以在性能下降最小的情况下提高训练和推理效率。SparseAdapter [69] 研究了不同的剪枝方法,发现高稀疏率 ( 80 % ) 可以优于标准的适配器。此外,Large-Sparse 配置在保持参数预算 (例如,在稀疏度为 50 % 的情况下,将维度加倍) 不变的情况下增加了瓶颈维度,大幅提升了模型的容量,从而提升了性能。SPLoRA [72] 对 LoRA 权重 和 采用基于通道的剪枝。这种剪枝不仅影响源权重,而且影响 LoRA 参数 和。同理,LoRAPruning [216] 不仅对预训练的模型权重进行了结构化剪枝,而且对 LoRA 权重也进行了结构化剪枝。与非结构化的 LoRA 剪枝方法相比,LoRA 剪枝方法主要关注模型权重的稀疏化,而 LoRA 权重的稠密化使得权重的合并变得困难,而 LoRAPruning 方法使得权重的合并变得容易。此外,本文还引入了一种新的准则,该准则利用 LoRA 的梯度作为预训练权重的梯度的近似,从而实现权重重要性的估计。ProPETL [210] 构造了一个跨层和跨任务的共享原型 (例如,适配器、前缀或 LoRA)。此外,ProPETL 通过学习二进制掩码,在不同的层和任务中剪枝不同的子网络。因此,参数可以在跨层和跨任务中重用,大大提高了参数的使用效率。
# C. PEFT 的量化策略
量化是另一种流行的提高计算效率和减少内存使用的技术。例如,BI-Adapter [87] 通过考察适配器的损失情况,发现适配器在参数空间中具有抗噪性。基于这一认识,本文提出了一种基于聚类的量化方法。值得注意的是,他们证明了适配器的 1-bit 量化不仅最小化了存储需求,而且在所有精度设置中实现了卓越的性能。PEQA (参数高效和量化感知的自适应) [ 94 ] 使用两级流水线来实现参数高效和量化感知的微调。在第一阶段,将预训练的 FFN 权重矩阵 被量化为 $W - s \cdot \overlineW} $,其中 $s \in \mathbb {R}\overline{W}\overline{W} s$ 进行微调。这种方法既保证了内存效率,又提高了参数效率。QLoRA [37] 提出了一些新的技术,包括 4-bit NormalFloat,Double Quantization 和 Paged 优化的,将 4-bit 量化的预训练语言模型反向传播到 LoRA 中。这些技术实现了在单个 48GB GPU 上对 65B 语言模型的微调,同时保持了与全量 16bit 微调相似的性能。类似于最初的实现 [ 76 ],QLoRA 将固定的零初始化 LoRA 权重附加到量化的预训练模型中作为训练起点。然而,当采用极低比特 (例如,2-bit) 量化时,巨大的量化误差会对 LoRA 微调的初始化产生不利影响,即 ,其中,这将损害微调性能,如文献 [112] 所示。为了解决这个问题,提出了几种量化策略来消除量化误差。例如,LoftQ (LoRA - - 微调感知量化) [ 108 ] 提出了一个创新的框架,为后续的 LoRA 微调提供了量化的骨干权重和 LoRA 权重的优越初始化点。该方法通过在网络初始化过程中优化一个 Frobenius 范数目标来解决量化带来的差异,该目标同时考虑了 LoRA 权重和量化的预训练骨干。与 QLoRA 相比,LoftQ 在 2-bit 量化方面表现出更优异的性能,并且对下游任务具有更好的泛化性。LQ-LoRA [ 60 ] 采用了一种基于鲁棒主成分分析 [ 234 ],[ 183 ] 的迭代算法来分解权重,使得 $W_0 \approx Q + L_1 L_2 QL_1L_2 W_{fine} W_{base}$,将权重 delta 二值化为。这里, 是一个高精度的标量,根据平均绝对 delta 值 $\alpha = \frac {1}{nm} \sum_{ij} \vert W_{ij}\vert \mathrm{Sign}(\cdot) \triangle$ 的符号。BitDelta 在一个紧凑的校准数据集上通过蒸馏进一步校准缩放因子,而二元矩阵保持不变。该方法通过使用一个奇异的全精度基模型和高效批处理的 1-bit delta,显著简化了多个微调模型在共享服务器上的部署。
# D. 存储高效 PEFT 方法
微调完整的 LLMs 需要大量的训练内存,因为它们相当大。虽然大多数 PEFT 方法主要以参数效率为目标,但它们在训练过程中仍然会产生显著的内存开销,因为梯度计算和反向传播仍然是这些方法所必需的。例如,流行的 PEFT 技术,如适配器和 LoRA,根据一些文献 [167],[ 88 ],与全模型微调相比,只能减少大约 70 % 的内存使用。从计算的角度来看,内存效率也是一个不可忽视的关键因素。
为了提高内存效率,已经开发了各种技术来最小化整个 LLM 在微调过程中对缓存梯度的需求,从而减少内存使用。例如,Side-Tuning [213] 和 LST (阶梯 - 边微调) [ 167 ] 都引入了平行于骨干模型的可学习网络分支。通过将反向传播仅通过该并行分支进行通道化,避免了对主模型权重存储梯度信息的需求,从而显著降低了训练过程中的内存需求。类似地,Res-Tuning [85] 将 PEFT 微调器 (例如,提示微调,适配器) 从主干模型中分离出来。在解耦的基础上,提出了一种内存高效的微调框架 Res-Tuning-Bypass,通过移除解耦的调谐器到主干网的数据流,生成与主干网模型并行的旁路网络。这消除了在反向传播过程中对骨干模型内梯度缓存的要求。MEFT [112] (存储高效 fine-tuning ) 是一种受可逆模型 [ 55 ] 启发的方法。在可逆模型的训练过程中,中间激活不需要缓存在前向通道中。在反向传播过程中,它们可以从最终的输出中重新计算。为了节省微调过程中的内存,MEFT 研究了如何在不增加额外预训练的情况下将 LLM 转换为可逆 LLM。这种转换的一个关键方面是对预训练模型中新引入的参数进行仔细的初始化。MEFT 证明了参数初始化的重要性,并建议这些参数必须以保留预训练模型起点的方式进行初始化,以确保修改后的模型的微调达到与完全微调方法相同的性能。基于这一关键考虑,MEFT 引入了三种不同的方法,每种方法都显著地减少了传统上存储激活所需的内存需求。LoRA-FA [215] 解决了 LoRA 微调中内存开销的限制。在训练过程中,LoRA 模块仍然需要较高的激活内存消耗。这是因为在反向传播过程中,必须在前向传递过程中存储大量的输入激活来计算梯度。LoRA - FA 通过同时冻结预训练权重 和向下投影权重,只更新向上投影权 来解决这一问题。因此,输入激活 不再需要存储,因为中间激活 足够用于 Wup 的梯度计算。考虑到,LoRAFA 中激活的内存需求可以显著降低。
为了进一步减少微调过程中的内存使用,一些方法试图通过规避 LLM 中的反向传播来解决这个问题。HyperTuning [146] 使用 HyperModel 仅使用少量样本生成 PEFT 参数。该方法得到的结果与全模型微调得到的结果相当。PEFT Plug-in [88] 首先在小型语言模型上训练 PEFT 模块,与在大型语言模型上训练相比,具有更高的内存效率。随后,本研究介绍了一套在推理过程中将这些训练好的 PEFT 模块无缝集成到 LLM 中的技术。该策略有效地避免了直接在较大模型上进行梯度优化的必要性,从而节省了大量的内存。但需要注意的是,无论是 Hyper Model 还是 PEFT Plug-n 都需要额外的模型训练,这种训练成本不能被完全忽略。MeZO [131] 为 LLMs 引入了具有记忆效率的零阶 ( ZO ) 优化器。与传统的 PEFT 技术依赖反向传播计算梯度更新模型参数不同,MeZO 仅通过前向通道微调 LLMs。它通过使用 ZO 梯度估计器来计算梯度来实现。值得注意的是,MeZO 实现了经典 ZO 梯度估计器的原位解决方案,有效地减轻了推理执行过程中的内存消耗。这种创新的方法允许在具有 80GB 内存的单个 GPU 上对包含 300 亿参数的 LLM 进行有效的微调,同时保持与使用反向传播进行微调相当的性能。此外,与传统的 PEFT 方法 (如 LoRA 和 Adapter ) 相比,它可以大幅降低存储需求。
# V. PEFT 对于深度神经网络的其他应用
在第三节中,我们概述了四类 PEFT 方法及其改进。尽管如此,我们的讨论并没有完全延伸到传统架构 (例如,LLMs) 或标准基准 (例如,GLUE 数据集) 之外的 PEFT 技术的使用或适应,其中大多数讨论的 PEFT 方法都应用于这些领域。因此,在这一部分中,我们将重点介绍和讨论几个最具代表性的工作,这些工作将为各种下游任务使用 PEFT 策略。在这一部分中,我们的目标并不是覆盖所有的 PEFT 应用场景。我们的目标是展示 PEFT 在不同研究领域中的重要影响,并展示如何优化和裁剪通用的 PEFT 方法,以在特定的模型或任务中实现增强的性能。
通常,微调发生在将预训练的骨干模型适配到专门的下游任务时。为此,本部分围绕各种模型架构展开讨论,其中包括:LLM、Vison Transfomer (ViT)、视觉 - 语言对齐模型 ( VLA ) 和扩散模型。在每个架构类别内部,根据不同的下游任务进一步分类讨论。
# A. PEFT for LLMs-- 超越基础
与 NLP 中的通用任务如 NLU 和 NLG 相比,PEFT 技术在不同的场景中具有广泛的应用。PEFT 已经成功应用于常识问答 [82],[ 229 ],多层隐式篇章关系识别 [ 227 ],超分布检测 [ 141 ],隐私保护 [ 142 ],[ 190 ],联邦学习 [ 15 ] 和社会偏见缓解 [ 106 ]。在这一部分中,我们重点关注了三个具有代表性的下游任务:视觉指令跟随、持续学习、上下文窗口扩展。
1 ) 视觉指令跟随:一些研究,包括 VL-BART [26],MiniGPT-4 [ 237 ] 和 LLaVA [ 115 ],已经成功地扩展了最初为纯文本设计的 LLMs 的能力,以理解和产生对视觉输入的反应。这些增强的模型,即视觉指令跟随 LLMs,可以同时处理图像和文本以产生文本响应,可以在图像描述 [ 152 ],[ 204 ],[ 172 ],[ 74 ] 和视觉问答 ( VQA ) [ 176 ],[ 188 ],[ 4 ] 等任务上测试。然而,这些方法通过微调整个 LLM 来学习视觉表征,在时间和内存上都是低效的。因此,将 PEFT 技术应用于视觉指令跟随 LLMs 的微调是很自然的。较早的工作 VL-Adapter [ 168 ] 在 VL-BART [ 26 ] 上直接应用了几个 PEFT 方法 (适配器、Hyperformer [129] 和 Compacter [91]),然后在几个图像 - 文本和视频 - 文本任务上进行了测试。结果表明,vanilla 适配器是其中最好的,它可以达到与全微调相当的性能。然而,考虑到 VL-BART 中编码器和解码器之间的功能差距,直接分配相同的模块修改将导致次优的性能。因此,VL-PET [ 79 ] 选择性地将 PEFT 模块集成到编码器和解码器的不同组件中。他们还引入了粒度控制机制来进行更细粒度的控制。
为了适应最近流行的 LLaMA 模型,LLaMAAdapter [220] 在 LLaMA 较高的变压器层中的输入令牌上预先设置了一组可学习的提示 (类似于前缀微调)。为了避免在训练初期损失值较大时微调不稳定,LLaMA - Adapter 采用零初始化注意力机制代替其他 PEFT 方法的随机初始化权重,学习一个零初始化门控因子自适应地控制自适应提示对单词令牌的贡献。这样可以保持微调起点与原模型相同,并逐步向模型中注入新的知识,类似的思路可以在前面讨论的 MEFT [ 112 ] 和 LoftQ [ 108 ] 中找到。为了表示视觉信息,LLaMA Adapter 使用 CLIP 图像编码器提取多尺度全局图像特征,并将其投影到语言嵌入空间。之后,在所有插入的变压器层中,将该特征以元素的形式添加到适配提示中。LLaMA-Adapter 在 LLaMA-7B 中仅引入 1.2 M 的可学习参数,在 8 块 A100 GPU 上进行微调的时间小于 1 小时。随后的一项工作 LLaMA-Adapter V2 [ 52 ] 表明,LLaMA Adapter 中简单的多模态融合并不能推广到更具挑战性的开放式多模态推理任务中,视觉线索比语言指令数据更倾向于主导适应提示。为了解决这个问题,LLaMA-Adapter V2 将指令跟随能力 (为了产生长的语言反应) 的学习与视觉 - 语言对齐解耦,以避免视觉和语言微调之间的干扰。具体来说,LLaMA-Adapter V2 设置了不相交的参数组,分别从图像 - 文本对和语言指令数据中学习。视觉适应提示插入在 LLM 的早期阶段,而语言适应提示保持在与 LLaMA Adapter 相似的较高的转换层。此外,LLaMA- Adapter V2 引入了更多可学习的参数和多个专家系统 (例如,字幕,检测和 OCR) 来增强多模态性能。LayerNorm Tuning [225] 只调整每个注意力块内 LayerNorm 的权重。这种直接的技术可以达到与微调相当甚至更好的性能,同时提供比 LoRA 多 10 倍左右的参数效率。
2 ) 持续学习 (Continual Learning,CL):持续学习旨在在单一模型中学习一系列随时间变化的新任务,在对话系统 [ 100 ]、信息抽取系统 [ 14 ]、问答系统 [ 201 ] 等场景中有着广泛的应用。CL 的主要挑战是灾难性遗忘 [ 95 ]。一种流行的做法,称为基于架构的方法,通过为每个新任务维护模型中特定任务的参数来解决 CL。因此,在 CL 任务 [ 128 ],[ 238 ],[ 33 ],[ 110 ] 中使用 PEFT 方法是很自然的。例如 Adapter CL [ 128 ] 使用残差适配器对每个新任务进行参数化。在测试过程中,由于没有提供任务标识,AdapterCL 使用基于熵的分类器来选择使用哪个适配器来完成特定的任务。CPT (持续提示微调,Continual Prompt Tuning) [ 238 ] 为每个任务训练一个软提示。与从头开始训练软提示不同,CPT 提出了一系列技术 (连续提示初始化、查询融合、内存回放和内存引导技术) 来实现前后任务的知识迁移。O-LoRA (正交低秩自适应) [ 178 ] 采用在相互正交的低秩向量子空间中学习不同任务的策略,以最小化干扰。这种方法可以有效减少新任务习得过程中的灾难性遗忘。
3 ) 上下文窗口扩展:LLMs 通常使用预先定义的上下文大小进行训练。例如,LLaMA 和 LLaMA2 预先定义的上下文大小分别为 2048 和 4096 个令牌。位置编码 RoPE 具有弱外推特性 [22],这意味着当输入长度超过预先定义的上下文长度时,性能会明显下降。为了解决这个问题,一个简单的解决方案是将预训练的 LLM 微调到更长的上下文。然而,这使得计算成本随着上下文大小、内存和处理资源的紧张而呈二次方增加。为了解决这个问题,Long LoRA [24] 提出使用 LoRA 对预训练的 LLM 进行微调,以扩大上下文大小。为了减小 LoRA 调优与完全微调之间的困惑差距,Long LoRA 还开放了嵌入层和归一化层进行训练。为了进一步提高在长上下文场景下的训练效率,Long LoRA 进一步引入了一种新颖的移位稀疏注意力 ( S2-Attn ) 作为训练过程中标准自注意力的有效替代者。随后的一项研究 Long QLoRA [198] 将 Long LoRA 的优点与 QLoRA 和位置插值 [ 165 ] 相结合,以节省 GPU 内存。该工作成功地将 LLaMA2-13B 的上下文长度从 4096 扩展到了 8192,并在 32GB 内存的单 V100 上实现。
除了有限的训练阶段序列长度外,现实世界的系统内存限制为上下文窗口引入了另一个关键瓶颈。具体来说,KV-cache 的容量被可用的系统内存限制。例如,一个输入长度为 1024、批处理大小为 128 的 30B 参数 LLM 可能需要高达 180GB 的 KV-cache [223],从而限制了上下文窗口的可行大小。针对这一点,一些策略已经诉诸于量化 KV 缓存 [ 159 ],[ 36 ],但是量化肯定会损害性能。为了有效地解决这个问题,GEAR [ 90 ] 提出了一种新的方法,通过使用一个低秩矩阵来捕获量化误差的大部分相干基,并辅以一个稀疏矩阵来处理来自异常值的误差,从而有效地最小化逼近误差。
# B. PEFT for Vits
ViT [40] 在最近的计算机视觉领域已经成为一个强大的骨干模型。在 ViT 模型中,图像被视为固定大小的块序列,类似于 LLM 使用离散令牌的方式。这些补丁经过线性嵌入,然后接受位置编码。随后,通过标准的 Transformer 编码器进行处理。ViT 的训练可以是有监督的 [ 40 ],[ 164 ],也可以是自监督的 [ 23 ],[ 68 ],并且当使用更多的数据和使用更大的模型大小进行训练时,ViT 可以获得更优越的性能 [ 35 ]。然而,这种规模的扩大不可避免地增加了训练和存储成本。因此,与 LLMs 类似,PEFT 广泛地应用于各种下游任务,如稠密预测 [ 25 ],连续学习 [ 182 ],[ 53 ],深度度量学习 [ 151 ] 等。在这里,我们主要关注两个典型的任务来展示 PEFT 的参与:图像分类和视频识别。
1 ) 图像分类:在目标视觉数据集上进行图像分类是一种非常普遍的需求,具有广泛的应用,而预训练再微调范式是一种广泛使用的策略。多种方法利用 PEFT 技术实现高效的模型调优 [84],[ 25 ],[ 21 ],[ 86 ]。例如,AdaptFormer [21] 在原始 ViT 模型的 FFN 中并行插入适配器模块,用于视觉识别任务。VPT (视觉提示微调,Visual Prompt Tuning) [ 84 ] 在每个 Transformer 层的输入序列中预先输入少量的任务相关参数。当将 ViT 应用于下游任务时,只有这些增加的参数和分类头被设置为可训练的。文献 [ 203 ] 注意到,与有监督的 ViT 相比,VPT 往往表现不如自监督的 ViT。进一步的分析表明,不同的预训练方法和下游任务对不同位置的变压器块具有不同程度的依赖性。为了解决这个问题,本研究引入了适用于 ViT 块的自适应门。这些门动态地调节提示令牌对 ViT 块的贡献,从而使模型更有针对性地适应当前的任务。
2 ) 视频识别:一些工作考虑了更具有挑战性的自适应问题,将 ViT 迁移到具有更大域间隙的下游任务中。例如,ST- Adapter (时空适配器) [ 143 ] 和 AIM [ 200 ] 都是在预训练的 ViT 块中插入适配器层。它们的主要目标是对时空信息进行建模,从而实现从图像模型到视频任务的 ViTs 的有效适配。值得注意的是,这两种方法都表现出了优于传统全模型微调方法的性能。
# C. PEFT for VLAs
视觉 - 语言对齐模型 (Vision-Language Alignment Model,VLA),如 CLIP [ 149 ]、ALIGN [ 83 ]、DeCLIP [ 107 ]、FLAVA [ 162 ] 等,旨在学习一个良好的图像和文本特征,可以在统一的表示空间内进行对齐。每个 VLA 通常由单独的图像和文本编码器组成,分别提取各自的特征。在这些模型中使用了对比学习来有效地对齐图像和文本特征。微调是为了提高 VLA 在特定数据集或任务中的性能,但对全模型进行微调是计算密集型的。例如,微调 CLIP RN50x64 要求 32, 768 的 batch size 并且需要在 592 个 V100 GPU 上进行 18 天的训练 [ 149 ]。此外,在较小的数据集上进行全微调往往会导致灾难性的遗忘 [ 95 ]。为了应对这些挑战,并从 NLP 中 PEFT 技术的成功中得到启发,一系列 PEFT 策略被提出并在 VLA 模型中实现,如语义分割 [ 193 ],[ 205 ],[ 196 ],点云理解 [ 219 ],[ 241 ],[ 181 ],[ 81 ],视频理解 [ 89 ],[ 138 ],[ 114 ],视觉推理 [ 63 ],[ 41 ],时序动作检测 [ 137 ] 等。本部分将重点介绍使用 VLAs 的一个共同任务:开放词汇图像分类。
1 ) 开放词汇图像分类 (Open-vocabulary Image Classification):在开放词汇图像分类中,早期的工作为每个类别设计了特定类别的提示,例如一个 [ CLASS ] 的照片,并根据图像与这些文本描述的相似度对图像进行排序。CoOp (上下文优化,Context Optimization) [ 233 ] 将手工编写的文本提示替换为可学习的向量,同时在训练过程中保留整个 VLA 修复。Co CoOp (条件上下文优化,Conditional Context Optimization) [ 232 ] 在此基础上克服了 CoOp 在泛化到看不见的类时的局限性。它引入了一个轻量级的神经网络,生成一个输入特定的上下文令牌,根据每个图像动态地调整提示,从而增强了泛化性,但由于实例感知操作而增加了计算需求。ProGrad [236] 通过正则化梯度与一般知识一致的软提示更新,仅将梯度一致 (或不冲突) 的提示更新到原始提示提供的一般知识,解决了 CoOp 在小样本情况下的过拟合风险。MaPLe [93] 指出,现有方法要么在 CLIP 的语言中学习提示,要么在 CLIP 的视觉分支中学习提示,不能有效利用 VLAs 的多模态特性。为了解决这个问题,MaPLe 提出了分支感知的分层提示,同时适应语言和视觉分支,并取得了优异的性能。TPT (测试时间提示微调,test-time prompt tuning) [ 161 ] 研究了在工作进程中没有额外训练样本的情况下进行提示微调。具体来说,在推理过程中,TPT 首先将输入图像放大到各种视图中,然后利用这些视图来调整可学习的提示。主要的训练目标是确保 VLA 在面对这些不同的视图时能够产生一致的响应。随后的 DiffTPT [44] 通过扩散模型进一步增强了测试样本的数据多样性。
在另一个方向上,一些研究探索了适配器在 VLA 中的使用。例如,CLIP-Adapter [51] 在 CLIP 的文本和视觉编码器之后集成了残差式适配器。因此,与 CoOp 和 CoCoOp 不同,CLIP-Adapter 通过 CLIP 的编码器避免了梯度反向传播,从而降低了训练内存和时间方面的计算需求。Tip- Adapter [218] 采用与 CLIP-Adapter 相同的设计。与 CLIP - Adapter 不同的是,适配器的权重是由查询键缓存模型 [ 140 ] [ 57 ] 以免训练的方式得到的,而查询键缓存模型 [ 140 ] [ 57 ] 是由少量的监督以非参数的方式构建的。因此,与 CLIP-Adapter 的 SGD 训练过程相比,Tip-Adapter 表现出更高的效率。
# D. PEFT for Diffusion Models
扩散模型 [73]、[ 163 ] 是一类生成式模型,通过渐进的去噪过程将随机噪声转化为结构化输出,从而学习生成数据。在训练过程中,扩散模型使用去噪网络学习反向添加到训练数据中的噪声,而在推断过程中,它们从噪声出发,使用去噪网络迭代地创建与训练样本相同分布的数据。扩散模型有各种各样的应用 [ 62 ],[ 199 ],[ 32 ],[ 38 ],[ 155 ],其中最引人注目的是稳定扩散(stable diffusion)[ 153 ],它以其强大的能力在文本和图像之间架起桥梁,直接从文本描述中生成连贯和上下文相关的图像。许多研究利用 PEFT 技术为下游任务适配预训练的扩散模型,包括加快采样速度 [ 125 ],[ 11 ],文像转换适配 [ 186 ],[ 191 ],text-to-3D 适配 [ 209 ] 等。本节主要关注两种场景:在单纯基于文本的条件化之外整合额外的输入模态,以及基于预训练的扩散模型定制内容生成。
1 ) 附加输入控制:为了在保留预训练模型中丰富知识的同时纳入额外的输入模态 (例如,布局,关键点),GLIGEN 引入了一种新的方法,该方法保持了原始模型的权重不变,并集成了新的、可训练的门控 Transformer 层 [2],用于接收新的接地输入。由此得到的模型不仅能够准确地表示接地情况,而且能够生成高质量的图像。值得注意的是,该模型在推理过程中也能很好地泛化到看不见的对象。
ControlNet [214] 在锁定其预训练的参数权重的同时,对 Stable Diffusion 的编码层的可训练副本进行微调。固定的原始模型和可训练的拷贝通过零卷积层进行桥接。这些层从零初始化权重开始设计,在训练过程中逐步自适应,确保有害噪声在训练开始时不影响预训练的稳定扩散特征。该精化模型能够对多种输入进行条件化,如 Canny 边缘、Hough 直线、用户涂鸦、人体关键点、分割图、形状法线、深度等。Concept 滑块 [ 50 ] 引入了即插即用的 LoRA 适配器,允许在扩散模型中对概念 (例如,年龄、微笑) 进行精确编辑。T2I- Adapter [136] 引入了一个轻量级的适配器模型,旨在将外部控制信号与文本到图像扩散模型的内部知识进行对齐。该适配器通过结构控制 (如草图、深度图、语义分割图、关键帧等)、颜色控制 (例如,色调和颜色分布) 实现精确操控,并通过组合多个适配器集成多种控制。
2 ) 定制化生成:文本到图像扩散模型的有效性受限于用户通过文字描述表达期望目标的能力。例如,很难描述在大规模模型训练中没有遇到的创新玩具车的精确特征。因此,定制生成的目标是使模型能够从用户提供的最小图像集合中掌握新的概念。Textual Inversion [49] 通过在预训练的文本到图像扩散模型的文本嵌入空间中找到一个新的代表新的特定概念的伪词 (类似于第三节 A2 讨论的软提示) 来解决这个问题。在给定一个描述概念的小图像集 (一般为 3 ~ 5 幅图像) 的情况下,通过扩散模型中的原始优化目标对伪词 进行优化,并将预训练的模型保留下来。在推理过程中, 可以像其他词一样被处理,并与其他文本查询 (例如," 一张海滩上 的照片 ") 组成。Custom Diffusion [97] 解决了一个更具挑战性的问题:多个概念的组合微调。它仅在注意力层中微调从文本到潜在特征的, 映射,在多概念学习场景中获得了优越的性能。此外,在微调过程中,自定义扩散通过引入一组与目标相似的字幕的真实图像来防止模型遗忘,同时采用增强以加快收敛并改善结果。IP-Adapter [202] 指出了当前方法 (例如,controlnet 网络和 T2I-Adapter) 将条件信号投影到交叉注意力模块中的局限性。这些方法在处理以控制内容为目的的图像条件时,无法生成忠实于提示图像的图像。该问题源于在交叉注意力层中融合图像特征和文本特征丢失了图像特定信息,导致只能粗粒度地可控生成图像风格而不是图像内容。为了克服这个问题,IP-Adapter 引入了一种新颖的解耦交叉注意力机制来区分文本和图像特征。IP-Adapter 在每个交叉注意力层中专门为图像特征增加一个额外的交叉注意力层,只训练新的交叉注意力层的参数。
# Ⅵ. 系统设计对 PEFT 的挑战
# A. PEFT 系统设计
在这一部分中,我们首先对基于云的 PEFT 系统进行了简要的概述。接下来,我们给出了用于评估系统性能的相应指标。此外,为了说明系统设计中的挑战,我们给出了 3 个预期的使用场景。
图 10:(a) 基于分布式的系统计算模式;( b ) 集中式 PEFT 查询推理
1 ) 集中式 PEFT 查询服务:云提供商最近推出了一系列 LLM 服务,旨在通过应用程序编程接口 (API) 为用户提供应用程序 [ 139 ],[ 170 ]。这些 API 可以方便地将许多 ML 功能无缝集成到应用程序中。云服务器通过 API 接收到一个特定下游任务的查询后,使用一个有特色的 LLM 模型进行处理。在该场景下,提出的处理多个 PEFT 查询的云解决方案涉及只存储 LLM 的单个副本和多个 PEFT 模块。这个单副本维护多个 PEFT 模块分支,每个分支都与不同的 PEFT 查询相关联。最新系统的案例研究可以在第 VI - C 节中找到。图 10 ( b ) 说明了多查询 PEFT 推理的计算模式,其中打包 PEFT 查询根据其截止时间和当前系统条件进行调度和执行。
2 ) 服务度量:为了评估集中式 PEFT 查询服务的系统性能,本文提出了一套评价指标。
- ** 系统吞吐量:** 将 PEFT 查询看作任务间和任务内,使用每秒令牌数来衡量系统吞吐量。
- ** 内存占用:** 查询服务期间的运行时内存消耗,内存利用率来自模型参数和 KV-cache,如第 IV - A 节所述。
- 准确性性能:真实世界的查询通常具有不同的上下文长度,并且具有变化长度的性能作为性能基准。
- ** 服务质量:** 查询与延迟要求相关联,截止时间缺失率被认为是另一个基准。
3 ) 面向 PEFT 的分布式系统:然而,在现有的 LLM 模型中,个性化任务并没有得到预训练模型的充分支持,因此,需要使用前面章节中提到的方法进行额外的微调。然而,当我们考虑将数据集提供给云提供商时,会引起很大的关注,因为这些数据集是个性化的。
对于这个问题,我们假设我们的计算遵循模型集中和 PEFT 分布的范式。主干 LLM 存储在云端设备中,而个人 PEFT 权重和数据集存储在用户自己的设备中。如图 10 (a) 所示。
4 ) 分布式度量:为了评估所提出方法的有效性,我们建立了一组评估度量。为了进行这种分析,并且不失一般性,我们采用语言模型作为我们度量定义的基础。
- ** 准确性性能:** 微调后的模型在下游任务上的表现。
- ** 计算成本:** 在边缘设备上进行前向和后向传播操作时的计算成本。
- ** 通信代价:** 指的是在边缘设备和云端之间传输中间数据时涉及的数据量。
通信成本:指的是在边缘设备和云端之间传输中间数据的过程中所涉及的数据量。
5 ) 多 PEFT 训练:与多 PEFT 服务不同,多定制 PEFT 的调优往往涉及不同的骨干 LLM。当考虑 LLM 在各种下游任务中的使用时,预训练的模型通常表现出次优的性能。一种普遍的方法是使 LLM 适应不同的任务,包括制定微调的 PEFT。然而,同时调节多个 PEFT 会带来相当大的挑战。如何管理内存梯度和模型权重存储,以及如何设计用于批量 PEFT 训练的高效内核等问题仍未解决。PEFTs 将根据其 PEFT 算法和主干 LLM 模型进行分类。设计挑战涉及如何合并具有相同 LLM 骨干网的多个 PEFT 以及同时合并多个不同 LLM 骨干网。
# B. 案例研究: DLoRA
由于 LLM 的规模,PEFT 操作通常在公共环境 (例如,云服务器) 中执行。这就需要在公共环境中共享敏感的用户数据,从而引起潜在的隐私问题。为了应对这些挑战,一种名为 DLoRA 的解决方案被提出。DLoRA 使得可扩展的 PEFT 操作能够在云端和用户设备之间协同执行。评估结果表明,DLoRA 可以显著减少用户设备上的计算和通信负载,同时实现更高的准确性和隐私保护。
DLoRA 依靠一种名为 Kill and Revive (KR) 的算法 ( 1 ) 来减少用户端的计算和云端与用户的通信。DLoRA 在调优过程中记录了不同 PEFT 模块在不同译码器中的权重变化。图 11 显示了采样的 PEFT 模块在 4 个历元上的权重。我们观察到,有些 PEFT 模块变化较大,而有些模块保持稳定。DLoRA 提出,当边侧 PEFT 模块的重量变化不明显时,可以将其杀死;当边侧 PEFT 模块的重量变化明显时,可以将其恢复。云端和用户端可以同时进行计算。用户设备接收到云端针对特定 PEFT 模块的激活后,会启动针对 PEFT 模块的计算输出激活。同时,云端可以继续计算其他块。用户和云之间的同步障碍是激活函数 (例如. Relu ) 在每个解码器中。这是因为 PEFT 模块计算通常在每个激活层之前执行残差块。
图 11:在多个下游任务上,包括 (a) Arc - Query,( b ) Social - QA,所选 PEFT 模块在训练迭代过程中的 l2 范数变化。
# C. 案例研究:PetS
PEFT 算法以其能够区分模型中可修改和不可改变的权重而著称。这一特性激励开发人员将不同的 LLM 与不同的 PEFT 技术融合到集体单元中。PetS 在 [235] 中提出,通过提出一个统一的服务框架,主张采用一种综合的方法来管理多个 PEFT 任务。该框架的核心进步在于将不同的 PEFT 任务转换为集成计算内核以提高效率。此外,PetS 还提出了一种编排的批处理方法和一种调度方法,分别用于提高系统的吞吐量和利用任务的并行性。
图 12:PetS 系统概述:(1) 任务寄存器;( 2 ) 任务管理器 ( 3 ) 任务调度;( 4 ) 任务服务。(图像取自 PetS [235] )
如图 12 所示,PetS 框架开始于用户通过标准化的应用程序接口 (Application Programming Interface,API) 注册 PEFT 任务。注册后,开发人员需要提供预先训练好的模型标签 (例如,LLaMA)、PEFT 参数的压缩格式以及 PEFT 的具体算法 (例如,LoRA , Adapter , Bitfit 等。)。然后,这些任务被赋予唯一的标识符,推理机负责查询处理。PetS 将主要的计算工作负载 (例如,线性层计算) 分成三个不同的计算操作:( 1 ) 使用通用的、预训练的权重的稠密矩阵 - 向量乘法 ( MVM )。( 2 ) 偏差向量相加 ( Vadd ),使用共同偏差或任务独占偏差。( 3 ) 采用任务特定 PET 参数的稀疏 / 密集 MVM 操作组合。在 PetS 中使用了一个统一的预训练权重矩阵,以方便初始操作 $X_t \times W $ 的批处理。然而,涉及 PET 参数的后续特定任务计算,尽管复杂度相对较低,但都是单独处理的。
以 Adapter 和 Bitfit 任务为例,两者都是针对 LLMs 的 MLP 成分。Adapter 任务整合了额外的权重片段,而 Bitfit 则调整了偏置元素。Adapter 操作被建模为,其中 代表 Adapter 任务的输入, 和 分别是原始的和适配器专用的 PEFT 权重,其中 为初始偏差。另一方面,Bitfit 操作被定义为 ,用 表示 Bitfit 可调偏差。这些操作被进一步综合为 $\lbrace Y_1, Y_2 \rbrace = \lbrace X_{in1}, X_{in2} \rbrace \times W \rbrace + \lbrace X_{in1} \times W_{ad},0) + \lbrace b_0, b_1 \rbrace \lbrace x_{in1},x_{in2} \rbrace \times W \lbrace b_0, b_1 \rbrace$ 部分属于 Vadd 操作。
对于 Diff-Pruning III - B 这样的任务,与 Bitfit 和 Adapter 稍有不同。对于 Diff - Pruning,关于共享权重和 "差异" 的计算是分开进行的。然后将结果相加,即
这里, 表示骨干模型权重, 表示剪枝后的权重,可表示为 Sparse MVM。
图 13:协调分批 (CB) 策略
PetS 提出的另一个挑战是如何调度不同的 PEFT 请求以实现高性能。PetS 调度器通过两级调度策略实现高并行性:如图 13 所示,协调批处理 (CB) 和宏批处理流 ( MS )。通过 CB,输入查询将首先根据它们的输入长度进行聚类,然后根据它们的共享算子进行分组。这是为了确保在不浪费填充的情况下执行相同序列长度的查询。MS 策略将协同批处理后的分组查询与不同操作符的理论延迟以及系统建模参数一起生成最佳执行顺序。
# D. 平行 PEFT 训练框架
a ) 设计挑战:与 PetS 系统旨在容纳灵活的多 PEFT 算法不同,SLoRA [158] 和 Punica [ 19 ] 只专注于为各种任务提供多个 LoRA 块。设计多个 PEFT 培训系统在两个主要方面提出了关键挑战:
- 具有相同 LLM 骨干网的多个 PEFT 模型的高效并发执行。
- 设计一个高效的多租户服务于不同 LLM 骨干网的系统。
b ) 高效的内核设计:Punica 针对第一个挑战,使用现有的矩阵乘法进行主干计算,并引入新的 CUDA 内核 Segmented Gather Matrix- Vector Multiplication (SGMV),以批处理的方式将 PEFT 加法器添加到主干计算中。该内核将批处理中不同请求的特征权重乘法和同一 PEFT 模型对应的组请求进行并行化,以增加运算强度,并使用 GPU Tensor Cores 进行加速。
第二个挑战是在计算成本之外,设计一个高效的系统架构,能够在尽可能小的 GPU 集合上有效地服务多租户 PEFT 模型工作负载,同时占用最少的 GPU 资源是另一个重大的挑战。Punica 通过将用户请求调度到已经服务或训练 PEFT 模型的活动 GPU 上来解决这一问题,从而提高 GPU 利用率。对于较旧的请求,Punica 周期性地迁移它们以合并工作负载,从而为新的请求腾出 GPU 资源。
C ) 多租户 PEFT 设计:为 Punica 框架中的多租户 PEFT 模型设计一个高效的系统,重点解决几个关键的挑战,以最大化硬件利用率和最小化资源消耗。该系统旨在将服务于工作负载的多租户 LoRA 整合到尽可能小的 GPU 集合上。这种合并是通过将用户请求策略性地调度给已经在服务或训练 LoRA 模型的活动 GPU 来实现的,从而提高 GPU 利用率。对于较旧的请求,Punica 周期性地迁移它们以进一步合并工作负载,从而为新的请求腾出 GPU 资源。它融入了 LoRA 模型权重的按需加载,只引入毫秒级的延迟。该特性使 Punica 可以灵活地将用户请求动态地合并到一组小的 GPU 上,而不受那些已经在这些 GPU 上运行的特定 LoRA 模型的限制。此外,Punica 指出解码阶段是模型服务成本的主要因素,Punica 的设计主要集中在优化解码阶段的性能。模型服务的其他方面利用简单的技术,如按需加载 LoRA 模型权重,以有效地管理资源利用率。
# Ⅶ. 结论与未来方向
在当前以大模型和大数据集为主导的时代,PEFT 作为一种高效适应下游任务的极具吸引力的方法脱颖而出。该技术通过解决传统全模型微调带来的重大挑战而获得其吸引力,这些挑战往往给普通用户带来无法维持的计算和数据需求。本综述系统回顾了 PEFT 的最新进展,包括算法开发、计算和效率方面、应用和系统部署。它提供了一个全面的分类法和解释,是一个很好的指南和知识库,使不同层次和学科的读者能够迅速掌握 PEFT 的核心概念。
对于 PEFT 的进一步研究,我们从算法和系统两个角度提出了一系列可能的方向,希望能激发更多的研究者从事这些方面的进一步研究。
# A. 简化超参数微调
PEFT 的有效性往往对其超参数敏感,例如适配器的瓶颈维度,LoRA 的秩,以及不同加法 PEFT 层的放置位置。手动调节这些超参数将花费大量的精力。因此,未来的工作可以集中在开发对这些参数的手动调整依赖性较小的方法,或者自动寻找最优的超参数设置。一些研究 [171],[ 217 ],[ 39 ],[ 16 ],[ 222 ],[ 231 ] 已经开始解决这个问题,但是需要更简单高效的解决方案来优化这些超参数。
# B. 建立统一的基准
尽管存在像 HuggingFace 的 PEFT [132] 和 AdapterHub [ 147 ] 这样的库,但仍然缺乏一个全面的 PEFT 基准。这种差距阻碍了公平比较不同 PEFT 方法的性能和效率的能力。一个被广泛接受的、最新的、类似于 MMDetection [ 17 ] 的目标检测基准将使研究人员能够根据一组标准的任务和度量来验证他们的方法,从而促进社区内的创新和协作。
# C . 提高训练效率
PEFT 的假定参数效率与训练过程中的计算和内存节省并不总是一致的。考虑到可训练参数在预训练模型的架构中相互交织,在微调过程中往往需要计算和存储整个模型的梯度。这种疏漏需要重新思考什么是效率。如第四节所述,潜在的解决方案在于整合模型压缩技术,如剪枝和量化,以及在 PEFT 调优期间专门设计的优化内存的创新。进一步研究提高 PEFT 方法的计算效率势在必行。
# D. 探索规模化规律
最初为较小 Transformer 模型开发的 PEFT 方法的设计和有效性并不一定与较大的模型相比拟。随着基础模型规模的增加,识别和调整有效的 PEFT 策略至关重要。这种探索将有助于为不断演化的大模型架构量身定制 PEFT 方法。
# E. 提供更多的模型和任务
跨领域大型基础模型的兴起为 PEFT 提供了新的机遇。设计针对模型独有特性的 PEFT 方法,如 Sora [9]、Mamba [ 58 ]、LVM [ 6 ] 等,可以打开新的应用场景和机会。
# F. 增强数据隐私性
信任集中式系统来服务或微调个性化 PEFT 模块仍然是系统开发人员的另一个问题。侧信道攻击者已经成功部署,通过劫持中间结果来重构用户数据。未来值得信任的 LLM 系统设计的一个角度是开发个人数据和中间训练和推理结果的加密协议。
# G. PEFT 与模型压缩
模型压缩是使 LLM 在资源受限设备上可执行的最有效方法之一。然而,模型压缩技术对硬件上运行的 PEFT 算法性能的影响仍然是另一个系统性的挑战。常见的压缩技术,如量化和剪枝,需要专用的硬件平台来加速这一过程,而为压缩模型构建这样的硬件平台也是研究人员的另一个方向。