AI测试架构知识库AI测试架构知识库
首页
  • 方法论体系
  • 评估体系
  • 对比分析
  • 最佳实践
  • LLM技术
  • VLM技术
  • Agent技术
  • RAG技术
  • 模型评估
  • 自愈测试
  • UI测试场景
  • API测试场景
  • 性能测试场景
  • 安全测试场景
  • 移动测试场景
  • 数据工程
  • MLOps实践
  • 平台建设
  • DevOps集成
  • 质量评估
  • 效果度量
  • 风险控制
  • 合规审计
  • 视觉融合
  • 稳定性测试
  • 服务端技术
  • 系统架构
  • 前沿探索
  • 软技能
首页
  • 方法论体系
  • 评估体系
  • 对比分析
  • 最佳实践
  • LLM技术
  • VLM技术
  • Agent技术
  • RAG技术
  • 模型评估
  • 自愈测试
  • UI测试场景
  • API测试场景
  • 性能测试场景
  • 安全测试场景
  • 移动测试场景
  • 数据工程
  • MLOps实践
  • 平台建设
  • DevOps集成
  • 质量评估
  • 效果度量
  • 风险控制
  • 合规审计
  • 视觉融合
  • 稳定性测试
  • 服务端技术
  • 系统架构
  • 前沿探索
  • 软技能
  • 模型训练

    • 模型训练与微调
    • 预训练(Pre-training)
    • 指令微调(SFT)
    • 模型压缩(Compression)
    • 偏好对齐(Alignment)

🎯 指令微调(SFT)

一句话总结:指令微调(Supervised Fine-Tuning)让通用语言模型学会跟随人类指令,是模型从"会说话"到"好用"的关键一步。

📋 目录

  • SFT 概述
  • 指令数据集构建
  • 微调方法对比
  • LoRA / QLoRA
  • 训练实践
  • 评估方法

📖 SFT 概述

为什么需要 SFT?

SFT 数据格式

{
  "messages": [
    {"role": "user", "content": "请总结一下��篇论文的核心观点"},
    {"role": "assistant", "content": "这篇论文提出了..."}
  ]
}

主流模板

模型家族系统消息对话模板
LLaMA / Mistral可选,简洁[INST] {prompt} [/INST]
ChatGLM"你是一位有用的助手"User: {prompt}\nAssistant: {reply}
Qwen"你是一个有用的助手"`<
LLaMA-3可省略`<

📚 指令数据集构建

数据来源

数据构建策略

策略方法优点缺点
人工编写专家撰写指令-回复质量最高成本极高
大模型合成GPT-4/Claude 生成速度快、规模大风格趋同
自我演化Self-Instruct / Evolve多样性好需要初始种子
开源聚合多数据集融合覆盖广噪声多

数据质量要素

数据配比建议

任务类型占比说明
对话问答30%通用对话能力
指令遵循20%分类、总结、改写
代码生成15%编程能力
数学推理10%计算与推理
知识问答10%事实性知识
多轮对话10%上下文理解
其他5%特殊任务

🔬 微调方法对比

PEFT vs 全量微调

方法可训练参数显存占用效果速度
全量微调100%⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
LoRA0.1-1%⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
QLoRA0.1-1%⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Adapter1-5%⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Prefix Tuning<1%⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

适用场景

场景推荐方法原因
资源充足、追求极致效果全量微调上限最高
消费级 GPU(24GB)QLoRA单卡可跑 7B/13B
快速实验 / 迭代LoRA训练快、切换灵活
多任务切换LoRA 适配器池按需加载
超小规模数据Prefix Tuning不易过拟合

🚀 LoRA / QLoRA

LoRA 原理

LoRA 核心超参

超参数推荐值说明
rank (r)8 / 16 / 32低秩维度,越大能力越强但过拟合风险高
alpha2 × r 或 r缩放系数,控制 LoRA 贡献权重
dropout0.05 - 0.1防止过拟合
target_modulesq_proj, v_proj注意力的投影层通常最有效
bias"none"一般不加 bias

QLoRA 关键创新

QLoRA 训练配置

from peft import LoraConfig, get_peft_model
from transformers import BitsAndBytesConfig

# 4-bit 量化配置
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",  # Normal Float 4
    bnb_4bit_use_double_quant=True,  # 双量化节省 0.4 bit
    bnb_4bit_compute_dtype=torch.bfloat16
)

# LoRA 配置
lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    lora_dropout=0.05,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    bias="none",
    task_type="CAUSAL_LM"
)

显存对比(7B 模型,batch=8)

方法显存需求是否可单卡运行
FP16 全量微调~24GB勉强(需梯度检查点)
LoRA (r=16)~14GB✅ 是
QLoRA (NF4)~8GB✅ 是(有余量)

🛠️ 训练实践

训练超参推荐

超参数推荐范围说明
学习率1e-4 - 5e-4 (LoRA)LoRA 可以用稍大 LR
2e-5 - 5e-5 (全量)全量微调需更保守
Batch Size32 - 128(有效)累积步数模拟大 Batch
Epochs1 - 3宁可欠拟合也不要过拟合
Warmup3-5%学习率预热
LR SchedulerCosine余弦退火
Weight Decay0.01 - 0.1L2 正则化
Gradient Clip1.0防止梯度爆炸
Max Length2048 - 4096根据数据调整
OptimizerAdamW / PagedAdamWPaged 节省显存

训练过程监控

training_metrics = {
    "train_loss": "应逐步下降",
    "eval_loss": "验证集损失,检测过拟合",
    "learning_rate": "Cosine 退火曲线",
    "grad_norm": "异常值检测",
    "perplexity": "2^loss,训练直觉指标",
}

常见训练曲线

Loss 下降阶段:
  初期:快速下降(学习率 Warmup)
  中期:平稳下降(学习率 Cosine 退火)
  后期:平台期(接近收敛)

过拟合信号:
  train_loss ↓ 但 eval_loss ↑ → 减少 Epoch / 增加 Dropout

📊 评估方法

自动化评估基准

Benchmark评估内容典型分数参考
MMLU多学科知识基线 66% → 微调后 70-80%
HumanEval代码生成基线 15% → 微调后 30-60%
GSM8K数学推理基线 10% → 微调后 40-70%
TruthfulQA事实准确性基线 40% → 微调后 50-65%
AlpacaEval指令遵循基线 20% → 微调后 30-50%

人工评估维度

A/B 测试

指标基线微调后提升
有用率65%78%+13%
拒答率15%8%-7%
平均回复长度45 tokens80 tokens+78%
用户满意度3.2/54.1/5+28%

📚 延伸阅读

  • Instruction Tuning with GPT-4 (Alpaca) — 指令微调开山之作
  • QLoRA: Efficient Finetuning of Quantized LLMs — QLoRA 核心论文
  • Orca: Progressive Learning from Complex Explanations — 复杂解释数据
  • Mistral 7B — 高效训练实践
在线编辑文档
上次更新: 2026/4/28 17:49
贡献者: colewort
Prev
预训练(Pre-training)
Next
模型压缩(Compression)