Instruction Tuning 和普通 SFT 有什么区别?
简化版
SFT 是一种训练方式:用输入—目标输出对做监督学习,最小化目标 Token 的交叉熵。Instruction Tuning 通常是 SFT 的一种应用形式,数据由多任务自然语言指令、可选输入和理想回答组成,目标是让模型理解并执行未见指令。
因此两者不是并列算法。只在单一领域对固定问答做 SFT,未必具备广泛指令泛化;高质量 Instruction Tuning 强调任务多样性、指令改写、格式与安全边界。两者都不等于偏好对齐,后者还可能使用 DPO/RLHF。
可以记成:SFT 说明“怎么训练”,Instruction Tuning 说明“用什么任务结构和数据目标训练”。
详细版
Decoder-only SFT 常用目标:
L_SFT = - Σ_t m_t log pθ(y_t | system, instruction, input, y_<t)
m_t 是 Loss Mask,通常只监督 Assistant 输出。Instruction Tuning 仍使用这一目标,但训练集包含多种任务、自然语言指令和示例,使模型学习从指令到行为的映射。
| 维度 | 普通/广义 SFT | Instruction Tuning |
|---|---|---|
| 定义 | 监督训练方法 | 面向指令遵循的 SFT 数据范式 |
| 数据 | 任意输入—标签 | 指令、上下文、回答、多任务 |
| 目标 | 拟合目标输出 | 泛化执行自然语言任务 |
| 示例 | 分类、摘要、领域问答 | 多任务助手、零样本指令 |
| 不包含 | 不自动等于偏好优化 | 同样不自动等于 RLHF/DPO |
完整版教学
1. 为什么这两个概念经常混用
现代聊天模型的 SFT 数据大多以指令形式组织,所以工程语境中常把“SFT 阶段”和“Instruction Tuning”互换使用。
严格来说,前者是优化范式,后者强调数据和能力目标,是包含关系而非互斥选择。
面试回答时可先确定讨论层级:问训练算法,就说明 Instruction Tuning 通常仍使用监督交叉熵;问数据形态,就强调自然语言指令、输入和期望响应;问目标,则是提升模型遵循未见指令的泛化能力。
2. 广义 SFT 可以训练什么
分类模型、翻译、代码补全、对话、工具调用都可用监督数据微调。标签既可以是类别,也可以是长文本序列。
SFT 本身不要求输入是一句自然语言指令,更不保证模型能理解未见任务描述。
3. Instruction Tuning 数据长什么样
典型样本包含任务指令、可选上下文、示例和目标回答:
instruction: "根据材料提取三个风险点,以 JSON 返回"
input: "...材料..."
output: '{"risks": [...]}'
Chat 模型还会加入 System、User、Assistant 和 Tool 角色。
4. 多任务多样性为何重要
如果所有样本都要求摘要,模型只学会摘要模式;覆盖问答、抽取、推理、转换、拒答和工具任务,才可能学习更抽象的“遵循指令”。
指令数量不是任务多样性;同一个模板替换一万个实体,仍可能只有一个任务模式。
应按任务簇、技能和输出形式统计覆盖。
5. 指令改写的作用与风险
同一任务使用多种自然表达可提高措辞鲁棒性,减少对固定关键词依赖。但模型自动改写可能改变约束或泄露答案。
保留结构化不变量并做语义验证,改写样本按模板簇切分,避免验证泄漏。
6. Loss Mask 如何设置
通常只对 Assistant 目标 Token 计算 Loss,System/User 作为条件。工具调用 Token 和结束 Token是否监督取决于协议。
| Token 区域 | 常见 Loss | 原因 |
|---|---|---|
| System/User | Mask | 不训练模型复述输入 |
| Assistant 正文 | 计 Loss | 学目标行为 |
| Tool Call | 计 Loss | 学结构化调用 |
| Tool Result | 多数 Mask | 结果来自外部工具 |
| End Token | 计 Loss | 学会正确停止 |
必须逐 Token 可视化验证。
7. Instruction Tuning 与 Continued Pretraining
继续预训练使用领域原始文本做下一 Token 预测,主要适配知识、语言和分布;Instruction Tuning 用有目标答案的任务数据学习交互行为。
领域项目可先继续预训练,再做 Instruction SFT,但增加成本且需防遗忘。
选择顺序取决于差距来源:模型“不懂领域语言和知识”时,继续预训练更对症;模型“懂内容但不会按要求回答”时,优先做 Instruction SFT。两阶段都做时,要保留通用数据并分别设置验证集,避免把行为问题误判为知识问题。
8. 与偏好对齐有什么关系
SFT 给出一个目标答案,要求模型模仿;DPO/RLHF 使用优劣比较或奖励,优化多个合理答案之间的偏好。
Instruction SFT 常是偏好对齐前的基础,但它不自动校准帮助性、安全与风格权衡。
例如两个答案都事实正确,一个更简洁、另一个更安全,单一参考答案只能告诉模型模仿哪一个,不能稳定表达这种相对偏好。偏好优化用成对选择或奖励信号补充这一层,但仍依赖 SFT 提供可用的初始策略。
9. 为什么混合质量比数量更重要
矛盾指令、错误答案和不一致格式会直接形成监督噪声。多任务数据还会有规模差异,大任务可能淹没小而关键任务。
使用任务级采样权重、去重和质量门禁,并记录实际训练 Token 占比。
10. 如何评估指令泛化
验证集按任务模板和来源分组留出,包含训练未见的措辞、实体和任务组合。只在训练同模板上测高分不能证明 Instruction Following。
评估约束遵循、格式、正确性、拒答边界和多轮稳定性,并与基座/Few-shot 基线比较。
11. 单任务 SFT 何时更合适
任务稳定、边界明确、输出固定且部署成本敏感时,专用 SFT 小模型可能比通用指令模型更高效。
不需要为了“更通用”混入大量无关任务,关键是保留必要的通用与安全能力。
典型例子是离线票据抽取、固定 Schema 分类或设备端命令解析:输入分布可控,成功标准能够自动校验,开放式泛化反而不是核心目标。此时应把容量用于目标任务,同时用少量回放数据和拒答样本守住基本边界。
12. 数据配比如何影响能力
可以按任务温度采样,降低超大数据集的支配:
p_i ∝ n_i^α, 0 < α < 1
α=1 按原始规模,较小 α 提升小任务占比。应在目标与通用 Pareto 上选择。
13. 常见误区与追问
- 误区:Instruction Tuning 与 SFT 是两种互斥算法。 前者通常是后者的一种数据/目标形式。
- 误区:数据写成问答格式就有指令泛化。 需要任务与表达多样性和未见模板评测。
- 误区:Instruction Tuning 等于 RLHF。 SFT 模仿目标答案,偏好优化使用比较或奖励信号。
- 误区:任务越多越好。 低质、冲突和无关任务会产生负迁移。
- 误区:System/User 不计 Loss 就可以随意处理。 它们决定条件分布和角色协议。
- 追问:领域项目先 CPT 还是 SFT? 知识和语言分布差异大可先 CPT,行为任务可直接 SFT,需用实验验证。
- 追问:如何证明泛化到新指令? 按模板/任务簇留出,并测试未见措辞与组合。
14. 加强记忆
- SFT 是训练方法,Instruction Tuning 是面向指令遵循的数据范式。
- 多任务、多表达、多输出形式才支持指令泛化。
- Loss 通常监督 Assistant,不代表输入协议不重要。
- SFT 不等于偏好对齐,也不同于领域继续预训练。
- 验证要留出模板和任务簇,不能只测同分布复现。