大模型project面试4

8. 大模型微调的方案有哪些?

我了解微调之后,首先意识到的是:微调不是首选,而是最后手段。大多数问题先把 Prompt 写好、加 Few-shot 示例,或者用 RAG 接外部知识,基本都能解决。真正需要微调的场景是:模型需要以特定风格持续输出、需要学会稳定的任务格式、或者需要大幅降低成本用小模型替代大模型。方案上,LoRA/QLoRA 是最常用的,因为它只训练一小部分参数,普通 GPU 上就能跑,不需要全量更新所有权重;SFT 是微调的目标形式,让模型从续写模式变成指令回答模式;有偏好对齐需求的话,DPO 比 RLHF 简单得多、效果也不差。选模型不是看谁排行榜最高,选微调方案也是同理,核心是看资源约束和实际需求。

先回答一个前置问题:什么时候才真的需要微调?

很多人一遇到「模型表现不好」就想上微调,这其实是新人的本能反应。但工业界踩过坑的人都知道,微调是最后手段,不是第一选择

为什么?因为微调的成本远比想象大。需要准备高质量数据集(光是标注就可能花几万到几十万)、需要 GPU 资源(少说几张 A100)、需要工程经验(调参、防过拟合、防灾难性遗忘)。最坑的是维护成本,底层基础模型一升级(比如 Llama 3 出来要换 Llama 4),你之前微调的版本基本就废了,得重新微调一遍。

那什么时候才该上微调?我自己总结的判断标准是这样的。

如果只是想让模型回答某种特定格式(比如必须是 JSON),先试 Prompt + Few-shot,写清楚格式要求 + 给 3-5 个示例,大模型基本能搞定。如果想让模型回答某种特定风格(比如公司客服的口吻),先试 System Prompt 描述风格 + 几个对话示例,多数情况也能行。如果想让模型懂某个领域知识,先试 RAG(检索增强),把领域知识库挂上让模型实时查,比硬塞进参数里灵活得多。

只有当上面这些都试过、效果还是不达标的时候,才认真考虑微调。具体来说,下面三种场景微调才是真的值得做:第一种是模型需要持续以一种特殊风格输出(Prompt 控制不住,比如生成特定格式的代码、特定语气的文案);第二种是需要模型稳定掌握某类任务模式或内部术语表达;第三种是想用小模型替代大模型省成本(用 7B 微调模型替代 70B 通用模型,推理成本能省很多)。

这里要特别提醒:如果需求是「补充经常变化的事实知识」,微调通常不是好选择。比如产品价格、政策条款、库存状态、合同原文,这些内容应该放进 RAG 或数据库里实时查。微调更适合学行为、格式、风格和任务模式,不适合当一个会频繁更新的知识库。

理清「该不该微调」之后,再来看「微调有哪些方案」。这里有一个特别容易踩的坑,很多人把「全量微调、LoRA、QLoRA、SFT、DPO」都当成同一类的「不同微调方法」来背。其实它们分两个完全不同的维度。

微调的两个正交维度:改哪些参数 vs 学什么目标

微调本质上是回答两个问题。

第一个问题是「改哪些参数」。模型有几十亿到几百亿参数,你是要全部改,还是只改一小部分?这一维度上有三个主流方案:全量微调(全改)、LoRA(改一小部分)、QLoRA(改一小部分 + 量化基础模型)。

第二个问题是「学什么目标」。模型要学的是「按指令回答」还是「学会哪种回答更好」?这一维度上有两个主流方案:SFT(学指令格式)、DPO(学偏好对齐)。

这两个维度是正交的,可以任意组合。比如:

  • 用全量微调做 SFT
  • 用 LoRA 做 SFT
  • 用 QLoRA 做 SFT
  • 用 LoRA 做 DPO
  • 用 QLoRA 做 DPO

每种组合都是合法的「微调方案」。理解这两个维度的正交关系,是回答这道题的钥匙。

下面分别看这两个维度上的方案。

「改哪些参数」维度:从全量微调到 QLoRA

全量微调(Full Fine-tuning):所有参数都改

最朴素的方案就是把模型所有参数都拿出来在新数据上继续训练,让所有层都重新适配新任务。效果通常是最好的,因为模型有最大的自由度去调整。

但代价大到吓人。一个 7B 模型的全量微调,不光要存权重本身(FP16 大约 14GB),还要存梯度(14GB)、优化器状态(Adam 的两个矩约 56GB),加起来一次训练 80GB 起步,普通研究者根本玩不动。70B 的模型更夸张,要几十张 A100 组集群才能训。

