什么是Fine-tuning?
Fine-tuning(微调)是在预训练大模型基础上,用特定领域数据继续训练,使模型掌握专业知识或特定风格的技术。相比从零训练,微调成本低、效果好。
微调 vs Prompt Engineering vs RAG:
- Prompt Engineering:通过设计提示词引导模型,零成本,但效果有限
- RAG:检索增强生成,动态引入外部知识,适合知识库问答
- Fine-tuning:改变模型权重,使模型内化领域知识,适合固定风格/语气/格式
什么时候需要微调?
以下场景适合微调:
- 统一输出格式:需要模型固定输出特定JSON格式、特定文档结构
- 品牌语气:需要模型始终保持品牌调性和措辞风格
- 垂直领域知识:法律、医疗、金融等专业术语密集场景
- 降低推理成本:将复杂few-shot prompt压缩到模型内,减少token消耗
以下场景不需要微调:
- 知识会频繁更新(用RAG更合适)
- Prompt Engineering已能满足需求
- 数据量不足(少于几百条高质量样本)
主流微调方法
1. 全量微调(Full Fine-tuning)
更新模型所有参数,效果最好,但显存需求极高(7B模型需要约80GB显存),成本最高。适合有大量高质量数据和充足算力的场景。
2. LoRA(Low-Rank Adaptation)
只训练少量附加参数(原模型参数量的0.1%-1%),效果接近全量微调,显存需求大幅降低。7B模型用LoRA只需约16GB显存。是目前最主流的微调方法。
3. QLoRA(Quantized LoRA)
在LoRA基础上对模型进行4-bit量化,7B模型只需约6GB显存即可微调,消费级显卡(RTX 3090/4090)可用。效果略低于LoRA,但成本最低。
数据准备要点
高质量数据是微调成功的关键:
- 数量:LoRA微调通常500-2000条样本即可,全量微调需要万条以上
- 格式:通常为instruction-input-output三元组格式
- 质量 > 数量:宁可100条高质量,不要1000条低质量
- 多样性:覆盖目标任务的各种情况和边界条件
数据格式示例(Alpaca格式):
{
"instruction": "将以下客户投诉转化为正式回复",
"input": "你们的快递太慢了,等了一周还没到!",
"output": "尊敬的客户,感谢您的反馈。我们对您的等待深感抱歉,已为您紧急跟进此订单..."
}
成本分析
云API微调(最简单):
- OpenAI Fine-tuning:GPT-3.5约$0.008/1K tokens训练,无需自己准备GPU
- 适合没有技术团队、数据量中等(几百到几千条)的场景
自建微调(开源模型):
- QLoRA微调7B模型:RTX 4090(24GB)可本地运行,云端A100约$2-5/小时
- 1000条数据微调3个epoch,约需1-2小时,成本$2-10
- 推荐框架:Hugging Face TRL、LLaMA-Factory(中文友好)
总结
Fine-tuning适合需要固定风格、格式或垂直领域知识的场景,不适合频繁更新知识的场景(用RAG更合适)。方法选择:入门用OpenAI API微调,进阶用QLoRA本地/云端微调开源模型。数据质量远比数量重要,500条精心标注的数据往往优于5000条粗糙数据。