跳到主要内容

如何做大模型微调?

面试速答(30 秒版 TL;DR)

  • 大模型微调的本质,是用任务数据继续训练模型,让模型在某类任务上的输出分布更稳定,而不是“把知识塞进去”。
  • 正确顺序通常不是“先微调”,而是先做基线评估,再判断问题到底属于 Prompt、RAG、工具链,还是模型行为本身。
  • 真正适合微调的场景,通常是:任务长期稳定、输入输出模式固定、对格式一致性或领域风格有持续要求。
  • 一条靠谱流程一般包括:定义目标与指标、准备评测集、构建训练集、选择方案、训练、离线评估、灰度上线、持续回流数据。
  • 工程上最常见的落地路线不是全量训练,而是 SFT + LoRA/QLoRA + 严格评估

先把一个误区打掉:微调不是“喂资料”

很多人说“我把公司文档给模型学一下,就是微调”。这句话在大多数工程场景里是错的。

更准确的区分是:

  • RAG 解决的是“回答时看什么资料”
  • 微调 解决的是“模型以什么方式回答”

所以如果你的核心问题是:

  • 知识经常变化
  • 回答必须引用最新制度或数据库
  • 需要按租户、按权限查实时信息

优先方向通常不是微调,而是检索、工具调用、知识库治理。

反过来,如果你的核心问题是:

  • 输出格式总不稳
  • 特定领域术语老是跑偏
  • 某类分类/抽取任务波动很大
  • 你想让小模型承接固定任务

那微调才真正进入候选名单。

一句最适合面试的总结:

  • 微调改的是模型参数里的行为偏好,RAG 改的是推理时可用的上下文。

什么情况下值得做微调

1. 任务边界稳定,且会长期重复

例如:

  • 客服工单分类
  • 合同字段抽取
  • 医疗问诊摘要结构化
  • 电商商品属性补全
  • 固定模板报告生成

这类任务有一个共同点:输入形态相对稳定,目标输出也比较明确。只要样本质量足够,微调通常能把“偶尔答对”拉成“整体更稳”。

2. 你要的是“稳定性”,不是“新知识”

微调特别适合改善这些问题:

  • JSON 总是少字段
  • 标签分类边界不一致
  • 术语、语气、格式不统一
  • 多轮指令里经常漏约束

这些都更像“行为习惯问题”,而不是“知识缺失问题”。

3. 你希望把任务下沉给更小模型

这是很多团队真正做微调的原因。

不是因为基础大模型不够强,而是因为:

  • 大模型太贵
  • 延迟太高
  • 并发成本太重
  • 某个任务其实不需要通用智能

这时常见思路是:

  • 用强模型先产出高质量样本和评测标准
  • 再用这些数据去微调较小模型
  • 用更低成本承接高频固定任务

什么情况下不要急着做微调

1. 连基线都没跑清楚

如果你还不知道:

  • 当前 Prompt 的最好成绩是多少
  • 加 few-shot 后能提升多少
  • 接 RAG 后是否已经足够
  • 失败样本主要集中在哪些类型

那直接上微调,基本等于盲试。

2. 问题本质上是数据链路问题

例如:

  • 检索召回错了
  • 文档切块不合理
  • 工具返回结构不稳定
  • 上下文塞得太长导致关键信息被淹没

这类问题即使微调,也只是把系统缺陷往模型里硬压,成本高、收益还不稳定。

3. 样本太少,且质量不可控

微调不是魔法。样本如果:

  • 标注口径不一致
  • 输出风格互相冲突
  • 充满脏数据和重复样本
  • 覆盖不到边界场景

那训练出来的模型通常只会更稳定地犯错。


大模型微调的标准流程怎么讲

上面这条链路里,最容易被忽略但最关键的步骤有两个:

  • 先做评测集
  • 先分类型看失败样本

因为训练从来不是第一步,评估才是第一步。


每一步到底在做什么

1. 定义目标,不要把“效果更好”当目标

目标必须可操作。常见写法应该像这样:

  • 分类准确率从 82% 提升到 90%
  • JSON 合法率从 88% 提升到 98%
  • 医学摘要关键字段召回率提升 10%
  • 平均 token 成本下降 40%

面试里可以直接说:

  • 微调目标要同时包含效果指标和成本指标,否则无法判断上线价值。

2. 先做评测集,再收训练集

评测集和训练集不能混在一起。

评测集的作用是:

  • 作为基线比较标准
  • 判断新模型是否真的提升
  • 避免“训练集背熟了,看起来像提升”

一个合格评测集至少应覆盖:

  • 常规样本
  • 难样本
  • 低频边界样本
  • 易混淆类别
  • 线上真实失败样本

3. 构建训练集,核心是口径统一

训练数据常见来源包括:

  • 人工标注数据
  • 业务历史优质样本
  • 专家修订后的答案
  • 强模型蒸馏出的高质量结果

但来源不是关键,关键是:

  • 标签定义清晰
  • 输出模板统一
  • 错误样本被纠偏
  • 数据去重做过
  • 分布接近真实线上场景

一个很典型的坑是:

  • 训练集 70% 都是简单样本,导致模型在离线平均分不错,但上线一碰到复杂样本就掉得很厉害。

