markdown
01-PEFT 总览
什么是 PEFT
PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)是一类微调技术的总称,其核心思想是:冻结预训练模型的大部分参数,仅训练极少量额外参数,即可在下游任务上达到接近全参微调的效果。
代表性开源库:HuggingFace PEFT(pip install peft),支持 LoRA、QLoRA、AdaLoRA、DoRA、IA³、Prefix Tuning、Prompt Tuning、Adapter 等数十种方法。
为什么需要 PEFT
1. 全参微调的代价难以承受
以 LLaMA-2-70B 为例:
- 模型参数:700 亿
- 全参微调需要存储:模型权重(FP16)+ 梯度(FP16)+ 优化器状态(Adam 需要 momentum 和 variance,各一份 FP32)≈ 1.6 TB 显存
- 即便使用 A100 80GB,也需要至少 8 卡并行
2. 灾难性遗忘
全参微调容易覆盖预训练阶段习得的通用知识,导致模型在微调任务上表现提升、但在其他任务上能力退化。
3. 存储与服务成本
每个下游任务保存一份完整模型副本(数百 GB),在多任务场景下不可持续。
4. PEFT 的核心优势
| 优势 | 说明 |
|---|---|
| 显存降低 | 仅训练 0.1%~1% 的参数,优化器状态和梯度大幅减少 |
| 存储高效 | 每个任务只需保存 MB 级的适配器文件 |
| 模块化 | 多个适配器可热插拔、合并、组合 |
| 减少遗忘 | 冻结基座模型,保留通用能力 |
PEFT 方法分类
PEFT 方法可以从多个维度分类,最常见的维度是 新增参数的插入方式:
第一类:基于 Adapter 的方法
在 Transformer 层中插入小型神经网络模块(通常是降维-升维的瓶颈结构),只训练这些模块。
- Houlsby Adapter(2019):在每个 Transformer 子层后插入两层 MLP(降维→激活→升维),插入位置在注意力层和 FFN 层之后各一个。
- Pfeiffer Adapter(2020):简化版,仅在 FFN 层之后插入一个 Adapter,减少推理延迟。
- AdapterFusion(2020):支持多任务适配器的融合。
- 优点:结构直观,效果稳定。
- 缺点:增加推理延迟(新增模块串行执行)。
第二类:基于软提示的方法
通过学习连续向量(soft prompts)来引导模型行为,不修改模型权重。
- Prefix Tuning(Li & Liang, 2021):在每层 Transformer 的注意力输入前添加可学习的前缀向量。这些前缀参与 attention 计算,但不对应任何真实 token。
- Prompt Tuning(Lester et al., 2021):仅在输入层添加可学习的 soft prompt 向量,比 Prefix Tuning 更轻量。模型越大效果越好(与全参微调差距随模型规模增大而缩小)。
- P-Tuning v2(Liu et al., 2022):Prefix Tuning 的改进版,在每层添加 prompt,对中小模型也有效。
- 优点:完全不修改模型权重。
- 缺点:占用序列长度(减少有效上下文窗口),表达能力有限。
第三类:基于低秩分解的方法
将权重更新矩阵分解为低秩矩阵的乘积,只训练这些低秩矩阵。
- LoRA(Hu et al., 2021):,冻结 ,只训练 和 。
- QLoRA(Dettmers et al., 2023):在 LoRA 基础上将基座模型量化到 4-bit。
- AdaLoRA(Zhang et al., 2023):自适应分配不同层的 rank。
- DoRA(Liu et al., 2024):将权重分解为幅度和方向,分别适配。
- IA³(Liu et al., 2022):用 rank-1 向量对激活值进行缩放。
- 优点:不增加推理延迟(训练后可将 合并回 ),效果好,生态完善。
- 缺点:rank 选择需要调参。
第四类:其他方法
- BitFit(2022):只训练 bias 项参数,极其轻量。
- Side-Tuning:在模型旁路添加一个小的"影子网络"。
- DiffPruning:学习一个稀疏的参数差分掩码。
分类总结表
| 类别 | 代表方法 | 新增参数量 | 推理开销 | 适用场景 |
|---|---|---|---|---|
| Adapter | Houlsby, Pfeiffer | 中等(0.5%~3%) | 有额外延迟 | 多任务迁移 |
| 软提示 | Prefix Tuning, Prompt Tuning | 很少(<0.1%) | 占序列长度 | 大模型、少样本 |
| 低秩分解 | LoRA, QLoRA, AdaLoRA, DoRA | 少(0.1%~1%) | 无(可合并) | 通用场景,首选 |
| 其他 | BitFit, DiffPruning | 极少 | 无 | 极端资源受限 |
当前主流选择
2024-2025 年的实际实践中,LoRA 及其变体(特别是 QLoRA)是使用最广泛的 PEFT 方法,原因:
- 不增加推理延迟
- 效果接近全参微调
- HuggingFace PEFT / Unsloth 等工具链成熟
- 社区生态最丰富(适配器共享、合并工具等)
参考:HuggingFace PEFT 文档 — https://huggingface.co/docs/peft
---