笃行
首页
个人 & 心法
互联网/硬件后台
游戏基础架构
UE 引擎
游戏业务
AI / 大模型
数据结构与算法
机器学习数学
通用基础
GitHub
首页
个人 & 心法
互联网/硬件后台
游戏基础架构
UE 引擎
游戏业务
AI / 大模型
数据结构与算法
机器学习数学
通用基础
GitHub
  • AI / 大模型

    • AI / 大模型
    • 大模型核心原理
    • 推理与微调优化
    • RAG 检索增强生成
    • RAG 上下文剪枝实战(Listwise Pruning 复现)
    • RAG 数据清理
    • RAG 存量数据清理
    • Agent 开发
    • Agent 运行时深水区
    • Multi-Agent 协作
    • Agent 评测与线上运营
    • AI 与游戏研发周期
    • 互动影游与长视频创作 Agent
    • LLM 应用安全
    • LLM 评测方法论
    • LLM 成本与延迟
    • 微调策略
    • AI 研发工程化

微调策略

全参微调 vs PEFT · LoRA/QLoRA · SFT vs RLHF vs DPO · 微调 vs RAG vs Prompt · 数据规模与质量 · 灾难性遗忘与评测回归

🧠 一句话记忆锚点

先问"要不要训"再问"怎么训":加知识/时效性用 RAG、调格式/临时行为用 Prompt、改风格/固有能力才微调。要训优先 PEFT(LoRA/QLoRA,只训 <1% 参数),对齐用 DPO 起步、复杂场景才上 RLHF。全参微调是最后一档,且务必守住"灾难性遗忘"的评测回归底线。

名词速查

首次阅读可跳过本表,直接看「场景问题」,遇到生词再回查。

本篇是训练与适配这一组名词的归属页。这组词的共同点是:它们都在回答同一个问题——要改模型的行为,改到哪一层、付多少代价。类比到后台就是"改配置 / 打补丁 / 重构 / 重写"这条由轻到重的阶梯。

