什么是微调(SFT)-和预训练有什么区别- [intro-what-is-sft]
什么是微调(SFT)?和预训练有什么区别?
预训练学知识、SFT 学听话,一文分清分工与数据形态
原题:什么是监督微调(SFT)?它和预训练分别负责什么,两个阶段的训练数据形态有什么不一样?
模型微调
30 秒回答
- SFT(Supervised Fine-Tuning,监督微调)= 用"指令-回答"成对数据,教预训练模型学会听懂并执行指令
- 分工:预训练学知识和语言能力(会说话),SFT 学对话格式和任务遵循(会好好回答)
- 数据形态迥异:预训练用海量无标注原始文本,SFT 用少量高质量的标注对话样本
- 训练目标同为预测下一个词,但 SFT 通常只对回答部分计算 loss
回答与解析
答案要点
SFT(Supervised Fine-Tuning,监督微调)= 用"指令-回答"成对数据,教预训练模型学会听懂并执行指令
分工:预训练学知识和语言能力(会说话),SFT 学对话格式和任务遵循(会好好回答)
数据形态迥异:预训练用海量无标注原始文本,SFT 用少量高质量的标注对话样本
训练目标同为预测下一个词,但 SFT 通常只对回答部分计算 loss
SFT 是后训练(post-training)的第一步,后面还有 RLHF/DPO 等对齐环节
核心概念
SFT 是指在预训练好的基础模型上,用人工整理的"输入指令 → 期望回答"成对样本继续做监督训练,让模型学会按人类期望的方式回答问题。一个只经过预训练的基座模型(base model)本质是"续写机器":你问它"中国的首都是哪里?",它可能续写出"这是一道常见的地理题……"而不是直接回答——它只学过预测下一个词,没学过"该扮演助手"。SFT 补上的正是这一课。
预训练 vs SFT:分工与数据形态
| 预训练 | SFT | |
|---|---|---|
| 目标 | 学语言规律和世界知识 | 学会听指令、按格式回答 |
| 数据 | 无标注原始文本(网页/书籍/代码) | 标注好的指令-回答对 |
| 数据量 | 数万亿 token | 几千到几十万条 |
| 成本 | 千卡集群、百万美元级 | 单机多卡甚至一张卡可做 |
| 类比 | 读完整座图书馆 | 岗前培训学"怎么接待客户" |
SFT 数据长什么样
{"messages": [
{"role": "user", "content": "把这句话翻译成英文:今天天气不错"},
{"role": "assistant", "content": "The weather is nice today."}
]}
一个关键细节:计算损失时通常只对 assistant 部分算 loss(用户输入被 mask 掉),因为要教的是"怎么答"而不是"怎么问"。另一个共识是质量远比数量重要:几千条精标数据往往胜过几十万条脏数据。
入门后可以继续追:SFT 之后的 RLHF/DPO 对齐、微调导致的灾难性遗忘,以及 LoRA 等参数高效微调方法。
口语版讲法(约2分钟)
- SFT解决什么问题
- 预训练和SFT的分工与数据差异
- 业务落地中的关键取舍
- 延伸:对齐阶段
这道题其实在问我们怎么把一个只会续写的语言模型,调教成能听懂人话、好好回答的助手。预训练阶段,模型在互联网、书籍这些海量无标注文本里学语言规律和世界知识,它知道怎么把句子续写下去,但它不知道用户问'退款什么时候到'时应该直接回答,它可能接着写'这是一个常见问题,退款时间取决于支付方式'。SFT就是补上这一课,用人工标注的指令-回答对,教模型学会按人类期望的格式回答问题。
具体说一下分工。预训练负责'会说话',SFT负责'会好好回答'。数据形态差异非常大:预训练用的是原始文本,量级在数万亿token,成本高昂;SFT用的是成对的指令和回答,量级可能只有几千到几十万条,但质量要求极高。一个常见的错误是认为SFT数据越多越好,其实不然,几千条精标数据往往比几十万条脏数据效果更好。训练目标虽然都是预测下一个词,但SFT计算loss时通常只对assistant部分算,用户输入会被mask掉,因为我们只关心模型怎么答,不关心它怎么问。
落到业务场景里,比如客服退款场景,用户问'我买的商品还没发货,能退款吗',一个只经过预训练的模型可能续写出一段商品介绍,而经过SFT的模型会直接给出退款流程。但这里有个坑:如果SFT数据里全是标准问法,模型对用户的口语化表达就很容易翻车。所以我会特别关注数据多样性,比如把'退款'换成'退钱''不要了''取消订单'这些变体都覆盖到。
整体来看,我更倾向把SFT看成后训练的第一步,它解决的是指令遵循和对话格式问题,但模型可能还会产生幻觉或者输出不安全内容。所以SFT之后通常还要做RLHF或DPO这些对齐环节,进一步让模型符合人类偏好。
说到这,可以延伸一下:SFT之后的对齐阶段,比如RLHF,其实对数据质量的要求比SFT更高,因为它的reward模型需要大量人工偏好标注,而且容易训练不稳定。面试官如果追问,我会展开讲RLHF的reward hacking问题和DPO如何避免显式reward模型。
关键一句:SFT之后的对齐阶段对数据质量和训练稳定性要求更高
面试官还可能这样问
- 问法 1 · 概念辨析base 模型和 chat/instruct 模型有什么区别?为什么直接拿 base 模型问问题,它经常不好好回答而是往下续写?中间发生了什么训练?
- 问法 2 · 追问边界如果我手上只有 2000 条业务问答数据,做 SFT 够吗?数据量和数据质量哪个更重要?微调完发现模型通用能力变差了,可能是什么原因?