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

原文链接: 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维张量 xRb×l×dx \in \mathbb{R}^{b \times l \times d} 作为输入表征。输入的token首先与三个权重矩阵WQWQWKWKWVWV相乘,产生的输出称为查询( QQ ),键( $K $)和值( VV )。考虑到MSA模块无法识别位置数据和LLMs固有的自回归性质,查询和键将经历一个使用旋转位置嵌入[ 165 ] ( RoPE ,在式( 1 )中记为Rp . q)编码位置信息的过程。随后,键和值将与先前的token相结合。

在位置嵌入之后,中间激活将经历一系列的乘法,softmax和残差加法,以产生如方程9所述的MSA输出。这里需要注意的是,方程中的dkd_k是指多头注意力机制中特征维度的个数。

(Q,K,V=R(Wqx),R(Wkx),Wvx)(1)( Q, K, V = R(W_qx), R(W_kx), W_vx ) \qquad (1)

SA(x)=Softmax(QKTdhead)V(2)\text{SA}(x) = \text{Softmax}({\frac{QK^T}{\sqrt{d_{head}}}})V \qquad (2)

MSA(x)=[SA1(x);SA2(x);...;SAk(x)]W0(3)\text{MSA}(x) = [\text{SA}_1(x);\text{SA}_2(x);...;\text{SA}_k(x)]W_0 \qquad (3)

然后将SA输出转发给FFN块进行进一步处理。FFN块将有另外三个矩阵WupW_{up}WdownW_{down},和WgateW_{gate},计算可以用图来说明:

FFNLLaMa(x)=Wup(SiLU(Wgatex)(Wdownx))+x(4)FFN_{LLaMa}(x) = W_{up}(SiLU(W_{gate}x) \odot (W_{down}x)) + x \qquad (4)

其中x表示FFN层的输入,SiLU是LLaMA中使用的非线性函数。在原始Transformer中,FFN块可以表示为:

FFNTransfomer(x)=Wup(ReLU(WDown)x)+x(5)FFN_{Transfomer}(x) = W_{up}(ReLU(W_{Down})x) + x \qquad (5)

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

为了分析LLM中的计算开销和内存开销,我们还设置了后面第三节中使用的一系列参数。表1以LLaMA - 7B模型为例,给出了模型的参数大小和计算维数。

LLM模型根据先前的提示(输入)和先前生成的序列,为每一轮生成token(单词)一,如图2所示。这个过程会重复进行,直到模型输出命中和终止token。为了加速LLM模型中的推理过程,人们采取将之前的Key和Value存储在语义相关缓存( KV-cache )中的策略,因此不需要为每个新的token重新计算它们。从数学上讲,我们可以在式( 6 )中表示总解码器的kv - cache内存开销。

在该方程中,llbb是上下文长度和批大小,LL是层数。dheadd_{head} 为头部尺寸,nheadn{head}为头部数量。

Size=L×2×b×l×dhead×nhead(6)Size = L \times 2 \times b \times l \times d_{head} \times n_{head} \qquad (6)

image-20240418202851860

表1:LLaMA - 7B体系结构的配置参数和计算操作

B.参数高效微调概述

微调对于增强隐形用户数据集和任务上的LLM性能仍然是必不可少的。随着模型规模的不断增大,标准的全微调范式需要成千上万的GPU并行工作,效率极低且不可持续。一种算法被提出,即参数有效的微调( PEFT ),其目的是调整最小的参数,以获得比完全调整下游任务更好的性能。

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

image-20240418202727814

图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所示。

image-20240418202809738

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

A .添加型PEFT

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

1 )适配器(Adapter):适配器方法涉及在Transformer块中插入小的适配器层。通常,适配器层由一个下投影矩阵WdownRr×dW_{down} \in \mathbb{R}^ {r \times d },一个非线性激活函数σ()\sigma (\cdot) 和一个上投影矩阵WupRd×rW_{up}\in \mathbb{R}^{d \times r}组成。在该上下文中,dd表示隐藏层的维度,rr 作为瓶颈维度,是用于配置适配器的超参数。将hinh_{in}作为适配器的输入,适配器模块(带残差)内的计算可以概括如下:

