LoRA技术详解
LoRA, QLoRA, DoRA, LoRA+, LLaMAPro, LongLoRA, LoRA-GA, ReFT, RS-LoRA, Adapter, LISA
LoRA,全称low-rank adaption,低秩适配
冻结整个预训练大模型,只训练极小部分参数,实现任务适配。
原理
只加一点参数,保持整体参数没有太大变化。
以模型权重\(W\)为例,全参数微调得到\(\Delta W\),于是得到参数更新(见下式1),此时\(\Delta W\)和原始参数\(W\)在shape上是相同的,如果我们引入额外的\(B\)和\(A\)使得:
\[\begin{align}
W_{new} & = W_{old} + \Delta W \tag{1} \\
\Delta W & = BA \tag{2}
\end{align}
\]
B, A都是低秩的,相比W,训练参数会小很多,比如W = 768 * 768,但是A/B只需要768 * 2和2 * 768
训练和推理
训练时,adaption层是单独存在的,原始模型的参数会Fix
推理时,可以先把A/B加到模型参数上去,然后就会得到一个和原来模型size一样的模型,这样不会带来额外的时延。
加到哪些网络层?
微调本质不是让模型重新学知识,而是让模型 “重新聚焦、重新表达”。
Q 管聚焦,V 管表达,这两个改了就够了。
K 是基座已经学好的知识库,不用动;O 和 FFN 性价比太低。
所以行业默认最优配置就是:
target_modules = ["q_proj", "v_proj"]

浙公网安备 33010602011771号