什么是监督微调(SFT)?它和预训练分别负责什么,两个阶段的训练数据形态有什么不一样?

模型微调

答案要点 SFT(Supervised Fine-Tuning,监督微调)= 用"指令-回答"成对数据,教预训练模型学会听懂并执行指令 分工:预训练学知识和语言能力(会说话),SFT 学对话格式和任务遵循(会好好回答) 数据形态迥异:预训练用海量无标注原始文本,SFT 用少量高质量的标注对话样本 训练目标同为预测下一个词,但 SFT 通常只对回答部分计算 loss SFT 是后训练(post-training)的第一步,后面还有 RLHF/DPO 等对齐环节 核心概念 SFT 是指在预训练好的基础模型上,用人工整理的"输入指令 → 期望回答"成对样本继续做监督训练,让模型学会按人类期望的方式回答问题。一个只经过预训练的基座模型(base model)本质是"续写机器":你问它"中国的首都是哪里?",它可能续写出"这是一道常见的地理题……"而不是直接回答——它只学过预测下一个词,没学过"该扮演助手"。SFT 补上的正是这一课。 预训练 vs SFT:分工与数据形态 | | 预训练 | SFT | |---|---|---| | 目标 | 学语言规律和世界知识 | 学会听指令、按格式回答 | | 数据 | 无标注原始文本(网页/书籍/代码) | 标注好的指令-回答对 | | 数据量 | 数万亿 token | 几千到几十万条 | | 成本 | 千卡集群、百万美元级 | 单机多卡甚至一张卡可做 | | 类比 | 读完整座图书馆 | 岗前培训学"怎么接待客户" | SFT 数据长什么样 一个关键细节:计算损失时通常只对 assistant 部分算 loss(用户输入被 mask 掉),因为要教的是"怎么答"而不是"怎么问"。另一个共识是质量远比数量重要:几千条精标数据往往胜过几十万条脏数据。 入门后可以继续追:SFT 之后的 RLHF/DPO 对齐、微调导致的灾难性遗忘,以及 LoRA 等参数高效微调方法。

口语版讲法(约2分钟)

  • 一句话定义:用指令-回答对教模型好好答题
  • 预训练留下的问题:基座模型只会续写
  • 比喻:读完图书馆 vs 岗前培训
  • 数据形态对比:海量生文本 vs 少量精标对话
  • 埋钩子:SFT 之后还有对齐,实操多用 LoRA

SFT 的一句话定义:在预训练好的模型上,用人工整理的"指令-回答"成对数据继续训练,教模型学会听指令、好好回答问题。全称是 Supervised Fine-Tuning,监督微调。 理解它的关键,是先看预训练留下了什么问题。预训练是让模型在海量无标注文本上做"预测下一个词",读遍网页、书籍、代码之后,模型有了知识、能说流利的话,但它本质上是个续写机器。你问基座模型"中国的首都是哪里?",它可能给你续写"这是小学地理常考题……",而不是直接回答"北京"——因为没人教过它"你现在是个助手,该回答问题"。SFT 补的就是这一课。我常用的比方是:预训练像让一个人读完整座图书馆,知识都有了;SFT 像岗前培训,教他见了客户该怎么说话、按什么格式汇报。 数据形态是两个阶段最大的区别。预训练的数据是原始文本,不需要标注,量级是数万亿 token;SFT 的数据是一条条"用户怎么问、助手该怎么答"的对话样本,要人工编写或严格筛选,量级小得多,几千到几十万条,但每一条的质量要求很高。业内有个共识:SFT 阶段质量远比数量重要,几千条精标数据经常打赢几十万条脏数据。训练目标其实还是预测下一个词,但有个细节值得说:通常只对回答部分计算 loss,用户输入那段会被 mask 掉,因为我们要教的是怎么答,不是怎么问。 最后我会主动补一句:SFT 只是后训练的第一步,它教会模型"会答",但"答得符合人类偏好、不输出有害内容"要靠后面的 RLHF 或 DPO 对齐。另外全量微调很吃显存,实际工作里大多用 LoRA 这类参数高效方法来做 SFT,这一块也可以展开。

关键一句:预训练出来的是只会续写的基座模型,SFT 用指令-回答对教它"扮演助手",且通常只对回答部分算 loss。

面试官可能的追问

  1. 【概念辨析】base 模型和 chat/instruct 模型有什么区别?为什么直接拿 base 模型问问题,它经常不好好回答而是往下续写?中间发生了什么训练?
  2. 【追问边界】如果我手上只有 2000 条业务问答数据,做 SFT 够吗?数据量和数据质量哪个更重要?微调完发现模型通用能力变差了,可能是什么原因?

同模块相关题目