MiMo-V2.6 技术报告拆解:MoE 架构下强化学习扩展与自我提升的工程实践

发布时间:2026/10/31 8:23:20
MiMo-V2.6 技术报告拆解:MoE 架构下强化学习扩展与自我提升的工程实践

1. 从"堆数据"到"练内功":MiMo-V2.6 想解决的到底是什么问题

过去两年,大模型圈子有一个心照不宣的共识:预训练的数据墙已经撞上了。高质量语料翻来覆去就那么些,各家在数据清洗上的边际收益越来越低,于是大家不约而同地把目光转向了后训练阶段——尤其是强化学习这条路线。MiMo-V2.6 这份技术报告的核心命题,用一句话概括就是:怎么让模型在强化学习阶段实现"自我提升",而不是单纯依赖人类标注或更大的偏好数据集。

这个命题听起来有点玄,但拆开看其实很实在。传统的 RLHF 流程里,模型的能力上限很大程度上被奖励模型(Reward Model)锁死了——奖励模型判断什么回答好,模型就往那个方向优化。问题是奖励模型本身也是用人类偏好数据训出来的,它有自己的偏见和盲区,模型优化到一定程度就会开始"钻空子",也就是所谓的 reward hacking。MiMo-V2.6 想做的事情,是让模型在强化学习过程中不仅能对齐人类偏好,还能通过扩展 RL 的规模和机制,自己发现更优的推理路径和解题策略。

我先把这份报告里最值得关注的几个技术点摆出来,后面再逐个展开:

  • MoE 架构与 RL 的结合:MiMo-V2.6 采用的是 MoE(Mixture of Experts)架构,这在 RL 训练中会带来路由不稳定、专家负载不均衡等新问题,报告里对这块的处理是重点。
  • 扩展强化学习的规模:不是简单加大 batch size,而是在 rollout 数量、奖励信号密度、训练步数等多个维度上做系统性扩展。
  • 自我提升机制:模型通过自身的推理轨迹来生成训练信号,减少对外部标注的依赖。
  • 置信区间与训练稳定性:热词里提到的"origin 画强化学习置信区间曲线"其实指向一个很实际的问题——RL 训练曲线波动大,怎么判断模型是真的在进步还是在震荡。

如果你正在做 LLM 的后训练、RL 微调,或者只是想知道当前开源模型在强化学习这条路上走到了哪一步,这份报告值得细读。下面我按自己的理解,把里面的关键设计、实操中会遇到的坑、以及可以借鉴的思路拆开讲。

2. MoE 架构下做强化学习,路由和负载这两个坑绕不开

2.1 为什么 MoE + RL 不是简单叠加

MoE 架构的核心思想是:模型里有很多个"专家"子网络,每次前向传播时,门控网络(Router)只激活其中一小部分专家。这样做的好处是参数量可以做得很大,但实际计算量可控。MiMo-V2.6 用 MoE 做基座,推理效率上有优势,但一到 RL 训练阶段,问题就来了。

RL 训练和 SFT 最大的区别在于:SFT 的每个 token 都有明确的监督信号,梯度方向是确定的;而 RL 的 rollout 过程是采样出来的,同一个 prompt 可能生成完全不同的轨迹,这些轨迹激活的专家路径也完全不同。这就导致一个很棘手的问题——路由漂移。训练初期某个专家可能专门处理数学推理,但经过几轮 RL 更新后,门控网络的参数变了,这个专家可能被分配到完全不同的任务上,之前学到的能力就被覆盖了。

报告里提到他们用了路由一致性约束来缓解这个问题,具体做法是在 RL 更新时对门控网络的梯度做一定程度的衰减或冻结,让专家网络先适应新的奖励信号,再慢慢调整路由。这个思路和持续学习里的"先固定 backbone 再调 head"是一个道理。

2.2 专家负载均衡在 RL 中的特殊处理

MoE 训练本来就有一个经典问题:负载不均衡。有些专家被频繁激活,有些几乎用不到,导致参数利用率低下。在 SFT 阶段,通常用一个辅助损失(auxiliary loss)来鼓励负载均衡。但到了 RL 阶段,这个辅助损失会和策略梯度打架。

我自己的经验是,RL 阶段如果辅助损失的权重设得太大,模型会为了"均衡"而牺牲推理质量;设得太小,又会出现专家坍缩。MiMo-V2.6 报告里给出的方案是动态调整辅助损失权重:训练前期权重高一些,先把负载分布拉开;训练后期逐步降低,让模型专注于奖励最大化。这个调度策略其实和 learning rate warmup 的逻辑类似,都是先探索后收敛。

具体参数上,报告没有给出完整的权重曲线,但提到了一个经验值:辅助损失权重从 0.01 线性衰减到 0.001,衰减周期大约是总训练步数的前 60%。这个数字可以直接拿来参考,但要注意不同规模的模型可能需要微调。

2.3 实操中怎么判断路由是否健康

在实际训练中,你不可能等训练完再看结果。我一般会监控几个指标:

监控指标健康范围异常表现可能原因
专家激活熵0.6-0.9低于 0.4路由坍缩,少数专家主导
最大专家负载比< 3x 平均值> 5x 平均值负载严重不均
路由梯度范数稳定波动持续增大路由震荡
各专家输出方差相近差异悬殊专家分化过度

这些指标不需要全部盯着,但至少要看专家激活熵和最大负载比。如果发现路由坍缩,最直接的办法是临时提高辅助损失权重,或者对门控网络做几轮 warmup 重新初始化。

3. 扩展强化学习:不只是加大 batch size 那么简单

3.1 扩展的三个维度

MiMo-V2.6 标题里的"扩展强化学习"(Scaling RL)是整份报告的核心。很多人第一反应是"加大 batch size 或者多跑几步",但报告里把扩展拆成了三个维度:

  • Rollout 数量扩展:每个 prompt 采样更多条轨迹,增加策略梯度的估计精度。
  • 奖励信号密度扩展:不只是最终答案对错,中间推理步骤也给奖励。
  • 训练步数扩展:在保证不崩溃的前提下,让 RL 训练跑得更久。

这三个维度不是独立的。Rollout 数量增加会带来方差降低,但也意味着计算成本线性增长;奖励密度增加能提供更细粒度的信号,但设计不当会引入噪声;训练步数扩展最直接,但也是最容易遇到 reward hacking 的地方。

3.2 Rollout 数量与方差的关系

策略梯度的方差和 rollout 数量成反比。理论上,采样越多,梯度估计越准。但实际中有一个收益递减的拐点。报告里提到他们做了一个消融实验:当每个 prompt 的 rollout 数量从 4 增加到 16 时,训练稳定性明显提升;但从 16 增加到 64 时,提升幅度就很小了,而计算成本翻了 4 倍。

这个结论和我的经验基本吻合。一般来说,每个 prompt 8-16 条 rollout 是一个比较划算的区间。如果你的任务特别复杂(比如多步数学推理),可以适当增加到 32,但再往上就要考虑是不是奖励信号本身设计得不够好了。

还有一个细节:rollout 的采样温度也很关键。温度太高,轨迹多样性好但质量参差不齐;温度太低,轨迹都差不多,方差降低但探索不足。报告里用的是动态温度调度:训练前期温度高一些(比如 1.0),鼓励探索;后期逐步降到 0.7 左右,让模型收敛到高质量策略。

3.3 奖励密度设计:过程奖励 vs 结果奖励

这是我觉得整份报告里最有价值的部分之一。传统的 RLHF 通常只给最终结果一个奖励信号,比如答案对了给 1 分,错了给 0 分。这种稀疏奖励在长推理链任务上效果很差,因为模型很难知道到底是哪一步出了问题。

MiMo-V2.6 用了过程奖励模型(Process Reward Model, PRM)来提供更密集的信号。具体做法是:把推理过程拆成若干步骤,每一步都给一个质量评分,最终奖励是这些步骤评分的加权和。这样做的好处是模型能获得更细粒度的反馈,坏处是 PRM 本身可能不准,引入噪声。

报告里提到一个很实用的技巧:PRM 和结果奖励混合使用。最终奖励 = α × 结果奖励 + (1-α) × 过程奖励,α 通常设在 0.6-0.8 之间。这样既保留了结果奖励的可靠性,又利用了过程奖励的密度。如果 PRM 质量很高,可以适当降低 α;如果 PRM 不太靠谱,就提高 α 让结果奖励主导。

3.4 训练步数扩展中的早停策略

RL 训练跑得越久越好吗?不一定。报告里明确提到,他们在训练到一定步数后观察到了 reward hacking 的迹象:模型在训练集上的奖励持续上升,但在留出验证集上的表现开始下降。这时候就需要早停。

判断早停的时机,不能只看训练奖励曲线。我一般会同时看三个信号:

  1. 验证集奖励:如果连续 N 步没有提升,考虑停止。
  2. KL 散度:模型输出分布和参考模型的 KL 散度如果超过某个阈值(比如 10-15),说明模型已经偏离太远。
  3. 输出长度:如果模型开始无意义地拉长输出以获取更多过程奖励,这是一个危险信号。

报告里给出的早停策略是:验证集奖励连续 5 次评估没有提升,或者 KL 散度超过 12,就触发早停。这个阈值可以根据任务调整,但思路是一致的。

4. 自我提升机制:模型怎么用自己的输出来训练自己

4.1 自我提升的基本逻辑

"自我提升"这个词听起来很玄,但核心逻辑其实不复杂:模型生成多条推理轨迹,然后用某种方式判断哪些轨迹更好,把好的轨迹当作正样本,坏的当作负样本,再用来更新模型。这和 rejection sampling fine-tuning 的思路类似,但 MiMo-V2.6 把它嵌到了 RL 循环里。

关键问题在于:怎么判断轨迹的好坏?如果完全靠奖励模型,那就还是依赖外部信号。报告里提到的自我提升机制,是让模型自己生成一个"置信度"评分,然后结合奖励模型的评分做综合判断。

4.2 置信度估计的实现细节

模型怎么估计自己的置信度?报告里没有展开太多,但根据常见的做法,有几种可能的实现方式:

  • 基于 logprob 的置信度:模型对每个 token 的预测概率可以反映它有多"确定"。把整条轨迹的 logprob 平均一下,可以作为置信度的一个粗略估计。
  • 自洽性投票:对同一个问题生成多条轨迹,如果多数轨迹得出相同答案,说明模型对这个答案比较有信心。
  • 专门的置信度头:在模型上加一个额外的输出头,专门预测当前推理步骤的正确概率。

MiMo-V2.6 用的是哪种,报告里没有明确说,但从描述来看,应该是自洽性投票 + logprob 的混合方案。这个方案的好处是不需要额外训练一个置信度模型,坏处是计算成本会翻倍(因为要生成多条轨迹)。

4.3 自我提升的边界条件

自我提升不是万能的。报告里也承认,如果模型本身在某类任务上的初始能力太差,自我提升很难把它从零教会。因为自我提升的前提是模型能生成一些正确的轨迹,然后从这些正确轨迹中学习。如果模型从来就没做对过,那就没有正样本可用。

这就引出一个很实际的建议:自我提升适合用在模型已经有一定基础能力的任务上,比如数学推理、代码生成这些模型在预训练阶段已经见过大量数据的领域。对于完全陌生的任务,还是需要先做 SFT 或者用人类标注数据做冷启动。

另外,自我提升还有一个风险是模式坍缩。如果模型总是生成相似的轨迹,自我提升就会让模型越来越保守,失去多样性。报告里提到他们用了一个多样性正则项来缓解这个问题,具体是在奖励里加一个惩罚项,如果生成的轨迹和已有轨迹太相似,就降低它的奖励。这个思路和推荐系统里的多样性重排类似。

5. 训练稳定性:置信区间曲线背后的工程细节

5.1 为什么 RL 训练曲线这么难看

做过 RL 训练的人都知道,训练曲线往往像心电图一样上下跳动。这不是代码写错了,而是 RL 本身的特性决定的:策略梯度是高方差的估计,每次更新都会引入噪声。热词里提到的"origin 画强化学习置信区间曲线",其实就是在解决这个问题——不是只看均值,而是看均值的置信区间。

MiMo-V2.6 报告里给出的做法是:每次评估时跑多个随机种子,计算奖励的均值和标准差,然后画带置信区间的曲线。这样做的好处是能区分"真实的性能提升"和"随机波动"。如果两条曲线的置信区间有重叠,那说明差异可能不显著;如果完全不重叠,那才是真的进步。

5.2 置信区间的计算与解读

具体怎么算?假设你在某个评估点上跑了 N 次评估,得到奖励值 r1, r2, ..., rN,那么:

  • 均值:μ = (r1 + r2 + ... + rN) / N
  • 标准差:σ = sqrt(Σ(ri - μ)² / (N-1))
  • 95% 置信区间:μ ± 1.96 × σ / sqrt(N)

这个公式看起来简单,但实际用的时候有几个坑:

  • N 不能太小:如果 N < 5,置信区间会非常宽,几乎没有参考价值。建议至少跑 10 次。
  • 评估任务要有代表性:如果评估集太小或者太偏,置信区间再窄也没意义。
  • 注意区分训练奖励和验证奖励:训练奖励的置信区间通常比验证奖励窄,因为训练集是模型见过的。

