真实面经题目 · 原创解析

LoRA 和 Adapter 在微调机制、参数插入位置和推理阶段开销上有什么区别?

这道题考察参数高效微调的结构理解,而不是只背 LoRA 和 Adapter 都是 PEFT。好的回答要先说明二者都冻结大部分基座模型、只训练少量新增参数;再区分 LoRA 是给已有线性层增加低秩权重增量,Adapter 是在 Transformer block 中插入小型瓶颈模块;最后落到推理开销:LoRA 可合并进原权重,单任务部署几乎无额外算子,Adapter 通常保留额外前向路径,会增加延迟、显存和 serving 复杂度。

出现于:金山办公 · 算法

60 秒回答模板

我会先把相同点说清楚:LoRA 和 Adapter 都属于参数高效微调方法,核心目的都是冻结大模型主体,只训练少量任务相关参数,从而降低训练显存、存储和多任务适配成本。它们都不是从头训练模型,也不是简单只改 prompt;区别在于新增参数怎么接入模型计算图,以及推理时这些新增参数能不能被消掉。 LoRA 的机制是对已有线性层的权重增加一个低秩更新。比如原来线性层是 y = Wx,LoRA 不直接训练 W,而训练两个小矩阵 A 和 B,让有效权重变成 W + BA,并用 rank 和缩放系数控制更新容量。它常放在 Attention 的 Q、K、V、O projection,或者 MLP 的 up/down/gate projection 上。因为它依附于原线性层,本质上是在原权重旁边学一个低秩增量。 Adapter 的机制更像给网络插入一个小模块。典型 Adapter 是 down projection、非线性、up projection 加残差,常插在 Transformer 子层之后,比如 attention 后、FFN 后,或者作为 parallel adapter 接在残差分支上。它不是修改某个已有矩阵的低秩增量,而是新增一段可训练的前向网络,所以会改变 block 内的数据路径。 训练阶段二者都能显著减少可训练参数,但取舍不同。LoRA 的容量主要由 rank、插入层数、目标矩阵决定,优点是结构侵入小、合并方便,缺点是表达能力受低秩约束,rank 太小可能欠拟合,rank 太大又会接近更多参数训练。Adapter 的瓶颈维度、插入位置和非线性会影响容量,它通常更模块化,便于保存不同任务 adapter,但每个模块都会带来额外激活和前向计算。 推理阶段是面试最容易区分二者的地方。LoRA 在单个适配器固定部署时,可以把 BA 预先 merge 到原权重 W 中,推理图仍然是原来的线性层,基本没有额外矩阵乘法和延迟。若为了动态切换多套 LoRA 而不 merge,则需要额外计算低秩分支,但开销通常比完整线性层小。Adapter 通常不能像 LoRA 那样无损合并到原线性权重里,因为它有额外层、残差和非线性,推理时必须执行新增模块,所以会增加算子、访存、激活和延迟。 工程上选择要看场景。如果是大规模线上单任务部署,LoRA 的可合并性、模型结构不变和 serving 成本优势很明显。如果要给很多任务保存独立模块、强调可组合和任务隔离,Adapter 的模块化管理也有价值,但需要接受推理路径更重。评估时不能只看训练参数量,还要看合并后延迟、吞吐、显存、模型文件管理、热切换成本、质量指标和多任务维护成本。

考点 LoRA 低秩增量
难度 真实面经题
回答目标 让面试官看到你能从数学机制、结构位置、训练参数、推理图和线上 serving 取舍五个层面区分 LoRA 与 Adapter,而不是只会背 PEFT 名词。

深入解析

01

共同定位

二者都是参数高效微调,通常冻结基座模型,只训练少量新增参数,用更低的训练显存和存储成本适配下游任务。

02

LoRA 机制

LoRA 在已有线性层上学习低秩增量,把权重从 W 变成 W + BA。训练时只更新低秩矩阵,rank 决定可表达容量和额外参数量。

03

Adapter 机制

Adapter 在 Transformer block 中插入小型瓶颈网络,通常包含降维、非线性、升维和残差连接,是新增的前向模块。

04

插入位置

LoRA 常作用在 attention projection 或 MLP projection 等线性矩阵上;Adapter 常插在 attention 子层或 FFN 子层之后,也可以采用并联 adapter 结构。

05

训练取舍

LoRA 结构侵入小、参数由 rank 控制;Adapter 更模块化但会新增激活路径。二者都要权衡参数量、任务质量、可组合性和训练稳定性。

06

推理开销

LoRA 固定部署时可以 merge 到原权重,推理图不变;未 merge 时有额外低秩分支。Adapter 一般保留新增模块,通常增加算子、访存和延迟。

07

部署选择

单任务低延迟服务更偏 LoRA;多任务模块化管理可以考虑 Adapter,但要评估动态加载、批处理混部、显存占用和线上吞吐。

易错点

  • 只说二者都是参数高效微调,没有讲参数插入位置和计算图差异。
  • 把 Adapter 也说成可以无成本合并进原权重,忽略它通常包含非线性和新增残差路径。
  • 认为 LoRA 推理永远零开销,忽略未 merge、多 LoRA 动态切换和 batch 混部场景。
  • 把 LoRA 和 Adapter 与 prompt tuning、prefix tuning 混为一谈。
  • 只比较可训练参数量,不比较推理延迟、显存、吞吐和部署复杂度。
  • 把 LoRA rank 说成越大越好,忽略过拟合、存储和未合并推理成本。
  • 臆造题目来源公司的内部微调框架或线上部署细节。

面试官追问

为什么 LoRA 可以合并到原权重,而 Adapter 通常不行?

LoRA 的低秩分支本质上是线性权重增量,W 和 BA 可以直接相加成一个新矩阵。Adapter 是额外的降维、非线性、升维和残差模块,计算结构不是单个原线性层权重可表达的形式,所以通常不能无损折叠。

如果线上需要同时服务很多 LoRA 任务,merge 还有优势吗?

如果每个请求对应不同 LoRA,频繁 merge/unmerge 不现实,可能采用未合并低秩分支、按 adapter 分组 batch 或专门的 LoRA serving 框架。此时 LoRA 仍然比全量多模型省存储,但推理不再是完全零开销。

LoRA rank 选得过小或过大会怎样?

rank 过小会限制低秩更新表达能力,复杂任务可能欠拟合;rank 过大会增加训练参数和未合并推理开销,也可能让适配器更容易过拟合。通常需要用验证集质量、延迟和存储成本一起调。

Adapter 的优势是什么?

Adapter 的优势是模块化和任务隔离更直观,不同任务可以保存不同模块,某些结构也便于组合。但它用额外网络换表达能力,线上需要承担新增模块的计算和管理成本。

如何做 LoRA 和 Adapter 的公平实验?

要固定基座模型、训练数据、训练预算、评估集和目标任务,分别比较任务指标、可训练参数量、显存、训练时间、合并后或未合并推理延迟、吞吐和多任务部署成本。