LoRA: Low-Rank Adaptation Of Large Language Models,大语言模型的低秩适配器
本文对LoRA原理做简要分析,希望对大家有所帮助。
论文地址:https://arxiv.org/pdf/2106.09685.pdf
源代码: https://github.com/microsoft/LoRA
1 功能简介
LoRA一种大模型的微调方法。只用很少的数据,很少的参数,就能让大模型在原本表现没那么好的下游任务成为专家模型。并且不额外增加推理时间。
2 介绍
大模型在下游任务微调时,全参数微调时间、金钱成本太高。
微调部分参数中以Adapter Tuning为代表,Adapter模型中增加额外模块,虽然微调时除了Adapter的部分,其余的参数都是被冻住的(freeze),有效降低训练的代价。但模型整体的层数变深,会增加训练速度和推理速度。
LoRA(Low-Rank Adaptation,低秩适配器)提出了一种新微调方法。
左图可看作全参数finetune的情景,可以理解成“冻住的Pretrained Weights” + “Finetune Weights”。设输入为,输出为
,则有:
。其中预训练权重
,微调权重
。
右图为LoRA finetune情景,因为预训练权重中少部分参数起到对结果的决定作用,大部分参数其实可以去掉,针对这种情况就可以用矩阵和
来近似表达
。
类似假设、
、
如下图:
此时使用2*1*4个参数的和
即可代替4*4个参数
。(可以用python计算下不等号两边的差异。)
即在LoRA下我们有: ,其中
,
。
参数量就从
减少到了
。
因此,就可以实现使用少的数据、少的显存、少的参数来微调达模型了。
The End!