GEO

指令微调

指令微调是一种后训练过程,它在数千个 (指令, 期望响应) 配对上对基础 LLM 进行微调,使其学会遵循自然语言指令,而不仅仅是续写文本。正是这一步,把一个擅长预测下一个词的原始语言模型,变成了能够理解“总结这段内容”“翻译成韩语”或“写一条 SQL 查询”的助手。

指令微调是一种后训练过程,它在数千个 (指令, 期望响应) 配对上对基础 LLM 进行微调,使其学会遵循自然语言指令,而不仅仅是续写文本。正是这一步,把一个擅长预测下一个词的原始语言模型,变成了能够理解“总结这段内容”“翻译成韩语”或“写一条 SQL 查询”的助手。

为什么重要

仅用下一个 token 预测训练出来的基础模型,用起来出乎意料地困难。如果你问原始的 GPT-3 基础模型“法国的首都是什么?”,它可能会回答“意大利的首都是什么?西班牙的首都是什么?”,也就是延续相似问题的模式,而不是作答。指令微调改变了这一点。Google 的 FLAN(2021)、OpenAI 的 InstructGPT(2022)和 Anthropic 的 Claude 都用指令微调打造出真正会作答的模型。每一个现代的面向对话的 LLM,无论是 GPT-4、Claude、Gemini、Llama Instruct 还是 Mistral Instruct,都经过了指令微调。理解这一步,就能解释为什么两个基础能力相近的模型,用起来感受却天差地别。

工作原理

1. 收集指令数据:人工撰写(或筛选)数千个跨越多样化任务的指令-响应配对,涵盖摘要、问答、编程、翻译、数学、创意写作和推理。

2. 统一格式:每个样本都遵循类似的结构:

### Instruction:
Summarize the following article in 3 bullets.
### Input:
[article text]
### Response:
- point 1
- point 2
- point 3

3. 有监督微调(SFT):在这些格式化的配对上,用标准的下一个 token 预测损失训练基础模型。模型学到:在看到“### Instruction: ... ### Response:”之后,它应当生成期望的响应。

4. 可选的多任务混合:FLAN、T0 和 Dolly 等数据集组合了数百种任务类型,使模型能够泛化到未见过的指令。

5. 在留出指令上评估:衡量模型是否能遵循它在微调期间从未见过的新指令。

指令微调 vs 微调 vs RLHF

维度微调指令微调RLHF
数据任务特定的样本多样化的(指令, 响应)配对人类偏好比较
损失下一个 token 预测下一个 token 预测奖励模型 + PPO
目标专精于单一任务通用的指令遵循与人类偏好对齐
示例仅在法律合同上微调的模型FLAN、Alpaca、DollyChatGPT、Claude
难度容易中等困难

在实践中,现代对话模型会经历全部三个阶段:基础预训练 → 指令微调(SFT)→ RLHF(或 DPO/constitutional AI)。指令微调是中间层,是模型变得可用、但尚未在有用性、安全性和诚实性等偏好上对齐的那个节点。

著名的指令微调模型

FLAN-T5(Google,2022):最早的开源指令微调模型之一。它证明了一个经过指令微调的 3B 模型可以击败一个未经指令微调的 175B 模型。

Alpaca(Stanford,2023):在 GPT-3.5 生成的 5.2 万个指令样本上对 Llama 7B 进行微调。它表明即便对小模型,指令微调也既廉价又有效。

Dolly(Databricks,2023):在 1.5 万个人工撰写的指令上微调。它证明了高质量数据胜过数量。

Llama Instruct / Mistral Instruct:与其基础模型一同发布的开放权重指令微调版本。

Open-Instruct 和 Tulu(AI2):以研究为导向、强调透明度的指令微调模型。

权衡取舍

数据质量 > 数量:1.5 万个精心撰写的样本可以击败 50 万个自动生成的样本。Alpaca 与 Dolly 的对比说明了这一点。

窄覆盖 vs 宽覆盖:覆盖更多任务类型能提升泛化能力,但可能损害在任一单项任务上的表现。

格式敏感性:指令微调模型期望特定的提示格式。用错格式会明显降低表现。

幻觉风险:如果指令数据中包含无来源依据的答案,模型就会学会自信地编造。

成本:小模型需要几百到几千美元的 GPU 时间;前沿规模则要多得多。

常见错误

与 RLHF 混淆:它们是不同的步骤。模型可以只做指令微调而不做 RLHF(许多开源模型正是如此),但会缺失偏好对齐。

把原始基础模型当对话模型用:基础模型无法可靠地遵循指令。处理助手类任务时,请始终使用指令微调版或对话版。

在不同模型间混用提示格式:每个指令微调模型都有自己期望的格式。Llama 的不同于 Mistral 的,也不同于 OpenAI 的。

在自有领域上训练而丢失通用能力:在指令微调模型之上做窄域微调,可能抹掉指令遵循能力。请使用 LoRA 并进行广泛评估。

忘记评估:在留出提示上做人工评判或 LLM-as-a-Judge,是验证指令微调是否真正奏效的唯一办法。

Sources: