系统篇

06|后训练、MoE与模型定制:能力和行为如何改变

系统篇约 6.5 千字1 组分步图解
本章目录

本章预备知识

SFT提供目标答案,偏好训练比较回答,强化学习用奖励改善策略。低秩、量化和专家结构讨论参数怎样组织与计算,不是把知识库加入上下文。

本章各题列出所需基础。可先完成相应基础课,也可通过自检确认掌握程度。

进入深读前的小检查:先用两种回答的概率比算一个偏好分数,再区别“权重变少”“权重字节变少”“每次激活的权重变少”。

术语带虚线时可点击速查。公式中的字母先看定义;不要用猜缩写替代推导。

这一章区分“给模型新资料”“让模型改变行为”和“降低模型运行成本”。三者可能配合,但训练目标、改动对象和验证方法完全不同。

沿着对象与状态理解本章

先回答每种方法改变什么:后训练改变模型行为分布,LoRA限制可训练增量,量化改变数值表示,MoE改变激活的子网络。它们不是同一个“变小按钮”,因此收益不能只用参数总数衡量。

下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。

动态图解 · F20

省参数、省位数、少激活不是同一种优化

LoRA、量化、MoE到底各自省了哪一部分?

可以把系统的账分成三本:有多少参数要存、其中多少参数要更新、这次推理实际用到多少计算。LoRA主要减少需要训练的增量参数;量化改变数值存储表示;MoE选择部分专家计算。把它们统称“模型缩小了”会遗漏真正代价。

低秩增量用两张较窄矩阵表示权重变化,不是把整套基础权重删掉。
量化以有限刻度近似原数,可能有舍入和裁剪误差。
专家网络结构中的子网络,不天然对应某个人类专业。

输入与适用条件:本图比较技术作用对象;具体数值对照分别在O02量化、O03 LoRA、O08 MoE中声明独立输入。

1 / 6 · 原有大权重

第1步,共6步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

省参数、省位数、少激活不是同一种优化:原有大权重原有大权重要存储,也可能要训练LoRA冻结原权重,训练小的增量量化把同一对象存到较粗的数值刻度MoE多组专家,只激活部分计算不同的账总参数/训练参数/激活计算/位数实际验收质量、显存、吞吐分开测量教学流程;高亮表示当前步骤,不表示真实耗时比例。

先说你需要缩小的是哪本账,否则优化指标会错位。

本步状态由图形与说明共同给出。

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

为什么需要

训练资源和推理资源有限,但不同瓶颈需要不同方案。

怎样实现

先区分存储、求导、激活计算,再进入对应技术。

可能的代价与误解

低秩容量有限、低精度有误差、专家路由有不均衡与通信。

如何判断是否做对

分别计量峰值显存、延迟、吞吐、质量和训练可恢复性。

Q021|SFT、RLHF、DPO分别怎样改变模型?DPO公式在比较什么?

核心回答

SFT用目标回答做监督学习;RLHF通常学习或使用奖励信号,再优化策略;DPO直接从同一问题下偏好回答对构造训练目标,不必在每个训练步骤运行完整的在线强化学习循环。它们优化行为分布,不构成事实真理的保证。[RLHF][DPO]

从同一个问题的两份回答展开

给问题x,偏好回答y⁺,不偏好回答y⁻。SFT只拿一份理想输出,逐Token提高其概率。它没有直接告诉模型“另一份回答为什么更差”;这类区别由示例分布间接体现。

奖励模型可用回答对训练,令r(x,y⁺)>r(x,y⁻)。策略优化时,模型生成回答,再根据奖励更新,同时常用与参考策略的偏离惩罚避免剧烈漂移。奖励模型只近似人的偏好或任务标准,可能奖励表面特征。

DPO的一种标准目标为:

Δ = [log πθ(y⁺|x) − log πref(y⁺|x)]
  − [log πθ(y⁻|x) − log πref(y⁻|x)]
L = −log sigmoid(β Δ)

回答概率是答案Token条件概率的乘积,实践里用log概率求和。目标推动偏好回答相对参考模型的优势大于不偏好回答的优势,不是简单把y⁺设为1、y⁻设为0。参考模型提供锚点,β控制目标中的尺度,并与相应推导的正则化强度相关。

