什么是 指令微调(Instruction Tuning)?

指令微调(Instruction Tuning)是一种监督微调方法,它在由指令表达的任务和目标回答上继续训练预训练模型,目标是改善指令遵循和跨任务族迁移能力。

快速了解

规范文档官方规范

工作原理

指令微调是监督微调的一种具体用途,虽然部分论文会把两者作为同义词。SFT 还包括不以自然语言指令表达的有标注任务;偏好优化则从回答比较、奖励或评分器学习,而不是拟合单个参考回答。对因果语言模型,常见目标是在 Target Mask 选中的 Token 上最小化负对数似然:对所有 t∈M 累加 -log p(y_t | x, y_<t)。选择全序列、只计算 Completion 或只计算 Assistant 回答的 Loss,会改变训练信号,必须显式记录。对话样本还要经过 Chat Template 序列化,因此模板 Revision、角色边界、Special Token、Generation Mask、EOS 行为和截断策略都属于模型身份。生产数据还需记录来源与许可、PII 处理、去重、任务/语言切片、不可变 Split、合成数据 Teacher Revision 和污染检查。发布评测必须覆盖未见任务族、Schema 合规、多语言与领域表现、安全、拒答与过度拒答、通用能力回归、训练/推理模板一致性及真实服务制品。

主要特点

  • 使用监督式指令、上下文和目标回答,而不是偏好对或单一奖励分数
  • 目标是改善跨任务族指令遵循,不只是记住训练集中出现过的 Prompt
  • 把全序列、Completion-only 或 Assistant-only Token Loss 作为显式版本化策略
  • 要求训练与推理复用相同 Tokenizer、Chat Template、角色标记、Special Token 和 EOS 行为
  • 追踪人工或合成回答的来源、许可、PII 策略、去重、不可变切分和污染报告
  • 评测未见任务族、格式约束、安全、过度拒答、能力回归和服务模板一致性

常见用途

  1. 把基础语言模型训练成可遵循多样自然语言任务的助手
  2. 教授抽取、分类、改写、摘要、工具调用或结构化输出行为
  3. 把指令遵循适配到特定语言、领域、策略或产品交互契约
  4. 为 DPO、RLHF 或其他偏好阶段建立监督 Checkpoint 与对照基线
  5. 验证任务混合与模板变化能否改善刻意留出的未见任务族

示例

loading...
Loading code...

常见问题

指令微调和 SFT 是一回事吗?

不总是。指令微调属于 SFT,其样本用指令和目标回答表达任务,通常覆盖多个任务族;SFT 范围更广,也可以训练固定分类器、续写任务或其他不以指令遵循为目标的有标注映射。部分论文会混用名称,因此训练记录应明确数据格式、目标函数和预期行为,不能只依赖方法标签。

指令微调应该只对 Assistant 回答计算 Loss 吗?

这是设计选择,不是通用规则。Completion-only 或 Assistant-only Mask 让梯度聚焦目标回答;全序列 Loss 还会训练 Prompt 和角色 Token。应根据数据格式与目标选择,检查实际生成的 Label,记录 Mask 策略,并比较留出集表现。当前 TRL 的 Assistant-only Loss 还要求 Chat Template 能返回正确 Generation Mask。

为什么训练和推理必须使用同一 Chat Template?

Chat Template 会把角色和内容转换为因果语言模型实际看到的控制 Token。角色标记、轮次边界、Special Token、EOS 或 Generation Prompt 任一变化,都会改变输入序列。模板错位可能让模型续写用户消息、无法停止或质量下降,因此必须把模板与制品共同版本化,并验证真实服务路径。

合成指令数据可以安全用于训练吗?

可以,但必须具备来源与验证。记录 Teacher Model 和 Prompt Revision、采样与过滤策略、许可、PII 处理和去重结果;评测数据应独立于 Teacher 生成过程,并审查相关性错误、风格坍缩和人工复核切片。数据量大本身不能证明答案正确、任务多样或许可兼容。

指令微调能保证安全或零样本泛化吗?

不能。FLAN 与 T0 的提升来自特定模型、任务混合、Prompt 和留出基准,不能外推为普遍保证。指令遵循训练还可能增强不安全服从或造成过度拒答。发布前应评测未见任务族、对抗与策略样本、多语言和领域切片、格式约束、数据污染及通用能力回归。

相关术语

相关文章