更糟的是「灾难性遗忘」(Catastrophic Forgetting)。模型在新任务上学得好了,原本预训练学到的通用能力反而下降。这是因为所有参数都在被改写,新数据分布有偏的话,模型会忘记原本的「通用知识」。

所以全量微调虽然效果上限高,但实际能用的团队凤毛麟角。绝大多数情况下,业界都在用更轻量的方案,最流行的就是 LoRA。

LoRA(Low-Rank Adaptation):只改一小部分参数

LoRA 的核心洞见特别巧妙。它发现一个事实:模型参数的「更新量 」(即 ΔW = W微调后 - W原始)虽然维度很大(比如 4096×4096),但真正有意义的变化只发生在一个低维子空间 里。换句话说,权重的更新具有「内在低秩性」,不需要每个维度都去改。

基于这个洞见,LoRA 的做法是:冻结原始权重 W 不动,在 W 旁边新增两个小矩阵 A 和 B(维度分别是 d×r 和 r×d,其中 r 远小于 d,通常 r=8 或 16),训练时只更新这两个小矩阵。推理时把 B·A 加回到 W 上,等价于一个全量微调过的模型,但训练时显存和算力开销是全量微调的几十分之一。

打个比方,全量微调像是把一本厚厚的教科书全部重写一遍,LoRA 像是在书的空白处贴便利贴,原书一字不动,便利贴上写着新增的修正和补充。看书的时候原文 + 便利贴一起看,效果叠加。

参数量对比很直观。一个 4096×4096 的权重矩阵原本有 1600 万参数,LoRA r=16 只需要 4096×16 + 16×4096 = 13 万参数,参数量降到 1/120。整个 7B 模型的可训练参数从 70 亿降到 2000 万左右,显存需求从 80GB+ 降到 20GB 量级,一张 A100 就能搞定。

LoRA 已经是 2023 年之后最主流的微调方案,几乎所有开源社区的微调项目都在用。

QLoRA:消费级 GPU 的入场券

LoRA 解决了「不用 80GB 显存也能微调」的问题,但对个人开发者来说,20GB 显存还是有门槛(4090 是 24GB,刚刚够 7B 模型的 LoRA)。QLoRA 把这个门槛进一步往下打。

QLoRA 的核心思路是:先把基础模型用 4-bit 量化(一种叫 NF4 的格式,专为模型权重的近似高斯分布设计),把 7B 模型的显存占用从 14GB 压到 4GB 左右;然后在量化后的基础模型上套 LoRA。这样整个微调过程的显存占用降到 10GB 以内,一张 4090(24GB)就能微调 7B 甚至 13B 模型

QLoRA 的精度损失非常小,实测效果和全精度 LoRA 几乎没差别。这一招直接让微调民主化了,无数个人开发者用 QLoRA 训出了自己的领域模型。Alpaca、Vicuna 这些早期开源指令模型基本都是用 QLoRA 训出来的。

到这里,「改哪些参数」维度的三个方案就清楚了。下面看另一个维度。

「学什么目标」维度:SFT 和 DPO

「改哪些参数」回答的是「怎么改 」的问题,但还有一个更核心的问题没回答:改的目标是什么?让模型学会做什么?

这一维度上有两个主流方案。

SFT(Supervised Fine-Tuning,监督微调):让模型学会「按指令回答」

预训练模型本质是「文本续写机器」,给一段文字就接着往下写,根本不知道「问问题」是什么意思。SFT 的目标就是把模型从「续写模式」切换到「对话模式」。

它的训练数据格式是 (指令,期望回答) 的对,比如「请介绍一下北京 → 北京是中国的首都,位于华北平原......」。模型在这样的数据上继续训练,慢慢学会「看到这种格式就该给一个完整回答,不要无限续写下去」。

SFT 是一个「目标 」,不是「方法 」。具体怎么实现?可以用全量微调做 SFT、可以用 LoRA 做 SFT、也可以用 QLoRA 做 SFT。在工业界最常见的组合是 QLoRA + SFT 数据,性价比最高。

SFT 数据的关键是质量大于数量。Llama 2 用了大约 100 万条 SFT 数据,但每条都是精心标注的。AlpacaFarm 的研究还发现一个反直觉结论:几千条高质量数据训出来的效果,比几十万条粗糙数据要好。