Adapter(x)=Wupσ(Wdownx)+x(7)\text{Adapter}(x) = W_{up}\sigma(W_{down}x)+x \qquad (7)

image-20240419091317545

图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 ]。受这一概念的启发,研究人员直接在输入序列的开始处添加可调向量,称为软提示。这可以表示为:

Xl=[Sl(l),...,SNS,x(l),...,xNX(l)](8)\mathrm{X}^{l} = [\mathrm{S_l}^{(l)},...,\mathrm{S_{N_S}},\mathrm{x}^{(l)},...,\mathrm{x}_{N_X}^{(l)}] \qquad (8)

其中X(l)\mathrm{X}^{(l)}是第ll层的输入token序列,包括软提示token si(l)s_i^{(l)} 和原始输入token xi(l)x_i^{(l)}NSN_S为软提示token数量,NXN_X为原始输入token数量。

前缀微调(Prefix-tuning )[ 105 ]在所有Transformer层中引入了与键值kk和值vv相关的可学习向量。为了保证优化过程中的稳定性,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 ]通过在多个任务上训练一个自动编码器来识别一个内在的任务子空间。然后在新的任务上进行调整,只需要在这个子空间内调整几个参数,大大减少了训练参数的数量。

image-20240419093718574

图6:(IA)3\mathrm{(IA)^3}和SSF插图。蓝色代表冻结,黄色代表可训练。

3 )其他加法方法:除上述方法外,还有其他方法在微调过程中策略性地加入了额外的参数。例如,(IA)3\mathrm{(IA)^3}[ 116 ] 引入了三个可学习的重标度向量:lkRdkl_k \in \mathbb{R}^{d_k}lvRdvl_v \in \mathbb{R}^{d_v},和lffRdffl_{ff} \in \mathbb{R}^{d_{ff}},如图6 ( a )所示,分别对key,value和FFN激活进行重新标度。自注意力块内的操作可以描述如下:

SA(x)=SoftmaxQ(lkKT)dhead(lvV).(9)SA(x) = Softmax{\frac{Q(l_k \odot K^T)}{\sqrt{d_{head}} }(l_v \odot V).} \qquad (9)

在FFN中,重标度可以表示为:

FFNTransfomer(x)=Wup(lffσ(Wdownx)),(10)FFN_{Transfomer}(x) = W_{up}(l_{ff}\odot \sigma (W_{down}x)), \qquad (10)

式中:\odot 为Hadamard积。此外,尺度向量lkl_klvl_v可以无缝集成到AQA_QAWA_W的权重矩阵中。这种整合有效地消除了推断过程中额外的计算成本。类似的方法SSF [ 109 ]也对模型的激活进行线性变换,如图6 ( b )所示。具体来说,在预训练模型中的每个操作(即MSA、FFN和层归一化)之后,注入一个SSF - ADA层,该层对操作产生的特征进行缩放和移位。在微调过程中,只有那些SSF - ADA层可以被更新,而在推理过程中,类似于(IA)3\mathrm( IA )^3,这些SSF-ADA层可以合并到模型权重中,因此不会产生额外的推理开销。IPA (推理时间策略适配器) [ 124 ]提供了一种新颖的方法,在不修改基模型参数的情况下,将LLMs (如GPT-4 )与用户特定的需求对齐。这在处理参数极大且往往无法直接获取的模型时尤为显著。IPA通过在解码阶段将一个基LLM的输出分布(基策略)与一个较小的模型的输出分布(适配器策略)结合(通过乘法和归一化)来实现。在训练过程中,策略适配器的参数使用强化学习进行微调,而基本策略的参数保持不变。在推理过程中,IPA利用基模型和训练好的策略适配器的联合分布进行解码,并对其进行裁剪以满足特定的用户定义标准。

B.选择性PEFT