4. 选技术路线,先选简单有效的

工程里最常见的是以下几类:

路线适用场景面试口径
SFT分类、抽取、固定风格生成最基础、最常用的监督微调
LoRA / QLoRA开源模型低成本训练参数高效,显存和成本更友好
偏好优化“没有唯一正确答案,但可比较优劣”的任务更适合质量偏好对齐,不适合一上来就做

大部分面试场景下,一个很稳的回答是:

  • 第一阶段通常先做 SFT;如果是开源模型落地,常配合 LoRA/QLoRA 控制训练成本。

5. 训练时别只盯 loss

训练 loss 下降,不等于业务效果真的变好。

工程上更应该同步观察:

  • 评测集准确率
  • 结构化输出合法率
  • 关键字段召回率
  • 幻觉率/越权率
  • 推理时延与 token 成本

因为你最终上线的是“系统效果”,不是一条训练曲线。

6. 上线要灰度,不要全量替换

离线评估通过,只代表“值得继续试”,不代表“可以全量上”。

更稳的流程通常是:

  • 小流量灰度
  • 与旧版本或基线方案 A/B 对比
  • 重点观察真实失败样本
  • 确认没有明显回归后再放量

微调的数据怎么准备,才算工程上靠谱

1. 数据量不是第一位,样本质量才是

很多任务不是“越多越好”,而是“先把坏样本拿掉”。

优先检查这些问题:

  • 同一输入对应多个冲突答案
  • 标注人之间标准不一致
  • 模型生成样本没经过人工筛查
  • 大量重复样本拉高了表面指标

2. 样本分布要像真实线上请求

如果线上请求是:

  • 80% 常规单轮任务
  • 15% 缺字段脏输入
  • 5% 极端复杂样本

那训练和评测至少要能映射这种结构。否则训练出来的模型,只会在“实验室世界”里表现很好。

3. 边界样本要刻意补

真正决定系统下限的,经常不是普通样本,而是这些:

  • 多意图输入
  • 模糊表达
  • 专业缩写
  • 长上下文噪声
  • 冲突信息
  • 不完整输入

面试时这句话很好用:

  • 普通样本决定平均分,边界样本决定你上线后会不会翻车。

微调和 Prompt、RAG、工作流的关系怎么答

这是高频追问。

一个成熟回答不是四选一,而是分层处理:

问题类型优先方案
知识不新、不全、不可追溯RAG / 工具调用
输出格式不稳、风格不一致Prompt + SFT
复杂任务要拆步骤、加检查、调工具Workflow / Agent
想让更小模型更稳地承接固定任务微调

更工程化的说法是:

  • Prompt 决定短期指令约束
  • RAG 决定回答时能看到什么证据
  • 工作流决定系统如何执行
  • 微调决定模型长期行为偏好

所以微调很少单独存在,它往往是整个系统优化链条里的其中一环。


面试里的标准答法

问:如何做大模型微调?

可以这样答:

  1. 先判断问题是不是适合微调,区分它到底是知识问题、流程问题,还是模型行为稳定性问题。
  2. 给任务建立基线和评测集,明确指标,例如准确率、格式合法率、召回率和成本。
  3. 收集并清洗高质量训练数据,保证标签和输出口径统一,同时覆盖边界样本。
  4. 先用监督微调做第一轮验证;如果是开源模型落地,常用 LoRA 或 QLoRA 控制训练成本。
  5. 训练后做离线评估,再灰度上线观察真实收益,最后把线上失败样本持续回流,形成闭环。

如果要再压缩成一句话:

  • 做大模型微调,重点不是“怎么训”,而是“先证明这事值得训,再用高质量数据把模型训对”。

问:微调最大的难点是什么?

标准答法:

  • 最大难点通常不是训练命令,而是数据集口径、评测标准和线上闭环。没有这三样,微调很容易做成不可复现的玄学优化。

问:为什么很多微调项目效果不稳定?

标准答法:

  • 常见原因包括:任务不适合微调、训练数据质量差、评测集不独立、边界样本覆盖不够,以及只看训练指标不看线上业务指标。

常见误区

  • 误区一:把微调当成“补知识库”。
  • 误区二:Prompt 都没打磨好,就直接开始训练。
  • 误区三:没有独立评测集,只看训练 loss。
  • 误区四:上线直接全量替换,不做灰度验证。
  • 误区五:只看平均准确率,不看边界样本和真实业务成本。

易错点 / 坑

  • 数据清洗不彻底,导致模型学到互相冲突的口径。
  • 训练集和评测集重叠,离线结果虚高。
  • 只优化效果,不看推理成本,最后商业上不成立。
  • 把所有失败问题都归因给模型,忽略检索、工具和工作流缺陷。
  • 没有做失败样本回流,导致模型版本迭代越来越盲。

速记要点

  • 微调优先解决的是 行为稳定性问题,不是 实时知识问题
  • 顺序要对:先评估,再训练;先分问题,再选方案
  • 工程常用路线:SFT + LoRA/QLoRA + 独立评测集 + 灰度上线
  • 数据质量、边界覆盖、线上闭环,通常比训练技巧更重要。
  • 真正成熟的微调项目,目标一定同时包含 效果、成本、稳定性