DPO(Direct Preference Optimization,直接偏好优化):让模型学会「哪种回答更受欢迎」

SFT 之后,模型已经会按指令回答了,但回答风格不一定是用户喜欢的(可能太啰嗦、太简洁、有时候说话不得体)。这时候需要更进一步的「偏好对齐」,告诉模型「同样合格的回答里,哪种用户更喜欢」。

早期做偏好对齐的标配方案是 RLHF(Reinforcement Learning from Human Feedback),流程是:收集人类偏好数据 → 训一个奖励模型 → 用 PPO 算法优化主模型。但 RLHF 流程长、要同时维护好几个模型、训练不稳定,能驾驭它的团队不多。

DPO 是斯坦福 2023 年提出的简化方案。它发现一个数学上的等价转换:RLHF 的优化目标可以推导成纯监督学习的损失函数,完全绕过奖励模型,也不需要 PPO。直接拿 (问题,好回答,差回答) 三元组训练,让模型直接学会「好回答的概率要比差回答提升得多」。

DPO 训练简单、稳定、工程门槛低,所以开源社区的偏好对齐阶段大量使用 DPO 或它的变体。但这里别说得太绝对,不同模型的 post-training 流程差异很大。比如 Llama 2-Chat 公开流程主要是 SFT、拒绝采样和 PPO/RLHF;很多社区模型为了降低成本,才会把偏好优化换成 DPO。

DPO 也是一个「目标」,不是「方法」 。它可以用全量微调实现,也可以用 LoRA 实现。最常见的工业组合是 LoRA + DPO,资源友好。

实战选型怎么落地

理解了两个维度的方案之后,实战选型其实就清楚了。

如果你是个人开发者或资源受限的小团队,最经济的选择是 QLoRA + SFT。一张 4090 就能训 7B 模型,几千条精心标注的指令-回答数据就能让模型学会你的领域任务。绝大多数实际项目走这条路就够了。

如果你是中小企业、有几张 A100 但没有大集群,可以选 LoRA + SFT。比 QLoRA 精度略好一点(因为基础模型不量化),训练速度也更快。

如果你的需求是「让模型的回答风格更符合用户偏好」(不只是格式正确,还要好听),可以在 SFT 之后再加一步 LoRA + DPO。先用 SFT 让模型学会回答格式,再用 DPO 让回答风格对齐用户偏好。很多社区 Instruct 模型走的是 SFT -> DPO 这条轻量路线;而 Llama 2-Chat 这类大厂公开模型可能会用拒绝采样、PPO/RLHF 等更重的组合。

如果你是大厂、有充足 GPU 资源、追求最高效果,可以考虑全量微调 + SFT(甚至 + RLHF)。但要承担得起几十张 A100 的成本和工程复杂度。OpenAI 早期的 ChatGPT、Anthropic 的 Claude 都是走的这条最贵也最强的路。

一个常见误区是「方案越重越好」。其实工程上恰恰相反,能用轻量方案搞定的需求,一定不要上重的。原因有三:训练成本指数级上升、调参难度也上升、维护成本(基础模型升级后要重新微调)也上升。所以实战中绝大多数项目都在用 QLoRA + SFT 这种最轻量的组合,只有真的需求够特殊才会往上加方案。

🎯 面试总结

回到开头那段对话,问到大模型微调方案,最重要的不是把名词列一遍,而是讲清楚两件事。

第一件事是前置判断:微调是最后手段不是第一选择。能用 Prompt + Few-shot 解决就别上微调;能用 System Prompt 控制风格就别上微调;能用 RAG 接知识库就别上微调。只有这些都试过不行,再考虑微调。这一句说出来,面试官就知道你不是「为了微调而微调」的新人。

第二件事是两个正交维度:「改哪些参数」(全量微调 / LoRA / QLoRA)和「学什么目标」(SFT / DPO)是两个独立的维度,可以任意组合。能说出「LoRA 是方法、SFT 是目标,可以用 LoRA 做 SFT,也可以用 LoRA 做 DPO」,比把这五个名词当作并列项罗列要深刻得多。

讲清楚这两点之后,再补一下实战选型经验。个人开发者用 QLoRA + SFT,有点资源用 LoRA + SFT + DPO(社区主流),大厂追求顶级用全量微调 + RLHF。能说出这种「按资源 + 需求选组合」的工程视角,就是面试加分项。

