很多人把微调当成万能钥匙:效果不好就想着再训一轮。实际卡住你的往往不是训练脚本,而是数据质量、任务与基座的匹配度、评测口径这些前置条件;算力和显存反而是最容易预估的一环。这篇按「先判断要不要调、再看哪些因素真正决定成败、最后认清局限」的顺序梳理,给一套动手前的自查路径。
很多人把微调当成万能钥匙:效果不好就想着再训一轮。实际卡住你的往往不是训练脚本,而是数据质量、任务与基座的匹配度、评测口径这些前置条件;算力和显存反而是最容易预估的一环。先把「该不该调」判断清楚,再谈怎么调,能省下大量无效实验。
下面按「先判断要不要调、再看哪些因素真正决定成败、最后认清局限」的顺序梳理,给一套动手前的自查路径。全文只讲判断标准和可执行动作,具体价格、跑分、模型版本这些会变的数字,一律到站内对应页面核对当时的数值。
先判断:什么情况下微调根本不该做
先分清你的任务是「补知识」还是「改行为」。需要模型知道它训练时没见过的新事实、内部文档、时效信息,这属于补知识,优先走检索增强,把资料喂进上下文比再训一轮靠谱得多;需要模型换一种输出风格、固定格式、遵守某套话术,这才是微调的主场。判断顺序上先问自己:把要求写进提示词,能不能稳定复现目标效果?能,就先别训。
- 任务本质是补知识还是改行为:补知识优先检索增强,改行为才轮到微调,可对照 /stacks/fine-tuning 里的服务商定位判断谁擅长哪类
- 提示词能稳定复现的效果,微调通常只是把推理成本换成训练成本,先看 /models 里同族基座的能力边界还剩多少空间
- 样本量撑不起来的场景(长尾垂类、内部术语多但标注少),先做数据积累和标注规范,而不是先开训
- 把微调当成纠正幻觉的手段往往白费:幻觉和知识截止是两回事,别混着治,该补检索就补检索
决定成败的第一变量:数据而不是超参
调参能带来的改善通常有限,真正拉开差距的是数据。同一份脚本换一批样本,结果可能天差地别;反过来,样本没整理好,再怎么调学习率也是在噪声上做优化。动手前先把数据当成一个独立项目来审:覆盖了哪些分支、标注口径一致不一致、字段格式跟线上输入对不对得上。
| 检查项 | 合格的样子 | 常见坑 |
|---|---|---|
| 覆盖度 | 任务里会出现的分支、格式、边界情况,样本里都有对应示例 | 缺哪类样本,线上就退化到哪类 |
| 一致性 | 同一问题的标注口径统一,换人标结果也接近 | 两种口径混标,模型学到模糊输出 |
| 格式对齐 | 字段顺序、截断方式、拼接模板与线上推理一致 | 训练和推理输入长得不一样,训完对不上 |
| 边界样本 | 该拒答、该追问、该说不知道的情况有专门样本 | 缺这类样本,模型遇到敏感问题会硬答 |
清洗往往比加量重要。把同一问题的矛盾标注挑出来,比再标几百条新样本更能提升效果。负样本和拒答样本要不要放,取决于你的合规边界:涉及对外服务、敏感话题的场景,缺了这类样本模型会一路硬答到底。
任务与基座、训练方式的匹配
基座规模和任务复杂度的匹配度决定了上限。基座本身理解不了的任务,微调只能让它逼近、不能让它突破,这时候换更合适的基座比反复训更有效。训练方式也一样:行为风格类改动、数据量中等的场景,参数高效微调往往够用;涉及全新输出格式或语言习惯时,再考虑更重的方案。
- 第一步:定基线拿未微调的基座在同一套题上跑一遍,记录结果,作为后续所有对比的参照。
- 第二步:对齐目标确认训练目标与评测目标同向——训练用生成式、评测用选择题打分,结论会失真。
- 第三步:小步验证先用少量高质量样本训一版,看留出集有没有改善,再决定是否加量加重。
- 第四步:防止覆盖多轮连续微调容易覆盖上一轮学到的行为,每次迭代都留一份旧版权重做对照。
认清局限:微调治不了什么,以及怎么验证
微调无法可靠地引入训练分布外的新事实,也无法保证事实性。事实类需求仍然要靠检索加校验,指望微调把模型变成不会错的百科是方向性错误。另一个常见误判是把过拟合当成「还没训够」:训练集表现一路走高但留出集停滞甚至下滑,这时候该停下来看数据,而不是加轮次。
- 评测固定同一套题、同一套打分口径,跨版本比较前先去 /benchmarks/registry 确认口径是否一致
- 每次改动只动一个变量,否则分不清是数据、基座还是训练方式带来的变化
- 上线前留回退路径:新旧权重并存,按灰度放量,出现退化能切回去
- 把「不适用的情形」写进评测说明:换领域、换语言、换输入长度后结论不一定成立
微调改的是模型的倾向和表达,改不了它不知道的事实,也改不掉你没标清楚的口径。下一步动手前先到站内微调服务商页面对照各家定位与计费方式,再回来看自己的任务到底属于补知识还是改行为,判断会更稳。→
常见问题
微调效果不好,先调学习率还是先看数据?
先看数据。学习率、轮次这类超参影响的是收敛速度和稳定性,量级不对确实会训坏,但绝大多数「训完没变好」的情况是样本覆盖不全、标注口径不一致或格式与推理输入对不上。先把留出集上的错例逐条归因,再决定是否动超参。
小团队数据只有几百条,还有必要微调吗?
看任务。如果是统一的输出格式、固定的语气或结构化抽取,几百条高质量样本可能就够;如果是要模型掌握一套内部知识体系,这个量级通常不够,建议先用检索增强把知识补上,微调只用来约束输出形式。判断依据可以去 /models/deploy 看你的实际场景测算。
微调之后模型会不会变笨、通用能力下降?
会,这叫灾难性遗忘,训练数据越窄、训练越重越明显。做法是混入一定比例的通用样本,控制训练强度,并且在留出集上同时测目标任务和通用任务两组指标。如果通用能力掉得明显,说明训练过重或数据分布太偏。