微调基础
什么是微调?
微调(Fine-tuning)是在预训练模型基础上用特定领域数据继续训练。
预训练模型像大学毕业生,学了很多基础知识;微调是专业培训,让它掌握特定技能。
预训练 vs 微调
| 阶段 | 数据类型 | 目标 | 训练成本 |
|---|---|---|---|
| 预训练 | 互联网海量数据 | 学习通用知识 | 极高(数千GPU) |
| 微调 | 特定领域数据 | 适应特定任务 | 较低(单卡可行) |
为什么需要微调?
预训练模型能力很强,但实际应用中往往不够用。
场景1:专业领域知识不足
通用模型: "请解释量子纠缠"
→ 可能给出教科书式的泛泛回答
微调后: "请用量子计算术语解释量子纠缠"
→ 能使用专业术语和行业标准表达场景2:格式和风格不符
通用模型: 写一个Python函数
→ 可能写得很啰嗦或不规范
微调后: 写一个符合PEP8规范的函数
→ 自动遵循代码规范场景3:特定任务效率低
- 翻译任务需要大量提示词
- 分类模型需要复杂few-shot示例
- 微调后简化输入输出
微调的类型
1. 全量微调(Full Fine-tuning)
原理:更新模型所有参数
优点:
- 效果最好
- 能力改变最大
缺点:
- 需要大量显存(7B模型需要~28GB)
- 容易过拟合
- 训练慢
适用场景:有大量数据和充足算力
2. 参数高效微调(PEFT)
原理:只更新少量参数
LoRA (Low-Rank Adaptation)
原始权重: W (4096×4096)
LoRA添加: A (4096×8) × B (8×4096)
训练时只更新A和B,参数量减少98%优点:
- 显存需求低(7B模型~12GB)
- 训练速度快
- 可多个LoRA切换
缺点:
- 极端场景效果略逊全量微调
其他PEFT方法:
- Prefix Tuning:在输入层添加可训练的"前缀向量"
- Prompt Tuning:只优化输入prompt的嵌入
- Adapter:在层间插入小型适配器模块
3. 指令微调(Instruction Tuning)
使用"指令-响应"对训练:
json
{
"instruction": "解释什么是机器学习",
"output": "机器学习是..."
}让模型学会遵循人类指令。
4. RLHF(基于人类反馈的强化学习)
三阶段训练:
- SFT:有监督微调
- RM:训练奖励模型
- PPO:强化学习优化
ChatGPT用的就是这个方法。
2025年的技术趋势
PEFT成为主流
2023: 全量微调为主
2025: 80%项目使用LoRA等PEFT方法QLoRA普及
4-bit量化 + LoRA,让消费级显卡也能微调:
原版LoRA: 12GB显存
QLoRA: 6GB显存多模态微调
不再局限于文本:
- 视觉-语言模型(LLaVA)
- 语音-语言模型
- 代码-文本模型
DPO流行
Direct Preference Optimization,比RLHF更简单:
RLHF: 需要3个模型 + 奖励模型训练
DPO: 直接用偏好对优化,单模型即可微调 vs RAG
什么时候微调,什么时候用RAG?
| 维度 | 微调 | RAG |
|---|---|---|
| 改变什么 | 模型权重 | 外挂知识库 |
| 学习内容 | 形式、风格、模式 | 事实、数据 |
| 知识时效 | 训练时固定 | 实时更新 |
| 成本 | 较高(GPU训练) | 较低(向量检索) |
| 适用 | 格式转换、风格迁移、专用任务 | 问答、文档分析、知识密集 |
实践经验:
- 先尝试RAG(快速、灵活)
- 需要"形式改变"才微调
- 复杂场景可以两者结合
微调效果评估指标
自动评估
- 困惑度(Perplexity):越低越好
- BLEU/ROUGE:生成质量
- 准确率:分类/选择题任务
人工评估
- 有用性:回答是否解决问题
- 准确性:事实是否正确
- 流畅性:表达是否自然
- 安全性:是否有害内容
业务指标
- 用户满意度
- 任务完成率
- API调用的token节省
常见误区
误区1:微调能注入新知识
❌ 错误:微调主要学习"怎么表达",不是"学新知识" ✅ 正确:需要新知识用RAG或重新预训练
误区2:数据越多越好
❌ 错误:低质量数据会降低效果 ✅ 正确:1万条高质量>10万条低质量
误区3:微调一次就完事
❌ 错误:模型会退化,需要持续更新 ✅ 正确:建立数据飞轮,定期重训
误区4:必须大模型才微调
❌ 错误:小模型也能微调,有时效果更好 ✅ 正确:根据任务选择合适规模
实践建议
准备阶段
- 明确任务目标
- 收集高质量数据(至少1000条)
- 选择合适基础模型
训练阶段
- 先小数据集验证
- 监控loss曲线
- 定期checkpoint保存
部署阶段
- A/B测试对比
- 收集用户反馈
- 准备回滚方案
推荐工具
训练框架
- Hugging Face PEFT: LoRA等PEFT方法
- Axolotl: 一键式微调脚本
- LLaMA-Factory: 可视化微调工具
- Unsloth: 超快LoRA实现
数据处理
- Datasets: 数据加载和预处理
- OpenAI数据格式: 标准JSONL格式
评估工具
- LM Evaluation Harness: 标准基准测试
- EleutherAI: 综合评估套件
下一步
了解了微调基础,接下来:
- 微调准备 - 学习如何准备数据和环境
参考资料
- LoRA论文 - 原始论文
- QLoRA论文 - 4bit量化微调
- Hugging Face PEFT教程 - 官方文档