大语言模型参数高效微调(PEFT)方法综述
随着自然语言处理技术的发展,预训练语言模型(PLM)的规模日益庞大。传统的全参数微调(Full Fine-tuning)在特定任务或领域适应时面临巨大的计算成本和存储开销。为了解决这一问题,参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)应运而生。本文总结了当前主流的几种 PEFT 方法,包括 LoRA、Adapter、Prefix-tuning、P-tuning 和 Prompt-tuning,分析其原理、实现细节及适用场景。
1. LoRA (Low-Rank Adaptation)
背景与动机
全参数微调需要更新所有模型参数,对于百亿级参数的大模型而言,显存占用和训练时间成本极高。LoRA 基于一个关键假设:模型在任务适配过程中权重的改变量是低秩的(low rank)。这意味着我们可以通过优化适应过程中密集层变化的秩分解矩阵来间接训练神经网络中的部分密集层,同时保持预训练权重不变。
核心原理
LoRA 的实现思想是在原始预训练模型的矩阵参数旁边增加一个旁路分支。该分支包含两个低秩矩阵 A 和 B,用于模拟权重的变化量 ΔW。在推理阶段,将 BA 的结果叠加到原始权重上,无需额外延迟。
数学表达如下:
$$ W = W_0 + \Delta W = W_0 + BA $$
其中 $W_0$ 是冻结的预训练权重,$B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times k}$,且 $r \ll d, k$。
实现细节
- 初始化:矩阵 A 使用随机高斯分布初始化,矩阵 B 使用零矩阵初始化。这保证了训练开始时旁路对输出无影响。
- 训练过程:仅更新 A 和 B 的参数,$W_0$ 保持冻结。
- 推理过程:可以将 $BA$ 合并回 $W_0$,或者在推理时动态计算叠加,两者效果一致。
- 优势:参数量大幅减少,训练稳定,且能与其他 PEFT 方法结合使用。
2. Adapter
架构设计
Adapter 方法最早由 Houlsby 等人引入 NLP 领域。其核心是在 Transformer 的每一层(或某些层)中插入额外的模块。每个 Adapter 模块通常由两个前馈子层组成:
- 降维投影:将输入维度 $d$ 投影到较小的中间维度 $m$(通常 $m \ll d$)。
- 非线性激活:如 ReLU 或 GELU。
- 升维投影:将维度从 $m$ 还原回 $d$。
在微调时,冻结预训练模型主体,仅训练 Adapter 模块。这种方法允许在不破坏原有知识的情况下学习新任务,有效缓解灾难性遗忘。
AdapterFusion 改进
为了进一步提升多任务迁移能力,Pfeiffer 等人提出了 AdapterFusion。该方法将学习分为两个阶段:
- 知识提取:训练多个 Adapter 模块分别学习不同下游任务的特定知识。
- 知识组合:固定预训练参数和各 Adapter 参数,引入新的融合参数(Key, Value, Query),学习如何加权组合多个 Adapter 的输出。
这种机制使得模型能够根据上下文自适应地激活最有用的适配器,显著提升了在 MRPC、RTE 等数据集上的表现。
3. Prefix-tuning
概述
Prefix-tuning 主要用于生成任务。它通过在输入序列前添加一组连续的特定于任务的向量(称为前缀),引导模型生成目标内容。与前缀提示(Prompt)不同,这些向量是完全可学习的自由参数,不对应真实的离散 Token。
实现方式
对于自回归模型(如 GPT-2),前缀被添加到输入嵌入层之前。对于编解码器模型(如 BART),前缀可以添加到编码器和解码器的输入中。
由于直接优化连续的前缀参数可能导致训练不稳定,作者引入了重参数化技巧:
$$ P = MLP(\alpha) $$
其中 $\alpha$ 是可训练参数,MLP 负责将其映射到前缀空间。训练完成后,只需保存 $\alpha$,从而进一步压缩存储开销。
特点
- 仅需存储少量前缀参数,而非整个模型副本。
- 相比离散 Prompt,连续前缀具有更强的表达能力。
- 适用于文本摘要、表格转文本等生成任务。
4. P-tuning
针对 NLU 任务
P-tuning 主要针对自然语言理解(NLU)任务,如分类、蕴含识别等。它结合了 Prompt-tuning 的思想,但针对双向模型(如 BERT)进行了优化。
关键改进
- LSTM 编码:考虑到预训练 Embedding 较为离散,作者使用 LSTM 对 Prompt 进行编码,增强其语义表示能力。
- Anchor 机制:在输入中加入锚点(如问号),帮助模型更好地定位任务边界。例如在 RTE 任务中,结构变为
[PRE] [prompt tokens] [HYP]? [prompt tokens] [mask]。
效果
实验表明,P-tuning 在整个数据集上的表现超越了传统的全参数微调,证明了其在 NLU 任务上的有效性。
5. Prompt-tuning
软提示(Soft Prompts)
Prompt-tuning 的核心是为每个任务定义一组可学习的连续向量(Soft Prompts),并将其拼接到数据输入中。与硬提示(Hard Prompts,即人工编写的文本)不同,软提示完全通过梯度下降优化。
特性
- 冻结模型:预训练模型的所有参数保持冻结,仅更新 Prompt 向量。
- 规模效应:随着模型体积增大,Prompt-tuning 的效果显著提升,最终能追平甚至超越精调效果。
- Prompt Ensembling:在一个 Batch 中同时训练同一个任务的不同 Prompt 变体,相当于训练了多个'模型'的集成,降低了单一 Prompt 过拟合的风险,且成本低于传统模型集成。
6. 方法对比与选型建议
| 方法 | 训练参数量 | 推理延迟 | 适用任务 | 主要优势 |
|---|
| Full Fine-tune | 全部 | 无 | 通用 | 性能上限最高 |
| LoRA | 极低 | 无 | 生成/理解 | 稳定,易部署,支持多任务切换 |
| Adapter | 低 | 略增 | 通用 | 模块化强,易于扩展 |
| Prefix-tuning | 低 | 无 | 生成 | 连续向量,表达力强 |
| P-tuning | 低 | 无 | NLU | 针对双向模型优化,效果优于 Prompt |
| Prompt-tuning | 极低 | 无 | 通用 | 实现最简单,适合大规模模型 |
选型指南
- 资源受限场景:优先选择 LoRA 或 Prompt-tuning,显存占用最小。
- 多任务场景:LoRA 支持快速切换权重;AdapterFusion 适合多任务联合学习。
- 生成任务:Prefix-tuning 和 LoRA 表现优异。
- 理解任务:P-tuning 在 BERT 类模型上表现更佳。
结语
大模型微调技术正处于快速发展阶段。LoRA 凭借其简单高效的特点已成为工业界的主流选择;Adapter 提供了良好的模块化扩展能力;而 Prefix/Prompt 系列方法则在探索模型内部表示与外部指令的结合。在实际工程中,应根据任务类型、硬件资源和性能要求选择合适的微调策略,以实现效率与效果的最佳平衡。