2.3 PEFT家族对比与选型


文档摘要

2.3 PEFT家族对比与选型 本节摘要:参数高效微调(PEFT)是一大家子方法,LoRA 只是其中最受追捧的一个。本节把 LoRA、Prefix Tuning、Prompt Tuning、Adapter 这四个代表放在一起横向对比——它们各自把可训练参数塞在哪、推理开销多大、效果天花板多高、适合什么任务。读完你能跳出"只知道 LoRA"的局限,在遇到 LoRA 不合适的场景时知道换什么。

2.3 PEFT家族对比与选型

本节摘要:参数高效微调(PEFT)是一大家子方法,LoRA 只是其中最受追捧的一个。本节把 LoRA、Prefix Tuning、Prompt Tuning、Adapter 这四个代表放在一起横向对比——它们各自把可训练参数塞在哪、推理开销多大、效果天花板多高、适合什么任务。读完你能跳出"只知道 LoRA"的局限,在遇到 LoRA 不合适的场景时知道换什么。

本节导读

阅读完本节,你应当能够:

  1. 说清 PEFT 这一类方法的共同出发点,以及它们和全量微调的本质区别
  2. 描述 Prefix/Prompt Tuning、Adapter、LoRA 各自把可训练参数加在模型的什么位置
  3. 解释为什么 LoRA 在多数场景下成了主流,而其他方法仍有不可替代的 niche
  4. 给定一个具体任务,能选出合适的 PEFT 方法并说明理由

一、问题与直觉

前面两节我们只讲了 LoRA,好像它是微调的唯一答案。其实参数高效微调(PEFT,Parameter-Efficient Fine-Tuning)是一个大家族,LoRA 只是 2021 年后才流行起来的"后起之秀"。在它之前,Prefix Tuning、Prompt Tuning、Adapter 这些方法已经各自火过一轮。

为什么要了解这一大家子?因为 LoRA 不是万能的。有些场景下 Prefix Tuning 反而更合适(比如你要的是极轻量的软提示、完全不动模型结构),有些场景下传统 Adapter 在多任务融合(AdapterFusion)上有独到优势。只知道 LoRA 一种锤子,会把所有问题都当成钉子。

这一节我们就把这四个代表摊在一起比,重点不是背概念,而是搞清楚它们各自把"可训练的少量参数"塞在模型的哪个位置——这个位置决定了它们各自的特性。理解了这一点,选型就有依据了。

二、核心原理

2.1 PEFT 的共同出发点

所有 PEFT 方法的共同思路是:冻结基座模型的绝大部分参数不动,只额外引入一小部分可训练参数来适配下游任务。这"一小部分"通常是全量参数的 0.1% 到 5%,却能逼近甚至持平全量微调的效果。

为什么这能work?因为大量研究(包括上一节提到的"权重更新低秩"观察)表明:大模型在适配下游任务时,真正需要变化的部分是高度压缩的,没必要让所有参数都动。PEFT 就是把这个观察工程化——只学那个"压缩的变化",省下巨量计算和显存。

各家方法的分歧在于:这"一小部分可训练参数"放在哪。放的位置不同,特性就不同。整个 PEFT 家族的分类树长这样:

2.2 四种方法的参数位置

图 PEFT 四兄弟:可训练参数加在哪

下面这张图把四种 PEFT 方法的参数插入位置画在同一张 Transformer 层结构上,一眼就能看出它们的差异所在。

图 PEFT 四兄弟:可训练参数加在哪

从图里能直观看出四种方法的位置差异:

Prompt/Prefix Tuning 把可训练参数放在输入端——在输入 embedding 前面拼上一段可学习的"软提示"向量(软,指它是连续向量不是离散词)。模型本身一字不改。Prompt Tuning 只在输入层加,Prefix Tuning 在每一层的注意力前都加前缀。它们最轻,参数最少。

Adapter 把可训练参数放在每一层的输出后——在冻结的 Transformer 层后面串一个小瓶颈网络(先降维再升维)。模型结构被改了(多了层),但因为瓶颈层很窄,参数量仍很少。

