一、什么是 PEFT?
PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)是一类在不微调全部模型参数的情况下,通过只训练少量额外参数或少量原始参数,让大模型适配下游任务的方法。
核心目标:
- 降低显存/算力需求;
- 加速训练;
- 便于多任务部署(每个任务只需保存很小的增量参数);
- 避免灾难性遗忘。
二、主流 PEFT 方法汇总
1. Adapter(适配器)
核心思想:在 Transformer 子层(如 Attention 和 FFN)之后插入小型瓶颈结构。
结构:
输入 → 原层 → Adapter → 输出
Adapter: Linear_down(d) → 非线性 → Linear_up(d)
- 每个 Adapter 参数量通常为 $2 \times d \times r$,$r$ 很小(如 8~64)。
- 训练时只更新 Adapter 参数,原始模型冻结。
优点:
- 参数少,效果好;
- 可插拔,易于多任务。
缺点:
- 推理时增加了额外层,推理延迟增加;
- 无法通过重参数化合并回原模型,必须保留 Adapter 结构。
2. Prefix Tuning
核心思想:在输入序列前添加一组可训练的“前缀向量”,相当于给每层 Transformer 的 Key 和 Value 拼上可学习前缀。
- 不修改模型结构,只增加虚拟 token;
- 前缀向量通常通过一个 MLP 重参数化生成,训练时更新 MLP,推理时只用生成的前缀。
优点:
- 参数量极小;
- 不改变模型主体。
缺点:
- 优化不稳定,对超参敏感;
- 前缀会占用序列长度,影响有效上下文;
- 效果通常略弱于 LoRA/Adapter。
3. Prompt Tuning / P-Tuning / P-Tuning v2
Prompt Tuning
- 只在输入层添加可训练 soft prompt 向量;
- 原模型全部冻结;
- 参数量非常小(每个任务几十~几千参数)。
优点:
- 参数极少,部署简单;
- 多任务只需切换 prompt 向量。
缺点:
- 小模型上效果差,通常需要大模型(>10B)才接近全参微调;
- 收敛慢。
P-Tuning v2
- 将可训练 prompt 插入到每一层,类似 Prefix Tuning 的改进版;
- 效果更稳定。
4. BitFit(Bias-only Fine-tuning)
核心思想:只微调模型中的 bias 参数。
- 参数量占模型总参数不到 0.1%;
- 实现极其简单。
优点:
- 超低参数;
- 训练快。
缺点:
- 效果有限,通常不如 LoRA/Adapter;
- 适合小规模任务或资源极端受限场景。
5. LoRA(Low-Rank Adaptation)
核心思想:对权重矩阵的更新量进行低秩分解。
对原权重 $W$(冻结),学习:
$$
\Delta W = B A
$$
其中:
- $A \in \mathbb{R}^{r \times d_{in}}$
- $B \in \mathbb{R}^{d_{out} \times r}$
- $r$ 通常为 4~64
前向:
$$
h = W x + \frac{\alpha}{r} B A x
$$
优点:
- 不增加推理延迟(训练后可将 $BA$ 合并回 $W$);
- 参数少,显存占用低;
- 效果好,接近全参微调;
- 已成为事实标准。
缺点:
- 秩 $r$ 需要调;
- 对某些任务可能需要较大 $r$;
- 多个 LoRA 模块需要额外管理。
6. IA3(Infused Adapter by Inhibiting and Amplifying Inner Activations)
核心思想:学习三个向量 $l_k, l_v, l_{ff}$,对 Key、Value、FFN 中间激活进行逐元素缩放。
- 参数量极低(约为 LoRA 的 1/10);
- 不影响推理延迟。
优点:
- 参数极少;
- 可与 LoRA 竞争甚至更好(在 T0、GPT-2 等模型上)。
缺点:
- 通用性/生态不如 LoRA;
- 对某些模型结构依赖较强。
7. LoRA 变体
QLoRA
- 4-bit 量化基础模型 + LoRA;
- 通过 NF4 量化、双重量化、分页优化器,大幅降低显存;
- 可在单张 24GB 显卡上微调 65B 模型。
DoRA
- 将权重分解为幅值(magnitude)和方向(direction);
- 对方向做 LoRA,对幅值单独训练;
- 效果常优于 LoRA。
LoRA+
- 对 $A$ 和 $B$ 使用不同学习率,提升收敛速度。
三、核心对比表
| 方法 |
可训练参数量 |
插入位置 |
推理延迟 |
可合并回原模型 |
效果 |
工程成熟度 |
| Adapter |
中 |
每层子层后 |
增加 |
x |
好 |
高 |
| Prefix Tuning |
小 |
每层 K/V 前 |
略增 |
x |
中 |
中 |
| Prompt Tuning |
极小 |
仅输入层 |
几乎不变 |
x |
大模型上好 |
高 |
| BitFit |
极小 |
全模型 bias |
不变 |
√ |
较弱 |
高 |
| LoRA |
小 |
注意力/FFN 权重 |
不变(合并后) |
√ |
好/接近全参 |
非常高 |
| QLoRA |
小 |
同 LoRA |
不变(合并后) |
√ |
好 |
高 |
| IA3 |
极小 |
激活缩放 |
不变 |
√ |
好 |
中 |
四、面试常见追问与回答要点
Q1:为什么 LoRA 能成为主流?
- 不增加推理延迟,可合并权重;
- 参数少、显存低、效果稳定;
- 社区生态好(PEFT、Transformers 原生支持);
- 可与其他技术结合:量化(QLoRA)、多任务(AdaLoRA)、动态秩等。
Q2:LoRA 和 Adapter 的本质区别?
- Adapter 是串行插入新模块,推理时必须保留,增加延迟;
- LoRA 是对原有权重更新量做低秩约束,训练后可以合并,不改变推理结构。
Q3:Prefix Tuning 与 Prompt Tuning 的区别?
- Prompt Tuning 只在输入层加 soft prompt;
- Prefix Tuning 在每层 K/V 前都加前缀向量;
- Prefix Tuning 表达能力更强,但参数更多,优化更难。
Q4:如何选择 PEFT 方法?
- 工程首选:LoRA / QLoRA;
- 极致低参数:IA3 / BitFit / Prompt Tuning;
- 需要模块化插拔:Adapter;
- 模型非常大且显存受限:QLoRA。
Q5:为什么 LoRA 通常加在 Query 和 Value,而不是所有矩阵?
- Q、V 对注意力的语义影响最大;
- 只加 QV 可以在参数量和效果之间取得好平衡;
- 加全部矩阵(QKV+FFN)有时提升有限但参数翻倍。
五、结论
“PEFT 方法汇总与对比”是一个合格的、有区分度的面试题。
它既能筛掉只听说过 LoRA 的人,也能考察面试者对训练效率、推理部署、多任务管理等真实工程问题的理解。
建议准备时至少能流畅讲清:
- 什么是 PEFT,为什么需要;
- 5 种以上方法的核心思想;
- 一张对比表;
- 为什么 LoRA 是当前首选;
- 至少一个真实调参/训练经验。
评论专区
评论加载中...登录后即可发表评论