跳到主要内容

5.9 PEFT 全景与选型:你到底该不该微调

一家人,都叫 PEFT​

LoRA 不是石头缝里蹦出来的。它属于一个更大的家族:PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)——冻结绝大部分参数,只训一小撮,这个家族的所有成员都在回答同一个问题:那「一小撮」应该长什么样、放在哪里。

四种主要思路,各有各的贴法:

方法训什么贴在哪为什么没成为主流
Adapter(2019)插进去的小瓶颈层每层中间,串在主路上推理时永远多几层计算,延迟下不去
Prefix / Prompt Tuning(2021)一串「虚拟 token」的向量拼在输入前面占用上下文,而且优化不稳定
(IA)³(2022)几个缩放向量乘在激活值上参数极少(比 LoRA 还少),但表达力有限
LoRA(2021)低秩矩阵 BABA与原权重并联——它赢了

LoRA 赢在哪?看表格最右一列就明白了:它是唯一一个既不加计算、又不占上下文的方案。因为便利贴是并联在原权重旁边、而不是串在主路上,训完可以直接加回去合成一个新矩阵,推理时和原模型一模一样。竞争对手要么让每次推理都变慢,要么吃掉你本就紧张的上下文窗口。

「赢了」不等于「其他方法没用」

这张表是 2026 年的工业界现状快照,不是技术优劣的终审判决。Prompt tuning 在超大模型上、单一底座服务海量任务时仍有独特优势(每个任务只存几千个数字);Adapter 的思路在多模态适配里还活跃着。「LoRA 赢了」的准确说法是:在「单卡微调开源大模型」这个最常见的场景里,它的性价比目前没有对手。

但更值钱的问题在前面​

讲完怎么微调,该讲一件更重要的事了——大多数想微调的人,其实不需要微调。

这不是唱反调。这是工程实践里反复出现的一幕:团队花两周攒数据、调参、训出一版 LoRA,上线后发现效果还不如把提示词重写一遍。

原因几乎总是同一个:他们要解决的问题,根本不在微调能解决的范畴里。

记住这条分界线:

微调改的是「怎么说」,不是「知道什么」。

  • 想让模型只输出 JSON、用客服口吻说话、遵守公司的行文规范、在你的领域里用对术语——这些是「怎么说」,微调很在行。
  • 想让模型知道你公司的报销标准、上周的销售数据、某份内部合同的条款——这些是「知道什么」,微调很吃力,而且会帮倒忙。

第三点值得展开:2024 年的一项实证研究发现,在模型没见过的新知识上做微调,反而会让它更爱编。直觉上说得通——你逼它把一堆它并不「理解」的事实背下来,同时也就教会了它「对不确定的事也要自信地说出来」这个坏习惯。

要让模型知道新东西,正确答案是给它外挂一个知识库,让它现查现答——这正是本教程中篇《给 AI 接上你的知识》整整八章在讲的事。

四个问题,定你的路线​

把上面的判断做成一道阶梯,你就有了一个可操作的决策流程:

🎮 动手实验
该不该微调?四个问题定路线
这道阶梯从下到上,成本一级比一级高。回答四个问题,看你应该停在哪一级——多数人以为自己需要第 3 级,其实第 1、2 级就够了。
① 你想让模型改变什么?
② 手里有多少条标注好的示范?
③ 这些资料多久变一次?
④ 你有什么算力?
4. 全参微调 / 继续预训练多卡 + 大数据3. LoRA / QLoRA 微调一张卡 + 几小时2. RAG 外挂知识库中篇讲的那一套← 你在这里1. 提示工程 + few-shot几乎零成本
建议:RAG 外挂知识库
你要的是「模型不知道的事实」,而且资料还经常变——这正是 RAG 的主场:改知识库比重训一次模型快几个数量级,改完立刻生效。
⚠️ 常见错误:别指望靠微调把事实「灌」进模型——2024 年的实证反而发现:在模型没见过的新知识上微调,会让它更容易一本正经地编(幻觉变多)。事实交给检索。
💡 要点:这道阶梯的顺序不是随便排的——永远从最便宜的一级开始,确认它不够用了再往上爬。最常见的错误是跳过前两级直接微调:花了几天训出一个模型,才发现问题出在提示词没写清楚,或者根本该用检索。
规则是教学化的经验法则,真实项目还要看延迟预算、数据合规、团队维护能力等因素,别当硬性标准用。