LoRA 把可训练参数并接在权重矩阵旁边——不串入新层,而是在原有权重的旁边加一条低秩支路。关键优势是训练完可以合并回原权重,推理时零额外开销

2.3 横向对比表

把四种方法的关键维度列成表,差异更清晰:

方法 可训练参数位置 可训练参数量 推理开销 效果 训练稳定性
Prompt Tuning 仅输入层加软提示 极少(约0.01%) 中,模型越大越好 较差(小模型上不稳)
Prefix Tuning 每层注意力前加前缀 少(约0.1%) 略增(占用上下文长度) 中上
Adapter 每层后串瓶颈网络 中(约1-5%) 增(多了串行层)
LoRA 权重旁并接低秩矩阵 少(约0.1-1%) 合并后为零
全量微调 全部参数 100% 最高

💡 关键直觉:LoRA 能后来居上成主流,关键在"推理合并后零开销"这一点。Adapter 效果也好,但推理时多了一堆串行层,延迟和显存都涨;Prompt Tuning 参数最少但小模型上不稳定。LoRA 恰好在效果、稳定性、推理开销三者的平衡上最讨好。

2.4 各方法的不可替代 niche

虽然 LoRA 是主流,但其他方法在特定场景仍有优势:

  • Prompt Tuning 在超大规模模型(百亿、千亿参数)上效果追平 LoRA,且参数量更小、部署更简单。模型够大时,它是 LoRA 的有力替代。
  • Prefix Tuning 适合生成任务(摘要、翻译),它在注意力前加前缀的方式对生成质量有利。
  • Adapter 的杀手锏是 AdapterFusion——可以把多个任务的 Adapter 组合起来实现知识共享,这在"多任务既要专精又要互相增益"的场景里有独特价值。

三、工程实践要点

3.1 什么时候别用 LoRA

虽然 LoRA 是默认选择,但下面这些情况可以考虑别的:

场景 推荐方法 理由
模型极大(千亿级) Prompt Tuning 参数更少,部署更省
多任务要知识共享 Adapter + AdapterFusion 组合多适配器实现增益
纯生成任务、追求生成质量 Prefix Tuning 前缀机制对生成有利
一般领域适配、改风格格式 LoRA(默认) 平衡最好,生态最成熟

3.2 Prompt Tuning 的稳定性问题

Prompt Tuning 在小模型(几亿参数)上经常不稳定——训练初期 loss 抖动大、收敛慢,有时甚至完全不收敛。原因是软提示的作用随模型规模放大而增强:小模型上,几十个可训练向量撬不动整个模型;大模型上,模型本身能力强,软提示只需轻微引导就能改变行为。

⚠️ 常见坑:别在 7B 以下的小模型上用 Prompt Tuning 期待好效果。它从约 10B 参数开始才稳定有效,千亿模型上才真正发挥优势。小模型老老实实用 LoRA。

3.3 一个常见误解:PEFT 一定不如全量微调

很多人以为 PEFT 是"穷人版微调",效果注定不如全量。这其实不准确。在大量基准测试里,配置得当的 LoRA 在多数任务上能持平甚至偶尔超过全量微调。原因是 PEFT 的强正则化(只训少量参数)反而抑制了过拟合,在数据量不大的场景下泛化更好。

PEFT 真正不如全量微调的场景是:任务需要模型学会全新的、复杂的推理能力(比如一门新编程语言的深度推理),这时低秩参数的表达力不够,全量微调才更合适。回到 2.1 节那个判断:PEFT 擅长调行为,全量擅长灌深度新能力

3.35 AdapterFusion 的多任务知识共享

Adapter 的 AdapterFusion 值得单独多说两句,因为它是 LoRA 难以替代的能力。设想一个场景:你有客服问答、摘要、翻译三个任务,每个都训了一个 Adapter。普通做法是三个适配器独立工作、互不干涉。但有时你想让"摘要任务"也能借用"客服问答"学到的领域知识——比如摘要的对象恰好是客服对话,让摘要 Adapter 知道客服领域的表达习惯,摘要质量会更好。

