什么时候需要微调
微调是什么
微调(Fine-tuning) 是在一个已经训练好的模型基础上,用你自己的数据继续训练,让它更擅长特定任务。
类比:预训练模型像一个通识教育毕业生——什么都懂一点。微调就是送它去读研——在特定领域深耕。
你真的需要微调吗
微调之前,先问自己这些问题:
1. Prompt Engineering 试过了吗?
很多时候,精心设计的 Prompt(加上 Few-shot 示例)就能达到你要的效果。微调的门槛和成本远高于写 Prompt。
2. RAG 能解决吗?
如果你的需求是"让模型知道更多知识",RAG 通常比微调更合适——更新知识不需要重新训练。
3. 你有足够的数据吗?
微调需要高质量的训练数据。几十条不够,几百条是起步。没有好的数据,微调也不会有好效果。
定制 LLM 的技术谱系
从简单到复杂:
Prompt Engineering → Few-shot → RAG → Fine-tuning → 预训练
成本:低 ────────────────────────────────────────→ 高
灵活性:高 ──────────────────────────────────────→ 低
| 方法 | 改变的是 | 成本 | 需要的数据 | 适用场景 |
|---|---|---|---|---|
| Prompt Engineering | 输入 | 几乎为零 | 无 | 大多数任务的起点 |
| Few-shot | 输入(含示例) | 增加 token 成本 | 几个示例 | 格式化输出、分类 |
| RAG | 输入(含检索结果) | 向量数据库成本 | 文档库 | 知识库问答 |
| Fine-tuning | 模型权重 | 训练成本 + GPU | 数百到数千条 | 风格/格式定制、领域专精 |
| 预训练 | 模型权重(从头) | 极高 | 海量数据 | 构建基础模型 |
微调适合的场景
1. 风格和格式定制
让模型始终以特定的风格回答——比如你的品牌语气、特定的文档格式、固定的回复结构。
Prompt 也能做到,但微调后模型会"内化"这个风格,不需要每次都写长长的 System Prompt。
2. 领域专业化
让模型在特定领域表现更好——比如法律文书、医疗报告、金融分析。微调能让模型更好地理解领域术语和惯例。
3. 成本优化
一个微调过的小模型可能在特定任务上达到大模型的效果。比如微调 Llama 3.1 8B 来做客服回复,可能和直接用 GPT-4 效果接近,但成本低得多。
4. 减少 token 使用
微调后,你不再需要在每次请求中包含长长的 System Prompt 和 Few-shot 示例。模型已经"记住"了这些,每次请求的 token 数显著减少。
5. 提高一致性
微调后的模型对特定任务的输出更加一致和可预测,减少了"随机发挥"的情况。
微调不适合的场景
需要最新知识:微调不能让模型"知道"训练数据之后的事。用 RAG。
通用能力提升:微调可能让模型在目标任务上变好,但在其他任务上可能变差(灾难性遗忘)。
数据不够:几十条低质量数据的微调,效果可能还不如一个好的 Prompt。
快速迭代:微调一次需要时间和成本。如果需求频繁变化,Prompt Engineering 更灵活。
微调的基本流程
1. 准备训练数据
↓
2. 选择基础模型
↓
3. 配置训练参数
↓
4. 训练(通常用 LoRA)
↓
5. 评估效果
↓
6. 部署使用
后面的章节会逐一展开每个步骤。
基础模型选择
选择什么模型作为微调的起点?
| 模型 | 大小 | 特点 |
|---|---|---|
| Llama 3.1 | 8B / 70B | 社区最活跃,工具链最完善 |
| Qwen 2.5 | 7B / 72B | 中文能力强 |
| Mistral | 7B | 高效,适合中小型任务 |
| Gemma 2 | 9B / 27B | Google 出品,质量稳定 |
通用建议:从 7-8B 的模型开始。 它们的训练成本可控,效果也足够好。只有当小模型确实不够时,再考虑更大的模型。
要点总结
- 微调之前先试 Prompt Engineering 和 RAG。 很多场景不需要微调就能解决。
- 微调改变的是模型的行为方式,不是知识量。 要补充知识用 RAG。
- 微调最适合风格定制、领域专精和成本优化。 这些是它相对于其他方法的独特优势。
- 数据质量决定微调效果。 没有好的数据,微调就是浪费时间和钱。
- 从 7-8B 模型开始。 训练成本低,迭代快,效果通常也够用。