请至少走三遍:

路线 ①:默认配置(补充事实 / 几百条 / 经常变 / 一张卡)。 看它把你按在第 2 级 RAG 上——哪怕你有卡、有数据、有微调的全部条件,只要目标是「补事实」,检索就是更对的答案。这是整道阶梯上最重要的一条规则。

路线 ②:把第 ① 题改成「固定格式或语气」。 现在跳到第 3 级 LoRA/QLoRA 了。同样的数据、同样的硬件,仅仅因为目标从「知道什么」换成了「怎么说」,推荐就完全不同。决定路线的是你的目标,不是你的资源。

路线 ③:再把第 ② 题改成「没有 / 几十条」。 又被打回第 1 级 提示工程。几十条示范喂不饱任何微调,但正好够当 few-shot 例子——而且你为提示词攒的这些好样本,将来就是微调的训练数据。这条路没有白走的。

真要微调,先记三件事​

一、数据质量远比数量重要。 LIMA(2023)用 1000 条精挑细选的示范,就达到了远超同规模「几十万条粗糙数据」的效果。原因回到 5.1 节:能力全在基座里,SFT 只是唤醒,不是灌输——那就更该给它看几百条精品,而不是几十万条噪音。你花在清洗数据上的每一小时,都比花在调超参上的更值钱。

二、先建评测集,再动手训。 这是最常被跳过、也最致命的一步。没有评测集,你唯一的判断依据就是「我看了几个例子,感觉变好了」——而这恰恰是最不可靠的信号(7.2 节讲过人对流畅文本的判断有多容易被骗)。怎么从零造一把尺子,7.4 节有完整流程;先记住一条:哪怕只有 50 条固定的测试样例、手工判分,也远胜于凭感觉。

三、小心灾难性遗忘。 在窄数据上训得太狠,模型会「专精」到丢掉通用能力:客服话术学会了,数学能力掉了一截。防守手段是训练数据里掺一些通用样本、控制训练轮数(通常 1~3 个 epoch 就够)、以及——还是那句——用评测集盯着,不只测你的目标任务,也测几项通用能力。

这道阶梯不是铁律

它是经验法则,不是流程规范。有几种情况值得直接跳级:需要严格的延迟预算(提示词太长会拖慢首字响应,微调能把长提示「压进」参数里);需要在离线/内网环境部署小模型;或者你要的输出格式极其严苛、提示词怎么写都有几个百分点的漏网。阶梯的价值不是禁止跳级,而是逼你先说清楚为什么要跳。

小结​

本节要点
  • PEFT 是一个家族:Adapter(串联,加延迟)、Prefix/Prompt(占上下文)、(IA)³(只能缩放)、LoRA(并联,可合并)——LoRA 赢在既不加计算也不占上下文。
  • 最重要的分界线:微调改的是「怎么说」,不是「知道什么」。要补事实请用 RAG,在新知识上微调反而会加重幻觉(2024 年实证)。
  • 决策阶梯:提示工程 → RAG → LoRA/QLoRA → 全参微调,永远从最便宜的一级开始,确认不够用了再往上爬。
  • 真要微调:数据质量 ≫ 数量(LIMA 用 1000 条)、先建评测集再动手、警惕灾难性遗忘。
📝 动手自测0/3
1. 你想让模型准确回答「本公司的差旅报销上限是多少」,最合适的做法是?
2. Adapter 和 LoRA 形式上都是「降维再升维」,为什么工业界最终选了 LoRA?
3. 关于微调的数据,下面哪个说法更符合实践经验?

延伸阅读​