名词后台类比在系统里干什么类比失效边界
全参微调(Full Fine-tuning)拉整个仓库源码改完重新编译发布——改得彻底,但产物是一份全新的完整二进制更新模型全部权重去适配新任务。表达能力上限最高重新编译的产物可以和旧版并存、随时回滚;全参微调的产出是一份与底座同样大的全量权重,每个任务存一份,显存与存储成本线性膨胀。而且改动不可局部撤销——不像 revert 一个 commit,你没法"只退掉学坏的那部分"
PEFT(参数高效微调)打补丁 / 挂插件——主程序不动,只加一小块可插拔的增量冻结底座权重,只训练极少量新增参数(<1%),大幅降低显存与存储成本插件加载失败可以卸掉、主程序照常跑;PEFT 的增量与底座在数值上深度耦合——换个底座版本,同一份 adapter 通常直接失效,不像插件那样有稳定 ABI
LoRA在原表上加一张小的差异表,查询时把两者叠加,而不改原表用两个低秩矩阵的乘积 BA 近似权重增量(W + BA),冻结主干只训 B、A。推理时可合并进原权重,不增加延迟差异表能无损表达任意改动;低秩增量天生只能表达"低秩的改动"——改风格、改格式、学固定套路它够用,但要重造底层表征(换语言、纯新领域)时秩再高也追不上继续预训练。这是它的能力上限,不是调参能解决的
QLoRA先把主库压缩归档存起来(只读),再在外面挂差异表把底座量化到 4bit 冻结,只在其上训练 LoRA,单卡就能微调大模型压缩归档解压后与原文完全一致;4bit 量化是有损的,底座本身已经掉了一点精度,再叠 adapter——两层误差叠加,对精度敏感的任务需实测确认可接受
秩(Rank)与低秩一张表里"真正独立的列有几列"——100 列里若 98 列都能由另 2 列算出来,这张表的秩就是 2度量一个矩阵含多少独立信息。低秩 = 用很少几个独立方向就能把它拼出来,所以能用两个瘦矩阵的乘积代替一个胖矩阵,参数量从 d×d 降到 2×r×d"独立的列"在数据库里是精确可判定的;矩阵的秩在实践中是近似概念——真实的权重增量并非严格低秩,只是能被低秩很好地逼近。所以 r 调大能提升拟合能力但收益递减,且大了既慢又容易过拟合
低秩增量(Low-Rank Update)稀疏 diff——只记录变化量,且假定变化本身有结构LoRA 的数学基础:假设微调所需的权重改动矩阵本征秩很低,故可用 r × d 的两个瘦矩阵近似diff 是精确的、能完整还原目标状态;低秩是一个近似假设——它对"适配任务"成立得不错,对"注入大量新知识"就不成立。秩 r 是需要按任务实测的参数,不是越大越好(大了既慢又容易过拟合)
SFT(监督微调)按标准答案样例做回归测试驱动开发——给输入和期望输出,让它学着照做用「指令 → 理想回答」的成对数据训练,教模型格式、风格、任务范式。是对齐的第一步测试用例只判对错;SFT 只能学到你示范过的行为,它无法学到"哪个回答更好"这种排序信息——因为数据里只有一个正确答案,没有对比。这正是需要 RLHF/DPO 的原因
RLHF上线后按用户反馈持续调优——但中间隔了一层"打分服务"先用人类偏好排序训一个奖励模型,再用强化学习(PPO)让模型最大化奖励。能学到"哪个更好"的相对偏好灰度调优的指标是直接测出来的;RLHF 优化的是奖励模型给的代理指标,模型会去钻它的空子(reward hacking)——刷到高分但实际变差。链路长(三阶段)、超参敏感、训练不稳定,工程成本远高于 SFT
DPO直接用 A/B 对比结果调参,省掉中间那层打分服务用偏好对 (chosen, rejected) 直接优化策略,数学上等价于 RLHF 的目标但无需训练独立奖励模型、无需 RL 采样A/B 结果能持续采集;DPO 用的是离线固定的偏好对,模型训练中偏离数据分布后就没有新的反馈信号来纠正(RLHF 的在线采样能做到这点)。所以在需要长期精细对齐的场景,DPO 的天花板通常低于成熟的 RLHF
奖励模型(RM, Reward Model)自动化打分服务——把"人觉得哪个更好"固化成一个可批量调用的接口RLHF 三阶段里的中间产物:用人类偏好排序数据训一个模型,专职给回答打分,供 PPO 阶段当优化目标打分服务的规则是你写的、可审计、改了立即生效;RM 的评分标准是从有限偏好数据里学出来的,你不知道它到底在奖励什么——模型会找到"高分但实际很差"的输出(reward hacking),而 RM 自己不会报警。DPO 之所以更稳,正是因为它绕过了这个中间层
知识蒸馏(Distillation)用线上大服务的输出当训练数据,喂出一个轻量版服务用大模型(teacher)的输出/概率分布训练小模型(student),让小模型以更低成本逼近大模型的行为缓存大服务的响应,命中时结果完全一致;蒸馏出的 student 只是在 teacher 覆盖过的分布上像它——遇到 teacher 数据没覆盖的输入,它的表现会明显跌落,且这种退化没有告警
灾难性遗忘(Catastrophic Forgetting)改了一个模块,把另一个没测到的模块搞坏了——但你没有那部分的回归测试为新任务训练时,模型丢掉原本会的能力(尤其全参微调、数据单一时最明显)代码里的回归可以靠单测精确定位到哪一行;这里没有"哪个权重坏了"可查,只能靠评测集在结果层面发现。所以必须在微调前就备好通用能力评测集——训完再想"它是不是变笨了"就没有基线可比了

本篇引用的其他上下文名词

名词在本篇里的角色完整解释去哪读
量化 / INT4 / NF4 / 显存占用QLoRA 的 4bit 底座与推理侧量化同源推理与微调优化 · 名词速查
对齐 / 涌现 / token / 词表微调作用于的模型本体概念大模型核心原理 · 名词速查
RAG / 检索 / 向量库"该微调还是该用 RAG"的对照项RAG · 名词速查
Golden Set / 评测回归守住灾难性遗忘底线所需的评测手段评测方法论 · 名词速查

场景问题

"模型不够好,到底该不该微调?"

这是面试与实战里最容易走偏的一步。很多人一上来就想微调,结果花了几万块算力、掉了通用能力,还不如挂个检索。要先把需求归类到三个正交的维度:

需求本质首选手段
让模型"知道"新事实、时效内容、私有文档缺知识RAG(检索注入,不改权重)
让模型"这次"按某种格式/角色/步骤输出缺指令约束Prompt Engineering / few-shot
让模型"永久"改变风格、领域语感、固有行为缺能力/对齐微调(SFT / PEFT / 对齐)