最关键的一句话是,绝大多数项目能用 QLoRA + SFT 搞定,没必要上更重的方案。这种「克制」的工程态度,面试官会觉得你真的踩过微调的坑,而不是只会堆方案。

9. 请讲一下 LoRA 技术,除了减少参数量,它还有哪些优点?

LoRA 我在项目里用过,省参数这个优点大家都知道,但它还有几个很实用的好处。

这里的 r 就叫做秩(rank),是 LoRA 最重要的超参,通常设 8 或 16。r 越小,参数越少,但表达能力也越弱;r 越大,参数越多,但更接近全量微调效果。大多数任务 r=8 到 r=16 就够了。

研究者们发现:RLHF 的优化目标,可以通过推导改写成一个纯监督学习的目标函数,不需要显式训练奖励模型。直觉上,「奖励模型」的功能可以被「主模型相对于参考模型的概率比值」完全替代。

OpenAI 早期的 ChatGPT 强大效果就来自精心调优的 RLHF,但工业界能驾驭 RLHF 的团队凤毛麟角,所以后来出现了一系列简化方案。

DPO:绕过奖励模型的等价转换

DPO(Direct Preference Optimization,直接偏好优化)是 2023 年斯坦福提出的方案,核心是一个数学上的等价转换。

数据格式简单到不能再简单:

OpenAI 早期的 ChatGPT 强大效果就来自精心调优的 RLHF,但工业界能驾驭 RLHF 的团队凤毛麟角,所以后来出现了一系列简化方案。

DPO:绕过奖励模型的等价转换

DPO(Direct Preference Optimization,直接偏好优化)是 2023 年斯坦福提出的方案,核心是一个数学上的等价转换。

研究者们发现:RLHF 的优化目标,可以通过推导改写成一个纯监督学习的目标函数,不需要显式训练奖励模型。直觉上,「奖励模型」的功能可以被「主模型相对于参考模型的概率比值」完全替代。

DPO 训练数据:每条是一个三元组

