PEFT(参数高效微调)是一组技术,允许通过仅更新模型参数的一小部分来适应大型模型,同时保持其余参数冻结。这大大减少了内存需求,加速了训练,并降低了灾难性遗忘的风险。
PEFT的基本原理很简单:并非所有模型参数都需要更新以使模型学习新任务。在许多情况下,引入小的结构化修改——如低秩矩阵、适配器层或激活偏移——就足以引导模型朝着期望的行为发展。
PEFT不是单一方法,而是一系列技术,包括:
其中,LoRA和QLoRA目前在社区中最受欢迎和广泛采用,这得益于它们的简单性、有效性和在Hugging Face PEFT等库中的出色支持。
| 特征 | 完整微调 | PEFT(LoRA/QLoRA) |
|---|---|---|
| 可训练参数 | 100% | ~0.1% - 1% |
| 显存需求 | 非常高(数十GB) | 低到中等(可在16GB上运行) |
| 训练时间 | 长 | 短到中等 |
| 灾难性遗忘风险 | 高 | 低 |
| 模型可移植性 | 必须保存整个模型 | 仅保存PEFT参数(小文件) |
| 基础模型可重用性 | 不能直接实现 | 是:可以将多个适配器加载到同一基础模型上 |
PEFT在以下场景中是理想的:
不推荐使用PEFT的情况: