什么是模型微调(Fine-tuning)
模型微调指:
在已有的大语言模型基础上,使用特定领域或任务数据继续训练,使模型更擅长某类任务。
例如:
- 客服对话
- 医疗问诊
- 法律咨询
- 代码生成
- 业务规则问答
二、微调 vs 预训练
| 项目 | 预训练 | 微调 |
|---|---|---|
| 数据量 | TB级 | MB~GB |
| 成本 | 极高 | 可控 |
| 目标 | 学语言能力 | 学任务能力 |
| 个人是否可做 | 否 | 是 |
结论:个人和中小团队只需要关注微调。
三、微调的本质
语言模型的训练目标:
给定前文 → 预测下一个 Token
微调只是更换训练数据分布,让模型学习新的“对话模式”。
示例:
用户:如何退款?
助手:进入订单页面点击申请退款。
四、主流微调方式
1. 全参数微调(Full Fine-tuning)
- 更新全部参数
- 成本高
- 很少使用
2. LoRA(Low-Rank Adaptation)
- 冻结原模型
- 仅训练少量适配器参数
- 性价比最高
3. QLoRA
- 模型4bit量化
- 再使用LoRA
- 显存需求最低
| 方法 | 显存 | 速度 | 推荐度 |
|---|---|---|---|
| Full | 高 | 慢 | ⭐ |
| LoRA | 中 | 快 | ⭐⭐⭐⭐⭐ |
| QLoRA | 低 | 中 | ⭐⭐⭐⭐ |
五、微调整体流程
数据收集
↓
数据清洗
↓
构造成指令格式
↓
Tokenizer编码
↓
加载基础模型
↓
插入LoRA层
↓
训练
↓
保存Adapter
↓
推理验证
六、数据格式规范
方式一:指令格式
{
"instruction": "把下面句子翻译成英文",
"input": "今天天气很好",
"output": "The weather is very good today."
}
方式二:对话格式
{
"messages": [
{"role":"user","content":"你好"},
{"role":"assistant","content":"你好,有什么可以帮你?"}
]
}
七、高质量数据三原则
- 指令清晰
- 输出简洁
- 风格统一
坏示例:
嗯…这个问题吧,我觉得可能是...
八、数据量建议
| 任务类型 | 建议数据量 |
|---|---|
| 分类 | 500 ~ 2k |
| 对话 | 2k ~ 10k |
| 专业领域 | 5k ~ 50k |
质量优先于数量。
九、QLoRA 微调实战示例
1. 安装环境
pip install torch transformers datasets peft bitsandbytes accelerate
2. 加载模型
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2-7B",
load_in_4bit=True,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-7B")
3. 插入 LoRA
from peft import LoraConfig, get_peft_model
config = LoraConfig(
r=8,
lora_alpha=32,
target_modules=["q_proj","v_proj"],
lora_dropout=0.05
)
model = get_peft_model(model, config)
4. 训练
from transformers import Trainer, TrainingArguments
trainer = Trainer(
model=model,
train_dataset=train_data,
args=TrainingArguments(
per_device_train_batch_size=2,
gradient_accumulation_steps=8,
num_train_epochs=3,
learning_rate=2e-4
)
)
trainer.train()
5. 保存模型
model.save_pretrained("./lora_adapter")
6. 推理加载
model.load_adapter("./lora_adapter")
十、关键超参数说明
Learning Rate
1e-4 ~ 2e-4
Epoch
2 ~ 5
LoRA Rank
8 / 16 / 32
十一、如何判断微调成功
- Loss持续下降
- 验证集效果提升
- 人工测试回答稳定
以人工测试为主。
十二、常见问题
- 数据噪声大
- 学习率过高
- Tokenizer不一致
- 过拟合
十三、效果提升技巧
- 增加 system prompt
- 混合通用数据 + 业务数据
- 清洗重复数据
十四、微调 vs Prompt
| 场景 | 推荐方式 |
|---|---|
| 快速验证 | Prompt |
| 固定风格 | 微调 |
| 专业领域 | 微调 |
十五、工业常用架构
RAG + LoRA微调
十六、学习路线
- 跑通一次QLoRA
- 学会构造数据
- 调参
- 做Demo

浙公网安备 33010602011771号