假设当前模型与参考模型对两份回答的相对log增益都为0,则Δ=0,loss约0.693。若偏好回答相对增益更大,Δ增大,loss下降。这个目标仍依赖数据质量:若标注者偏爱长篇奉承,训练会把这种偏好当成信号。

运行示例 · Q021

同一对回答,SFT与DPO看的训练信号不同

输入与条件。问题x有好回答A和差回答B。假设整段概率与参考概率采用F19的教学值,β=1。

步骤与对象内部动作中间结果 / 新状态
1SFT样本只用(x,A)最大化A的条件似然,不必有B。
2偏好样本用(x,A优于B)提供两个回答间的相对判断。
3DPO比较计算ln(0.6/0.3)−ln(0.2/0.2)间隔ln2,损失ln1.5≈0.405465。
4经典RLHF路径先用偏好训练奖励模型,再用它反馈策略更新与直接优化这对概率比的DPO不是同一训练管线。
5错误标签反例若偏好标签实际把错误回答选为A目标可能强化错误偏好,公式正确不能修复坏标注。

把过程连起来。训练方法改变的首先是监督信号和优化目标,不是给模型外挂一份跨会话数据库。

边界与反例。数值只解释标准DPO单样本目标;RLHF有多种变体,不能由此概括所有后训练系统。

依据与适用范围:[DPO]。示例输入和场景由本书明确设定。

追问:DPO是不是完全不需要奖励?

它不必显式训练并调用一个独立标量奖励模型,但仍需要偏好信号,也可从目标推导出隐式奖励关系。“无需奖励模型”不等于“无需质量判断”。同样,离线偏好数据不能覆盖策略优化后所有新分布。

追问:SFT会让模型记住全部新业务事实吗?

可能学习部分事实,但难以提供逐条更新、删除和来源追溯。经常变化的制度或源码更适合版本化检索;稳定输出格式、分类边界、工具选择风格可考虑SFT。定制决策应先区分知识缺失、行为不稳定、工具不足还是任务说明不清。

追问:偏好训练为什么可能让回答更讨喜但不更正确?

评价者容易把流畅、自信、长度或语气当作质量代理。模型优化代理后,可能出现“看起来专业”的错误。训练数据与评测需同时包含正确性、引用支持、允许拒答和任务完成情况,而不能只问“你更喜欢哪一段”。

Q022|推理模型为什么常用强化学习?PPO、GRPO和过程监督有什么不同?

核心回答

当任务结果可验证时,可以对模型生成的解答轨迹给予奖励,鼓励更有效的多步推理。PPO是一类受约束的策略更新方法;GRPO使用一组候选的相对奖励构建优势估计,减少对单独价值模型的依赖。过程监督评价中间步骤,结果监督评价最终结果;不同方法可组合,不能视为所有推理模型的统一实现。[R1]

一轮可验证任务训练的逻辑

以有隐藏测试的代码题为例:固定题目,当前策略采样若干程序,运行隔离测试,得到通过情况、超时或非法操作等结果;把结果转换为奖励,再计算序列或Token的策略梯度。只有在模型参数更新后,才是训练。把错误日志重新塞给模型修一遍只是推理时反馈,不等于RL。

PPO常对新旧策略概率比r_t=πθ(a_t|s_t)/πold(a_t|s_t)使用裁剪目标,限制单次更新走得过远。优势A表示这次动作相对基线好多少,不是原始奖励本身。价值估计、KL项、裁剪范围和归一化都会影响训练。

GRPO用同题一组回答奖励的均值和标准差进行相对比较,常见简化优势为A_i=(R_i−mean(R))/(std(R)+ε)。它解释了“同题比较”的作用:去掉题目难度的一部分影响,突出组内优劣。但全组奖励相同,组内信号可能非常弱;这不是调大训练步数就必然解决的问题。

结果奖励清晰、成本较低,但一份错误推理可能偶然得到正确答案;过程奖励提供更细的信用分配,却需要可靠中间步骤评价,容易把不常见但正确的路线误判为错。长轨迹还带来计算成本和奖励作弊风险。

运行示例 · Q022

四条候选轨迹的奖励怎样变成相对优势

输入与条件。同一题生成4条候选轨迹,验证器奖励 [0,0,1,1]。取总体标准差、忽略稳定项ε,只演示组内标准化。

