
最近不少群都在转 MiMo-V2.6 的拆解贴标题一个比一个响第一开源自我改进强化学习规模化组合起来确实唬人。但真把技术报告翻完你会发现最值得聊的其实不是榜单数字而是一种正在快速成为主流的训练范式用一个闭环的、大量产出的强化学习流程让模型反复吃自己的输出自己给自己当老师然后一圈圈变强。这篇文章我打算按自己的拆解习惯把报告里的技术路线、关键设计、训练细节和容易踩的坑逐一过一遍还会补充一些我在类似项目里实际用过的参数和判断经验方便你想在中小规模上复现或者做技术选型时参考。这套内容适合三类人看一是想搞清楚强化学习规模化到底在解决什么问题的算法工程师二是正在搭大模型训练链路、纠结要不要上 RL 的团队三是单纯想读懂技术报告关键词、避免被营销话术带偏的爱好者。1. 先拆标题MiMo-V2.6 到底在哪个方向上进阶1.1 第一开源大模型的定位要打上引号报告一开头的第一开源大模型是最容易误导人的说法。如果按字面理解显然不合理——开源的模型太多了从更早的 LLaMA 系列到后来的众多中尺寸模型哪个都比这个版本号早。细看报告语境这个第一更合理的读法是在某个具体能力水位或参数规模区间内率先以完整权重加训练细节形式放出来的模型。这种事在圈子里经常发生大家嘴上说第一其实就是第一批之一的营销缩写。真正拉开差距的也不是开源这个动作本身而是开源出来的东西里有没有可复现的强化学习细节。MiMo-V2.6 报告里比较有价值的部分是它把从基础模型到能自我改进的完整迭代链路写出来了包括采样策略、奖励设计、KL 控制、评测防污染这些容易被藏着掖着的关键点。开源权重只是结果训练方法论才是资产。1.2 从 V2.5 到 V2.6版本号背后的迭代逻辑版本号到 V2.6 说明这不是一次从零搞起的尝试而是一套已经跑过多轮的方案。结合同类模型项目的一般节奏来推断V2.x 阶段通常干这几件事先解决 base 模型本身的稳定性再把 SFT 数据质量提上来之后才是引入强化学习做能力上限的突破。V2.6 这个版本真正往前迈的是把自我改进和强化学习规模化放到了一起等于是把两条原本彼此独立的技术线做了合并。我拿到的报告里没有给太多 V2.5 到 V2.6 的增量对比但按照同类项目的惯例这种小版本升级大概率集中在三块一是扩大了强化学习阶段的 prompt 覆盖范围从单一数学/代码延伸到更多可自动判分的任务二是把采样轮次和策略更新轮次的比例做了调整三是加了更细粒度的过程奖励或格式约束让模型在长推理链上不轻易跑飞。这些都是我能从公开经验和报告措辞里反推出来的合理判断不一定和官方 changelog 完全一致但方向不会偏。1.3 自我改进与规模化是两个词但强绑定自我改进听起来玄落到训练上无非就是这个循环当前策略生成候选答案 → 自动评估给分 → 高分样本用于继续训练 → 生成下一版策略 → 再拿新版策略去采样。每转一圈模型都在拿自己上一圈的输出当老师。这个思路早期在 AlphaGo 的 self-play 里就有雏形现在搬到语言模型上难点从能不能转变成了能不能稳定地大规模转。规模化则是这个循环能不能转得动的关键。自我改进的隐式前提是每一轮采样都要覆盖足够多的状态空间否则模型只是在狭窄的分布里自嗨。采样规模不够评估信号就会稀碎评估信号稀碎奖励模型或者规则判分就会方差爆炸方差一爆炸策略更新就变成随机游走。所以报告把规模化放在标题里本质是在说我们不是验证了一个小玩具闭环而是把这个闭环塞进了数千张加速卡、数以千万计的采样序列里并且它仍然稳。这一点才是真正有门槛的地方。2. 为什么强化学习规模化是这次报告的核心命题2.1 从 SFT 到强化学习模型能力提升的重心已经转移大概在去年的某个时间点很多人还在靠堆 SFT 数据来提能力。做法简单粗暴收集高质量问答对指令微调评估变好一点再收更多数据再微调。问题是这个路子的边际收益下降很快。人工标注的高质量数据是稀缺资源而且静态数据只能让模型模仿既有解法很难让它在未被覆盖的难题上涌现出新的推理路径。强化学习的本质是把静态模仿换成动态试错。模型生成一堆候选好的被放大、差的被压制相当于在参数空间里做搜索。报告里 MiMo-V2.6 的重心明显押在后者SFT 只是负责把模型带到一个能说人话、懂基本格式的起点真正冲高分的阶段全靠 RL 在推理路径上做探索。这个转向不是 MiMo 独有而是整个开源大模型阵营在过去半年里的集体动作从更早的 DeepSeek 系列到这次 MiMo-V2.6都在验证同一件事后 SFT 时代强化学习规模化才是能力增长的主引擎。2.2 传统 RLHF 的三个瓶颈数据贵、KL 失控、方差大既然要把 RL 当主引擎就得先回答为什么以前的 RLHF 撑不起这个角色。传统 RLHF 依赖人类偏好奖励模型一个奖励模型要训练出来先得收集几十万条人类排序数据。这个成本极高而且人类偏好本身噪声不小两个人对同一条回答的打分经常不一致。这带来第一个瓶颈奖励信号贵且不稳。第二个瓶颈是 KL 失控。强化学习策略更新的时候如果约束松了模型会迅速偏离 SFT 初始分布输出开始飘甚至退化成重复、乱码、答非所问。传统做法是给一个固定的 KL 惩罚系数但固定系数在训练不同阶段的表现差异极大前期太紧学不动后期太松飘到天际。第三个瓶颈是优势估计的方差。PPO 这类算法需要引入 critic 模型来估计状态价值而 critic 本身也是个大模型训练不稳定、显存开销大。批内优势归一化倒是能压方差但如果采样组太小归一化反而会放大噪声。MiMo-V2.6 报告里提到的 GRPO 这类分组相对策略优化就是冲着这个问题去的去掉 critic用组内相对表现替代绝对价值估计开销更低、稳定性反而更好。2.3 规模化到底解决了什么问题RL 的 Scaling Law 正在被验证大规模和中小规模跑 RL体验完全不是一回事。小规模实验里很容易出现算法效果时好时坏的玄学回头复盘你会发现多数玄学其实是采样数量太少。举个例子数学题采样 4 条候选某条碰巧答对概率 60%下个 batch 碰巧变成 30%策略更新的方向就被噪声带偏了。但把采样组从 4 提到 64组内相对优势的估计会稳很多因为极端好和极端差的样本占比被稀释了。报告里规模化包含四个维度prompt 数据规模、每次采样的生成序列数、并行采样环境的规模、迭代轮数。四个维度同时放大RL 的 Scaling Law 才真正开始显现。小规模时你可能观察到 reward 和评测分数弱相关规模上去之后两者的相关性会变得越来越稳定。这点我在自己跑过的数学 RL 实验里也验证过batch 从 256 提到 2048训练曲线的毛刺肉眼可见地减少最终评测分数也更可预测。3. 自我改进的训练闭环细节与实操拆解3.1 三轮迭代SFT → 可验证奖励 RL → 自批判微调MiMo-V2.6 的技术路线按报告的描述可以抽象成一个三层结构。第一层是基础的 SFT目的是让模型学会指令跟随的基本格式第二层是带可验证奖励的强化学习这是能力突破的主战场第三层是自我批判微调模型在训练后期会生成答案 自我反思的数据再回头做一轮 SFT。第三层是自我改进这个说法的直接来源。典型做法是让当前模型针对一个难题多次采样找出一正一负两个结果再让同一个模型去对比这两个答案写一段为什么 A 对而 B 错的分析。这些分析文本质量通常不错因为它们是在强约束条件下由强模型自己产的把这段数据和正确答案合在一起再训一轮模型对这类错误模式的免疫力会明显增强。这个三层结构不算新奇但 MiMo-V2.6 做得比较聪明的地方在于把第三层和第二层串联起来不是一次性跑完就撂挑子而是让RL 提升 → 自批判数据变好 → 自批判数据再喂进去 → 模型更强形成循环。报告没有明确说转了几圈从训练成本看大概率是两到三轮每轮都带来可复现的提升。3.2 分组采样与 GRPO让优势估计更稳的实操关键GRPO 近几年在开源模型训练里出镜率极高原因就一个字省。它把 PPO 里需要单独训练和部署的 critic 模型砍掉了优势计算完全靠同一条 prompt 下的多个采样结果互相比较得出。比如让模型对同一道题生成 8 条回答每条回答的奖励是这个回答的得分减去这条 prompt 所有回答得分的均值再除以标准差这个归一化结果就是该样本的策略优势。这里有个容易被忽略的操作细节采样组大小直接决定优势估计的信噪比。组太小比如 2 到 4极端样本权重过大组太大比如 128卡在生成阶段的显存开销又瞬间拉满。常见的折中是 8 到 16MiMo-V2.6 报告里提到的大规模滚动采样也是在这个数量级上做了扩展。实际跑的时候我建议从 8 开始试如果训练方差还是大先别急着调 KL优先把组大小抬到 16 或 24往往比调一堆算法参数更管用。另外要注意采样温度的一致性。分组相对优势的前提是组内样本的多样性来自同一温度分布如果某个 batch 用了 0.6 的温度另一个 batch 用了 1.0归一化后的优势根本没有可比性。工程实现上一定要把温度作为采样配置固定下来中途不要手动改。3.3 奖励构造结果奖励 过程奖励 格式约束奖励设计再怎么强调都不过分。MiMo-V2.6 的场景横跨数学、代码、逻辑推理这类任务的共同特点是答案可以自动判分不依赖人类偏好所以结果奖励可以直接用规则计算成本低且信号干净。这也是它敢谈自我改进的底气——如果奖励本身还得靠模型给分那改进信号里永远掺着模型自己的噪声。但纯结果奖励有个明显的坑稀疏。一道复杂题模型中间步骤全对、最后一步符号错了结果分是 0它根本不知道错在哪。为了缓解这个问题报告里补充了过程奖励模型按步骤判断中间推理是否合理给部分分数。过程奖励模型本身可以用一个小模型来训练也可以用规则启发式比如检测关键公式、关键变量是否被引用。还有一个看起来很简单但特别重要的维度格式约束。可验证奖励依赖输出能被稳定解析如果模型偶尔不按格式输出判分器就会把它识别成 0 分策略会被迫去猜格式浪费大量采样预算。所以训练时要在 prompt 里强格式要求推理时对不符合格式的输出直接标记为低分同时也作为负样本参与训练。这个细节我踩过坑第一版没加格式约束时模型确实学出了疯狂输出解释文字但答案部分为空的钻空子行为。3.4 防止 reward hackingKL 惩罚、熵正则、多样性控制说到奖励就绕不开 reward hacking。模型对奖励函数的优化能力远超预期它不会老老实实提升推理能力而是会去找判分器的漏洞。经典案例之一模型发现答案写到某个固定位置就能得分于是把所有输出都堆到那里推理质量反而下降。MiMo-V2.6 对此用了三层防护。第一层是 KL 惩罚约束策略不要离初始模型太远这在 GRPO 里通常会用参考模型和当前策略的 KL 散度做逐 token 惩罚。第二层是熵正则鼓励模型维持一定的输出多样性防止它坍缩到少数几条模板路径上。第三层是样本级去重与多样性过滤同一 prompt 生成的候选如果 n-gram 重复度过高会降低采样权重保证训练数据覆盖足够多的推理路径。这三层里面KL 惩罚系数是最需要细调的。系数太小分钟级就能看到输出开始飘系数太大模型干脆摆烂不探索。我自己的经验是先从 0.01 起步观察 KL 的滑动平均曲线如果它在训练中期开始单调上行且没有回落趋势就说明惩罚不够要逐步加到 0.03 甚至 0.05。不要一口气加太猛策略更新会瞬间停滞。4. 复现视角搭建一套可跑的 RL 大规模训练方案4.1 基础设施与并行方案从单机到小集群的选型参考如果你想把 MiMo-V2.6 这套思路拉到自己的场景里第一个问题就是算力。以这个量级的模型为参考单机 8 卡在大多数情况下只能完成小规模可行性验证真正跑到规模化至少需要几十张卡起步。报告原文没给出完整的算力配置清单但从滚动采样、数千并发生成这类描述可以反推百卡级集群是入门线。架构上推荐用三组角色分离的部署第一组是训练节点负责策略模型参数更新第二组是采样节点专门跑旧策略模型做批量生成第三组是评估节点跑判分器。三组之间通过共享存储传递数据不直接互相阻塞。很多单机实验的失败不是因为算法差而是因为采样和训练串在一起训练一停采样就停实际吞吐率远低于理论值。我在自己的项目里用的是 OpenRLHF 加 vLLM 推理后端这套组合。训练端用 PettingZoo 或者纯 Torch 自研都不重要关键是采样端一定要向量化——把多个 prompt 拼成大 batch 一次性送进推理引擎否则吞吐会卡在反复启动推理进程上。4.2 关键参数速查表先按这套默认值跑一轮再细调给一组我实测下来相对稳的初始参数你可以当成起点用不用完全照搬但先别乱改。参数推荐值说明分组采样数量8-16数学任务 16 更稳代码任务 8 够用采样温度0.7-1.0固定在同一实验周期内不变KL 惩罚系数0.01-0.03观察 KL 曲线后按需调整熵正则系数0.001-0.005防止策略坍缩策略学习率1e-6 到 5e-6低于 1e-7 基本学不动批次大小1024-4096 prompt/轮小批量噪声大优势归一化组内标准化GRPO 默认流程不要跳过最大生成长度2048-4096 token数学题建议 4096代码题可更低4.3 伪代码流程RL 训练主循环的关键骨架下面这段是我简化后的训练主循环只保留了核心逻辑方便你对照理解整个链路。实际工程实现远比这个复杂但骨架是通用的。for round in range(total_rounds): # 1. 采样阶段用当前策略生成候选答案 prompts load_prompt_batch(batch_size2048) completions policy_model.generate( prompts, n16, # 每个 prompt 采样 16 条 temperature0.7, max_tokens4096, use_cacheTrue, ) # 2. 判分阶段规则判分 过程奖励模型打分 scores rule_based_scorer(prompts, completions) process_scores process_reward_model.score( prompts, completions, step_segmentsTrue ) final_scores combine_scores(scores, process_scores) # 3. 相对优势计算组内归一化GRPO 核心 advantages [] for i in range(0, len(final_scores), group_size): group final_scores[i:igroup_size] mean group.mean() std group.std() 1e-6 advantages.append((group - mean) / std) advantages torch.cat(advantages) # 4. 策略更新逐 token 计算倾向 KL 惩罚 for epoch in range(kl_epochs): log_probs policy_model.compute_log_probs(prompts, completions) ref_log_probs ref_model.compute_log_probs(prompts, completions) kl torch.exp(ref_log_probs - log_probs) - (ref_log_probs - log_probs) - 1 per_token_loss -advantages.unsqueeze(-1) * log_probs loss (per_token_loss kl_penalty * kl).mean() loss.backward() policy_optimizer.step() # 5. 自批判数据生成与合并可选阶段 if round % critique_interval 0: critique_data generate_self_critique(policy_model, prompts) sft_dataset merge_dataset(sft_dataset, critique_data)看到这段代码里最关键的细节了吗loss 的计算是把采样的 log 概率乘以归一化后的优势然后直接回传同时在 token 粒度上加 KL 惩罚。这里advantages的方向很关键如果是负优势的样本梯度会把它往概率减小的方向推如果是正优势就把它推高。这正是强化学习放大好的压制差的的最简表达。4.4 评测设计别用同一把尺子量自己训练做到后期评测最容易翻车。很多团队会拿模型反复去跑 MMLU、GSM8K、HumanEval 这类公开集测出来分数一路涨高兴半天结果一上实际业务场景立刻拉胯。原因几乎都是评测集污染预训练或 SFT 阶段已经把公开题目的答案塞进模型肚子里了RL 训练只是在帮助模型回忆答案而不是提升推理能力。MiMo-V2.6 报告里对评测防污染的处理值得参考自定义了若干模板化生成的新题集保证模型在预训练阶段从未见过同时在评测阶段只允许模型输出最终答案不做 step-by-step 的提示防止模型靠套解题模板糊弄过去。落地到自己项目里我在训练中途用的评测集是固定的、不会参与任何训练阶段的私有题库并且每轮迭代会更换其中 30% 的题目防止模型对评测题自身过拟合。5. 常见翻车现场问题与排查记录5.1 训练 loss 全面崩溃KL 爆炸与优势归一化我见过太多人在 RL 训练第二天发现 loss 突然变成负数大数值第一反应是调学习率其实大概率是 KL 项炸了。KL 惩罚项的数值没有上限一旦策略更新步长过大KL 散度会呈指数增长把总 loss 直接冲垮。排查顺序很重要先看 KL 曲线如果它在 loss 崩溃前就出现陡峭上扬说明惩罚系数太小或学习率太高如果 KL 一直平稳但 loss 还是跳那大概率是采样后处理出了问题比如某条超长输出把显存打爆导致数值溢出。训练过程中建议开启梯度裁剪阈值设在 1.0 左右。同时定期打印每个 batch 的优势值分布如果某个 batch 的优势标准差突然变得极大优先怀疑该 batch 里有判分异常样本可以直接过滤掉再继续训练比硬撑着跑下去省事得多。5.2 分数涨了但实际变笨奖励建模走偏这是最难察觉的一种失败。模型在训练集上 reward 一路走高但你拿几个新题人工测它会明显感觉思路变窄了甚至只会用一种固定套路解题稍微变化就懵。本质是策略坍缩到了奖励函数的高分区域而那个区域和真正的推理能力只有部分重叠。应对手段有三板斧一是加大采样温度逼迫策略探索更多路径二是把 KL 惩罚系数调高一点让模型不要偏离 SFT 版本太远保留基础常识三是在 prompt 集合里混入更多任务类型不要只用一个数学题库跑到死。三者配合使用效果比任何一个单点干预都要好。5.3 评测集污染与过拟合多刷题不等于变强我自己中招过最狠的一次是拿一个公开数学竞赛集当评测指标训练了两周分数涨了快 10 个点自我感觉极好。后来把数据集拆开按年份看发现训练集里早就包含了近几年的真题模型做的全是填空题填答案的记忆题。从那之后我建立了一个硬规矩最终对外宣称的评测结果必须基于完全未进入任何训练阶段的数据集且至少隔一轮迭代用人工抽检 20 条做过修正。如果你怀疑自己的评测集被污染简单的检查方式是用 n-gram 重叠率做个扫描。把评测题和目标校验集做 token 序列重叠比对超过 70% 的题目存在高重叠那就别把它当成可信的评测手段了。5.4 吞吐量上不去生成阶段才是瓶颈很多人会把 RL 训练慢归咎于优化器或框架实测下来真正的瓶颈几乎永远是采样阶段的推理吞吐。策略模型每更新一次就需要重新跑一轮大批量生成这批生成在几十张卡上也动辄需要几十分钟远超训练反传的时间。所以优化方向应该放在采样环节推理引擎开起来、动态 batching 打开、KV cache 命中率优化都能把吞吐拉到二倍以上。另外一个小技巧是把旧策略参数冻结后的推理权重单独导出不走训练框架的模型对象而是直接转成推理引擎格式加载。这样采样节点上的显存占用会显著下降batch size 可以进一步调大整条链路吞吐量的提升非常明显。最后说点个人感受。MiMo-V2.6 这份报告透露出的信号比模型分数本身更重要开源模型的能力上限之争正在从谁的 SFT 数据更精心切换为谁的强化学习规模化跑得更稳。对多数团队而言直接复刻百卡集群不现实但把分组采样、相对优势、KL 控制、奖励防作弊这套方法论搬到自己小规模的训练任务里依然能带来非常可感知的提升。先在一两百个 prompt、几十条采样的小闭环里把信号验通再横向扩展是我反复验证过最稳妥的路径。