关键洞察:微调擅长教"怎么做"(style、format、reasoning pattern),不擅长灌"是什么"(fact)。灌事实用微调,既贵又易过拟合,还会因知识更新而失效——那是 RAG 的活。

真要微调时,选哪条路线?

微调本身又分两层问题:参数怎么更新(全参 vs PEFT)和用什么信号更新(SFT vs 偏好对齐)。两层独立,先定路线再谈实现。

实现方案

全参微调 vs PEFT:参数怎么更新

全参微调(Full Fine-Tuning):解冻全部权重跟着梯度更新。效果上限最高,但 70B 模型要存权重 + 梯度 + 优化器状态(Adam 约 2 份动量),显存 ≈ 参数量 ×(2+2+4+4)≈ 十几倍,动辄数百 GB,还每个任务存一份全量权重。

代一遍数字(70B,bf16 训练 + Adam fp32 优化器状态):

权重   bf16  2 B/参数 × 70B = 140 GB
梯度   bf16  2 B/参数 × 70B = 140 GB
Adam   fp32  (4+4) B/参数 × 70B = 560 GB   ← 一阶动量 + 二阶动量,最大头
                                  合计 ≈ 840 GB(约参数量的 12 倍,还没算激活值)

所以工程上意味着什么:一张 80G 的 H100 连 1/10 都装不下,必须靠 ZeRO-3 / 张量并行摊到 11 张卡以上才只是"放得下",加上激活值与通信开销,实际起步在一台 8 卡机之外。换句话说,对 70B 这个量级,PEFT 不是"省钱的可选项",而是单机能不能开工的唯一选项——而且最大的那一块是优化器状态(560/840 ≈ 67%),所以省显存的杠杆首先在"少训几个参数",而不是"把权重压得更小"。

PEFT(Parameter-Efficient Fine-Tuning):冻结主干,只训练极小一部分新增参数。代表就是 LoRA——冻结原权重 W,在旁边并联一个低秩增量 BA:

h = W·x + ΔW·x = W·x + (B·A)·x
    A ∈ R^{r×d}   B ∈ R^{d×r}   秩 r 远小于 d(常见 r=8/16/64)
    只训练 A、B,可训参数占原模型 <1%;推理时可把 BA 合并回 W,零额外延迟

低秩假设的直觉:微调所需的权重改变量 ΔW 是"低内在秩"的——适配一个新任务不需要动整个高维空间,一个瘦长的 BA 就够表达。(低秩增量、冻结主干等机制细节,与推理侧共享同一套原理,详见 推理优化。)

QLoRA 在 LoRA 上再省一层:主干权重用 4bit NF4 量化冻结存储,只有 LoRA 的 A/B 以 bf16 训练,配合双重量化与分页优化器,单张 24G/48G 卡就能微调 65B。代价是量化引入的微小误差,对多数任务可忽略,对数学/代码等敏感任务需实测。

打个比方:全参微调 vs LoRA 就像衣服改尺寸——全参是把整件布料拆掉、按新身材重新裁一件,改得彻底但贵、慢、还得存一整衣柜(每个任务一份全量权重);LoRA 是在原衣服外面加一根低秩"束腰带 BA",冻住主布料只训束腰,参数占 <1%、单卡就能训、推理时还能把束腰缝进原衣不加延迟;QLoRA 更狠——先把主布料压成 4bit 真空包装收进衣柜,再加一根束腰。类比失效边界:束腰带只对"体型接近"的场景有效——一旦目标任务分布和预训练差距过大(换语言、纯新领域术语、要重造底层表征),LoRA 秩再高也追不上继续预训练;而且多个 LoRA 叠加时adapter 之间会互相干扰(尤其激活量化叠 4bit 主干),不是层数越多越好,得逐个评测回归。

SFT vs RLHF vs DPO:用什么信号更新

参数更新方式定了,还要定"拿什么数据、朝什么目标训"。三种主流范式层层递进:

范式目标数据形态训练代价
SFT(监督微调)学会"照着标准答案说"(prompt, 理想回答) 成对低,一次交叉熵
RLHF对齐人类偏好、上限最高偏好排序 → 训奖励模型 → PPO高,多阶段、易训崩
DPO直接对齐偏好、更稳更省(prompt, chosen, rejected) 偏好对中,单阶段类分类
  • SFT 是一切的起点:告诉模型"这类问题应该这么答"。但它只会模仿标准答案,无法表达"A 比 B 好一点"这种相对偏好。
  • RLHF 三段式:先用人工排序数据训一个奖励模型 RM,再用 PPO 让语言模型在 RM 打分下做强化学习。效果强,但 RM 会被"钻空子"(reward hacking)、PPO 超参敏感、四个模型同时跑显存爆炸。
  • DPO 的洞察:偏好优化其实有闭式解,不必显式训奖励模型也不必跑 RL。直接用偏好对构造一个分类式损失,让 chosen 的概率相对 rejected 上升。省掉 RM 和 PPO,稳定性和成本大幅改善,成为当下对齐的默认起点。

