什么是 LoRA?
LoRA(Low-Rank Adaptation,低秩适应)是一种参数高效的微调技术,通过在 Transformer 层中注入可训练的低秩分解矩阵来适应大型预训练模型,在保持模型性能的同时大幅减少可训练参数数量。
快速了解
| 创建时间 | 2021 年由微软研究院提出 |
|---|---|
| 规范文档 | 官方规范 |
工作原理
LoRA 由微软研究人员于 2021 年提出,旨在解决大语言模型微调成本过高的问题。LoRA 不更新所有模型权重,而是冻结预训练权重,在每层注入可训练的秩分解矩阵。这种方法将可训练参数减少 10000 倍,GPU 内存需求降低 3 倍,同时达到与完整微调相当或更好的性能。LoRA 已成为定制大型模型的标准方法。
主要特点
- 将可训练参数减少数个数量级
- 训练期间保持原始模型权重冻结
- 低秩矩阵捕获任务特定的适应
- 推理时可切换多个 LoRA 适配器
- 显著降低 GPU 内存需求
- 合并后无额外推理延迟
常见用途
- 针对特定领域或任务微调大语言模型
- 定制 Stable Diffusion 等图像生成模型
- 使用独立适配器适应多个任务
- 在 VRAM 有限的消费级硬件上训练
- 创建个性化 AI 助手
示例
Loading code...常见问题
LoRA 是如何工作的?
LoRA 冻结预训练模型的原始权重,在 Transformer 的注意力层中注入可训练的低秩分解矩阵。原始权重矩阵 W 保持不变,LoRA 学习一个增量 ΔW = BA,其中 B 和 A 是低秩矩阵。推理时计算 W + ΔW,训练时只更新 B 和 A,大幅减少参数量。
LoRA 中的秩(rank)参数如何选择?
秩(r)决定了 LoRA 矩阵的表达能力。较小的秩(如 4-8)参数少、训练快,适合简单任务。较大的秩(如 16-64)表达能力更强,适合复杂任务。一般建议从 r=8 或 r=16 开始实验。秩过大会增加过拟合风险和计算成本,过小可能欠拟合。
LoRA 和全量微调相比有什么优缺点?
LoRA 优点:参数量减少 10000 倍,显存需求降低 3 倍,训练速度快,可以为不同任务维护多个适配器。缺点:对于某些复杂任务可能不如全量微调效果好,需要调整超参数(秩、alpha、目标层)。对于大多数应用场景,LoRA 是更实用的选择。
如何在消费级显卡上使用 LoRA 训练大模型?
在消费级显卡上训练的技巧:1)使用 QLoRA(量化 + LoRA)进一步降低显存;2)选择较小的秩值(如 r=8);3)减小批量大小,使用梯度累积;4)使用 8-bit 或 4-bit 量化加载基础模型;5)只训练部分层(如 q_proj 和 v_proj)。24GB 显卡可以训练 7B 模型。
LoRA 适配器如何合并和切换?
LoRA 适配器可以在推理时动态加载和切换,无需重新加载基础模型。也可以将 LoRA 权重合并到基础模型中(W_new = W + BA),合并后没有额外推理开销。多个 LoRA 适配器可以组合使用,实现多任务能力。PEFT 库提供了方便的 API 来管理适配器。