{

"prompt": "如何学好 Python?",

"chosen": "建议先从官方文档入手,配合做小项目实践......", # 人类更偏好的回答

"rejected": "Python 很简单,随便找个教程看看就行了......" # 人类不太喜欢的回答

}

  • 第一个是推理零开销,训练完之后,LoRA 的 A、B 两个小矩阵可以直接合并回原始权重,推理阶段完全不需要带额外模块,速度和原始模型一样,这比 Adapter 方案有明显优势。

  • 第二个是部署特别灵活,一个 7B 基础模型才 14GB,每套 LoRA 只有几十 MB,可以同时维护客服、代码、翻译几套 LoRA,按请求类型热切换,不需要为每个场景各跑一个完整模型。

  • 第三个是灾难性遗忘风险更低,因为原始权重全程冻结,只有旁路的小矩阵在学习,相当于在原来知识旁边打补丁,通用能力通常更容易保住。

  • 第四个是训练更稳定,可训练参数少,梯度空间小,对学习率这类超参不那么敏感,调参成本低。

  • 还有一个进阶的点是多个 LoRA 可以加权混合,比如把指令遵循 LoRA 和代码 LoRA 合并一下,不用重新训练就能融合两种能力。

    背景:微调大模型,代价有多大?

    要理解 LoRA 的价值,先得搞清楚它在解决什么问题。

    大模型预训练完之后,通用能力很强,但要让它专注做某类任务(比如医疗问答、代码生成),通常需要在特定数据上做微调。最直接的方式是全量微调(Full Fine-tuning):把模型所有参数都拿出来,在新数据上继续训练,更新全部权重。

    但全量微调的显存需求极高。以一个 7B 参数的模型为例,用 FP16 精度存储权重本身就要约 14GB;训练时还需要存梯度(14GB),以及 Adam 优化器的两个状态,一阶矩和二阶矩(合计约 56GB)。光这几项加起来,一次训练迭代就需要 80GB+ 的显存

    普通研究者或开发者手里顶多是一张 24GB 的消费级 GPU(比如 RTX 4090),全量微调一个 7B 模型根本跑不动。如果是 70B 模型,需要的显存更是以百 GB 计,别说个人,普通公司都很难负担。

    这就催生了一类新方法,参数高效微调(PEFT,Parameter-Efficient Fine-Tuning),核心思路是:不更新全部参数,只训练一小部分,同时尽量不损失微调效果。LoRA 是其中最成功的方案之一。

    LoRA 的核心思路:不改原模型,在旁边打补丁

    LoRA(Low-Rank Adaptation)的思路很直觉:不动原始权重 W,在旁边加两个小矩阵 A 和 B,训练时只更新 A 和 B,W 全程冻结。

    A 和 B 两个小矩阵组成一个「旁路分支」,负责学习微调任务需要的增量知识;原始权重 W 保存着预训练学到的通用知识,一字不改。

    可以用「给书批注」来类比:全量微调是把书重新印一遍、改掉原文内容;LoRA 是在书的空白处贴便利贴,原书一个字都不动,便利贴上写的是修正和补充。读书的时候,原文和便利贴的内容都能看到,效果叠加在一起。这种「在旁边打补丁」的设计,是 LoRA 后续很多优点的根源。

    「低秩分解」到底是什么意思?

    LoRA 里最让初学者困惑的词是「低秩分解」。拆开来理解:

    先说「秩」(rank)是什么。 矩阵的秩代表矩阵里「真正独立的信息维度」。一个 4096×4096 的大矩阵,秩最高可以是 4096,意味着里面有 4096 个完全独立的信息方向。但研究发现,微调时权重的「更新量」(即 ΔW = W微调后 - W原始)往往具有内在低秩性,这些变化只在很低维的子空间里发生,秩通常只有 8-16,其余几千个维度几乎没有有效信息。

    用一个类比来感受:一张 4K 照片有几百万像素,但它的信息量可以用几十个主要「颜色分量」来近似表达,这正是 JPEG 压缩的工作原理,把高维数据投影到低维空间,保留最主要的信息,丢掉噪声。低秩分解的思路与此类似。

    再说「分解」是什么操作。 既然「有效信息只在 r 维子空间」,我们就不需要存储整个 d×d 的大矩阵来表示更新量,而是用两个小矩阵的乘积来近似它:

  • 矩阵 A:形状 d×r(把输入从 d 维压缩到 r 维)

  • 矩阵 B:形状 r×d(把 r 维还原回 d 维)

  • 两者乘积 B·A 形状是 d×d,和原始更新矩阵同维,但参数量大幅减少

    回到开头那段对话,问到「LoRA 除了减少参数量还有哪些优点」,最关键的是要跳出「省参数」这一个点,把 LoRA 在多个维度上的优势都讲出来。

    最容易被低估的是推理零开销。训练完之后 LoRA 的 A、B 两个小矩阵可以直接合并回原始权重,推理时和原始模型完全一样,没有任何延迟。这一点和 Adapter 形成鲜明对比,Adapter 在推理时每层都要过一个额外的小网络,长模型上累积起来延迟可观。

    接下来讲部署灵活性。一个 7B 基础模型才 14GB,每套 LoRA 才几十 MB,可以同时维护几套 LoRA(客服、代码、翻译)按请求类型热切换。这种「一个基底 + 多套 LoRA」的部署模式是工业界的现实做法,和「每个任务部署一个全量模型」对比成本能省一个数量级。

    然后是灾难性遗忘风险更低。原始权重全程冻结,所有学习都发生在旁路的小矩阵里,相当于在原本的知识旁边贴便利贴,通用能力更容易保住。这是 LoRA 比全量微调最大的稳定性优势之一,但不是免测金牌,微调后仍然要做回归评测。

    还有两个进阶优点可以提:训练稳定性 (可训练参数少,梯度空间小,对学习率不敏感,调参成本低)和 LoRA 权重的可组合性(不同任务的 LoRA 可以加权混合,不用重新训练就能融合多种能力,业内叫 LoRA Merging)。

    最关键的一句话:LoRA 之所以能成为 PEFT 的事实标准,不是因为单一维度的优势,是「推理零开销 + 部署灵活 + 不遗忘 + 训练稳 + 可组合」这五个优点的叠加,恰好把 Adapter 等早期方案完全比下去了。能讲到这一层,面试官就知道你不是会背一两个优点的新人,是真正理解 LoRA 工程价值的人。

10. SFT 之后还有哪些 Post-Training?RLHF、DPO、GRPO、拒绝采样什么关系?

我理解 Post-Training 是个上位概念,指的是 SFT 之后所有继续提升模型质量的训练阶段。它不是一个单一方法,而是一族方法的总称。

SFT 让模型学会「按指令格式回答」,但 SFT 后的模型还有两个问题没解决。第一,回答可能有害、不符合人类价值观;第二,同一个问题的多种合格回答里,模型不知道哪个更受人类欢迎。这就是 Post-Training 要补的课。

