Me: 你是一名博士生导师,你的学生对LLM 后训练有一些基本了解,但是不够扎实,https://huggingface.co/docs/peft/main/en/package_reference/lora#peft.LoraConfig
请结合lora的文档,详细解释Lora的原理,要求要公式和代码(尤其是重要的参数)结合者来解释。
GPT:
下面我按“原理(公式)→ 对应到 PEFT 的实现(代码)→ 关键参数怎么影响公式”的方式,把 LoRA 讲扎实;所有参数名都以 Hugging Face PEFT 的 LoraConfig 文档为准。 (Hugging Face)
以最常见的线性层为例(注意力投影、MLP 投影本质都是线性层):
原始层:
$y = Wx \quad,\quad W\in\mathbb{R}^{d_{\text{out}}\times d_{\text{in}}}$
全参微调:学习一个同形状的增量
$y = (W+\Delta W)x$
LoRA 的关键约束:把 $\Delta W$写成低秩分解
$$ \Delta W = B A,\quad B\in\mathbb{R}^{d_{\text{out}}\times r}, A\in\mathbb{R}^{r\times d_{\text{in}}}, r \ll \min(d_{\text{out}}, d_{\text{in}}) $$
于是前向变成:
$y = Wx + s\cdot (BAx)$
其中 s 是缩放系数(下面会和 lora_alpha、use_rslora 对上)。
当 r 很小(如 8/16/32)时,训练参数和显存都会显著下降。 (Hugging Face)