LoRA 原理
LoRA 冻结原权重,在旁边加一对低秩矩阵 A·B 学增量:微调时只训这几百万参数,推理时可以合并回原权重不增加延迟。能成立的前提是权重更新本身低秩 —— 这也是它在「教格式、教风格」上好用、在「灌新知识」上乏力的原因。
也叫:LoRA · PEFT · 参数高效微调 · 低秩分解 · 适配器 · adapter
LoRA 的前向与初始化出自 T4-2
冻结
┌──────────────┐
x ───►│ W₀ (d×k) │───────────┐
│ └──────────────┘ ▼
│ ( + ) ───► h
│ ┌────┐ ┌────┐ ▲
└────►│ A │───►│ B │──× α/r ───┘
│r×k │ │d×r │
└────┘ └────┘
可训练 可训练
A ~ 高斯初始化 , B = 全 0前向公式:
h = W₀·x + (α/r) · B·A·x
三个设计细节,每个都能当面试追问点:
- B 初始化为全 0,所以训练刚开始时 BA = 0,
h完全等于基座输出。这保证了接上适配器的瞬间不扰动模型,训练从基座的原始行为平滑出发。如果两个矩阵都随机初始化,第一步就把模型打乱了。 - α/r 是一个缩放系数(scaling factor),不是"学习强度"这种玄学。它的作用是:当你改变 r 时,让适配器输出的量级保持可比。所以比较不同 r 的实验时必须固定 α/r,否则你分不清变化来自容量还是来自缩放。
- 推理时可以合并:
W = W₀ + (α/r)·B·A,算完就是一个普通权重矩阵,推理零额外延迟。这是 LoRA 相对 Adapter、Prefix-Tuning 这些前辈的决定性优势——那些方法在推理时会多出实打实的计算层。反过来,不合并也有价值:一个基座可以同时挂多个 LoRA,按请求热切换,做多租户/多任务服务。
以上节选自T4-2 参数高效微调:LoRA、QLoRA 与一笔算得清的显存账,读全文能看到前后语境。