513 分钟

微调方法论:LoRA / QLoRA / DPO

理解微调 vs RAG vs Prompt 决策边界、掌握 LoRA 低秩分解原理、搞懂 DPO 为什么替代了 PPO、学会灾难性遗忘防御。

微调LoRAQLoRADPOSFTRLHF
进度保存在本机浏览器;验收通过后再点更稳妥

第18课:微调方法论 —— LoRA / QLoRA / DPO

本节目标:理解微调 vs RAG vs Prompt 的决策边界、掌握 LoRA 低秩分解原理、搞懂 DPO 为什么替代了 PPO。


1. 微调 vs RAG vs Prompt:决策树

Code
需求类型?
  ├─ 注入新知识?
  │   ├─ 时效性强 → RAG
  │   └─ 大量稳定知识 → 微调 + RAG(少数场景)
  │
  ├─ 改变输出风格/格式?
  │   ├─ 简单任务 → Few-Shot Prompt
  │   └─ 复杂、稳定需求 → 微调
  │
  ├─ 学习新任务/技能?
  │   ├─ 能用 Prompt 描述清楚 → Prompt
  │   └─ 难以用语言描述 → 微调
  │
  └─ 优化推理能力?
      └─ 微调 + CoT 数据

一句话金句

"知识用 RAG,技能用微调,风格优先 Prompt。"

维度PromptRAG微调
成本极低
数据需求大(千-万条)
更新速度实时实时慢(要重训)
风格控制
领域知识强(外部)强(内化)

2. LoRA:参数高效微调

核心公式

code
W_new = W_original + ΔW
     = W_original + B × A   (低秩分解)

其中 A、B 是低秩矩阵 (rank r 远小于 d)

例:原本要训练 1000×1000 = 100万参数
    LoRA r=8 只需训练 1000×8 + 8×1000 = 16,000 参数
    参数减少 60+ 倍

为什么有效?

"低秩假设":模型微调时,权重的"增量"本质上是低秩的。实验证明 r=8 就能达到全参微调 95% 的效果。

四大优势

  • 训练参数少 100-1000 倍
  • 可叠加多个 LoRA(不同任务热切换)
  • 不改原模型(推理时可合并/不合并)
  • 效果接近全参微调

关键超参

参数推荐值说明
r (rank)4-64越大表达力越强
alpha通常 = 2r缩放系数
target_modulesq_proj, v_proj最常见选择

3. QLoRA:穷人的救星

code
QLoRA = Quantization + LoRA

原理:
  ① 把基础模型量化到 4-bit(显存减少 4 倍)
  ② 反量化时只对 LoRA 矩阵做高精度计算
  ③ 用 NF4 (NormalFloat 4) 量化格式

效果:
  单卡 24GB 显存可微调 33B 模型
  单卡 48GB 可微调 65B 模型
  精度损失小于 1%

4. LLM 训练四阶段

Code
Stage 1: Pre-training(预训练)
  万亿 token 互联网文本 → Base 模型

Stage 2: SFT(监督微调)
  1万-100万条 (instruction, response) → Chat 模型

Stage 3: RM(奖励建模)
  人类偏好对 → 奖励模型(评判员)

Stage 4: RLHF / DPO(对齐人类偏好)
  让 LLM 输出更"符合人类喜好" → 最终模型

SFT 数据质量金句

"Less is More" — Meta 的 LIMA 论文证明:1000 条高质量数据微调的效果,可以超过 50000 条低质量数据。


5. DPO:为什么替代了 PPO?

PPO 的痛点

PPO 训练时要同时加载 4 个模型(Actor、Critic、Reward Model、Reference Model)→ 显存爆炸、训练不稳定、调参像玄学。

DPO 的创新

一个数学发现:RLHF 的最优解可以直接用偏好数据求出,不需要训练 RM,不需要 PPO!

code
PPO:需要 4 个模型,训练不稳定
DPO:只需 2 个模型(当前 + 参考),像 SFT 一样稳定
维度PPODPO
模型数4 个2 个
训练稳定性不稳定稳定
代码复杂度复杂像 SFT 一样简单
采用情况OpenAI/AnthropicLlama-3 / Mistral / 国产模型主流

"PPO 是开拓者,DPO 是普及者。"


6. 灾难性遗忘及其防御

现象:微调后专业能力强了,但通用能力崩了。

防御组合拳

  1. 数据层:加入 10-30% 通用数据
  2. 方法层:用 LoRA(不修改原参数)
  3. 训练层:低学习率 + 1-3 epoch
  4. 约束层:KL 散度限制偏移

核心要点

  1. 知识用 RAG,技能用微调,风格优先 Prompt
  2. LoRA 用低秩分解把微调参数减少 100-1000 倍
  3. QLoRA = 量化 + LoRA,单卡 24GB 可训 33B 模型
  4. DPO 用数学消除 RM 和 PPO,训练像 SFT 一样简单稳定
  5. 数据质量 > 算法 > 算力

下一课:Transformer 底层原理 —— Self-Attention 到 RoPE。