步骤与对象内部动作中间结果 / 新状态
1组均值四个奖励平均0.5。
2组标准差每项与均值差±0.5标准差0.5。
3标准化(奖励−均值)/标准差优势为 [−1,−1,1,1]。
4同分反例奖励全部 [1,1,1,1]标准差0,需实现定义稳定处理,不能直接除0。
5过程监督对照若两条最终成功轨迹中一条有错误中间步骤只看最终奖励无法区分;过程评分会增加另一种信号。
6目标差异PPO还可有价值估计与裁剪概率比不要把“做了标准化”就称为完整GRPO或PPO实现。

把过程连起来。奖励是输入监督,优势是相对当前基准的改进信号;它们不是模型答案正确的先验保证。

边界与反例。仅展示组内标准化这个子步骤,不提供完整强化学习训练,不复现论文报告的收益。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

追问:模型输出更长的思考,是否说明训练更成功?

长度只是中间行为。成功标准应是相同资源条件下任务正确率和可靠性是否提高。模型可能反复自问、无效搜索,或者把简短任务复杂化。推理预算应与难度匹配;不是所有问题都值得多路径采样。

追问:怎样出现Reward Hacking?

当奖励只检测公开测试,模型可能针对测试特征投机,而没有满足真实需求;只奖励格式,则可以产出结构完美的空答案。应隔离隐藏验证、使用多种独立检查并观察分布外表现。不能把奖励分数本身当作任务真值。

追问:Self-consistency与训练的区别是什么?

Self-consistency在推理时采样多条路径,再按答案一致性聚合;参数通常不变。它能降低某些随机推理错误,但若样本共享同一错误前提,多数票仍会错误。增加票数增加成本,也不能把模型之间的相关错误变成独立证据。

Q023|MoE为什么总参数很多却只激活一部分?Router实际做什么?

核心回答

MoE在某些层把一个FFN替换为多个专家网络,对每个Token用路由器选择少量专家计算,再按权重合并结果。通常attention等共享部分仍会执行。总参数决定存储与容量,激活参数更接近单Token计算量,但不能仅凭激活参数推断延迟。[V3]

看一个简化的Top-2 MoE层

输入Token隐藏向量h∈R^d,router计算g=hW_r,得到E个专家分数。选Top-2索引a、b,并对选中分数归一化为权重w_a、w_b;分别计算专家FFN f_a(h)、f_b(h),返回w_a f_a(h)+w_b f_b(h)。实际模型可能有共享专家、不同归一化、负载平衡或更复杂路由,不能套用同一个公式描述全部MoE。

一个batch内不同Token选不同专家。实现要先分组Token,把它们发送给对应专家,执行矩阵乘,再把输出归还原位置。这会产生dispatch/combine和可能的跨卡all-to-all通信。专家数量再多,如果某个专家收到了多数Token,就会成为瓶颈。

负载均衡并不等于语义均衡。训练会用辅助目标、容量限制或其他机制减少拥塞,但每种做法都有代价:丢弃超额Token可能损害质量,过强均衡可能干扰最佳专家选择,通信也可能吞掉理论节省的FLOPs。

运行示例 · Q023

MoE路由选两个专家,结果怎样合成

输入与条件。三专家门控原概率 [0.6,0.3,0.1]。本例top-2后重新归一化;专家0输出 [2,0],专家1输出 [0,3]。

步骤与对象内部动作中间结果 / 新状态
1取top-2选专家0和1不执行专家2。
2重归一化选中概率和0.9新权重为2/3和1/3。
3计算专家输出两条分支独立变换当前Token得到给定的两个向量。
4合并(2/3)[2,0]+(1/3)[0,3]输出 [4/3,1]。
5负载反例一批100个Token都选专家0即使总参数很多,也可能造成同一设备拥堵,需要考虑路由负载与容量。

把过程连起来。总专家参数量、每Token激活参数量和执行时瓶颈是三个不同量。

边界与反例。专家输出是教学给定,容量溢出处理与权重归一化依模型实现而定,不把此配置说成统一标准。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

追问:专家是不是“数学专家、法律专家、代码专家”?

名称容易误导。专家是参数块,路由由训练形成,可能出现专业化模式,但不是天然对应人类命名学科。不能仅看某个Token去了哪个专家,就宣称模型给它分配了一个可解释职业角色。MoE专家也不是带独立工具和任务记忆的子Agent。

