60 秒回答模板

LoRA 的核心是在冻结原始权重 W 的基础上,学习一个低秩增量 ΔW,常写成两个小矩阵相乘。初始化时通常希望训练一开始 ΔW 接近 0,让模型初始行为和原模型一致,避免一接入 adapter 就破坏已有能力。常见做法是一个低秩矩阵随机初始化,另一个矩阵置零,或者采用等价的零增量初始化;这样前向一开始不改变 base model,训练梯度再逐步让 adapter 学任务增量。Rank 决定了 ΔW 的表达容量:rank 太小,低秩空间不足,复杂领域、多个任务或高维注意力/FFN 变化学不动,表现为欠拟合;rank 太大,参数、显存和通信成本上升,小数据上更容易过拟合,也可能带来训练不稳定和部署成本。选择 rank 要看任务复杂度、数据量、目标模块、显存预算和验证集收益,一般从较小 rank 开始做消融,比如 attention 的 q/v/o、FFN 不同模块分别评估,再配合 alpha、dropout、学习率和早停。面试里不要说 rank 越大越好,正确说法是 rank 是容量和成本的折中,要用验证指标和回归集决定。

考点 低秩增量
难度 真实面经题
回答目标 讲清机制、训练与评估取舍

深入解析

01

先说明 LoRA 学的是增量

LoRA 不是直接更新完整权重,而是在冻结原模型权重旁边加一个低秩增量。这样训练参数少,显存和存储成本低,也方便为不同任务保存不同 adapter。初始化和 rank 选择都围绕这个增量是否稳定、够用、可部署展开。

02

初始化要保持初始等价

比较稳妥的初始化目标是让 ΔW 在训练开始时为零或接近零。这样接上 LoRA 后,模型输出与 base model 基本一致,不会因为随机 adapter 破坏已有能力。随后训练只学习任务相关的增量。

03

零增量不代表没有梯度

常见初始化会让一个矩阵随机、另一个矩阵为零,使整体 ΔW 为零,但梯度仍能传到可学习矩阵中。面试中不需要死记某个库的具体命名,但要讲清楚为什么初始增量为零更稳定。

04

Rank 控制表达容量

Rank 越大,LoRA 能表达的权重更新子空间越大,越可能拟合复杂变化;rank 越小,参数更省但容量受限。若任务只需要轻微风格或格式适配,小 rank 可能足够;若领域迁移大、任务多或数据复杂,可能需要更高 rank。

05

过大过小都有代价

Rank 太小会欠拟合,表现为训练集和验证集都提升有限;rank 太大会增加显存、训练时间、adapter 文件大小和合并成本,小数据上还可能过拟合或引入旧能力回归。还要考虑 alpha 缩放、dropout 和学习率共同影响稳定性。

06

用消融和回归集选择

实际选择应从小 rank 开始,按目标模块和任务指标做消融。除了看目标任务准确率或人工评测,还要看基础能力、安全、事实性和延迟成本。最终选的是收益拐点,而不是最大可承受 rank。

易错点

  • 说 LoRA 会直接改完整大模型权重,忽略冻结权重和低秩增量。
  • 随机初始化两个低秩矩阵却不解释初始输出为何会被扰动。
  • 认为 rank 越大越好,不考虑显存、部署、过拟合和旧能力回归。
  • 只调 rank,不看目标模块、alpha、dropout、学习率和数据规模。
  • 用训练集 loss 决定 rank,不看验证集和通用能力回归。
  • 把 LoRA 当成注入新知识的保证,忽略它更擅长学习有限参数增量,效果仍受数据和任务约束。

面试官追问

为什么 LoRA 初始化时常让一个矩阵为零?

目的是让低秩增量初始为零,接入 adapter 后不改变 base model 输出,训练更稳定。另一个矩阵随机初始化后,反向传播仍能逐步学到有效增量。

Rank 太小会有什么现象?

容量不足,训练集也难拟合,验证集提升有限,复杂指令、领域知识表达或多任务迁移效果不明显。

Rank 太大一定效果更好吗?

不一定。Rank 过大增加参数和显存,小数据上可能过拟合,也可能带来旧能力回归。超过某个拐点后收益会变小。

LoRA rank 和 alpha 是什么关系?

Rank 控制低秩空间容量,alpha 控制增量缩放强度。两者共同影响更新幅度和稳定性,需要结合学习率、dropout 和验证集一起调。