一句话定义:PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)是一类微调方法的统称——冻结预训练模型的绝大部分原始权重,只训练极少量新增或指定的参数,就能让大模型适配某个具体任务。
为什么需要它
全参微调(Full Fine-Tuning)的做法是把整个模型的每一个权重都更新一遍。问题有三个:显存开销大(优化器要额外保存梯度的一阶、二阶状态,往往是模型本体的好几倍);存储成本高(每个任务都要存一份完整的模型副本);还容易AI 词典:灾难性遗忘">灾难性遗忘(Catastrophic Forgetting),把预训练阶段学到的通用能力给冲掉。
比方说,预训练模型是一本写好的《通用烹饪大全》。全参微调相当于为每位客人的口味把整本书重写一遍;PEFT 相当于不动正文,只在旁边贴几张便利贴,或者加一本薄薄的补充手册。
三条主要技术路线
Adapter:在 Transformer 每一层里插一个小模块,结构是"降维 → 非线性 → 升维"的瓶颈(Bottleneck)。原始权重全程冻结,只训这些小模块。
LoRA(Low-Rank Adaptation):给权重矩阵 W 旁挂两个小矩阵 A 和 B,实际计算变成 W + BA。因为 B 和 A 的秩远小于原矩阵,参数量能压到原来的百分之几甚至更低。它的好处是推理时可以把 BA 直接加回 W,不额外增加延迟,因此成为目前最主流的选择。
软提示(Soft Prompt):包括 Prompt Tuning、Prefix Tuning 等。它连模型结构都不改,而是学一串"虚拟 token"的向量,拼接在输入前面或每一层前面。参数最少,但对任务和模型规模的适配性更敏感。
和全参微调的区别
| 维度 | 全参微调 | PEFT(以 LoRA/Adapter 为例) |
|---|---|---|
| 训练参数量 | 全部 | 极小一部分 |
| 显存需求 | 高 | 明显更低,单卡可跑更大模型 |
| 每个任务的存储 | 一份完整模型 | 几 MB 到几百 MB 的适配器 |
| 多任务切换 | 换整个模型 | 底座共用,热插拔适配器 |
| 通用能力保持 | 容易遗忘 | 相对更稳 |
| 效果上限 | 最高 | 多数任务接近,极限场景可能略逊 |
什么情况下仍然必须全参微调
PEFT 强在"行为对齐",弱在"能力注入"。如果目标只是让模型学会某种输出格式、语气风格、特定任务模式,LoRA 通常够用。但以下几种情况,全参微调依然难以替代:
1. 要学预训练数据里几乎不存在的东西:全新语言、全新领域的术语体系、全新的模态对齐方式。低秩增量能调整的"方向"有限,装不进大量新知识。
2. 数据量和算力都足够充裕:此时全参微调的效果上限通常更高,PEFT 的性价比优势反而下降。
3. 要动结构本身:扩词表、改 tokenizer、调整层数,这些不是加个旁路矩阵能解决的。
4. 需要整体改变输出分布:比如从通用模型改成高度专用的领域模型,而不是"通用模型 + 一个小技能"。
实际工程里的常见顺序是:先用 LoRA 快速试一版,看效果瓶颈出在哪;如果确认是能力不足而非调参不当,再上全参微调。具体支持哪些模型、哪些参数项,以各框架的官方文档为准。
对普通职场人来说,值得记住的一点是:模型能力的"升级"和"定制"是两件事。PEFT 让定制变得便宜,但它改变的是模型怎么说话,不是模型懂多少。