主流的 Post-Training 方法有五大类。

RLHF(Reinforcement Learning from Human Feedback) 是最经典的方案。流程是先用人类对回答的排名训练一个奖励模型,再用 PPO 算法让大模型生成的回答尽量得高分。同时维护一个参考模型用 KL 散度约束,防止主模型「钻空子」。优点是效果上限高,缺点是流程复杂、要同时维护 4 个模型、训练不稳定。

DPO(Direct Preference Optimization) 是 RLHF 的简化版。核心洞见是 RLHF 的优化目标可以推导成一个等价的监督学习损失,绕过显式奖励模型,直接拿(提示,好回答,差回答)三元组训练。优点是只需 2 个模型、训练稳定、实现简单。缺点是效果上限依赖偏好数据质量,探索能力不如精心调过的 RL。很多开源 Instruct 模型会用 DPO 或 DPO 的变体做偏好对齐,但不能把 Llama 2-Chat 也说成 DPO 路线,它公开论文里的关键对齐方法是拒绝采样和 PPO/RLHF。

GRPO(Group Relative Policy Optimization) 是 DeepSeek 在 2024 年提出的 PPO 改进版。核心思路是砍掉 PPO 的 Value Model,改用「同一问题采样 G 个回答、用组内相对排名作为基线」估计优势函数。这样省掉 Value Model 的训练成本,显存减半。DeepSeek R1、DeepSeek-Math、Qwen 系列推理模型都用 GRPO,是 2026 年最热的对齐方案。

拒绝采样(Rejection Sampling Fine-tuning) 是个简单粗暴的方法。让模型对每个 Prompt 生成多个回答,用奖励模型筛出高分的,然后再做一轮 SFT。流程上没有 RL,就是「生成 -> 筛选 -> 再 SFT」循环。Llama 2 的对齐流程里就用了这个。

RLAIF(Reinforcement Learning from AI Feedback) 是用强 AI 模型代替人类标注偏好。Anthropic 的 Constitutional AI、Google 的相关工作里都有 RLAIF 的影子。优点是可以批量生成偏好数据、标注成本低,缺点是依赖一个更强的「教师 AI」。

最关键的认知是这五类方法不是互相替代,真实的对齐流程通常是组合使用的。比如 Llama 2-Chat 公开流程里用了 SFT、拒绝采样和 PPO/RLHF;DeepSeek R1 用了「SFT 冷启动 + GRPO 多轮迭代 + 拒绝采样筛数据」这一类组合路线。

Post-Training 是什么概念?为什么 SFT 之后还需要它

要理解 Post-Training 这一族方法,得先回答一个问题:SFT 之后,模型还差什么?

SFT(Supervised Fine-Tuning,监督微调)的目标是让模型从「文本续写机器」变成「按指令回答的对话机器」。训练数据是(指令,期望回答)对,模型学会的是「碰到指令格式就给出格式化的回答」。

问题是,SFT 学到的只是「合格 」,不是「优质 」。同一个问题,可以有很多种「合格」的回答:有的简洁、有的啰嗦;有的带代码、有的纯文字;有的承认「我不确定」、有的硬装专业胡说八道。SFT 数据里可能各种风格都有,模型学完之后会随机挑一种风格输出,但用户对质量是有偏好的。

更严重的问题是安全对齐。SFT 训练数据里可能没覆盖「用户问怎么造毒」「用户问怎么诈骗」这种场景,SFT 模型遇到这些问题可能就一本正经地回答了。Post-Training 的任务之一就是教会模型「什么不能说」「不知道就说不知道」。

Post-Training 这个词本身是个上位概念,覆盖了 SFT 之后所有继续训练的方法。下面五大类是工业界最主流的方案,每一类的设计哲学都不一样。

RLHF:经典方案,4 模型架构

RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)是 OpenAI 在 InstructGPT 中开创的方案,也是 ChatGPT 早期版本的核心训练方法。

整个流程分三步:

第一步:收集偏好数据。人类标注员对同一个 Prompt 的多个回答做排序,比如「回答 A 比回答 B 好,B 比 C 好」。这种排序数据比绝对评分更稳定,因为人类比较两个回答的相对好坏比给绝对分数容易。

第二步:训练奖励模型(Reward Model)。用偏好数据训一个独立的小模型,输入是(Prompt + 回答),输出是一个分数。训练目标是让「人类觉得好的回答」分数高、「差回答」分数低。这个奖励模型代替了人类,可以批量给后续生成的回答自动打分。