报告里提到他们用了bootstrap 方法来估计置信区间,而不是简单的正态近似。Bootstrap 的好处是不需要假设奖励分布是正态的,对于偏态分布更稳健。具体做法是:从 N 个评估结果中有放回地抽样 N 个,计算均值,重复 1000 次,得到均值的经验分布,然后取 2.5% 和 97.5% 分位数作为置信区间。

5.3 训练崩溃的早期信号

除了看置信区间,还有一些早期信号可以帮你判断训练是不是要崩了:

  • 梯度范数突然增大:正常训练中梯度范数应该在一个范围内波动,如果突然增大 10 倍以上,说明策略更新太激进。
  • KL 散度快速上升:KL 散度是模型输出分布和参考模型的距离,如果它快速上升,说明模型在偏离原来的分布。
  • 奖励方差增大:如果同一个 prompt 的多次 rollout 奖励方差突然增大,说明策略变得不稳定。
  • 输出长度异常:模型突然开始生成超长或超短的输出,通常是一个危险信号。

我自己的经验是,KL 散度是最可靠的早期预警指标。一般把 KL 散度控制在 10 以内比较安全,超过 15 就要考虑降低学习率或者增加 KL 惩罚系数。

6. 从 MiMo-V2.6 能抄到什么:可复用的工程经验

6.1 奖励模型的设计原则

如果你要自己搭一套 RL 训练流程,奖励模型的设计是最关键的一环。从 MiMo-V2.6 的报告里,我总结了几个原则:

  • 结果奖励为主,过程奖励为辅:过程奖励能提供更密集的信号,但噪声也更大。除非你的 PRM 质量非常高,否则不要让过程奖励主导。
  • 奖励要有界:奖励值不要无限制地增长,最好归一化到 [0, 1] 或者 [-1, 1]。否则模型会学会"刷奖励",生成越来越长的输出。
  • 定期重新校准奖励模型:随着策略更新,模型生成的输出分布会变化,原来的奖励模型可能不再准确。建议每隔一定步数用新数据重新校准奖励模型。

6.2 超参数设置的参考值

报告里没有给出完整的超参数表,但根据描述和我的经验,可以整理出一组参考值:

超参数参考值说明
学习率1e-6 到 5e-6RL 学习率通常比 SFT 小一个数量级
KL 惩罚系数0.01 到 0.1越大越保守,越小越激进
Rollout 数量8-16每个 prompt 的采样数
采样温度0.7-1.0前期高,后期低
辅助损失权重0.01 到 0.001MoE 专用,线性衰减
早停耐心值5 次评估验证集奖励不提升的次数
KL 散度阈值10-15超过则触发早停或降学习率

这些值不是金科玉律,但可以作为一个起点。实际用的时候要根据模型规模和任务难度调整。

6.3 常见踩坑与规避

最后分享几个我在 RL 训练中踩过的坑,以及从报告里印证到的规避方法:

坑一:奖励模型过拟合。奖励模型在训练集上准确率很高,但在新数据上表现很差,导致模型学会钻空子。规避方法是奖励模型也要做正则化,并且定期用新数据评估。

坑二:rollout 温度设得太低。温度太低会导致所有轨迹都差不多,策略梯度没有区分度,训练停滞。规避方法是前期用较高温度,并且监控轨迹的多样性。

坑三:忽略 KL 散度。只看奖励曲线,不看 KL 散度,结果模型偏离太远,生成质量下降。规避方法是把 KL 散度作为核心监控指标,设置硬阈值。

坑四:MoE 辅助损失权重固定不变。RL 前期和后期对负载均衡的需求不同,固定权重会导致要么前期路由坍缩,要么后期推理质量下降。规避方法是动态调整权重。

坑五:评估集太小。用几十条数据评估,置信区间宽得没法看,根本判断不了模型是否进步。规避方法是评估集至少几百条,并且覆盖不同难度和类型。

MiMo-V2.6 这份报告最让我欣赏的地方,是它没有只讲"我们做了什么",而是把很多工程细节和失败经验也写了出来。对于正在做 LLM 后训练的人来说,这些细节比最终的数字更有参考价值。RL 训练从来不是调几个超参数就能搞定的事情,它需要对模型行为有深入的理解,需要耐心地监控和调试。希望这篇拆解能帮你少走一些弯路。