论文地址:[2106.09685] LoRA: Low-Rank Adaptation of Large Language Models (arxiv.org)
理论基础
自从GPT-3.5问世以来,整个AI界基本都走向了大模型时代,而这种拥有数亿参数的大模型对于普通玩家来说作全量微调基本是不可能的事。从而微软公司提出了LoRA(low-Rank Adaptation) 对大模型进行微调的技术,简单的来说就是针对于fine_tune的过程并不是全量微调,而是更像加入了一个adapter插件(与fine_tune技术相对于的一种对于大模型适应下游任务的训练手段,其宗旨是并不改变大模型的参数,而是在大模型的基础上增加一些额外的架构,可以参考AdapterHub - 572 adapters for 76 text tasks and 50 languages , 上面有各种各样的adapter) — 降低模型的参数的秩(有关于秩的概念,不清楚的大概可以理解成矩阵中线性无关的行或者列的最大数量)而只去训练那些关键的参数,但是并不改变原始预训练模型的参数,从而大大的降低了可训练参数的数量从而加快了训练速度,并且拥有与全量微调相近甚至过犹不及的效果,这就是LoRA niubility的地方了。
针对于现在的大模型参数大的特点,全量微调对于很多非商业的使用者来说是非常不友好的,因此parameter-efficcient fine-tuning methods就提出来了,其并不需要去调整整个大模型的参数,而是去高校的优化模型的部分参数或者说是能适用于下游任务的新参数。下面是目前几个流行的方法
- Adapter Tuning: 在transformer架构中增加其他模块
- Prefix Tuning: 在每一个注意力前增加prefix
- Prompt tuning: 去不断的改变prompt(模板)的embedding,这里的promot 可以是有语义信息的hard prompt 也可以是没有任何语义信息的sofr promot(P-tuing)
- LoRA: 将原始的参数替换成低秩的矩阵,从而去优化这个低秩矩阵,