先说结论
指令调优让模型学会「听从指令执行任务」,对话调优进一步让模型能在多轮对话中持续交互。
为什么我会单独记这一篇
预训练模型只能「续写文本」,不能「回答问题」。指令调优弥合了「续写」和「执行指令」之间的差距,对话调优进一步让模型能维护上下文进行多轮对话。
先把核心脉络捋清楚
指令调优数据格式(Alpaca 格式)
{
"instruction": "将以下英文句子翻译为中文。",
"input": "The weather is beautiful today.",
"output": "今天天气真好。"
}
对话调优数据格式(ChatML / OpenAI 格式)
{
"messages": [
{"role": "system", "content": "你是一个有帮助的AI助手。"},
{"role": "user", "content": "什么是量子计算?"},
{"role": "assistant", "content": "量子计算是利用量子力学原理..."},
{"role": "user", "content": "能再简单解释一下吗?"},
{"role": "assistant", "content": "好的!可以把它想象成..."}
]
}
各模型的特殊 Token
| 模型 | 格式 |
|---|---|
| Llama 3 | <|begin_of_text|><|start_header_id|>system<|end_header_id|>... |
| Qwen 2 | <|im_start|>system\n...<|im_end|> |
| ChatGLM | [Round 1]\n\nHuman: ...\n\nAssistant: ... |
| Mistral | [INST] ... [/INST] |
HuggingFace 的 tokenizer.apply_chat_template() 统一了这些差异。
原理拆开看
指令调优 = 单轮任务执行,每条数据独立 对话调优 = 多轮上下文维护,需要处理指代消解、话题管理
Loss 计算策略:
- System 消息:不计算 loss
- User 消息:不计算 loss
- Assistant 消息:计算 loss
与相邻概念的区别
| 维度 | 指令调优 | 对话调优 |
|---|---|---|
| 目标 | 任务执行 | 多轮交互 |
| 轮次 | 单轮 | 多轮 |
| 上下文 | 无需维护 | 必须维护 |
| 数据格式 | instruction/input/output | messages(role-based) |
| 代表数据集 | FLAN, Alpaca, Dolly | ShareGPT, UltraChat, OpenAssistant |
| 训练难度 | 较低 | 较高 |
| 下游应用 | 任务型 API | 通用聊天助手 |
设计时真正要权衡什么
- Chat Template 统一性:训练和推理必须使用完全相同的 template,否则模型行为会不一致
- 单轮 vs 多轮混合:实践中通常混合使用,先建立任务能力再用对话数据微调
- 合成数据 vs 人工数据:GPT-4 合成数据量大但可能有偏差,人工数据质量高但成本高
容易踩的坑
- Template 不一致:训练用 Alpaca 格式,推理用 ChatML,模型行为异常
- 上下文截断:多轮对话超过模型长度时处理不当
- 数据偏差:合成数据中模型偏好强模型的风格
工程落地时我会怎么做
- 指令调优适合垂直领域任务型应用(客服、文档处理、代码生成)
- 对话调优适合通用 AI 助手产品
- 工业中通常结合使用:先指令调优建立基本能力,再对话数据微调交互能力
如果要对外讲,可以怎么概括
"指令调优是让预训练模型学会听从自然语言指令,通常用单轮的 instruction-input-output 格式。对话调优进一步让模型能在多轮对话中维护上下文,使用基于角色的 messages 格式。关键点是 Chat Template 必须在训练和推理时完全一致,否则模型行为会偏离。现代做法是混合使用指令数据和对话数据进行多阶段 SFT。"
最后记几条
- 指令调优 = 任务执行,对话调优 = 多轮交互
- Alpaca 格式 vs ChatML 格式的区别
- Chat Template 训练/推理一致性至关重要
- LIMA 证明 1k 高质量数据可以超越 52k 低质量
- 合成数据(GPT-4 生成)成为主流但需注意偏差
延伸阅读
参考资料
- FLAN (Wei et al., 2022) — 指令调优先驱
- Alpaca (Stanford, 2023) — Self-Instruct 方法
- HuggingFace Chat Templates 文档
- LIMA (Zhou et al., 2023) — 少量数据对齐