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"]

posted @ 2026-03-31 10:06  YoungF  阅读(51)  评论(0)    收藏  举报