先这样答
LoRA 的核心做法:微调时冻结原模型的全部权重,在权重层旁边加一对小的低秩矩阵,训练时只更新这对新矩阵。推理时把旁路矩阵的输出加回原路径,效果等价于一个改过权重的模型,但真正训练的参数只占原模型的很小一部分。
为什么可行:微调带来的权重变化往往集中在少数方向上,用一对低秩小矩阵就能大致表达,这是 LoRA 的基本假设。它换来三个好处。显存:要存梯度和优化器状态的参数少了,单张消费级显卡也能调大模型。切换:原权重不动,一个基座可以挂多份 LoRA 权重,按任务加载。速度:旁路矩阵小,合并推理后几乎不增加延迟。
一句总结:LoRA 把微调从「改整个模型」变成「训练一小块增量」,成本降了一截,产物只是一个很小的权重文件,这是它成为微调默认选项的主要原因。
面试官会怎么追问
- 「LoRA 加在模型的哪些位置?」 最常见挂在注意力层的投影矩阵上,也可以扩到前馈层。挂的位置越多,可训练参数越多,通常效果上限更高,训练成本也随之上升,挂哪里和挂多少是实打实的超参。
- 「训练完怎么用?」 两种方式。合并:把 LoRA 权重算进原权重,模型结构和原来完全一样,推理速度不变;不合并:作为独立文件挂载,一个基座切换多个任务很方便,代价是推理时多一点计算。
- 「什么时候该用全量微调?」 任务和基座差距很大、需要明显改变模型能力时,LoRA 的容量可能不够;另外全量微调的显存和时间预算高得多。一般先跑 LoRA 看效果,不够再升级。
回答的坑
- 把 LoRA 说成一种小模型。它是微调方法,产物是一小份权重增量文件,必须配合基座使用,这个基本关系说错会直接暴露没上手过。
- 只背「低秩」两个字不解释。至少要说清「低秩」指什么:旁路矩阵中间维度的宽度(rank)远小于原权重维度,所以参数少。rank 怎么选是紧跟着的高频追问。
同系列的题
—— 本题完 ——