数据:规模与质量

微调是"用数据雕刻行为",数据错则一切错:

  • 规模:SFT 风格/格式类任务,几百到几千条高质量样本常已见效(LIMA 等工作表明"少而精"优于"多而杂");领域能力增强通常 数千到数万条;全参微调才需更大量级。
  • 质量 > 数量:几百条人工精修 > 几万条噪声爬取。脏标注、格式不一、答案风格漂移会被模型忠实学走。
  • 多样性与去重:覆盖真实分布、去掉近重复,防止过拟合到少数模板。
  • 对齐数据:DPO/RLHF 需要成对偏好(同一 prompt 的好坏两个回答),标注成本高于 SFT。

为什么这么做

决策框架:微调 vs RAG vs Prompt

按"改动成本从低到高"依次尝试,能用低档解决就别上高档:

  • 先 Prompt:调 system prompt、加 few-shot、给格式约束。零成本、秒级迭代,能解决相当一部分"输出不对"的问题。
  • 再 RAG:需求是"缺知识/要时效/私有文档/可溯源"→ 挂检索,把事实放进上下文。知识更新只需换库,不动模型。详见 RAG。
  • 才微调:需求是"要稳定改变风格、领域语感、固有行为,且 prompt/RAG 都压不住"→ 上 PEFT。要对齐人类偏好 → DPO 起步。
  • 组合拳最常见:微调(学格式与领域语感)+ RAG(供最新事实)+ Prompt(控本次行为) 往往优于单点堆微调。

为什么优先 PEFT 而非全参

  • 成本:LoRA 可训参数 <1%,显存与存储降一个数量级,单卡可训。
  • 可插拔:一个主干挂多个 LoRA adapter,按任务热切换,无需存多份全量权重。
  • 抗遗忘:主干冻结,通用能力被"锁"住,灾难性遗忘天然更轻。
  • 效果够用:多数风格/领域/指令任务上,LoRA 与全参差距很小。

为什么别的选择不行

常见坑与反直觉

  • "效果差就微调":多数"效果差"其实是缺知识或指令没写好——该 RAG/prompt 的场景硬微调,既贵又灌不进事实,还破坏通用能力。
  • "微调能让模型记住我的文档":不可靠。微调是学"怎么答"不是"背事实",灌进去的知识会过拟合、会随更新失效、不可溯源——事实类交给 RAG。
  • "数据越多越好":少而精的高质量数据常胜过海量噪声;脏数据会被忠实学走。
  • "LoRA 一定不如全参":多数任务差距极小,且 LoRA 抗遗忘、可插拔、成本低——全参是"最后一档"。
  • 灾难性遗忘(Catastrophic Forgetting):微调新任务后,模型在原有通用能力上大幅退化。全参微调、学习率过大、数据分布太窄时尤甚。缓解:优先 LoRA(冻主干)、小学习率、混入通用语料回放(replay)、早停。
  • "训完 loss 降了就算成功":必须做评测回归——训练前后都在一套通用基准 + 目标任务 + 安全评测集上跑,确认目标任务涨的同时通用能力没塌。只看训练 loss 会漏掉遗忘。

微调路线速查

方案显存/成本适合不适合
全参微调最高(数百 GB)算力充足、要最大化效果中小团队、快速迭代
LoRA低(可训 <1%)多任务、快速试验、可插拔、抗遗忘需大幅改底层表征的极端场景
QLoRA最低(单卡微调 65B)显存受限、个人/小团队对量化误差极敏感的任务
RAG / Prompt(不训)几乎为零加知识、时效内容、频繁变动需永久改变模型固有行为/风格

沉淀结论

速记

三问定策略:缺知识→RAG,缺指令→Prompt,缺能力/对齐→微调。要训优先 PEFT(LoRA 只训 <1%、QLoRA 4bit 主干单卡训 65B),对齐 DPO 起步、复杂才 RLHF。数据少而精,训完必做评测回归防灾难性遗忘。全参微调是最后一档。