AdapterFusion 的做法是在所有任务 Adapter 之上再加一个融合层,它学习在不同输入下给各任务 Adapter 分配不同权重,实现"按需组合多个 Adapter 的能力"。这样摘要任务在处理客服对话时,融合层会自动调高客服 Adapter 的权重,让它的领域知识流入摘要。

这种"多任务既要专精又要互相增益"的需求,用 LoRA 的多适配器做不到——LoRA 的多适配器是"一次只用一个、互不叠加",没有融合机制。所以如果你的业务明确需要跨任务知识共享,Adapter 加 AdapterFusion 是更对口的工具。代价是实现复杂度更高、训练流程更繁琐(要先训各任务 Adapter 再训融合层),所以只在确有跨任务增益需求时才上。

反过来,如果你的多个任务是相互独立的(客服归客服、翻译归翻译,不需要互相借鉴),LoRA 的多适配器更简单直接——每个任务一个适配器、按请求切换,没有融合的开销和复杂度。多数企业的多任务场景属于这一类,所以 LoRA 多适配器比 AdapterFusion 用得更广。

3.4 选型决策流程

把选型浓缩成一个决策流程:

1. 数据量小(几千条以内)? → LoRA(正则强,防过拟合) 2. 模型极大(百亿+),追求极简? → Prompt Tuning(够大才稳) 3. 多任务要互相增益? → Adapter + AdapterFusion 4. 纯生成任务? → Prefix Tuning 或 LoRA 都可试 5. 默认 / 不确定? → LoRA(生态最成熟,踩坑最少)

💡 关键直觉:不确定就用 LoRA。它的工具链(PEFT 库、trl、各类教程)最成熟,社区踩过的坑最多,遇到问题最容易找到答案。其他方法要么有规模门槛(Prompt Tuning),要么推理有开销(Adapter),要么 niche 化(Prefix Tuning)。把 LoRA 用熟,再在遇到明确不合适的场景时换别的。

最后补充一个实践层面的建议:别在选型上纠结太久。PEFT 方法之间的差距,远小于"有没有把数据弄好"和"有没有搭评估集"带来的差距。我见过团队花两周对比 LoRA 和 Adapter 哪个好,最后发现两者的效果差距不到 2 个百分点,而同期如果花在数据清洗上能提升 10 个百分点。选型用半天做个粗略决定(默认 LoRA,有明确理由才换),把省下的时间投到数据和评估上,回报高得多。方法选型是 10% 的优化,数据和评估是 90% 的优化,别本末倒置。

四、分层练习

入门:对比同一任务下 LoRA 和 Adapter 的可训练参数量与推理延迟,体会在"效果相当"时 LoRA 推理零开销的优势。

进阶:在一个 7B 模型上尝试 Prompt Tuning,观察它的训练稳定性(loss 抖动、收敛速度),理解为什么小模型上它不可靠。

挑战:设计一个三任务场景(如客服问答、摘要、分类),分别用 LoRA 训三个适配器多适配器部署,对比用 AdapterFusion 组合后的效果差异,思考"专精"与"共享"的取舍。

一节小结

  • PEFT 的共同点是冻结基座、只训少量附加参数,分歧在于这点参数塞在模型的哪个位置。
  • Prompt/Prefix Tuning 塞在输入端(最轻),Adapter 串在每层后(推理有开销),LoRA 并接在权重旁(合并后零开销)。
  • LoRA 成主流靠的是效果、稳定性、推理开销三者平衡最好,不是因为它处处最优。
  • Prompt Tuning 只在百亿级以上模型才稳定有效,小模型别用。
  • Adapter 的 AdapterFusion 在多任务知识共享上有独到优势,这是 LoRA 不易替代的 niche。
  • PEFT 不一定不如全量微调,数据不大时它的强正则反而泛化更好;只有学全新复杂能力时全量才更合适。
  • 不确定就用 LoRA,工具链最成熟、踩坑最少。

下一节我们聚焦微调的数据工程——数据怎么准备、格式怎么定、有哪些常见坑,这往往比选哪种 PEFT 方法更决定最终效果。


作者与出处
原作者: 灏天文库智能体
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库智能体 转发
评论区 (0)
U