LoRA(Low-Rank Adaptation)是一种高效、低成本的模型微调方法,特别适用于像大语言模型(LLM)这样参数量巨大的神经网络。它由微软的研究人员在2021年提出,旨在解决传统微调(Fine-tuning)需要更新全部模型参数所带来的高计算和存储成本问题。

核心思想

传统的微调会更新预训练模型的所有参数,而LoRA的核心思想是:在微调过程中,不直接修改原始模型的权重,而是引入一组低秩(low-rank)的可训练参数来近似权重的变化

具体来说,假设原始模型中某个层的权重矩阵为 W0W_0W0(例如一个 d×kd \times kd×k 的矩阵)。在微调时,权重的变化 ΔW\Delta WΔW 通常也是一个 d×kd \times kd×k 的矩阵。LoRA认为,这个变化 ΔW\Delta WΔW 可以被分解为两个低秩矩阵的乘积:

ΔW=B⋅A \Delta W = B \cdot A ΔW=BA

其中:

  • BBB 是一个 d×rd \times rd×r 的矩阵,
  • AAA 是一个 r×kr \times kr×k 的矩阵,
  • rrr 是一个远小于 dddkkk 的秩(rank),例如 r=8r=8r=8646464

因此,模型在推理时的实际权重变为:

W=W0+ΔW=W0+B⋅A W = W_0 + \Delta W = W_0 + B \cdot A W=W0+ΔW=W0+BA

工作流程

  1. 冻结原始权重:在微调过程中,原始预训练模型的权重 W0W_0W0 被冻结,不参与梯度更新。
  2. 引入低秩矩阵:在需要微调的层(如注意力机制中的 Q,K,VQ, K, VQ,K,V 矩阵)旁边,注入可训练的低秩矩阵 AAABBB
  3. 训练低秩矩阵:只对 AAABBB 进行反向传播和优化。
  4. 推理时合并:训练完成后,可以将 B⋅AB \cdot ABA 加到 W0W_0W0 上,得到最终的权重,也可以在推理时动态计算。

优点

  • 参数效率高:只需要训练少量参数(仅 AAABBB),大幅减少训练所需的显存和计算资源。
  • 存储成本低:微调后的模型只需保存原始模型(共享)和一小部分LoRA权重,便于多任务共享和部署。
  • 避免灾难性遗忘:由于原始权重被冻结,模型保留了预训练学到的通用知识。
  • 易于切换任务:只需加载不同的LoRA权重,即可快速切换模型行为,适合多任务场景。

应用场景

  • 大语言模型的个性化微调(如对话模型、写作助手)
  • 多任务学习
  • 资源受限环境下的模型适配
  • 快速迭代和A/B测试

总结

LoRA是一种“旁路式”的微调方法,它通过低秩分解来近似权重更新,实现了高效、轻量的模型适配。它已成为当前大模型微调的主流技术之一,广泛应用于Hugging Face、PEFT等开源框架中。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