面试高频题清单

  • Q:什么时候该微调、什么时候用 RAG/Prompt? A:缺知识/时效→RAG;缺指令约束→Prompt;要永久改风格/领域能力/对齐→微调。微调教"怎么做"不擅长灌"是什么"。
  • Q:LoRA 原理是什么,为什么省? A:冻结主干 W,只训低秩增量 BA(h=Wx+BAx),基于 ΔW 低内在秩假设,可训参数 <1%,推理可合并回 W 零延迟。
  • Q:QLoRA 相比 LoRA 多做了什么? A:主干 4bit NF4 量化冻结存储 + 双重量化 + 分页优化器,单卡即可微调 65B,代价是可忽略的量化误差。
  • Q:SFT / RLHF / DPO 区别? A:SFT 学标准答案(成对指令数据);RLHF 训奖励模型 + PPO,上限高但复杂易崩;DPO 直接用偏好对做分类式优化,免 RM 免 RL,更稳更省,成主流起点。
  • Q:微调需要多少数据? A:风格/格式几百几千条精修样本常够;领域增强数千数万;质量与多样性远比数量重要。
  • Q:什么是灾难性遗忘,怎么防? A:微调后通用能力退化。防法:优先 LoRA 冻主干、小学习率、混通用语料回放、早停,并做训练前后评测回归。

记忆口诀

  • 要不要训:缺知识 RAG / 缺指令 Prompt / 缺能力才微调
  • 参数怎么更新:全参最贵最强 / LoRA 训 <1% / QLoRA 4bit 单卡训大模型
  • 用什么信号:SFT 学答案 / RLHF 强但崩 / DPO 稳而省
  • 数据:少而精 > 多而杂 / 质量多样性 > 数量
  • 底线:冻主干抗遗忘 / 训完必评测回归

内容来源

综合整理:LoRA(Hu 2021)、QLoRA(Dettmers 2023)、InstructGPT/RLHF(Ouyang 2022)、DPO(Rafailov 2023)、LIMA(Zhou 2023)、Hugging Face PEFT/TRL 官方文档(2026-07;领域更新极快,请以最新论文与官方文档为准)。相关机制细节参见 推理优化 与 RAG。

自测:合上资料能说清楚吗?

  1. 面对"模型效果不好",你会按什么顺序考虑 Prompt / RAG / 微调?各自解决什么?
参考答案

按改动成本从低到高:先 Prompt(调指令/few-shot,解决输出不对);再 RAG(缺知识/时效/私有文档,注入事实、可溯源);才 微调(要永久改风格/领域能力/对齐)。核心:微调教"怎么做",不擅长灌"是什么"。

  1. 用一行公式说清 LoRA,并解释为什么只训 <1% 参数还能有效。
参考答案

h = W·x + (B·A)·x,冻结 W,只训低秩 A、B。有效性来自 ΔW 低内在秩假设——适配新任务所需的权重改变量本就是低秩的,瘦长的 BA 足以表达;推理时 BA 可合并回 W,零额外延迟。

  1. QLoRA 相比 LoRA 多解决了什么问题?代价是什么?
参考答案

主干权重 4bit NF4 量化冻结存储(+ 双重量化、分页优化器),把显存再降一档,单卡微调 65B。代价是量化引入的微小误差,多数任务可忽略,数学/代码等敏感任务需实测。

  1. SFT、RLHF、DPO 的目标、数据形态、代价各是什么?为什么 DPO 常作对齐起点?
参考答案

SFT:学标准答案,(prompt, 回答) 成对,代价低。RLHF:对齐偏好,偏好排序训 RM + PPO,上限高但多阶段、易训崩、显存高。DPO:(prompt, chosen, rejected) 偏好对做分类式优化,免 RM 免 RL,更稳更省——故作起点,追求上限才上 RLHF。

  1. 什么是灾难性遗忘?训练后为什么必须做评测回归,只看 loss 为何不够?
参考答案

灾难性遗忘:微调新任务后模型通用能力大幅退化(全参、大学习率、窄分布时尤甚)。缓解:优先 LoRA 冻主干、小学习率、通用语料回放、早停。必须在通用基准 + 目标任务 + 安全评测集上做训练前后回归——训练 loss 只反映目标任务,看不到通用能力是否塌,会漏掉遗忘。

最近更新: 2026/9/10 11:38
Prev
LLM 成本与延迟
Next
AI 研发工程化