参数高效微调(Parameter-Efficient Fine-Tuning, PEFT )是一种针对预训练模型(尤其是大语言模型)进行微调的策略,旨在以较低的计算和存储成本适配模型到特定任务或数据集,同时保持模型的泛化能力。PEFT 的核心思想是避免对模型的全部参数进行更新,而是仅调整一小部分参数或引入少量额外参数,从而在资源受限的环境下实现高效微调。
以下是对 PEFT 的详细描述及其常见方法的列举与解释:
1. 什么是参数高效微调(PEFT)?
在传统的全参数微调 (Full Fine-Tuning)中,模型的所有参数都会被更新,这需要大量的计算资源(GPU/TPU 内存)和存储空间(保存完整的模型副本)。对于参数量达到数十亿甚至千亿的大型模型(如 GPT-3、LLaMA 等),全参数微调的成本往往是不可承受的。此外,全参数微调可能导致过拟合,尤其是在目标数据集较小的情况下。
PEFT 通过以下方式解决这些问题:
- 减少参数更新:只更新模型的一小部分参数或添加少量可训练参数,而冻结大部分预训练参数。
- 降低存储需求:仅保存更新参数或额外参数的权重,而不是整个模型。
- 保持性能:通过精心设计的方法,PEFT 能够在性能上接近甚至媲美全参数微调。
- 适应多样化任务:PEFT 方法通常是模块化的,易于在不同任务间迁移。
PEFT 的应用场景包括:
- 在边缘设备上部署模型。
- 快速适配模型到特定领域或任务。
- 在低资源环境中进行模型训练。
2. 常见的 PEFT 方法
以下是几种主流的 PEFT 方法,每种方法都有其独特的设计理念和适用场景:
(1) Adapter-based Methods(适配器方法)
- 描述:Adapter 方法在预训练模型的每一层中插入小型的神经网络模块(称为适配器),这些模块是可训练的,而原始模型参数保持冻结。适配器通常是轻量级的全连接层,参数量远小于原始模型。
- 工作原理:
在 Transformer 模型中,适配器通常插入到注意力模块或前馈网络(FFN)之后。
适配器包含一个降维层(down-projection)、一个非线性激活函数(如 ReLU)和一个升维层(up-projection),形成瓶颈结构(bottleneck)。
训练时只更新适配器的参数,原始 Transformer 参数保持不变。
- 优点:
参数效率高:适配器参数量通常只占模型总参数的 0.5%-10%。
模块化设计:适配器可以针对不同任务独立训练和存储,易于切换。
性能接近全参数微调。
- 缺点:
推理时会增加少量延迟,因为适配器引入了额外的计算。
- 代表工作:
AdapterHub:一个开源框架,支持在 Transformer 模型中插入适配器。
Pfeiffer Adapter:一种经典的适配器设计,插入在 Transformer 的 FFN 之后。
Houlsby Adapter:在每一层插入两个适配器(一个在注意力后,一个在 FFN 后)。
- 应用场景:多任务学习、跨语言迁移学习。
(2) LoRA(Low-Rank Adaptation)
- 描述:LoRA(低秩适配)通过在预训练模型的权重矩阵上添加低秩分解(low-rank decomposition)的更新矩阵来实现微调,只训练这些低秩矩阵的参数。
- 工作原理:
对于一个权重矩阵 W∈Rd×k,LoRA 假设权重更新可以表示为低秩形式:ΔW = A ⋅ B,其中 A∈ Rd×r,B∈Rr×k,r ≪ min(d,k)。
训练时冻结原始权重 W ,只更新 A 和 B 。
在推理时,可以将 ΔW 合并到 W 中,无需额外计算开销。
- 优点:
高效:参数量极少(通常 rrr 很小,新增参数占总参数的 0.01%-1%)。
推理无额外延迟:低秩更新可以合并到原始权重。
易于迁移:LoRA 权重可以保存为小文件,方便在不同任务间切换。
- 缺点:
需要为每个任务训练独立的 LoRA 模块。
对于某些复杂任务,可能需要较大的秩(rrr)才能达到理想性能。
- 代表工作:
LoRA(Hu et al., 2021):最早提出低秩适配的论文。
QLoRA:结合量化和 LoRA,进一步降低微调的内存需求。
- 应用场景:大模型的快速适配、个性化模型定制。
(3) Prefix Tuning
- 描述:Prefix Tuning 通过在 Transformer 的输入或注意力层中添加可训练的“前缀”向量来引导模型的行为,而不修改模型的权重。
- 工作原理:
在 Transformer 的每一层注意力模块中,引入一组可训练的虚拟 token(称为前缀),这些 token 的嵌入向量是可学习的。
前缀向量参与自注意力计算,影响模型的输出,但模型的原始参数保持冻结。
前缀可以看作任务特定的“提示”(prompt),引导模型生成特定输出。
- 优点:
参数量极少:仅需训练前缀向量(通常占总参数的 0.1% 以下)。
适合小数据集:前缀可以看作一种软提示,减少过拟合风险。
- 缺点:
性能可能不如全参数微调,尤其是在任务差异较大的场景。
前缀长度需要手动调整,可能影响效果。
- 代表工作:
Prefix-Tuning(Li & Liang, 2021):最早提出前缀调优的方法。
P-Tuning v2:改进版本,增强了前缀的表达能力。
- 应用场景:自然语言生成任务、提示驱动的任务适配。
(4) Prompt Tuning
- 描述:Prompt Tuning 是通过在输入序列中添加可训练的软提示(soft prompts)来微调模型,类似于手动设计的文本提示,但这些提示是连续的、可学习的向量。
- 工作原理:
在输入序列前添加一组可训练的嵌入向量(软提示),这些向量与输入 token 一起送入模型。
模型参数冻结,只优化软提示的嵌入。
软提示的长度和初始化方式对性能有较大影响。
- 优点:
参数极少:只需训练少量提示向量(通常占总参数的 0.01%-0.1%)。
适合低资源场景:对小数据集友好。
- 缺点:
性能依赖于提示设计,可能不稳定。
对于复杂任务,效果可能不如 LoRA 或适配器。
- 代表工作:
Prompt Tuning(Lester et al., 2021):提出软提示微调的概念。
Black-Box Tuning:针对不可访问内部参数的模型(如 API 模型)设计。
- 应用场景:低资源任务、API 模型适配。
(5) P-tuning
- 描述:P-tuning 是一种通过优化连续提示(continuous prompts)来适配预训练模型的方法,结合了离散提示(discrete prompts)和软提示(soft prompts)的思想。与 Prompt Tuning 不同,P-tuning 使用一个小型神经网络(如 LSTM 或 MLP)来生成提示嵌入,从而增强提示的表达能力。
- 工作原理:
在输入序列中插入一组可训练的提示 token,这些 token 的嵌入由一个轻量级的提示生成器(prompt encoder)动态生成。
提示生成器通常是一个小型神经网络(如双层 MLP 或 LSTM),其参数是可训练的,而预训练模型的参数保持冻结。
P-tuning 允许提示嵌入根据任务上下文动态调整,相比静态的 Prompt Tuning 更具灵活性。
在某些实现中,P-tuning 还会结合离散提示(如手动设计的文本提示)作为初始化,进一步提高性能。
- 优点:
参数效率高:提示生成器的参数量通常占总参数的 0.01%-0.1%。
灵活性强:动态生成的提示能更好地适配复杂任务。
对小数据集友好:结合离散提示的初始化可以减少过拟合风险。
- 缺点:
提示生成器的设计和超参数(如网络结构、提示长度)需要仔细调优。
相比 LoRA 或 Adapter,性能可能略逊,尤其是在生成任务中。
实现复杂度稍高,需要额外设计提示生成器。
- 代表工作:
P-tuning(Liu et al., 2021):提出使用提示生成器优化连续提示的方法。
P-tuning v2:改进版本,增强了提示生成器的表达能力和任务适配性。
- 应用场景:自然语言理解任务(如文本分类、关系抽取)、小数据集场景、结合离散提示的任务。
(6) Sparse Fine-Tuning(稀疏微调)
- 描述:稀疏微调通过只更新模型中一小部分权重(通常基于某种选择策略)来实现参数效率。
- 工作原理:
使用启发式方法(如基于梯度或重要性分数)选择需要更新的参数子集。
冻结其他参数,只训练选中的参数。
一些方法结合了剪枝(pruning)和微调,动态调整参数选择。
- 优点:
灵活性高:可以根据任务需求调整稀疏程度。
存储需求低:只需保存更新的参数。
- 缺点:
参数选择策略复杂,可能需要额外计算。
性能可能不稳定,依赖于稀疏策略的质量。
- 代表工作:
BitFit:只微调模型的偏置(bias)参数。
Diff Pruning:基于差异剪枝选择需要更新的参数。
- 应用场景:资源受限环境、模型压缩。
(7) Hybrid Methods(混合方法)
- 描述:一些方法结合了上述多种技术,以进一步提升效率或性能。
- 工作原理:
例如,结合 LoRA 和 Prompt Tuning,同时优化低秩更新和软提示。
或者在适配器中引入稀疏性,减少参数量。
- 代表工作:
(IA)^3:通过学习可训练的缩放向量(scaling vectors)来调整注意力权重。
MAM Adapter:结合多种适配器设计,动态调整结构。
- 应用场景:复杂任务、需要权衡性能和效率的场景。
3. PEFT 方法的对比
| 方法 | 参数效率 | 推理延迟 | 性能(相对全参数微调) | 适用场景 |
|---|---|---|---|---|
| Adapter | 高 | 轻微增加 | 接近 | 多任务、跨语言迁移 |
| LoRA | 极高 | 无增加 | 接近 | 大模型适配、个性化 |
| Prefix Tuning | 极高 | 无增加 | 稍逊 | 生成任务、低资源场景 |
| Prompt Tuning | 极高 | 无增加 | 稍逊 | 小数据集、API 模型 |
| Sparse Fine-Tuning | 高 | 无增加 | 依赖策略 | 模型压缩、资源受限环境 |
| Hybrid Methods | 因方法而异 | 因方法而异 | 接近或稍逊 | 复杂任务、特定优化需求 |
4. PEFT 的优势与挑战
优势:
- 计算效率:大幅降低 GPU 内存和训练时间需求。
- 存储效率:只需保存少量参数,适合多任务部署。
- 模块化:支持任务间快速切换,易于扩展。
- 泛化能力:冻结预训练参数有助于保留模型的通用知识。
挑战:
- 性能权衡:某些方法在复杂任务上可能无法完全匹配全参数微调的性能。
- 超参数敏感:如 LoRA 的秩、前缀长度等需要仔细调优。
- 任务适配性:不同任务可能需要不同 PEFT 方法,通用性有待提升。
- 实现复杂性:一些方法(如稀疏微调)需要复杂的参数选择策略。
5. 总结与建议
PEFT 是大模型 微调的重要技术方向,特别适合资源受限或多任务场景。选择合适的 PEFT 方法需要根据以下因素权衡:
- 任务复杂度:简单任务(如文本分类)可用 Prompt Tuning,复杂任务(如生成)可能需要 LoRA 或 Adapter。
- 资源限制:内存和存储受限时,优先选择 LoRA 或 Prompt Tuning。
- 推理需求:对延迟敏感的场景,LoRA 更优(无额外推理开销)。
- 数据集规模:小数据集适合 Prefix Tuning 或 Prompt Tuning,大数据集可尝试 Adapter 或 LoRA。
版权声明:本文为CSDN博主「彬彬侠」的原创文章,
遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013172930/article/details/147338558





