LLM微调 | LoRA: Low-Rank Adaptation of Large Language Models

🔥 发表于论文:(2021) LoRA: Low-Rank Adaptation of Large Language Models

😄 目的:大模型预训练+微调范式,微调成本高。LoRA只微调新增的小部分参数。

文章目录

1、背景

  • adapter增加了模型层数,引入了额外的推理延迟;
  • prefix-tuning比较难训练,效果不如直接finetune。
  • LoRA不会引入额外的延迟,甚至原文中的实验结果表明它和全量微调效果相当,并且速度更快,计算量更少。

2、动机

论文作者得益于前人的一些关于内在维度(intrinsic dimension)的发现:模型是过参数化的,它们有更小的内在维度,模型主要依赖于这个低的内在维度(low intrinsic dimension)去做任务适配(微调)。假设模型在任务适配过程中权重的改变量是低秩(low rank)的,由此提出低秩自适应(LoRA)方法,LoRA允许我们通过优化适应过程中密集层变化的秩分解矩阵来间接训练神经网络中的一些密集层,同时保持预先训练的权重不变。

3、LoRA原理

LoRA原理很简单,冻结预训练模型的参数,并选择用A和B矩阵来替代,在下游任务时只更新A和B。

具体地:

  • 如图,增加一个旁路,先做一个降维再升维的操作,来模拟所谓的内在秩。
  • 只训练降维矩阵A与升维矩阵B。
  • 模型的输入输出维度不变,输出时将BA与PLM的参数叠加。
  • 矩阵A用随机高斯分布初始化。矩阵B全零初始化,使得在训练最开始的一段时间,右路的结果会接近于0,这样模块的输出就仅仅有左路的计算结果,也就是大模型原有参数的计算结果,这使得模型优化的初始点就和原本的大模型保存一致。

公式如下:

w0是是预训练模型初始化的参数,ΔW就是需要更新的参数。LoRA的思想简单来说就是增加小参数矩阵去学习改变量ΔW。

  • 训练过程中,W0是固定不变的,只有A和B包含训练参数,是变化的。
  • 推理的过程中,只需要把改变量加回原模型,就不会有任何延迟。
  • 如果想切换任务,只需要切换任务的过程中,减去BA,然后换上用其它任务训练好的BʹAʹ就可以了。

4、总结

  • 总的来说,基于大模型的内在低秩特性,增加旁路矩阵来模拟全参数微调,LoRA是一个轻量级、简单有效的方案。
  • 目前该技术已经广泛应用于大模型的微调,如chatglm+LoRA,stable diffusion+LoRA等,而且能和其它参数高效微调方法有效结合,例如 State-of-the-art Parameter-Efficient Fine-Tuning (PEFT)

Reference

1\] Hu E J, Shen Y, Wallis P, et al. Lora: Low-rank adaptation of large language models\[J\]. arXiv preprint arXiv:2106.09685, 2021.

相关推荐
LuoQuHen几秒前
第八章:多Agent系统—— 当智能体开始“分工协作“
人工智能·ai·agent
落痕的寒假几秒前
[深度学习] 大模型学习7-多模态大模型全景解析
人工智能·深度学习·学习
大模型真好玩2 分钟前
大模型训练全流程实战指南工具篇(十)—— 小白也能懂的大模型训练参数万字详解
人工智能·agent·deepseek
纤纡.3 分钟前
基于 PyTorch 手动实现 CBOW 词向量训练详解
人工智能·pytorch·python·深度学习
大学有意思4 分钟前
2026深度解析广西英华国际职业学院新能源汽车技术专业
人工智能·机器人
踩着两条虫5 分钟前
AI驱动的Vue3应用开发平台深入探究(十八):扩展与定制之集成第三方库
vue.js·人工智能·低代码·重构·架构
恋猫de小郭10 分钟前
Claude Code 源码里有意思设定:伪造、投毒、卧底、封号
前端·人工智能·ai编程
kailp12 分钟前
无需本地显卡!跑GPT-SoVITS-V2Pro完整教程
人工智能·gpt·ai·大模型·云计算
饼干哥哥12 分钟前
n8n已死!我用Kimi跑通了Claude Skills,直接替代工作流
人工智能
童园管理札记15 分钟前
2026实测|GPT-4.5+Agent智能体:3小时搭建企业级客服系统,附完整源码与部署教程(一)
经验分享·python·深度学习·重构·学习方法