与加性PEFT通过增加更多的参数来增加模型复杂度不同,选择性PEFT对现有参数的子集进行微调,以增强模型在下游任务中的性能,如图4 ( b )所示。具体来说,给定一个含有参数θ={θ1,θ2,...,θn}\theta = \lbrace{\theta_1,\theta_2,...,\theta_n} \rbrace的模型,其中每个θi\theta_i表示一个单独的模型参数,nn表示这些参数的总数,选择性PEFT的过程通过对这些参数施加一个二进制掩码M={m1m2,...,mn}M = \lbrace m_1,m_2,... ,m_n \rbrace来表示。MM中的每个mim_i要么为0,要么为1,表明相应的参数θi\theta_i是选择(1)还是不选择(0)进行微调。微调后更新的参数集θ\theta^\prime由下式给出:

θ=θiηmiLθi(11)\theta^\prime = \theta_i - \eta \cdot m_i \cdot \frac{\partial \mathcal{L}}{\partial \theta_i} \qquad (11)

其中η\eta表示学习率,Lθi\frac{\partial \mathcal{L}}{\partial \theta_i}表示损失函数关于参数θi\theta_i的梯度。在这个公式中,只有被选中(即mi=1m_i=1)的参数在反向传播过程中更新。

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 ]提出了两种方法来在每次训练迭代中选择一个子网络,其中只有这个子网络中的参数可以被更新。

image-20240419161545898

图7:两种参数掩模方法示意图。蓝色代表冷冻,黄色代表可训练。

然而,在实现PEFT时,上述非结构化参数掩码会导致非零掩码分布不均,降低硬件效率。如图7所示,结构化掩码以规则的方式组织参数掩码,而非结构化掩码随机应用,因此可以提高训练过程中的计算和硬件效率。因此,各种结构化的选择性PEFT技术得到了广泛的研究。Diff剪枝提出了一种结构化剪枝策略,通过将权重参数划分为局部组,并策略性地将它们一起消除。类似地,FAR [ 174 ]对BERT模型进行微调,将Transformer块中FFN的权重分组为节点,然后使用L1范数对学习器节点进行排序和选择。为了进一步降低内存访问频率,他们还通过将学习器节点分组来重新配置FFN。Bitfit [ 207 ]提出只对每个DNN层的偏置参数进行微调,对于小模型取得了有竞争力的结果。然而,该方法无法处理大型模型。文献[ 99 ]的工作将NAS应用到Bitfit中,其中S-BitFit保持了Bitfit的结构特性,限制了NAS算法必须为每个偏置模块选择是否为δb=0\delta b = 0。与Bitfit在Transformer中对特定模块进行微调类似,Xattn Tuning [ 54 ]只对交叉注意力层进行微调。SPT (灵敏度感知的视觉参数高效微调) [ 66 ]首先确定了由调谐时的损耗减少量测量的敏感参数。这种灵敏度是使用一阶泰勒展开式计算的,它来源于单触发中微调前的单次前向和后向传递。接下来,SPT找到敏感参数数量超过预定义阈值的权重矩阵,然后将选定的PEFT技术(如LoRA、Adapter等)应用于这些目标权重,以实现结构的微调。

C.重新参数化PEFT

再参数化是指通过变换模型的参数,将模型的结构从一个模型等价地变换到另一个模型。在PEFT的背景下,这往往意味着构建一个低秩的参数化,以实现训练过程中参数效率的目标。对于推理,可以将模型转换为其原始的权重参数化,保证推理速度不变。这个过程在图4 ( c )中描述。

image-20240419161628953

图8:3种具有代表性的重参数化PEFT算法示意图。蓝色代表冷冻,黄色代表可训练。

早期的研究[ 1 ]表明,常见的预训练模型表现出异常低的内在维度。换句话说,可以找到一个低维的重新参数化,作为整个参数空间的微调是有效的。Intrinsic SAID [ 1 ]是研究LLMs微调过程中本征维度特征的开创性工作。然而,最被广泛认可的再参数化技术是LoRA (低秩适应) [ 76 ],如图8 ( a )所示。对于给定的预训练权重矩阵W0Rd×kW_0 \in \mathbb{R}^ {d \times k},LoRA引入了两个可训练的权重矩阵WupRd×rW_{up} \in \mathbb{R}^ {d \times r}WdownRr×kW_{down} \in \mathbb{R}^ {r \times k},其中秩rmin(d,k)r \ll min(d,k) ,与W0W_0并联运行。令hinh_{in}表示输入。在正常情况下,通过W0W_0的输出为hout=W0hinh_{out} = W_0h_{in}。相反,LoRA通过引入一个封装任务特定知识的增量更新W\triangle W来修改这个输出:

