微调#微调#QLoRA#LLaMA-Factory#Lora
Fine-tuning 微调入门:QLoRA + LLaMA-Factory 零代码
微调是让通用模型变专才的关键。本文用 QLoRA 在 1×4090 上微调 Qwen2.5-7B。
盖茨·2026/7/22·15 阅读
Fine-tuning 微调入门:QLoRA + LLaMA-Factory 零代码
为什么需要微调?
通用模型(Qwen2.5-7B-Instruct)擅长通用对话,但特定领域不行:
- 法律条文 → 需要法律微调
- 医疗问答 → 需要医学微调
- 企业知识 → 需要内部文档微调
- 风格定制 → 客服风格 / 销售话术
LoRA vs 全量微调
| 方法 | 显存 | 训练时间 | 效果 | 适用 |
|---|---|---|---|---|
| 全量微调 | 100% | 100% | 100% | 资源充足 |
| LoRA | 30% | 30% | 95% | 通用 |
| QLoRA | 15% | 40% | 93% | 消费级 GPU |
QLoRA = 4-bit 量化 + LoRA adapter,1× RTX 4090 就能微调 7B 模型。
推荐工具:LLaMA-Factory
LLaMA-Factory = 零代码微调框架,支持 100+ 模型。
安装
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
准备数据
JSON 格式(对话):
[
{
"messages": [
{"role": "system", "content": "你是模力Lab 助手"},
{"role": "user", "content": "Qwen2.5-7B 需要什么显卡?"},
{"role": "assistant", "content": "推荐 1× RTX 4060 Ti 16GB,¥0.55 万..."}
]
}
]
放到 data/my_data.json,在 data/dataset_info.json 注册:
{
"my_data": {
"file_name": "my_data.json",
"formatting": "sharegpt",
"columns": { "messages": "messages" }
}
}
启动微调
# Web UI 模式(推荐新手)
llamafactory-cli webui
# 或命令行
llamafactory-cli train \\
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \\
--template qwen \\
--dataset my_data \\
--output_dir saves/qwen2.5-7b-lora \\
--finetuning_type lora \\
--lora_rank 8 \\
--quantization_bit 4 \\
--per_device_train_batch_size 4 \\
--gradient_accumulation_steps 4 \\
--num_train_epochs 3 \\
--learning_rate 1e-4 \\
--fp16
合并 LoRA + 部署
# 合并 LoRA adapter 到基础模型
llamafactory-cli export \\
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \\
--adapter_name_or_path saves/qwen2.5-7b-lora \\
--output_dir saves/qwen2.5-7b-merged \\
--template qwen \\
--export_size 5 \\
--export_quantization_bit 4
关键参数
| 参数 | 推荐值 | 说明 |
|---|---|---|
lora_rank |
8-16 | 越大越强但越慢 |
learning_rate |
1e-4 (LoRA) / 2e-5 (全量) | 太大会崩 |
num_train_epochs |
3-5 | 太多会过拟合 |
per_device_batch_size |
1-8 | 看显存 |
gradient_accumulation |
4-8 | 模拟大 batch |
评估
llamafactory-cli eval \\
--model_name_or_path saves/qwen2.5-7b-merged \\
--template qwen \\
--task mmlu \\
--lang en
实战案例
青岛某法律科技公司用 QLoRA 微调 Qwen2.5-7B:
- 1000 条法律问答
- 1× RTX 4090,训练 3 小时
- 效果:法律问答准确率从 62% → 89%
- 推理速度:与原模型一致
避坑
- ❌ 数据质量差:垃圾进垃圾出,先清洗数据
- ❌ 过拟合:3 个 epoch 就够,别 10 个
- ❌ 学习率太大:LoRA 用 1e-4,全量用 2e-5
- ❌ 没评估:用 MMLU/C-Eval 验证效果