LoRA,即低秩适配(Low-Rank Adaptation)的缩写,是一种微调技术,通过冻结预训练神经网络的原始权重,并注入少量以低秩矩阵形式存在的可训练参数,来使模型适应新任务。由于新增矩阵相对于其所修改的完整权重矩阵而言极小,LoRA 可以在训练和存储仅占总参数极小比例的情况下适配数十亿参数的模型,使得微调在消费级硬件上成为可能。
历史
LoRA 由 Edward Hu 及其微软同事在 2021 年 6 月的一篇论文中提出。他们观察到,为将预训练模型专门化以适应新任务所需的权重更新往往具有较低的“内在秩”,即这些更新可以很好地由两个更小矩阵的乘积近似。LoRA 不直接更新完整权重矩阵,而是学习两个低秩矩阵,其乘积被加到冻结的原始权重上;在推理时,该更新可以合并回去,且不增加额外延迟。该技术最初在 大型语言模型(如 GPT-3)上得到验证,而 2023 年的一项扩展称为 QLoRA,将其与冻结基础模型的 4 位量化相结合,大幅降低了微调超大规模模型所需的内存。
方法
形式上,对于预训练权重矩阵,LoRA 将更新表示为低秩下投影矩阵与上投影矩阵的乘积,乘以一个缩放因子,并通常初始化使得适配器在训练开始时不起作用。只有这两个小矩阵通过普通的梯度下降进行优化,而原始权重保持固定,这也保护了基础模型的广泛能力免受灾难性遗忘。多个 LoRA 适配器可以针对不同任务或风格独立训练,并在推理时在同一基础模型上切换或组合使用,而无需重新训练底层网络。
应用
在大型语言模型部署中,LoRA 是低成本构建任务特定或领域特定助手的一种标准方法,并且支撑了围绕 Llama 等模型的开放微调生态系统的大部分。在 Stable Diffusion 发布后,它同样成为图像生成社区的核心技术。用户训练通常小于 200 兆字节的小型 LoRA 文件,以从少量示例图像中教会基础模型特定的角色、艺术风格或主题,然后在社区模型中心分享这些文件,并以可调强度同时组合多个文件。这种自下而上的定制文化,建立在轻量级 LoRA 文件叠加于开放提示词和基础检查点之上,是 Stable Diffusion 社区相对于 Midjourney 等封闭、不可适配系统快速增长的重要驱动力。
局限性
LoRA 的低秩假设意味着,在需要大幅改变模型表征的任务上,它可能不如完整微调;同时,选择秩、要适配的权重矩阵子集以及缩放因子需要进行非平凡的调优。由于它仅修改现有表征,而非大规模添加新知识,LoRA 通常更适合风格、格式和行为适配,而不适合向模型教授大量新事实内容;这一缺口通常由检索增强生成或完整的预训练延续来填补。