LoRA简介
LoRA(Low-Rank Adaptation)是由微软研究院提出的一种高效微调大型语言模型的方法。它通过冻结预训练模型的权重,只学习一对低秩分解矩阵,大幅减少了可训练参数的数量,同时保持了与全量微调相当的性能。
LoRA的主要优势包括:
- 大幅减少可训练参数数量,节省存储空间
- 不引入额外推理延迟
- 支持快速任务切换
- 性能与全量微调相当或更优
学习资源
1. 论文
2. 代码实现
- 官方实现: microsoft/LoRA
- Hugging Face实现: peft
3. 教程和博客
4. 视频讲解
快速上手
- 安装loralib:
pip install loralib
- 替换需要适配的层:
import loralib as lora
# 替换线性层
layer = lora.Linear(in_features, out_features, r=16)
- 只训练LoRA参数:
lora.mark_only_lora_as_trainable(model)
- 保存和加载检查点:
# 保存
torch.save(lora.lora_state_dict(model), checkpoint_path)
# 加载
model.load_state_dict(torch.load('ckpt_lora.pt'), strict=False)
结语
LoRA作为一种高效的参数高效微调方法,在保持模型性能的同时大幅减少了可训练参数数量。本文汇总了LoRA的核心概念和学习资源,希望能帮助读者快速上手这一技术。随着大型语言模型的普及,LoRA等参数高效微调方法必将发挥越来越重要的作用。