LARA:残差流中的轻量级适配器,用于可组合的适应与对齐
摘要
LARA 是一种高效适应方法,它向冻结模型的残差流添加低秩修正,而不是修改权重,在匹配 LoRA 性能的同时实现可组合行为和推理时调控。
arXiv:2607.28669v1 公告类型:新
摘要:我们提出 LARA(Lightweight Additive Residual Adaptation,轻量级加性残差适应),一种在冻结模型的残差流中而非其权重中进行高效适应的方法。LoRA 向权重矩阵添加低秩更新,而 LARA 在一小组层读取隐藏状态,并将低秩修正添加回残差流,所有基础权重保持不变。在代码微调任务和偏好优化(DPO)上,LARA 在参数数量相同的情况下与 LoRA 表现相当。由于适应是冻结基础加上残差,LARA 暴露了一个在推理时应用的缩放系数 {\gamma},可在基础行为与适应行为之间平滑插值,这是一种权重空间适应所不具备的分级控制形式。最后,由于每个行为都是共享冻结基础上的一个小型残差模块,因此可以同时驻留多个行为,并按 token 自动路由。我们将七个行为(六个微调行为和一个偏好优化行为)放置在同一个冻结的 1.5B 模型上,大约增加了 33 MB 的开销,而每个行为对应一个完整模型则需要更多资源。由于基础模型不受影响,这些行为分别训练,并按 token 选择,而不是按需加载,这适合在单一设备上的一个模型中托管多个行为以及添加新行为。
查看缓存全文
缓存时间: 2026/08/03 07:30
# 1 引言 LARA:残差流中的轻量适配器,用于可组合的适配与对齐 用可组合行为扩展冻结模型 Pascal Ekin†\daggerHyosun Choi1Wei Jie2 1英国伦敦大学皇家霍洛威学院 2英国西伦敦大学 **摘要** 我们提出LARA(Lightweight Additive Residual Adaptation,轻量加性残差适配),一种在冻结模型的残差流中而非其权重中运作的高效适配方法。LoRA向权重矩阵添加低秩更新,而LARA在一小组层上读取隐藏状态,并将低秩修正加回残差流,所有基础权重均保持不变。在代码微调任务和偏好优化(DPO)上,LARA在相等参数数量下匹配LoRA。由于适配是冻结基础加上残差,LARA暴露了一个在推理时应用的尺度γ,可在基础和适配行为之间平滑插值,这是一种权值空间适配无法提供的分级控制。最后,由于每个行为是共享冻结基础之上的小型残差模块,许多行为可以同时驻留,并按词元自动路由。我们将七种行为——六个微调行为和一个偏好优化行为——放置在一个冻结的1.5B模型上,仅需约33 MB开销,而不是为每种行为各配备一个完整模型。由于基础保持不变,行为可以单独训练并按词元选择,而不是按需加载,这非常适合在单台设备的单个模型上托管多种行为并添加新行为。 †††\dagger通讯作者:[email protected]。代码:https://github.com/pfekin/LARA **关键词:** 参数高效微调 • 残差流 • 适配器 • LoRA • 偏好优化 • 推理时引导 • 设备端推理 • 按词元路由 高效适配使得大型预训练模型无需更新其所有权重即可被专门化,成本仅为完全微调的一小部分[4](https://arxiv.org/html/2607.28669#bib.bib4),[5](https://arxiv.org/html/2607.28669#bib.bib5)。主流方法——低秩适配(LoRA)——向选定的权重矩阵添加可训练的低秩更新[5](https://arxiv.org/html/2607.28669#bib.bib5)。该方法家族通过修改权重来适配模型:学到的更新被折叠到或应用到定义每层变换的矩阵中。 权值空间不是适配可以存在的唯一位置。变换器维持一条残差流,即每层读取和写入的激活的累加和[3](https://arxiv.org/html/2607.28669#bib.bib3)。与其改变产生这些激活的权重,我们可以让所有权重保持冻结,并在残差流本身添加一个小的学习修正。我们在LARA(Lightweight Additive Residual Adaptation)中研究这一替代方案:在一小组层上,LARA读取隐藏状态,计算一个低秩修正,并将其加回流中。基础权重从未被触碰,因此适配是放置在冻结计算旁边的一个残差,而不是对计算的改变。 这一机制并不新鲜。向冻结主干添加一个学习模块,特别是低秩模块或残差路径上的瓶颈,属于残差适配器和侧调优家族[10](https://arxiv.org/html/2607.28669#bib.bib10),[4](https://arxiv.org/html/2607.28669#bib.bib4),[13](https://arxiv.org/html/2607.28669#bib.bib13)。最近的类似实例是H-Res[1](https://arxiv.org/html/2607.28669#bib.bib1),它向冻结模型的残差流添加一个初始化为零的低秩模块,并在单一任务适配上进行评估。我们不声称残差适配器机制是贡献。我们的贡献有三点。第一,我们通过在相等参数下的比较(而不是假设)确立了残差流中的适配与权值空间中的LoRA在代码微调任务和偏好优化(DPO)上相匹配;最接近的先前工作与LoRA比较时未匹配参数数量。第二,由于适配是在未改变基础上的加性残差,其强度可以在推理时通过单个系数缩放,从而实现权值空间方法无法提供的分级控制。第三,由于每个行为是共享冻结基础之上的一个小模块,许多行为可以同时驻留并按词元自动路由,将一组已调优和对齐的行为放在一个冻结模型上仅需数兆字节,而不是为每个行为各配一个完整模型。 最后一点是冻结基础在实践中产生回报的地方。一个行为库以一个模型内存的一小部分驻留,并按词元选择,而传统部署下每种行为大约需要模型的一个完整副本。由于基础从未被修改,行为可以单独训练并添加到库中,而无需重拟合模型,因此一个冻结模型可以承载多种行为并随时间获取新行为。LARA在保持与权值空间适配相当的适配质量的同时实现这一点,并添加了它无法提供的推理时控制。[第2节](https://arxiv.org/html/2607.28669#S2)描述方法,[第3节](https://arxiv.org/html/2607.28669#S3)报告相等参数下的比较、引导以及多种行为的结果,[第4节](https://arxiv.org/html/2607.28669#S4)讨论局限性和与先前工作的关系。 ## 2 方法 ### 2.1 残差流中的适配 深度为DD的变换器解码器维护一条残差流:在第l\\ell层,块读取隐藏状态hlh\_\{\\ell\}并写出hl\+1h\_\{\\ell\+1\},模型输出从hDh\_\{D\}读取[3](https://arxiv.org/html/2607.28669#bib.bib3)。LARA保持每个块不变,并在所选层子集LL中插入一个轻量模块,该模块读取隐藏状态并向流中添加一个低秩修正。对每个l∈L\\ell\\in L, hl←hl\+αrW↑W↓LN\(hl\),h\_\{\\ell\}\\;\\leftarrow\\;h\_\{\\ell\}\\;\+\\;\\frac\{\\alpha\}\{r\}\\,W^\{\\uparrow\}\\,W^\{\\downarrow\}\\,\\mathrm\{LN\}\(h\_\{\\ell\}\),(1) 其中W↓W^\{\\downarrow\}是r×dr\\times d矩阵,W↑W^\{\\uparrow\}是d×rd\\times r矩阵,r≪dr\\ll d是秩,LN\\mathrm\{LN\}是层归一化,α\\alpha是固定尺度。该映射对LN\(hl\)\\mathrm\{LN\}\(h\_\{\\ell\}\)是线性的。两个投影之间没有非线性。遵循LLaMA-Adapter[14](https://arxiv.org/html/2607.28669#bib.bib14)使用的零初始化原则,W↑W^\{\\uparrow\}设为零,因此在训练开始时每个模块输出为零,模型正好就是基础。 基础权重矩阵从未被修改。移除模块,或等效地将其输出设为零,前向传播与冻结基础逐位完全相同。这是与权值空间适配的操作性区别:LoRA用W\+\(α/r\)BAW\+\(\\alpha/r\)BA替换有效权重矩阵WW,从而改变每层计算的变换,而LARA保持WW不变,而是向层间流动的激活添加内容。适配被放置在冻结计算旁边,而不是折叠进其中。 参考图注:图1:LoRA在权值空间中适配;LARA在残差流中适配。左:LoRA将秩为rr的更新ΔW=BA\\Delta W=BA分解并折叠进权重矩阵,因此该层计算\(W\+ΔW\)h\(W\+\\Delta W\)h。右:LARA读取隐藏状态hlh\_\{\\ell\},将其投影到秩rr再投影回维度dd,按α/r\\alpha/r缩放,并将结果添加到流中,而块本身保持冻结。灰色为冻结,蓝色为已训练。 ### 2.2 训练参数与相等预算下的核算 只有插入的模块被训练,所有基础参数保持冻结。每个模块持有2dr2dr投影参数以及其LayerNorm的仿射参数,因此在\|L\|\|L\|层上的配置规模大约为2dr\|L\|2dr\|L\|。在第3节中使用的配置中,隐藏大小d=1536d=1536,秩r=128r=128,L=\{4,8,12,16,20,24\}L=\\\{4,8,12,16,20,24\\\},LARA训练2,386,9442\{,\}386\{,\}944个参数。LoRA基线对所有层的查询和值投影应用秩为16的更新,得到2,179,0722\{,\}179\{,\}072个可训练参数。两个预算相差在10%以内,LARA较大。我们在这两个数量下报告两种方法,并不试图给任一方法参数优势。 ### 2.3 放置 集合LL是对质量有显著影响的唯一设计选择。在我们使用的范围内,秩和尺度相对不敏感。我们的实验中存在两个规律,并在[第3节](https://arxiv.org/html/2607.28669#S3)中得到支持。监督微调受益于在跨越深度的若干层放置模块。偏好优化要求较低:在中间层放置单个模块即可达到多层配置的同等水平。除非明确说明单层,所有报告配置均使用上述多层放置。 ### 2.4 推理时缩放 由于每个模块的贡献是在未改变基础之上的加性项,其强度可以在训练后无需再训练地调整。我们仅通过推理时应用的系数γ≥0\\gamma\\geq 0缩放训练好的修正, hl←hl\+γαrW↑W↓LN\(hl\),h\_\{\\ell\}\\;\\leftarrow\\;h\_\{\\ell\}\\;\+\\;\\gamma\\,\\frac\{\\alpha\}\{r\}\\,W^\{\\uparrow\}\\,W^\{\\downarrow\}\\,\\mathrm\{LN\}\(h\_\{\\ell\}\),(2) γ=1\\gamma=1恢复训练后的模型,γ=0\\gamma=0恢复基础。训练期间始终γ=1\\gamma=1,且它仅作为评估时的控制引入。[第3节](https://arxiv.org/html/2607.28669#S3)显示中间值在基础和适配行为之间平滑插值,而权值空间中的适配在推理时无法提供这种控制。 ### 2.5 计算成本 一个模块每个词元执行两次矩阵乘积。投影到秩rr花费rdrd次操作,投影回dd花费drdr次操作,将一次乘法和一次加法计为一次操作,因此一个模块每个词元增加2dr2dr,在\|L\|\|L\|层上的放置增加2dr\|L\|2dr\|L\|。LayerNorm增加一个与dd成线性的项。该映射在每个位置独立应用,因此增加的成本与秩rr线性相关,与模块数量\|L\|\|L\|线性相关,与序列长度线性相关。它不进入注意力中的二次项,且基础模型的成本不变。 由于映射是线性的,模块每个词元增加的操作数等于其可训练参数数量。在[第2.2节](https://arxiv.org/html/2607.28669#S2.SS2)的预算下,这为每词元2,386,9442\{,\}386\{,\}944次操作,而冻结基础(排除注意力分数,其成本取决于上下文长度)约为1\.5×1091\.5\\times 10^\{9\}。因此适配占用前向传播的不到0\.2%0\.2\\%. 在软路由下,一个七种行为的行为库应用每个行为的模块并混合它们,每词元N×2dr\|L\|N\\times 2dr\|L\|,在N=7N=7时接近基础的1%1\\%. 硬路由到一种行为则应用单一集合。路由器是每词元一个d×Nd\\times N的乘积,在d=1536d=1536和N=7N=7时为10,75210\{,\}752次操作,与两者相比都可忽略。 与权值空间适配的一个区别值得说明。LoRA更新在训练完成后可以合并到权重矩阵中,之后在推理时零成本。LARA无法合并,因为其修正是激活的函数而不是权重的常数偏移,因此它总是支付上述成本。当希望永久使用单一行为时,合并是可行的。对于必须保持可切换的行为库(即[第3.3节](https://arxiv.org/html/2607.28669#S3.SS3)的设置),合并不可用,而与未合并的LoRA相比,两种方法在相等参数下每词元增加相同的工作量。 ## 3 实验 我们在[第2.2节](https://arxiv.org/html/2607.28669#S2.SS2)的相等参数预算下(2.39M对2.18M可训练,LARA较大)比较LARA和LoRA,基于相同的冻结基础:Qwen2.5 1.5B Instruct(8位)。两种方法在每个任务上以相同方式训练。[第3.1节](https://arxiv.org/html/2607.28669#S3.SS1)确立了残差流中的适配在微调和偏好优化上与权值空间中的适配相匹配。[第3.2节](https://arxiv.org/html/2607.28669#S3.SS2)考察推理时的缩放系数。[第3.3节](https://arxiv.org/html/2607.28669#S3.SS3)展示许多行为驻留在一个冻结基础上并按词元路由。 ### 3.1 残差流中的适配匹配权值空间中的LoRA **微调。** 我们在一个代码语料库上微调——该语料库结合了四个公开数据集,约95%为Python,剩余一小部分为指令跟随:iamtarun/python_code_instructions_18k_alpaca、Vezora/Tested-22k-Python-Alpaca、mlabonne/Evol-Instruct-Python-26k 和 HuggingFaceH4/ultrachat_200k——并在从训练分布分离出的保留集以及一般指令集(Databricks Dolly)上评估困惑度,后者共享聊天格式但不含代码内容。表1报告了两种方法相对冻结基础的结果。两者在训练分布上的困惑度都大幅下降,从5.34降至1.70(LARA)和1.75(LoRA),并且都相对于基础改进了指令集,分别降至7.50和6.74。LARA在训练分布上略好,LoRA在指令集上略好。两者差异都不大,且没有哪种方法全面更好。在相等参数下,LARA达到了与LoRA相同的微调质量。 表1:在代码语料库上的微调困惑度(越低越好),在训练分布和一般指令集上评估,相对冻结基础。LARA和LoRA在相等参数下。 **偏好优化。** 我们在UltraFeedback偏好对上应用带长度归一化的DPO,使用禁用适配器的冻结基础作为参考,并在保留对上评估。表2报告奖励准确率(适配模型偏好被选回答的配对比例)、奖励边际和保留对上的DPO损失。两种方法都学到了真实的偏好:奖励准确率上升到0.625(LARA)和0.613(LoRA),高于冻结基础的0.55,而基础的偏好差距证实这些配对在训练前是可分离的。两种方法相当,LARA显示出更高的奖励准确率和边际,LoRA在这些对上损失更低。与长度归一化下偏好优化的典型特征一样,两种方法都增加了被选与被拒之间的边际,而不是孤立地提高被选对数概率。在相等参数下,LARA在偏好优化上也匹配LoRA。 表2:UltraFeedback上的长度归一化DPO(奖励准确率越高越好)。两种方法都超过冻结基础0.55的奖励准确率。LARA和LoRA在相等参数下。参考是禁用适配器的冻结基础,这是免费的。 ### 3.2 推理时缩放 由于每个模块的修正都是未改变基础上的加性项,[第2.4节](https://arxiv.org/html/2607.28669#S2.SS4)的系数γ\\gamma可在推理时重新缩放适配,而无需再训练。设置γ=0\\gamma=0恰好恢复冻结基础,
相似文章
JumpLoRA:大语言模型持续学习的稀疏适配器
JumpLoRA 引入了一个新颖的稀疏适配器框架,用于大语言模型的持续学习。该方法使用 JumpReLU 门控来动态隔离任务参数并防止灾难性遗忘。它增强了基于 LoRA 的方法,并超越了 ELLA 等最先进的持续学习方法。
Code2LoRA:超网络生成的适配器,用于软件演进中的代码语言模型
Code2LoRA 引入了一个超网络,该超网络能够从代码仓库中一次性前向传播生成 LoRA 适配器,使得冻结的代码大语言模型无需额外 token 即可适应仓库上下文,并高效支持不断演进的代码库。此外,它还提供了 RepoPeftBench,一个用于仓库条件代码建模的基准测试。
AdaPreLoRA:Adafactor 预条件低秩适应
AdaPreLoRA 是一种新颖的 LoRA 优化器,它利用 Adafactor 对角 Kronecker 预条件来改进因子空间更新,同时保持低内存占用,在各种大语言模型(LLM)和任务中表现出具有竞争力的性能。
ReLoRA: 知识复用适应方法,用于快速部署不断演进的LLM服务
ReLoRA是一个知识复用的适应框架,能够高效恢复面向不断演进的LLM服务的、可投入使用的LoRA适配器。通过自适应初始化和计划正则化,它可将准备时间缩短最多8.9倍,并将准确率提升最高4.6%。
超越LoRA:稀疏诱导的适配是否更好?
本文提出了对LoRA的稀疏诱导适配方法,包括廉价LoRA(cLA)和链式循环变体(c³LA),并提供了理论泛化界以及实证评估,结果显示在保持竞争性性能的同时,训练时间最多减少10%,峰值GPU内存节省最多15%。