何时打开:你要做领域模型 / 微调 chatbot / 搞 RLHF / 选 LoRA 还是全参 / 选 PPO 还是 DPO。本 wiki 把 ai-interview 19 PDF 整理成实战路径。
一句话核心:全参 vs PEFT 看显存 + LoRA 主流 + QLoRA 单卡 65B + PPO 难调 DPO 简单 → 2024 后主流转 DPO + 领域微调用 Base / 指令跟随强用 Chat。
0. 视角说明
主源:LLM 面试 / 微调与强化学习完整专题 19 份 PDF。
1. LLMs 微调基础(8 高频题)
| Q | 要点 |
|---|---|
| 全参数微调需要多少显存? | 模型 fp16 + 梯度 fp16 + Adam 状态(m,v) fp32 + 激活 — 约 16-20x 模型大小 |
| 为什么 SFT 之后感觉 LLM 傻了? | 灾难遗忘 / SFT 过拟合短模式 / RL 阶段还没来 |
| SFT 指令微调数据如何构建? | 多样指令 + 高质回答 + 适量长度 + 拒答样本 |
| 领域 Continue PreTrain 数据选取? | 领域 70% + 通用 30% 防遗忘 |
| 领域训练后通用能力下降怎么缓解? | LoRA 增量 + 数据混合 + 渐进式微调 |
| Continue PreTrain 如何学到更多? | 高质量数据 + 充分训练 + 不同任务混合 |
| SFT 用 Chat 还是 Base 模型? | 领域微调用 Base / 指令跟随能力强用 Chat |
| 领域微调数据输入格式? | Alpaca / ShareGPT / Vicuna 指令格式 |
2. PEFT 参数高效微调
2.1 全参 vs PEFT
| 方法 | 优点 | 缺点 |
|---|---|---|
| Fine-tune(全参) | 效果好 | 慢 + 贵 + 灾难遗忘 |
| PEFT | 快 / 省 / 灾难遗忘小 | 效果略损 |
2.2 PEFT 方法对比
| 方法 | 思路 |
|---|---|
| Prefix-Tuning | 在每层加可训练前缀 |
| P-Tuning | input 端加可训练 prompt |
| Prompt-Tuning | 简化版 P-Tuning |
| LoRA | 低秩矩阵分解 |
| AdaLoRA | 自适应 LoRA rank |
| Adapter | 插入小模块 |
| IA³ | 三向量乘 K/V/FFN |
经验:
- 链家 BELLE 报告:FT > LoRA 略微
- 但 LoRA 速度 + 显存优势巨大 → 主流选择
3. LoRA 系列(主流)
3.1 LoRA 核心思想
全参更新 → 低秩矩阵分解:
W' = W + ΔW
ΔW = A * B (A: r×d, B: d×r, r << d)
只训练 A, B 两个小矩阵(参数 << 全参微调)。
3.2 LoRA 特点
| 特性 | 说明 |
|---|---|
| 训练 | 只更新 A, B(全参的 0.1-1%) |
| 推理 | A*B 可合并到 W,推理零额外开销 |
| 多任务 | 多套 LoRA 切换(swappable adapters) |
| rank | 一般 r=8/16/32,任务越复杂 r 越大 |
3.3 LoRA 应用层
通常应用在:
q_proj/k_proj/v_proj/o_proj(attention)gate_proj/up_proj/down_proj(FFN,新版常加)
经验:加在 FFN 上效果通常 > 只加 attention。
4. QLoRA(单卡 24G 微调 65B)
4.1 核心思想
Q = Quantization。
- 把基座模型量化到 4-bit(NF4 格式)
- 在量化模型上做 LoRA
- 单卡 24GB 微调 65B
4.2 关键技术
| 技术 | 作用 |
|---|---|
| NF4(4-bit NormalFloat) | 比 fp4 准确度好(为正态分布优化) |
| Double Quantization | 量化常数本身再量化 → 省显存 |
| Paged Optimizer | 显存不够时 swap 到 CPU |
4.3 QLoRA 训练显存估算
| 模型 | 全参 FT | LoRA | QLoRA |
|---|---|---|---|
| 7B | 100GB+ | 24GB | 8GB |
| 13B | 200GB+ | 40GB | 16GB |
| 65B | 1TB+ | 200GB | 24GB |
5. 增量预训练(Continue Pretrain)
5.1 什么时候做?
- 领域知识必须注入(医疗 / 法律 / 金融)
- 新语言 —— 主模型不支持的语种
- 新词表 —— 大量领域专有名词
5.2 数据配比
领域数据 70% + 通用数据 30% — 防灾难遗忘
5.3 增量预训练样本拼接
LLM 面试 / 微调与强化学习完整专题 §file_33:
- Packing —— 多文档拼到同一序列(节省 padding)
- Document Boundary Token ——
<eos>分隔 - Attention Mask —— 跨文档不互见(防止 attention 串扰)
5.4 LoRA 二次预训练
LLM 面试 / 微调与强化学习完整专题 §file_34:
- 用 LoRA 做 Continue Pretrain → 显存友好 + 易回滚
- 关键:rank 要够大(r=64+),否则学不进领域
6. RLHF / DPO / PPO 路线
6.1 RLHF 整体流程(经典三阶段)
1. SFT(Supervised Fine-tuning)
↓
2. RM(Reward Model 训练)
- 人类对回答打分 / 排序
- 训练奖励模型
↓
3. RL 训练
- PPO 或变种
- LLM 策略 vs Reward Model
6.2 RLHF 变种
LLM 面试 / 微调与强化学习完整专题 §file_37:
| 方法 | 特点 |
|---|---|
| PPO | 标准 RLHF / 难调 / 显存大 / Reward Model + Critic + Actor 4 个模型 |
| DPO(Direct Preference Optimization) | 不要 Reward Model / 直接用偏好对训练 / 2024 主流 |
| IPO(Identity Preference Optimization) | DPO 改进 / 减少过拟合 |
| KTO(Kahneman-Tversky Optimization) | 用单样本反馈 / 不需要成对偏好 |
| GRPO(Group Relative Policy Optimization) | DeepSeek 提出 / R1 用 / 减少 Critic 模型 |
| ORPO(Odds Ratio Preference) | SFT + 偏好合并一步训 |
| SimPO | DPO 改进 / 不要 reference 模型 |
6.3 PPO 难点
LLM 面试 / 微调与强化学习完整专题 §file_38:
| 痛点 | 缓解 |
|---|---|
| 4 个模型显存爆炸(Actor + Critic + Reward + Reference) | LoRA / ZeRO-3 / 共享参数 |
| 超参敏感(KL 系数 / clip 范围) | 多次实验 + 早停 |
| Reward Hacking | 多 Reward Model ensemble |
| 训练不稳定 | gradient clipping + warmup |
6.4 为什么 DPO 后来主流?
- 不需要 Reward Model → 训练流程减半
- 不需要 RL → 直接监督学习
- 效果不差 → 多数任务接近 PPO
但 DPO 也有问题:
- 容易过拟合偏好数据
- 缺少 online 探索
- → IPO / SimPO / GRPO 继续改进
7. 训练集 / SFT 数据构建
7.1 SFT 数据来源
LLM 面试 / 微调与强化学习完整专题 §file_40:
| 来源 | 特点 |
|---|---|
| 人工标注 | 质量高 / 贵 |
| LLM 蒸馏(GPT-4 / Claude) | 快 / 便宜 / 有 License 风险 |
| Self-Instruct | LLM 自己生成 → 训自己 |
| Evol-Instruct(WizardLM) | 用 LLM 把简单指令变复杂 |
| OASST / OpenAssistant | 开源人工标注 |
7.2 LLM 生成 SFT 数据
LLM 面试 / 微调与强化学习完整专题 §file_41:
关键技巧:
- 种子指令多样化(领域 / 难度 / 风格)
- 后处理过滤(去重 / 拒答 / safety filter)
- 质量分级(EasyData / DataGPT 评分)
- 混合人工 + 合成(纯合成易过拟合)
7.3 数据规模经验
| 阶段 | 推荐数据量 |
|---|---|
| SFT | 10K-100K 高质指令 |
| Continue Pretrain | 10-100 亿 token |
| RLHF/DPO | 10K-100K 偏好对 |
8. 显存优化策略
8.1 显存占用估算
LLM 面试 / 微调与强化学习完整专题 §file_42:
显存 ≈ 模型参数 + 梯度 + 优化器状态 + 激活 + 缓存
| 项 | fp16 |
|---|---|
| 参数 | 2 bytes/param |
| 梯度 | 2 bytes/param |
| Adam m+v | 8 bytes/param(fp32) |
| 激活 | 取决于 batch / seq_len |
7B 模型全参微调粗估:7B × (2+2+8) = 84 GB + 激活 → 单 A100 80G 不够 → 必须分布式或 PEFT。
8.2 8 大显存优化技巧
LLM 面试 / 微调与强化学习完整专题 §file_43:
- Gradient Checkpointing —— 重算激活换显存(2x 时间换 ~50% 显存)
- Gradient Accumulation —— 小 batch 模拟大 batch
- Mixed Precision(AMP) —— fp16/bf16 训练
- Optimizer Offloading —— Adam 状态 swap 到 CPU(DeepSpeed)
- ZeRO 1/2/3 —— 分布式分摊优化器 / 梯度 / 参数
- LoRA / QLoRA —— PEFT
- Flash Attention —— 不存 attention matrix
- Sequence Parallelism —— 切 seq 维度
9. 评测面
LLM 面试 / 微调与强化学习完整专题 §file_35:
9.1 自动指标
| 指标 | 用途 |
|---|---|
| BLEU / ROUGE / METEOR | 翻译 / 摘要(过时) |
| Perplexity | 语言建模(预训练) |
| Exact Match / F1 | QA |
| Pass@k | 代码(HumanEval / MBPP) |
9.2 LLM-as-Judge
- GPT-4 当裁判 —— 主流
- Arena 模式 —— Pairwise 投票
- Chatbot Arena ELO —— LMSys 公开榜
9.3 中文 benchmark
| 名称 | 覆盖 |
|---|---|
| C-Eval | 中文学科 |
| CMMLU | 综合中文 |
| GSM8K-zh | 中文数学 |
10. 推理优化
LLM 面试 / 微调与强化学习完整专题 §file_31:
详见 LLM 基础(Transformer / Attention / 三种 PLM)(跨作者主题综合) §9.3:
| 技术 | 效果 |
|---|---|
| KV Cache | 基线 |
| vLLM PagedAttention | 2-3x |
| Quantization(GPTQ / AWQ / INT4) | 1.5-2x 速 / 4x 显存 |
| Speculative Decoding | 2-3x |
| Continuous Batching | 2-5x throughput |
11. 怎么用 —— 按身份的微调路径
| 你是谁 | 主用方法 | 起点 |
|---|---|---|
| 想做领域 chatbot | SFT + LoRA + DPO | Base 模型 + 10k 高质指令 + 偏好对 |
| 单卡微调 65B | QLoRA | NF4 + Double Quant + Paged Optimizer |
| 要注入领域知识 | Continue Pretrain | 70% 领域 + 30% 通用 + LoRA 二次预训练 |
| 想做 RLHF | 优先 DPO,有钱用 PPO | SFT → 偏好对 → DPO |
| 训练显存爆 | 8 大显存技巧 | Gradient Checkpointing + LoRA + ZeRO |
| 要快速评测 | LLM-as-Judge | GPT-4 裁判 + Chatbot Arena |
通用纪律:
- 领域微调用 Base 模型(已对齐的 Chat 会冲突)
- 领域 70% + 通用 30%(防灾难遗忘)
- LoRA 主流 / QLoRA 单卡王炸
- PPO 难调 → DPO 主流(2024+)
- SFT 不要纯合成数据(易过拟合)
- 显存爆先上 Gradient Checkpointing + LoRA
12. 引用清单
- LLM 面试 / 微调与强化学习完整专题 —— 19 PDF / 微调 + PEFT + LoRA 系列 + QLoRA + 增量预训练 + RLHF 变种 + PPO + 显存优化 + 推理 + Prompting + SFT 数据 + 训练集
- newtype · AI Coding 实战与工具栈演化 —— newtype 微调实战(部分)
- LLM 基础(Transformer / Attention / 三种 PLM)(跨作者主题综合) —— 基础架构(配合阅读)
- LLM 分布式训练 / GPU 集群 / 推理优化(跨作者主题综合) —— 分布式训练(配合阅读)