概念:LoRA(Low Rank Adaptaion of LLMs),即LLMs的低秩适应,可以做到只使用极少量参数的训练,达到微调整个模型的效果,解决了先前Adapter Tuning与Prefix Tuning的缺点。
应用:
1、在绘画应用stable diffusion中,LoRA以插件的形式嵌入模型中,使得用户可以下载相对于原模型(GB量级)更小的LoRA模型(MB量级)达到调整生成图像风格的效果。
2、在语言大模型ChatGPT-3中可以借助LoRA优化它在特定领域的表现,例如代码调试、法律咨询等特定领域。
原理:
1、将原微调参数矩阵(下图左)分解为A、B两个低秩的参数矩阵(下图右),使用原有的微调框架训练A、B矩阵,训练过程中并不会更新原模型的权重,而是在预测阶段时,按一定比例将A、B矩阵与原参数做加法,所以LoRA是一个附加的框架.
2、具体的做法是冻结了原模型的权重后,将可训练的低秩矩阵注入到原模型的各个层中,在LLMs中可以只注入到注意力层中。
细节:
1、开始训练时,矩阵B通过高斯初始化(kaiming初始化),矩阵A全零初始化(原作的说法是方式不重要,只需要初始两者相乘为零,且其中一者不为零即可)。
2、LoRA(即A、B矩阵)矩阵的秩:理想的情况是找到一个秩r,使得LoRA的低秩近似结构BA能具备全参数微调的增量矩阵ΔW的表达能力,能越接近越好。
2、LoRA权重系数α/r,一般取α=2*r,使得总权重为2,权重过大容易过拟合,过小容易效果不明显。
效果:按照LoRA论文报告的结果,LoRA微调使得在训练GPT3 175B时的,显存消耗从1.2TB降至350GB,通过调整batchsize和数据精度可以消耗更低。