大模型修炼秘籍 第八章:名师指点——SFT之要义
·
第八章:名师指点——SFT之要义
名师指点SFT,指令遵循能力起。
【本章导读】
预训练后的模型,内功深厚,但不懂如何与人交流。监督微调(Supervised Fine-Tuning, SFT)便是名师指点,教模型如何与人对话、如何遵循指令。
一、为何需要监督微调?
【预训练模型的局限】
用户: 请帮我写一首关于春天的诗。
预训练模型(未微调):
春天来了,花儿开了,鸟儿叫了...
(继续自发生成,可能偏离主题)
用户: 请帮我写一首关于春天的诗。
微调后的模型:
春风拂面柳丝长,
桃花灼灼映池塘。
燕子归来寻旧巢,
满园春色醉人香。
希望这首诗能让你感受到春天的美好!
【SFT的目标】
- 指令遵循:理解并执行人类指令
- 对话能力:进行多轮对话
- 格式规范:输出符合预期格式
- 任务完成:完成特定任务
二、SFT数据构建
【数据格式】
{
"instruction": "请解释什么是机器学习",
"input": "",
"output": "机器学习是人工智能的一个分支,它使计算机能够从数据中学习并做出决策或预测,而无需明确编程。"
}
【数据来源】
| 来源 | 描述 | 代表数据集 |
|---|---|---|
| 人工标注 | 专业标注员编写 | OpenAI的指令数据 |
| 模型生成 | 强模型生成,人工筛选 | Alpaca、Vicuna |
| 开源数据 | 社区贡献 | Dolly、OpenAssistant |
| 现有NLP数据集 | 改造现有数据集 | FLAN、P3 |
【数据质量要求】
| 维度 | 要求 |
|---|---|
| 正确性 | 回答准确无误 |
| 完整性 | 回答完整全面 |
| 相关性 | 回答与问题相关 |
| 多样性 | 覆盖多种任务和领域 |
| 格式规范 | 输出格式统一 |
【数据量】
| 模型规模 | SFT数据量 |
|---|---|
| 小(<7B) | 5万-20万条 |
| 中(7B-70B) | 10万-100万条 |
| 大(>70B) | 100万-1000万条 |
质量比数量更重要。
三、SFT训练过程
【训练流程】
SFT数据
↓
构建对话格式
↓
┌─────────────────────────────────────┐
│ 训练循环(数千到数万步) │
│ │
│ 1. 采样一个batch的数据 │
│ 2. 构建输入(指令+输入) │
│ 3. 前向传播,计算损失 │
│ 4. 反向传播,更新参数 │
│ │
└─────────────────────────────────────┘
↓
SFT模型
【对话格式】
用户: 请解释什么是机器学习
助手: 机器学习是人工智能的一个分支...
实际输入格式:
<|user|>
请解释什么是机器学习
<|assistant|>
机器学习是人工智能的一个分支...
【损失计算】
只计算助手回复部分的损失,不计算用户输入部分。
【超参数设置】
| 超参数 | 推荐值 |
|---|---|
| 学习率 | 1e-5 ~ 5e-5 |
| Batch Size | 32-128 |
| 训练轮数 | 1-3轮 |
| 学习率调度 | 余弦衰减 |
| 权重衰减 | 0.01 |
四、指令微调的演进
【演进历程】
第一阶段: 传统微调
└─ 针对特定任务微调(如分类、NER)
└─ 每个任务需要一个模型
第二阶段: 多任务微调
└─ 在多个任务上联合微调
└─ 一个模型处理多种任务
第三阶段: 指令微调
└─ 用指令格式统一所有任务
└─ 模型学会理解指令
第四阶段: 对话微调
└─ 多轮对话数据微调
└─ 模型学会对话交流
【FLAN】
Google的FLAN(Fine-tuned Language Net)是指令微调的开创性工作:
- 在1800+任务上微调
- 统一使用指令格式
- 大幅提升零样本能力
【InstructGPT】
OpenAI的InstructGPT展示了指令微调的威力:
预训练GPT-3 + SFT + RLHF = InstructGPT
关键发现: 1.3B参数的InstructGPT在指令遵循上优于175B的GPT-3。
五、高效微调技术
【LoRA】
LoRA(Low-Rank Adaptation)是最流行的高效微调方法:
原理: 冻结原模型参数,添加低秩矩阵:
原始权重: W (d × d)
LoRA: W' = W + BA
其中 B (d × r), A (r × d), r << d
优点:
- 只训练0.1%-1%的参数
- 显存占用大幅降低
- 效果接近全参数微调
- 可以合并回原模型
【QLoRA】
QLoRA在LoRA基础上进一步优化:
- 4-bit量化加载基础模型
- 双重量化进一步压缩
- 分页优化器管理内存
可以用单张24GB显存的GPU微调65B模型!
【其他高效微调方法】
| 方法 | 原理 | 特点 |
|---|---|---|
| Prefix Tuning | 在输入前添加可训练前缀 | 参数极少 |
| Prompt Tuning | 学习软提示嵌入 | 简单高效 |
| Adapter | 在层间添加小型网络 | 模块化 |
| IA³ | 缩放激活值 | 计算高效 |
六、SFT的注意事项
【灾难性遗忘】
问题:SFT可能导致模型忘记预训练知识。
解决方案:
- 控制学习率(不要太大)
- 混合预训练数据
- 使用LoRA等参数高效方法
【数据质量至关重要】
垃圾数据 → 垃圾模型
高质量数据 → 高质量模型
【过拟合风险】
SFT数据量小,容易过拟合。
解决方案:
- 早停(Early Stopping)
- 正则化
- 数据增强
七、本章心法总结
【口诀】
名师指点SFT,指令遵循能力起。
数据质量是关键,高效微调降成本。
【要点回顾】
| 要点 | 说明 |
|---|---|
| SFT目标 | 让模型学会遵循指令 |
| 数据格式 | instruction + input + output |
| 数据质量 | 质量比数量更重要 |
| 训练策略 | 小学习率,少轮数 |
| 高效微调 | LoRA、QLoRA等 |
带你进入AI时代最前沿的认知盛宴
【下一章预告】
下一章,我们将学习对话能力养成,深入探讨多轮对话、思维链推理、Few-shot学习等高级技巧。
更多推荐




所有评论(0)