第三步:用 PPO 算法优化主模型 。让主模型生成回答 -> 用奖励模型打分 -> PPO 调整主模型参数往高分方向走。同时维护一个「参考模型」(SFT 模型的冻结副本),用 KL 散度约束主模型不要离参考模型太远,防止「奖励 hacking」(模型学会欺骗奖励模型而不是真的变好)。

RLHF 的优点和缺点都很突出:

  • 优点:效果上限高,因为 RL 可以探索出 SFT 数据里没有的好回答方式
  • 缺点:4 个模型同时训练,显存占用是 SFT 的好几倍;PPO 算法本身不稳定、超参敏感;reward hacking 风险一直存在

DPO 的优势:

只需 2 个模型 :policy + reference,显存占用是 RLHF 的一半 训练稳定 :变成监督学习问题,没有 RL 的不稳定性 实现简单:用现成的深度学习框架就能写

代价:

PPO 的优势函数(Advantage):在强化学习里,「优势」表示「这个动作比平均水平好多少」。PPO 用这个优势来决定参数往哪个方向调。Value Model 的作用就是估计「当前状态的预期奖励」作为基线,优势 = 实际奖励 - 预期奖励。

Value Model 是个独立的神经网络,规模通常和主模型一样大,要单独训练、占显存、调参。这就是 PPO 显存吃紧的根源之一。

GRPO 的核心创新:直接砍掉 Value Model,用「同一个问题采样 G 个回答,组内归一化」来估计优势。

谁在用:Zephyr、部分 Mistral / Qwen 社区微调版本,以及大量开源 Instruct 派生模型都用过 DPO 或 DPO 变体。Llama 2-Chat 这里要单独记,它不是 DPO 代表,而是 SFT + 拒绝采样 + PPO/RLHF 的经典案例。

GRPO:砍掉 Value Model 的 PPO 进化版

GRPO(Group Relative Policy Optimization)是 DeepSeek 在 2024 年的 DeepSeek-Math 论文里提出的,后来 DeepSeek R1 把它推向了风口浪尖。2026 年大厂面试问对齐方法,GRPO 几乎是必问题。

要理解 GRPO,得先搞清楚 PPO 为什么需要 Value Model。

PPO 的优势函数(Advantage):在强化学习里,「优势」表示「这个动作比平均水平好多少」。PPO 用这个优势来决定参数往哪个方向调。Value Model 的作用就是估计「当前状态的预期奖励」作为基线,优势 = 实际奖励 - 预期奖励。

Value Model 是个独立的神经网络,规模通常和主模型一样大,要单独训练、占显存、调参。这就是 PPO 显存吃紧的根源之一。

GRPO 的核心创新:直接砍掉 Value Model,用「同一个问题采样 G 个回答,组内归一化」来估计优势。

GRPO 的优势:

省掉 Value Model :4 个模型变 3 个,显存接近 DPO 但还能保留 RL 的探索能力 训练更稳 :组内归一化天然降低了梯度方差,比 PPO 更容易训 特别适合可验证任务:数学、代码这种「对就是对、错就是错」的任务,r_i 不需要训练奖励模型,直接用对错判定就行(DeepSeek R1-Zero 就是这么做的,连 Reward Model 都省了)

为什么 2026 年这么火?因为推理模型(Reasoning Models)成了主流:

拒绝采样(Rejection Sampling Fine-tuning)是几种 Post-Training 方法里最简单的一个,根本不用 RL

流程是这样的:

整个流程没有 RL 算法、没有 PPO/DPO 损失函数,就是「采样 -> 筛选 -> 再 SFT」的循环。

  • 效果上限略低于精心调过的 PPO:因为 DPO 的优化目标是「往偏好数据分布靠拢」,没法像 RL 那样探索数据之外的好回答
  • 依赖偏好数据质量:偏好对收集得不好,DPO 学到的偏好就会失真
  • DeepSeek R1 / R1-Zero
  • Qwen-Math、Qwen 推理版
  • 各家追随者的推理增强模型
  • 给模型一批 Prompt
  • 让模型对每个 Prompt 生成多个候选回答(典型 K=8 或 16)
  • 用奖励模型(或人类标注、或规则判定)给所有候选回答打分
  • 筛出每个 Prompt 里得分最高的回答
  • 把(Prompt,最高分回答)当作新的 SFT 数据,再做一轮 SFT

拒绝采样的优点:

实现极简 :就是反复 SFT,不需要任何 RL 算法 训练稳 :监督学习没有不稳定性 可解释:训练数据全在那里,调试容易

代价:

为什么要这么做?因为人类标注偏好极其昂贵:

如果有一个比当前模型更强的「教师模型」(比如用 GPT-4 级别模型给 Llama 训练数据打分),可以批量生成偏好数据,把人工标注成本大幅降下来。当然这不是零成本,因为教师模型调用本身也要钱,还可能把教师模型的偏见带进数据里。

谁在用:Llama 2 的对齐流程、Llama 3 的早期阶段都用了拒绝采样。它通常作为对齐的「热身」步骤,先把模型推到一个不错的起点,然后再用 DPO 或 GRPO 做精修。

RLAIF:让强 AI 当老师

RLAIF(Reinforcement Learning from AI Feedback,基于 AI 反馈的强化学习)是 RLHF 的变种。

核心思路:用一个更强的 AI 模型替代人类标注员 ,去给候选回答打偏好排序。

  • 上限不如 RL 方法:因为模型学到的只是「自己生成的高分回答的分布」,没有 RL 那种「探索数据之外的好回答」的能力
  • 多轮迭代成本高:每轮要采样 + 筛选 + SFT,比一次性 DPO 慢
  • 一个偏好对要标注员读两份回答、做出选择,平均 1-2 分钟
  • 训练一个高质量奖励模型需要几十万对偏好数据
  • 数据成本几百万美金起步

回到开头那段对话,被怼三次后再来回答这个问题,思路应该清晰了。

第一,先讲清楚 Post-Training 是个上位概念。SFT 之后模型只是「合格」,不是「优质」,也不一定「安全」。Post-Training 这个伞下覆盖了 RLHF、DPO、GRPO、拒绝采样、RLAIF 等一族方法,目标都是让 SFT 后的模型继续提升。

第二,把五类方法各自的位置讲明白。RLHF(PPO)经典但工程复杂,4 模型架构;DPO 是 RLHF 的等价简化版,绕过奖励模型,只需 2 模型,是开源社区常见的低成本方案;GRPO 是 DeepSeek 2024 年提出的 PPO 进化版,砍掉 Value Model 用组内相对优势替代,2026 年因 DeepSeek R1 火得不行;拒绝采样是「采样-筛选-再 SFT」的循环,不用 RL;RLAIF 是用强 AI 当老师代替人类标注。

第三,最关键的一句话,这五类方法是组合用的,不是替代。Llama 2-Chat 用的是「SFT + 拒绝采样 + PPO/RLHF」,DeepSeek R1 用的是「SFT 冷启动 + 多轮 GRPO + 拒绝采样」。能说出这种组合用法,面试官就知道你不是在背单点,而是真的看过这些模型的训练论文。

如果还想加分,可以指出 GRPO 在「可验证任务」(数学、代码)上有特别优势(对错就是 reward,连 Reward Model 都省了),这正是 DeepSeek R1-Zero 能纯 RL 训出推理能力的关键。能讲到这一层,已经是面试里很难追问的水平了。

相关推荐
m0_591364731 小时前
Go语言怎么做链路追踪_Go语言分布式链路追踪教程【精选】
jvm·数据库·python
l1t1 小时前
DeepSeek总结的欢迎来到 ORDER BY 丛林
数据库·算法
m0_463672201 小时前
HTML函数工具是否支持雷蛇等游戏外设_RGB同步汇总【汇总】
jvm·数据库·python
谙弆悕博士1 小时前
【附C源码】二叉搜索树的C语言实现
c语言·开发语言·数据结构·算法·二叉树·项目实战·数据结构与算法
zkkkkkkkkkkkkk1 小时前
python使用celery实现异步任务
redis·python·rabbitmq·rocketmq
志栋智能1 小时前
安全、稳定是超自动化运维的底座
网络·数据库·人工智能
无忧智库1 小时前
某集团企业智能体(Agent)操作系统(AOS)基础平台与企业级Agent治理体系详细设计方案(WORD)
大数据·人工智能
宵时待雨1 小时前
回溯算法专题2:二叉树中的深搜
开发语言·数据结构·c++·笔记·算法·深度优先
csdn小瓯1 小时前
AI质量评估体系:LLM-as-a-Judge实现与自动化测试实战
前端·网络·人工智能