监督微调 SFT 与指令微调

SFT(Supervised Fine-Tuning,监督微调)用标注的输入—输出对继续优化因果语言模型的下一 token 预测。指令微调(instruction tuning)是 SFT 在「多轮对话 / system+user+assistant」形态下的实践,二者在目标函数上同源,差异主要在数据形态与模板

段末注释:Teacher forcing 指训练时用标准答案 token 作为下一步输入,而非模型自身生成;SFT 默认采用此方式计算 loss。

系列索引:微调技术路线导读 | 工具实操:03 SFTTrainer


一、SFT 在后训练中的角色

1
2
3
[CPT 可选] → SFT → [对齐 可选] → 评估

学会:格式、任务映射、基础能力
  • 不做 SFT 直接 DPO:基座常不会稳定遵循 chat 格式,对齐难收敛。
  • SFT 足够的情况:窄分类、固定 JSON、单轮 QA(见 05-01 选型速查)。

二、优化目标

对 token 序列 (x=(x_1,\ldots,x_T)),Causal LM 最大化:

$$
\mathcal{L}{\mathrm{SFT}} = -\sum{t \in \mathcal{M}} \log p_\theta(x_t \mid x_{<t})
$$

其中 (\mathcal{M}) 为参与 loss 的 token 位置集合(掩码决定)。

数据形态 (\mathcal{M})
text / CPT 全序列(除 padding)
prompt-completion 仅 completion / assistant
messages + assistant_only 仅 assistant 轮

详见 01-0103 §五 loss 掩码


三、指令微调 vs 任务微调

指令微调 任务微调(窄)
数据 多任务混合、对话多样 单一任务、固定 system
目标 泛化指令跟随 单一指标最优
system 常统一或按任务变 常固定一句
评估 抽检 + 多指标 F1/EM/pass@k 为主

同一套 SFTTrainer;差别在数据集构造评估04 系列)。


四、与 CPT、对齐的边界

阶段 学什么 数据
CPT 领域共现、术语 无标注 text
SFT 输入→输出映射、格式 标注对
DPO/GRPO 偏好、可验证行为 chosen/rejected 或 reward

05-02 CPT → 本篇 SFT → 05-01 对齐


五、工程 checklist

# 文档
1 prompt-completion 格式 01-01
2 数据清洗 01-02
3 LoRA / QLoRA 02-01 / 02-02
4 SFTTrainer 参数 03
5 微调前基线 08-01
6 任务指标 04 系列

六、常见踩坑

现象 原因 对策
背 user 输入 未开 completion_only_loss SFTConfig(completion_only_loss=True)
过拟合小集 epoch 过多 1–3 epoch;早停看 eval_loss
通用能力下降 lr 过大 / 全参猛训 LoRA;降 lr;混通用数据
loss↓ F1 不涨 评估未用 generate 统一推理脚本

七、本篇 vs 03 工具篇

本篇(05-03) 03 SFTTrainer
概念、目标、阶段边界 API、SFTConfig、代码示例
何时 SFT、与 CPT/对齐关系 packing、Unsloth、踩坑表

八、小结

SFT = 标注序列上的 CE;指令微调 = 对话模板 + assistant 段掩码。默认路径:清洗数据 → LoRA → SFTTrainer → 基线对比 → 任务指标验收。

下一步:05-04 全参 vs PEFTAMD 实战

-------------本文结束感谢您的阅读-------------