什么是 PEFT?
PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)是一系列技术,通过仅训练一小部分参数来使大型预训练模型适应下游任务,在保持竞争性能的同时大幅降低计算需求。
快速了解
| 全称 | 参数高效微调 |
|---|---|
| 创建时间 | 各种技术源自 2019-2023 年,由 Hugging Face 统一 |
| 规范文档 | 官方规范 |
工作原理
PEFT 方法已成为使大语言模型定制变得可及的关键技术。PEFT 技术不是微调所有模型参数(可能有数十亿个),而是添加或修改少量可训练参数,同时保持基础模型冻结。流行的方法包括 LoRA(低秩适应)、前缀微调、提示微调和适配器。Hugging Face PEFT 库提供了这些技术的统一实现,使得在消费级硬件上微调 Llama、Mistral 和 Falcon 等模型成为可能。
主要特点
- 仅训练总模型参数的 0.1-1%
- 保持基础模型权重冻结
- 多种技术:LoRA、适配器、前缀微调
- 支持在消费级 GPU 上微调
- 适配器可以为不同任务切换
- 通过仅保存适配器权重减少存储
常见用途
- 在有限硬件上微调大语言模型
- 创建任务特定的模型变体
- 使用共享基础模型的多任务学习
- 快速实验不同的适应方案
- 部署个性化 AI 助手
示例
Loading code...常见问题
什么是 PEFT?为什么需要它?
PEFT(参数高效微调)是一系列只训练少量参数来适应大模型的技术。需要它的原因:1) 大模型有数十亿参数,全量微调需要大量 GPU 内存和计算资源;2) PEFT 只训练 0.1-1% 的参数,大幅降低硬件要求;3) 可以在消费级 GPU 上微调 LLaMA 等大模型;4) 便于存储和切换不同任务的适配器。
LoRA 是什么?它是如何工作的?
LoRA(Low-Rank Adaptation,低秩适应)是最流行的 PEFT 方法。它的原理是:在原始权重矩阵旁边添加两个小矩阵(A 和 B),训练时只更新这两个小矩阵。通过低秩分解,大幅减少可训练参数。例如,对于 4096x4096 的矩阵,使用 rank=8 的 LoRA 只需要 4096x8 + 8x4096 = 65536 个参数。
PEFT 有哪些常见方法?
常见的 PEFT 方法包括:1) LoRA - 低秩适应,最流行;2) QLoRA - 结合量化的 LoRA,更省内存;3) Prefix Tuning - 在输入前添加可学习的前缀;4) Prompt Tuning - 学习软提示词;5) Adapter - 在层之间插入小型网络;6) IA3 - 学习激活值的缩放因子。选择取决于任务和资源限制。
如何使用 Hugging Face PEFT 库?
使用 PEFT 库的基本步骤:1) 安装:pip install peft;2) 加载基础模型;3) 配置 PEFT 方法(如 LoraConfig);4) 用 get_peft_model 包装模型;5) 正常训练;6) 保存适配器权重。推理时加载基础模型和适配器即可。PEFT 库支持与 transformers 和 accelerate 无缝集成。
PEFT 和全量微调效果差多少?
在大多数任务上,PEFT 可以达到全量微调 90-99% 的效果,同时只需要很小一部分资源。对于特定领域任务,PEFT 通常足够好。但在需要大幅改变模型行为或处理与预训练数据差异很大的任务时,全量微调可能更好。实践中建议先尝试 PEFT,效果不满意再考虑全量微调。