hout=W0hin+αrWhin=W0hin+αrWupWdownhin(12)h_{out} = W_0h_{in} +\frac{\alpha}{r} \triangle W h_{in} = W_0 h_{in}+ \frac{\alpha}{r}W_{up}W_{down}h_{in} \qquad (12)

式中:α\alpha为缩放因子。在训练开始时,WdownW_{down}使用随机高斯分布初始化,而WupW_{up}初始化为零,以确保WupW_{up}最初保持为零的值。LoRA的实现非常简单,并且已经在具有高达1750亿参数的模型上进行了评估。图8 ( c )以单个解码器为例,冻结的和可学习的成分分别用灰色和红色突出。一旦微调完成,LoRA的自适应权重与预训练的骨干权重无缝集成。这种整合保证了LoRA保持了模型的效率,在推理过程中不会增加额外的负担。

在LoRA训练中,选择合适的秩一直是一个具有挑战性的问题。为了解决这个问题,DyLoRA [ 171 ],如图8 ( b )所示,在预定义的训练预算范围内对LoRA模块进行一系列秩的训练,而不是坚持单一的固定秩。具体来说,对于给定的秩范围R=rmin,rmin+1,...,rmaxR ={r_{min},r_{min}+1,...,r_{max}},DyLoRA在训练过程的每一次迭代中动态地选择一个秩rRr \in R。因此,矩阵WdownW_{down}WupW{up}被裁剪为选定的秩rr,从而产生截断版本Wdownr=Wdown[1:r,:]W_{down \downarrow r} = W_{down}[1:r,:]Wupr=Wup[:,1:r]W_{up \downarrow r} = W_{up}[:,1:r],并且在此迭代过程中,后续的前向和后向传递将被限制在WdownrW_{down \downarrow r}WuprW_{up \downarrow r}上,而不是WdownW_{down}WupW_{up}。通过这种动态和免搜索的方法,DyLoRA显著减少了为特定任务寻找最优和固定的LoRA秩所需的训练时间。AdaLoRA [ 217 ]用奇异值分解( Singular Value Decomposition,SVD )重新计算了W\triangle W,记为W=PQ\triangle W = P \wedge Q,其中PRd×rP \in \mathbb{R}^{d \times r}QRr×kQ \in \mathbb{R}^{r \times k}是正交矩阵,\wedge是包含奇异值{λi}1ir\lbrace\lambda_i\rbrace _{1 \leq i \leq r}的对角矩阵。所有的三个权重矩阵都是可学习的。在训练过程中,奇异值根据其重要性得分进行迭代剪枝,这些奇异值是由梯度权重乘积大小的移动平均值构造的。为了保证PPQQ之间的正交性,即PTP=QQT=IP^TP = QQ^T = I,在损失函数中加入了一个额外的正则项:

R(P,Q)=PTPIF2+QQTIF2.(13)R(P,Q) = \Vert P^TP - I \Vert ^2_F + \Vert QQ^T - I \Vert ^2 _F. \qquad (13)

这种自适应方法使模型能够动态调整每个LoRA模块内的秩,有效地根据权重矩阵的重要性管理其参数计数。然而,根据SoRA [ 39 ],AdaLoRA中使用的重要性评分是启发式构造的,缺乏严谨的理论动机。此外,移动平均运算和式( 5 )的计算也是如此。公式13在训练过程中引入了额外的计算开销。为了解决这个问题,SoRA消除了PPQQ的正交性前提,取而代之的是在WupW_{up}WdownW_{down}之间直接应用和优化一个门控单元gRrg \in \mathbb{R}^r

hout=Wup(g(Wdownhin)),(14)h_{out} = W{up}(g \odot (W_{down}h_{in})), \qquad (14)

式中:\odot为Hadamard积。门gg的更新采用l1l_1损失的近端梯度迭代变化[ 7 ],[ 13 ],具有明确的数学意义,不需要启发式前提。训练完成后,通过移除WdownW_{down}WupW_{up}中对应的列和行,对归零门单元进行剪枝。

随后的几项研究旨在从多个方面提高LoRA的性能。例如,Laplace-LoRA [ 197 ]注意到微调后的LLMs往往表现出过度自信。为了加强微调后的LLMs的校准,Laplace-LoRA使用贝叶斯方法,特别是事后Laplace近似[ 127 ],[ 5 ],对LoRA参数进行后验估计。LoRA+ [ 65 ]提出对LoRA矩阵WdownW_{down}WupW_{up}设置不同的学习率,使得ηup=ληdown\eta_{up} = \lambda \eta _{down}λ>1\lambda > 1固定,ηudown\eta_{udown}可调。LoRAHub [ 80 ]和MOELoRA [ 119 ]都从多任务学习中得到启发。LoRAHub聚合了在不同任务上训练的各种LoRA模块。LoRAHub在给定一个新任务的少量实例的情况下,通过无梯度的方法Shiwa [ 117 ],可以在没有人工干预的情况下自主地组成兼容的LoRA模块。MOELoRA采用混合专家( Mixture-of-Experts,MOE )方法在多任务环境下训练LoRA,产生多个专家LoRA模块。为了检索特定任务的参数,MOELoRA使用任务驱动的门函数,该门函数根据任务ID为每个专家分配贡献权重,通过所有专家的加权求和计算最终的参数。

除了LoRA外,其他几种再参数化技术也在不断涌现,具有很大的潜力。例如,Compacter[ 91 ]通过将WdownW_{down}WupW_{up}参数化为W=i=1bAiBiW = \sum^b_{i=1} A_i \otimes B_i,引入了一个轻量级的适配器模块,其中AiRm×nA_i \in \mathbb{R}^{m \times n}BiRrn×dnB_i \in \mathbb{R} ^{\frac{r}{n} \times \frac{d}{n}}\otimes 表示Kronecker积。他们通过将AiA_i指定为共享参数,并利用两个低秩矩阵的乘积对BiB_i进行重新参数化,进一步减少了参数个数,有效地将参数复杂度从O(rd)\mathcal{O}(rd)降低到了O(r+d)\mathcal{O}(r+d)​。相关研究如KronA [ 42 ]、KAdaptation [ 71 ]等也采用Kronecker积对适配器权重进行重新参数化,以实现参数约简。HiWi [ 111 ]提出了一种适配器微调方法,将适配器直接应用于预训练的参数,而不是隐藏表示为:

W=W+σ(WWdown)Wup,(15)W^\prime = W + \sigma(WW_{down})W_{up}, \qquad (15)

其中W表示Transformer块前馈层中的权重或偏置。值得注意的是,在推理过程中,该方法提前计算WW^\prime,保证了模型的推理延迟与传统完全微调的推理延迟相当。DoRA (权重分解的低秩适应) [ 120 ]提出了一种新颖的方法,如图8 ( c )所示,将模型权重W0Rd×kW_0 \in \mathbb{R}^{d \times k}分解为大小和方向:

W0=mVVc=W0cW0W0c,(16)W_0 = m \frac{V}{\Vert V \Vert _c} = \Vert W_0 \Vert _c \frac{W_0}{\Vert W_0 \Vert _c}, \qquad (16)

其中mRl×km \in \mathbb{R}^{l \times k} 是震级向量,VRd×kV \in \mathbb{R}^{d \times k}是方向矩阵,c\Vert \cdot \Vert_c是矩阵在每一列上的向量值范数。随后,DoRA对mmVV采用独特的微调策略。虽然两者都是可调的,但只有VV经历了LoRA再参数化,定义为:

W=mV+VV+Vc=mW0+WupWdownW0+WupWdownc,(17)W^\prime = \underline{m} \frac{V + \triangle V}{\Vert V + \underline{\triangle V}\Vert_c} = \underline{m} \frac{W_0 + \underline{W_{up}W_{down}}}{\Vert W_0 + \underline{W_{up}W_{down}\Vert_c}}, \qquad (17)

