《LoRA: Low-Rank Adaptation of Large Language Models》 https://arxiv.org/abs/2106.09685
核心内容:验证了只微调~1%的参数的LLM微调方法,而不损失正确率
核心代码: https://github.com/huggingface/peft/blob/main/src/peft/tuners/lora.py
核心思想:用 两个MLP矩阵[N * r] * [r * M]
代替 MLP矩阵[N * M]
,进行微调的是两个小矩阵,把原来[N * M]
的参数固定住,
原来的[N * M]
参数被固定了没微调,这个方法为什么会有效?
因为 两个矩阵[N * r] * [r * M]
和 输入向量 和 输出向量 和 原来[N * M]
是add
到一起的,所以预训练的信息也都在
相当于用 两个小矩阵 去学习 小的微调数据集,同时保持原来的预训练信息不动