← 返回知识库
微调#微调#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 验证效果