深蓝黑背景封面。上方左侧是类别标注「知识延伸 · 微调方法」,右侧圆角胶囊「Day 01 · 11-18」;其下大标题「PEFT 家族怎么选:Adapter、Prefix、Prompt、LoRA」与副标题「四条主流路线的机制差异与选型坐标系」。下方横向并排四张方法卡:Adapter 卡片内画着 transformer 层之间插入的小方块,注「层间插小模块 · 推理多一跳」;Prefix-tuning 卡片内画着序列前拼接的一排紫色小格,注「每层前缀拼可学向量」;Prompt-tuning 卡片内画着输入前的几个青色软提示 token,注「只在输入层加软提示」;LoRA 卡片内画着权重旁挂的低秩支路 A、B,注「权重旁挂低秩增量 · 推理零开销」。四张卡底部各有一行参数量级标注,从 Prompt-tuning 的「极小」到 Adapter 的「中等」递增,LoRA 卡以青色描边高亮。 图 1:本文封面,四条主流路线的机制速览。

上一篇真题解析讲了 LoRA 内部「B 矩阵为什么初始化为全零」这一个机制细节,本篇换个视角:把镜头拉远到整个参数高效微调(PEFT)家族。面试里被问「你知道哪些 PEFT 方法、怎么选」时,零散背名字没用,面试官想听的是一张选型坐标系:每条路线往模型里插了什么、代价是什么、什么场景该选它。先说明,本文为知识延伸文章,机制描述以各方法原论文为准。

四条路线,四种「动手术」的位置。

Adapter(适配器)路线源自 2019 年的 Adapter 论文:在 Transformer 每层的前馈子层旁插入一个「先降维再升维」的小模块,原模型全部冻结,只训练这些新插入的模块。思路直白、模块化干净,代价是推理时前向通路变长,每一层都多一跳,延迟实打实增加。

Prefix-tuning 来自 2021 年的论文:不动任何层结构,而是在每一层的注意力里,给 Key 和 Value 序列前面拼一段可学习的连续向量(前缀),让后续 token 注意到这些「虚拟 token」上。原模型参数一个不动,任务知识全压在前缀里。

Prompt-tuning 同样发表于 2021 年,可以看作 Prefix 的极简版:只在输入嵌入层前面拼几个可学习的「软提示」向量,更深的层一概不碰。论文用 T5 系列实验给出过一个重要结论——模型规模越大,Prompt-tuning 与全量微调的差距越小,参数量超过百亿量级后基本打平。

LoRA 也是 2021 年发表:不改结构、不加序列,而是给权重矩阵学一个低秩增量 BA,训练完可以合并回原权重。它最大的工程卖点是推理零开销——合并之后模型和全量微调产物在结构上毫无区别。

一张二维坐标系把它们分开。

把所有方法放进「可训练参数量 × 对模型结构的侵入度」坐标系,落点立刻清晰。Prompt-tuning 在左下角:参数量最小(通常只有几千到几万个向量元素),只碰输入层。Prefix-tuning 往右上挪一点:每层都要注入前缀,参数量比 Prompt 大一个量级,但仍远小于全量。LoRA 在中右偏下:参数量取决于秩 r,但它不改前向结构,侵入度低。Adapter 在右上区:插入全新模块,参数量中等,且永久改变了前向通路。

选型时先问自己两个硬约束。第一,推理预算容不容得下额外开销:线上服务对延迟敏感,Adapter 的层间多跳难以隐藏,LoRA 合并后零开销、Prefix 和 Prompt 只加长序列,代价小得多。第二,能不能动模型结构:用的是闭源托管模型、只能拿到输入侧的控制权,那 Prompt 类方法是唯一入口;能改权重但不能动结构,LoRA 是默认项。

按场景对号入座。

生成类任务且显存极紧:Prefix-tuning 值得一试,它的前缀直接参与每层注意力,对生成风格的控制力强。一个底座服务几十上百个下游任务、要求切换成本极低:Prompt-tuning 或 LoRA 都合适——前者换任务只换几个软提示向量,后者换任务只换一套几十 MB 的低秩权重,都是「一个底座加 N 个插件」的形态。老架构改造、对推理延迟不敏感的离线任务:Adapter 的模块化最规整,训练稳定性和可解释性都不错。默认通用项、尤其是要上线做推理的:LoRA,这几乎是当前工程界的共识答案。

两个容易忽略的认知。

一是「参数高效」的口径陷阱:有的方法可训练参数少但反向传播仍要穿过整个主网络,显存未必省;比较方法时要分清「可训练参数量」「改变参数量」「训练显存」是三本不同的账。二是这些方法彼此正交,可以组合:Prefix 加 LoRA、Adapter 加 LoRA 都有实践,选型不是单选题而是搭积木。

深蓝黑背景概念图。左侧是一张二维选型坐标系:横轴为「可训练参数量」从左到右递增,纵轴为「对模型结构的侵入度」从下到上递增。四个方法落点:Prompt-tuning 位于左下角,注「只动输入嵌入层」;Prefix-tuning 位于左中偏上,注「每层注入前缀 K/V」;LoRA 位于中右偏下,注「只改权重增量、不动结构」;Adapter 位于右上区,注「层间插入新模块、改变前向结构」。各点以圆点加标签卡呈现,LoRA 圆点以青色高亮并加一圈光环。右侧一张四行选型速查表:Adapter 适合「老架构改造、能接受推理延迟」;Prefix-tuning 适合「生成任务、显存极紧」;Prompt-tuning 适合「多任务共享单模型、切换成本低」;LoRA 适合「通用默认项、要求推理零开销」。底部总结条:没有银弹,先定「能不能动结构、推理预算多少」,再在坐标系里找落点;另注实际工程常组合使用,如 Prefix 加 LoRA。 图 2:二维选型坐标系与四行速查表。

把坐标系背下来,而不是背名词。

面试里这道题的高分答法:先按「插入位置」把四条路线各一句话讲清(层间插模块、每层拼前缀、输入层加软提示、权重挂低秩增量),再亮出两个选型硬约束(推理预算、能否动结构),最后按场景给结论并点一句「方法间可组合」。如果面试官追问某个方法的内部细节——比如 LoRA 的初始化——那就回到真题解析的主场了。你在项目里用的是哪条路线?选型时最看重的约束是什么?欢迎分享你的取舍。