其中,V\triangle V是LoRA学习到的增量方向更新,下划线参数表示可训练参数。通过这种方法,DoRA在各种任务和模型中始终优于LoRA,证明了其优越性。

D. 混合PEFT

不同的PEFT方法在不同任务中的效能存在显著差异。因此,许多研究旨在结合不同PEFT方法的优点,或者通过分析这些方法之间的相似性来建立统一的视角。例如,UniPELT [ 133 ]将LoRA、前缀调整和适配器集成到每个Transformer模块中。为了控制哪些PEFT子模块应该被激活,他们还引入了门控机制。该机制由三个小的FFN组成,每个FFN产生一个标量值G(0,1)\mathcal{G} \in (0,1),然后分别应用于LoRA、前缀和适配器矩阵。在各种设置下,UniPELT一直表现出从1 %到4 %不等的精度提升。S4 [ 16 ]探索了几种PEFT方法(即Adapter ( A)、Prefix ( P )、BitFit ( B )和LoRA ( L )的设计空间,以揭示潜在的设计模式。经过一系列的实验,他们的研究结果包括:( 1 )对Transformer层进行主轴分组划分,得到i1...4i \in {1...4}的四层组GiG_i。一个组中的层与层之间具有相似的行为,也就是说应该采用相似的PEFT策略。( 2 )将可训练参数的个数均匀分配到层。( 3 )对所有组进行调优。( 4 )在不同组别中分配不同的PEFT策略。由此得到的设计空间具有最佳的性能:

G1:(A,L),G2:(A,P),G3:(A,P,B),G4:(P,B,L)G_1 : (A,L), G_2:(A,P),G_3:(A,P,B),G_4:(P,B,L)

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权重WdownW{down}WupW{up}采用基于通道的剪枝。这种剪枝不仅影响源权重W0W_0,而且影响LoRA参数WupW_{up}WdownW_{down}。同理,LoRAPruning [ 216 ]不仅对预训练的模型权重进行了结构化剪枝,而且对LoRA权重也进行了结构化剪枝。与非结构化的LoRA剪枝方法相比,LoRA剪枝方法主要关注模型权重的稀疏化,而LoRA权重的稠密化使得权重的合并变得困难,而LoRAPruning方法使得权重的合并变得容易。此外,本文还引入了一种新的准则,该准则利用LoRA的梯度作为预训练权重的梯度的近似,从而实现权重重要性的估计。ProPETL [ 210 ]构造了一个跨层和跨任务的共享原型(例如,适配器、前缀或LoRA)。此外,ProPETL通过学习二进制掩码,在不同的层和任务中剪枝不同的子网络。因此,参数可以在跨层和跨任务中重用,大大提高了参数的使用效率。

C. PEFT的量化策略

量化是另一种流行的提高计算效率和减少内存使用的技术。例如,BI-Adapter [ 87 ]通过考察适配器的损失情况,发现适配器在参数空间中具有抗噪性。基于这一认识,本文提出了一种基于聚类的量化方法。值得注意的是,他们证明了适配器的1-bit量化不仅最小化了存储需求,而且在所有精度设置中实现了卓越的性能。PEQA (参数高效和量化感知的自适应) [ 94 ]使用两级流水线来实现参数高效和量化感知的微调。在第一阶段,将预训练的FFN权重矩阵WRn×mW \in \mathbb{R}^{n \times m} 被量化为$W - s \cdot \overline{W} ,其中,其中s \in \mathbb{R}^{n \times l}表示每通道尺度,表示每通道尺度,\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微调的初始化产生不利影响,即 quantization(W0)+WdownWupW0=0quantization(W_0)+W_{down}W{up} \neq W_0 = 0,其中Wdown=0W_{down} = 0,这将损害微调性能,如文献[ 112 ]所示。为了解决这个问题,提出了几种量化策略来消除量化误差。例如,LoftQ ( LoRA - -微调感知量化) [ 108 ]提出了一个创新的框架,为后续的LoRA微调提供了量化的骨干权重和LoRA权重的优越初始化点。该方法通过在网络初始化过程中优化一个Frobenius范数目标来解决量化带来的差异,该目标同时考虑了LoRA权重和量化的预训练骨干。与QLoRA相比,LoftQ在2-bit量化方面表现出更优异的性能,并且对下游任务具有更好的泛化性。LQ-LoRA [ 60 ]采用了一种基于鲁棒主成分分析[ 234 ],[ 183 ]的迭代算法来分解权重W0W_0,使得$W_0 \approx Q + L_1 L_2 来解决由量化误差引起的不准确性,其中来解决由量化误差引起的不准确性,其中Q是保持固定不变的量化分量,是保持固定不变的量化分量,L_1L_2是可训练的低秩分量。此外,该方法利用整数线性规划来确定混合量化策略,在遵循预定的总比特率限制的同时,为每个权重矩阵提供动态量化配置。QALoRA[195]解决了QLoRA的另一个局限性,即难以在微调后保持其量化性质。在QLoRA中,量化的预训练权重(NF4)必须在权重合并过程中恢复到FP16,以匹配LoRA的权重精度(FP16)。与QLoRA相比,QALoRA使用INT4量化,并在推理阶段引入了分组操作符来实现量化,从而提高了效率和准确性。BitDelta[118]介绍了一种新颖的1bit训练后量化方法,作用于微调模型与其底层预训练模型之间的权重delta。具体地,给定微调模型和基准模型的权重矩阵是可训练的低秩分量。此外,该方法利用整数线性规划来确定混合量化策略,在遵循预定的总比特率限制的同时,为每个权重矩阵提供动态量化配置。**QA-LoRA** [ 195 ]解决了QLoRA的另一个局限性,即难以在微调后保持其量化性质。在QLoRA中,量化的预训练权重( NF4 )必须在权重合并过程中恢复到FP16,以匹配LoRA的权重精度( FP16 )。与QLoRA相比,QA-LoRA使用INT4量化,并在推理阶段引入了分组操作符来实现量化,从而提高了效率和准确性。**BitDelta** [ 118 ]介绍了一种新颖的1-bit训练后量化方法,作用于微调模型与其底层预训练模型之间的权重delta。具体地,给定微调模型和基准模型的权重矩阵W_{fine}W_{base}$,将权重delta =WfineWbase\triangle = W_{fine} - W{base}二值化为=αSign()\triangle = \alpha \odot \mathrm{Sign} (\triangle)。这里,α\alpha是一个高精度的标量,根据平均绝对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通过同时冻结预训练权重W0W_0和向下投影权重WdownW_{dow}n,只更新向上投影权WupW_{up}来解决这一问题。因此,输入激活hinh_{in}不再需要存储,因为中间激活WdownhinW_{down}h_{in}足够用于Wup的梯度计算。考虑到rdr \ll d,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进一步引入了一种新颖的移位稀疏注意力( S^2^-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 ]通过在预训练的文本到图像扩散模型的文本嵌入空间中找到一个新的代表新的特定概念的伪词SS_* (类似于第三节A2讨论的软提示 )来解决这个问题。在给定一个描述概念的小图像集(一般为3 ~ 5幅图像)的情况下,通过扩散模型中的原始优化目标对伪词SS_* 进行优化,并将预训练的模型保留下来。在推理过程中,SS_*可以像其他词一样被处理,并与其他文本查询(例如, "一张海滩上SS_*的照片")组成。Custom Diffusion [ 97 ]解决了一个更具挑战性的问题:多个概念的组合微调。它仅在注意力层中微调从文本到潜在特征的WkW_kWvW_v映射,在多概念学习场景中获得了优越的性能。此外,在微调过程中,自定义扩散通过引入一组与目标相似的字幕的真实图像来防止模型遗忘,同时采用增强以加快收敛并改善结果。IP-Adapter [ 202 ]指出了当前方法(例如, controlnet网络和T2I-Adapter)将条件信号投影到交叉注意力模块中的局限性。这些方法在处理以控制内容为目的的图像条件时,无法生成忠实于提示图像的图像。该问题源于在交叉注意力层中融合图像特征和文本特征丢失了图像特定信息,导致只能粗粒度地可控生成图像风格而不是图像内容。为了克服这个问题,IP-Adapter引入了一种新颖的解耦交叉注意力机制来区分文本和图像特征。IP-Adapter在每个交叉注意力层中专门为图像特征增加一个额外的交叉注意力层,只训练新的交叉注意力层的参数。

Ⅵ.系统设计对PEFT的挑战

A. PEFT系统设计

在这一部分中,我们首先对基于云的PEFT系统进行了简要的概述。接下来,我们给出了用于评估系统性能的相应指标。此外,为了说明系统设计中的挑战,我们给出了3个预期的使用场景。

image-20240419185746901

图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可以显著减少用户设备上的计算和通信负载,同时实现更高的准确性和隐私保护。

image-20240419190405131

DLoRA依靠一种名为Kill and Revive ( KR )的算法( 1 )来减少用户端的计算和云端与用户的通信。DLoRA在调优过程中记录了不同PEFT模块在不同译码器中的权重变化。图11显示了采样的PEFT模块在4个历元上的权重。我们观察到,有些PEFT模块变化较大,而有些模块保持稳定。DLoRA提出,当边侧PEFT模块的重量变化不明显时,可以将其杀死;当边侧PEFT模块的重量变化明显时,可以将其恢复。云端和用户端可以同时进行计算。用户设备接收到云端针对特定PEFT模块的激活后,会启动针对PEFT模块的计算输出激活。同时,云端可以继续计算其他块。用户和云之间的同步障碍是激活函数(例如. Relu )在每个解码器中。这是因为PEFT模块计算通常在每个激活层之前执行残差块。

image-20240419190433007

图11:在多个下游任务上,包括( a ) Arc - Query,( b ) Social - QA,所选PEFT模块在训练迭代过程中的l2范数变化。

C.案例研究:PetS

PEFT算法以其能够区分模型中可修改和不可改变的权重而著称。这一特性激励开发人员将不同的LLM与不同的PEFT技术融合到集体单元中。PetS在[ 235 ]中提出,通过提出一个统一的服务框架,主张采用一种综合的方法来管理多个PEFT任务。该框架的核心进步在于将不同的PEFT任务转换为集成计算内核以提高效率。此外,PetS还提出了一种编排的批处理方法和一种调度方法,分别用于提高系统的吞吐量和利用任务的并行性。

image-20240419191731858

图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中使用了一个统一的预训练权重矩阵WW,以方便初始操作$X_t \times W $的批处理。然而,涉及PET参数的后续特定任务计算,尽管复杂度相对较低,但都是单独处理的。

以Adapter和Bitfit任务为例,两者都是针对LLMs的MLP成分。Adapter任务整合了额外的权重片段,而Bitfit则调整了偏置元素。Adapter操作被建模为Y=Xin1×(W+Wad)+b0Y = X_{in1} \times (W + W_{ad}) + b_0,其中Xin1X_{in1} 代表Adapter任务的输入,WWWadW_{ad}分别是原始的和适配器专用的PEFT权重,其中b0b_0为初始偏差。另一方面,Bitfit操作被定义为 ,用b1b_1表示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 部分可以通过MVM进行批处理,而部分可以通过MVM进行批处理,而\lbrace b_0, b_1 \rbrace$部分属于Vadd操作。

对于Diff-Pruning III - B这样的任务,与Bitfit和Adapter稍有不同。对于Diff - Pruning,关于共享权重和"差异"的计算是分开进行的。然后将结果相加,即

Xt×(W=δt)=Xt×W+XtδtX_t \times (W = \delta_t) = X_t \times W + X_t \delta_t

这里,WW表示骨干模型权重,δt\delta_t表示剪枝后的权重,可表示为Sparse MVM。

image-20240419191802267

图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的有效性往往对其超参数敏感,例如适配器的瓶颈维度rr,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算法性能的影响仍然是另一个系统性的挑战。常见的压缩技术,如量化和剪枝,需要专用的硬件平台来加速这一过程,而为压缩模型构建这样的硬件平台也是研究人员的另一个方向。