真实面经题目 · 原创解析
LoRA 初始化和 rank 应如何选择,rank 过大或过小有什么影响?
这题考 LoRA 的低秩增量参数如何初始化和选 rank,重点是保持初始等价、控制容量成本,并用验证集判断欠拟合或过拟合。
真实面经题目 · 原创解析
这题考 LoRA 的低秩增量参数如何初始化和选 rank,重点是保持初始等价、控制容量成本,并用验证集判断欠拟合或过拟合。
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 是容量和成本的折中,要用验证指标和回归集决定。
LoRA 不是直接更新完整权重,而是在冻结原模型权重旁边加一个低秩增量。这样训练参数少,显存和存储成本低,也方便为不同任务保存不同 adapter。初始化和 rank 选择都围绕这个增量是否稳定、够用、可部署展开。
比较稳妥的初始化目标是让 ΔW 在训练开始时为零或接近零。这样接上 LoRA 后,模型输出与 base model 基本一致,不会因为随机 adapter 破坏已有能力。随后训练只学习任务相关的增量。
常见初始化会让一个矩阵随机、另一个矩阵为零,使整体 ΔW 为零,但梯度仍能传到可学习矩阵中。面试中不需要死记某个库的具体命名,但要讲清楚为什么初始增量为零更稳定。
Rank 越大,LoRA 能表达的权重更新子空间越大,越可能拟合复杂变化;rank 越小,参数更省但容量受限。若任务只需要轻微风格或格式适配,小 rank 可能足够;若领域迁移大、任务多或数据复杂,可能需要更高 rank。
Rank 太小会欠拟合,表现为训练集和验证集都提升有限;rank 太大会增加显存、训练时间、adapter 文件大小和合并成本,小数据上还可能过拟合或引入旧能力回归。还要考虑 alpha 缩放、dropout 和学习率共同影响稳定性。
实际选择应从小 rank 开始,按目标模块和任务指标做消融。除了看目标任务准确率或人工评测,还要看基础能力、安全、事实性和延迟成本。最终选的是收益拐点,而不是最大可承受 rank。
目的是让低秩增量初始为零,接入 adapter 后不改变 base model 输出,训练更稳定。另一个矩阵随机初始化后,反向传播仍能逐步学到有效增量。
容量不足,训练集也难拟合,验证集提升有限,复杂指令、领域知识表达或多任务迁移效果不明显。
不一定。Rank 过大增加参数和显存,小数据上可能过拟合,也可能带来旧能力回归。超过某个拐点后收益会变小。
Rank 控制低秩空间容量,alpha 控制增量缩放强度。两者共同影响更新幅度和稳定性,需要结合学习率、dropout 和验证集一起调。