什么是模型微调(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微调

十六、学习路线

  1. 跑通一次QLoRA
  2. 学会构造数据
  3. 调参
  4. 做Demo
posted @ 2026-01-29 10:51  深圳蔓延科技有限公司  阅读(3)  评论(0)    收藏  举报