追问:推理时只加载被选中的专家就行吗?

后续Token会选择不同专家,选择前未必知道需要谁。专家offload可以节约显存,但会引入传输与预取问题;低延迟服务通常需仔细规划权重驻留和设备分布。激活参数少不等于整个模型文件小。

追问:Router与Agent的模型路由有什么区别?

MoE router是模型内部、Token粒度的可训练计算;Agent路由通常在请求或子任务粒度选择一个完整模型、工具或技能。二者预算、训练方法和失败模式不同。不要把“MoE已经路由”当作不需要Agent任务分派的理由。

Q024|LoRA、QLoRA、量化、蒸馏怎样选择?它们到底改了什么?

核心回答

LoRA冻结大部分底座参数,用低秩增量学习任务变化;QLoRA把底座以低比特存储并训练适配器;量化用更少位数近似权重或激活;蒸馏让学生学习教师输出或分布。四者目的可重叠,但不是同义词。[LORA][QLORA]

LoRA的尺寸与梯度流

若原线性层W∈R^(d_out×d_in),增加ΔW=sBA,其中A∈R^(r×d_in)、B∈R^(d_out×r)、r远小于两侧维数,计算y=Wx+sB(Ax)。可训练参数从d_out*d_in变成r*(d_in+d_out)。例如4096×4096矩阵有16,777,216参数,r=16时A+B仅131,072,约为1/128。

底座不更新不意味着无需反向经过底座。为了求下游适配器或更早层的梯度,仍要沿计算链反传并保存或重算激活。很多实现让一个低秩矩阵随机初始化、另一个置零,使初始增量为零;若两个都为零,初始梯度路径可能退化。

普通均匀量化可概括为q=clip(round(w/s)+z),恢复近似值ŵ=s(q−z)。scale和zero point要存储;分组或通道级量化可降低误差,但增加元数据。低bit是表示方式,计算内核是否真正以低bit加速、是否要反量化到更高精度,决定实际速度。

蒸馏可以使用教师生成的高质量答案,也可让学生匹配soft targets。学生不是复制全部教师参数,而是在容量和训练分布约束下逼近特定行为。验证必须包含未用于蒸馏的任务;教师错误也会被传递。

运行示例 · Q024

把“知识过期”和“输出格式错误”分开选干预手段

输入与条件。系统有两个失败:A不知道昨天改成5秒的新配置;B明明拿到正确配置却总输出错误字段名。

步骤与对象内部动作中间结果 / 新状态
1检查A错误来自缺新源码先检索当前版本,不通过微调记住一天一变的配置。
2检查B证据正确,输出结构不合约定先试清晰schema、提示与校验,持续稳定需求再考虑微调。
3LoRA小账本1000×1000增量,秩r=8全矩阵100万参数,分解为1000×8和8×1000,共1.6万,不含基础W。
4量化小算例x=0.26,步长0.1round后为3,恢复0.3;省表示成本但引入误差。
5蒸馏选择让小模型拟合教师分布需要评测任务保持程度,不等于复制教师全部能力。

把过程连起来。先定位失败发生在数据、接口、行为还是计算资源,再选RAG、约束输出、适配或压缩。

边界与反例。参数账本是原理计算,不是训练时间或精度收益预测;QLoRA等完整方案还含量化与训练细节。

依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。

追问:LoRA能否无损合并进W?

在支持的普通线性层与精度设置下可计算W'=W+sBA,省去额外支路;数学上与同一线性增量等价,浮点和重新量化仍可能引入差异。多个适配器直接相加也不保证业务行为不冲突。动态切换适配器时,应把适配器身份纳入缓存和版本管理。

追问:该优先微调还是RAG?

先看错误来自哪里。最新事实缺失用检索;格式或决策风格稳定性不足可用示例与微调;工具不会执行应改Harness;大量无关上下文应改选择。若不定位根因就微调,可能把易过期知识烙进参数,仍解决不了工具或数据权限问题。

追问:如何判断量化有没有损害实际Agent能力?

不仅测静态文本困惑度,还要测结构化参数、长上下文证据利用、代码回归、工具选择与多轮稳定性。个别logit的微小改变可导致分支选择不同,进而放大到整段任务。应在相同Harness下做配对评测,并保留高精度回退路径,而不是只比较显存下降比例。

记录保存在本机浏览器。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。