什么是 监督微调(SFT)?
监督微调(SFT)是一种微调方法,它在带标签的输入与目标样本上继续训练预训练模型,通过最大化指定目标 Token 的似然来调整模型行为。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
SFT 描述的是监督训练目标,不是固定的后训练流水线或参数更新方法。Fine-tuning 是上位概念;Instruction Tuning 是面向跨任务指令遵循的常见 SFT 用途,而 SFT 还可覆盖带标签的续写、分类、抽取、工具使用、多模态和其他目标映射。
对因果语言模型,常见目标是在 Target Mask 选中的位置最小化 Token 级负对数似然:对所有 t∈M 累加 -log p(y_t | input, y_<t),训练时使用真实的历史目标 Token。Target Mask 属于实验身份:全序列、Completion-only 与 Assistant-only Loss 优化不同位置,Assistant-only 并非普遍正确。Attention Mask 控制哪些 Token 参与注意力,Loss Mask 则控制哪些位置的预测进入目标函数,两者不能混用。
一次训练还必须绑定基座模型、参数更新策略、Tokenizer/Processor、Chat Template、Special Token、截断与 Packing 策略、不可变数据切分、标签来源和合成 Teacher 身份。训练或验证 Loss 下降不能证明任务质量、事实正确、安全、通用能力保留或服务一致。
发布证据应让候选制品与 Prompt-only、基座模型 Baseline 比较,并覆盖留出任务、格式、语言、领域、安全、拒答、能力回归、延迟和真实服务路径。SFT 可以学习数据中出现的行为,但不能保证知识新鲜、偏好对齐、权限正确或工具调用安全。
主要特点
- 使用 Token 级或任务专属监督 Loss 优化带标签目标,而不是成对偏好或标量奖励
- 将监督目标与参数更新策略分离,后者可以是全参数、选择性更新或 PEFT
- 显式记录全序列、Completion-only 或 Assistant-only Loss Mask,并与 Attention Mask 区分
- 把 Tokenizer/Processor、Chat Template、Special Token、截断、Packing 和标签构造纳入训练身份
- 要求记录数据许可、去重、不可变 Split、标签来源、污染检查与任务混合比例
- 评测留出行为、能力回归、安全、服务一致性、资源消耗和回滚准备度
常见用途
- 训练模型遵守稳定的抽取、分类、转换或结构化输出契约
- 从经过审查的示范中学习指令遵循、对话、工具使用或多模态行为
- 适配回答风格与领域工作流,同时单独评估事实知识
- 先建立监督 Baseline,再判断偏好优化是否带来可测量增益
- 修正经过可维护 Prompt 或 RAG Baseline 后仍反复出现的不可靠行为
示例
Loading code...常见问题
SFT、Fine-tuning 和 Instruction Tuning 有什么区别?
Fine-tuning 是从预训练 Checkpoint 继续优化的上位过程;SFT 明确使用监督式输入、目标标签和目标函数;Instruction Tuning 则是用指令与期望回答表达任务、通常追求跨任务指令遵循的 SFT 形式。SFT 还可覆盖不以广泛指令遵循为目标的带标签续写、分类、抽取、工具使用或多模态映射。
SFT 是否总应只对 Assistant 回答计算 Loss?
不是。全序列、Completion-only 和 Assistant-only 是不同策略。当前 TRL 的默认行为取决于数据格式,Assistant-only Loss 还要求对话模板能生成兼容的 Generation Mask。应根据目标行为选择 Mask,检查实际 Labels 和非 Mask Token 数量,固定策略版本,并用留出结果比较,不能把单一设置当作普遍规则。
SFT 需要多少训练数据?
不存在可移植的固定样本数。需求取决于任务多样性、标签质量与分歧、目标行为、基座模型、Tokenizer、序列长度分布、合成数据相关错误和可接受错误率。应使用不可变 Split 绘制学习曲线,检查各切片失败与近重复,再根据可靠的留出集增益决定是否增加数据。
SFT Loss 降低是否说明模型可以上线?
不能。Loss 只衡量 Mask 选中标签的拟合程度,即使模型过拟合、记住污染样本、损害通用能力或在服务 Chat Template 下失败,它仍可能下降。发布门禁应让候选模型与基座及 Prompt-only Baseline 比较,并覆盖留出任务、格式、语言、领域、安全、拒答、能力回归、延迟和真实服务制品。
什么时候应选择 SFT,而不是 Prompt、RAG 或偏好优化?
先建立可测量的 Prompt 与 RAG Baseline。当经过审查的示范需要把稳定任务行为或输出模式写入模型权重时,再使用 SFT;需要当前且可归因的知识时优先用 RAG;多个合理答案之间的相对偏好才适合偏好方法。这些方法可以组合,但 SFT 本身不能保证知识新鲜、符合人类偏好、安全或工具权限正确。