微调,就是拿一个已经训练好的大模型,再用一批专门的数据对它"加练"一轮,让它在某个领域或某类任务上表现得更好。如果说预训练是让模型读完整个互联网、成为"通才",微调就是送这位通才去读一个对口的硕士:底子不用重打,重点补上专业课。
它"调"的对象,是模型内部的参数(权重)。预训练已经给了模型理解和生成语言的通用能力,微调时用规模小得多、但针对性极强的领域数据,以更小的学习率继续训练,把参数往目标任务的方向"拨"一拨。拨完之后,同一个模型回答本领域问题的准确度、术语的贴切度、输出的格式都会明显更对味。
微调和"从头训练":盖楼和装修的区别
从头训练(预训练)喂的是海量通用语料,目标是让模型学会语言本身,代价是巨大的算力和漫长的时间,个人和中小团队基本够不着。微调则是站在巨人肩膀上接着练,数据量可以小两到三个数量级,几天时间、几块 GPU 就能跑完。
一个粗糙但好用的类比:预训练是盖楼,微调是装修——没人会为了换个厨房推倒重盖一栋楼。理解了这一点,就理解了为什么今天几乎所有"行业大模型"都是微调出来的,而不是从头训练的。
两种主流做法:全参数微调和 LoRA
全参数微调让模型的所有参数都参与更新,天花板最高,但也最贵,还有一个经典副作用叫"灾难性遗忘":新本事学会了,旧的通用能力反而退化了,就像为了考专业课把公共课全忘了。
LoRA(低秩适配)走了另一条路:把原模型的参数"冻"住不动,只在旁边训练一组很小的外挂矩阵(适配器),推理时再把适配器的效果叠加上去。直觉上很好懂:不用重修整栋楼,贴几张"便利贴"就能把模型往你要的方向引导。它的显存需求常常只有全参数微调的几分之一,这也是个人开发者和中小团队今天做微调的主流选择。
最容易搞混的三组概念
微调 vs 提示词工程:微调改的是模型本身,权重真的变了,调完长期生效、换任务要重调;提示词工程只改输入的提示词,模型原封不动,零训练成本、随时可换。想让模型"换个说法",先试提示词;想让模型"换个脑子",才轮到微调。
微调 vs RAG:RAG是给模型外挂一个"开卷资料库",回答前先检索相关文档再作答,知识更新了只换文档、不用重训;微调是把知识"背"进参数里。知识更新快、时效性强的场景选 RAG;稳定的领域术语、固定的输出风格选微调。实际项目里两者经常一起用:RAG 管"记什么",微调管"怎么说"。
微调 vs 知识蒸馏:微调是让同一个模型变得更专;知识蒸馏则是请大模型当老师,带出一个又小又快、但保留了关键能力的学生模型。一个管"变专",一个管"变小",方向完全不同。
什么时候值得微调,什么时候别折腾
值得做的三种情况:任务稳定且高频,比如客服话术、病历结构化、法律文书格式;想让输出风格高度统一,比如固定的语气和版式;调用量大到"每次都在提示词里堆例子"的 Token 成本划不来——账算下来,微调可能更便宜。
别折腾的三种情况:知识更新快、今天对的明天就错(用 RAG);手头只有几十条数据,硬调只会过拟合,还不如把提示词写好;只是想让模型"知道"几个新事实——背事实是 RAG 的活,不是微调的活。
还有一条底线:微调对不准方向,变不出预训练没给的能力上限;它也不会自动获得最新知识。拿旧数据训出的模型,微调解决不了"不知道后来发生了什么"。
关于微调的三个常见误解
误解一:"数据越多越好"。微调吃的是质量不是数量,几千条精心清洗的问答对,效果常常碾压几十万条爬来的脏数据。脏数据调出来的,是"更自信的胡说八道"——大模型幻觉那篇里讲过的毛病,微调救不了。
误解二:"调完就一劳永逸"。领域变了、数据分布变了,都要重调;而且每次调完都要做评测,确认新本事学会了、旧本事没丢,防的就是灾难性遗忘。
误解三:"小团队玩不起微调"。LoRA 这类高效微调已经把门槛打下来了,小规模实验一块消费级显卡就能跑。真正的门槛从来不是算力,是有没有整理出高质量的领域数据。
下次再听到"我们把模型微调了一下",可以多问三句:用的什么数据、想解决什么任务、评测怎么做。这三个答案,基本能判断这轮微调靠不靠谱——而这也正是"调"这个字真正的含义:不是玄学,是带着明确目标的数据训练。