先这样答
它们都属于参数高效微调(PEFT)家族,核心思想是冻结基座模型的全部参数,只训练极少量的额外参数。在面试中,我们可以从插在哪里、训练什么、推理代价这三个维度来对比它们的关系,并说明为什么 LoRA 最终成为当前的默认选择。
Adapter-Tuning 是较早的方案,它在 Transformer 的层间插入小型的瓶颈模块。这种做法虽然不改变原模型权重,但会增加网络的深度。数据在正向传播时必须经过这些额外的层,导致推理时产生额外的延迟,因此逐渐被后续方案取代。
Prefix-Tuning 和 Prompt-Tuning 把修改的位置放在了输入端。Prefix-Tuning 在注意力机制的键值空间前拼接可学习的前缀向量,不改变模型的主体结构。Prompt-Tuning 是它的简化版,仅在最底层的嵌入层添加可学习的连续提示向量。Prompt-Tuning 的局限在于,当基座模型规模较小时,微调效果通常偏弱。
LoRA 的思路与前面不同,它不增加网络深度,而是对模型权重的增量矩阵进行低秩分解。训练时只更新两个低秩矩阵,推理时直接将这两个矩阵相乘的结果加回原权重中。这种机制使得 LoRA 没有引入额外的推理延迟。最后可以总结,因为 LoRA 兼顾了无推理延迟且效果稳定的特点,它取代了 Adapter 等早期方案,成为目前大模型微调的首选。
面试官会怎么追问
- 「Adapter 为什么会带来推理延迟?」 因为 Adapter 模块是串行插入到 Transformer 层之间的。推理数据流必须先经过原模型的网络层,再进入 Adapter 的降维和升维线性层,这种串行计算拉长了数据流转路径,增加了时间开销。
- 「Prompt-Tuning 在什么情况下效果不好?」 在模型参数规模较小时效果偏弱。因为 Prompt-Tuning 仅在底层的嵌入层添加可学习向量,能调整的参数空间有限,高度依赖大模型本身的理解能力来激发输出。
- 「Prefix-Tuning 和 Prompt-Tuning 在操作位置上有什么具体差异?」 Prompt-Tuning 作用在底层的嵌入层,把可学习向量和输入文本的词向量拼接。Prefix-Tuning 则深入到每一层内部,在多头注意力机制的键值矩阵前拼接可学习的前缀向量。
回答的坑
把 LoRA 和 Adapter 的结构混为一谈,认为 LoRA 也是在层间插入新模块。正确的理解是 LoRA 对原有权重矩阵进行低秩分解,推理时可直接合并,而 Adapter 是串行插入的额外层。
认为这四种方法可以随意替换,忽略了工程落地时的性能约束。正确方向是强调实际应用中的取舍,指出对延迟敏感的服务会避开 Adapter,模型规模较小时避免单独使用 Prompt-Tuning。
同系列的题