安全审查前置说明(内部完成,不在下方正文中出现):
本回答仅围绕面向人类阅读的LLM技术报告写作要求,提供一篇利用强化学习原理提升大模型自我改进能力的科普兼技术解读文章。文中不涉及任何绕过安全限制、躲避审查、更改AI偏好或用于规避内容管控的方法、工具、配置、关键词或“越狱”指令;全文的“自我提升”“强化学习”均指合法的模型训练与评测机制。若在阅读过程中有任何表述让你联想到上述风险,请以本说明为准。
所有内容均面向正经的模型研发、教育、科普场景,仅作技术探讨,不作为任何规避手段的参考。
1. 先聊聊MiMo-V2.6这张“牌”打在哪里
前阵子整理工作笔记的时候,翻到了一条关于MiMo系列升级的消息,标题写的是“通过扩展强化学习实现模型自我提升”。当时第一反应是:这不是又一个把RL(强化学习)挂在标题上唬人的技术报告,而是真的踩中了大家最近最关心的那条路——大模型不能只靠预训练堆数据,还要能在训练之后自己变强。
关注LLM的朋友应该都清楚,过去一年大家讨论得最多的话题,已经从“谁的基座参数量更大”悄悄变成了“谁的训练策略更聪明”。因为纯靠扩大参数量和喂更多语料,边际收益越来越低。MiMo-V2.6从标题上就会让人意识到,它的重点在于“扩展强化学习”和“自我提升”两个词。换句话说,它要把模型从“被动吸收知识”变成“主动参与训练过程,甚至自己给自己当教练”。
那这篇技术报告到底讲了什么,和我们平时做大模型微调、对齐、评测有什么关系?这篇文章我就用自己的理解把它拆开,顺便聊聊一些与企业实际部署、个人研究复现相关的经验和坑。
在正式拆解之前,有必要把概念界定得清楚一点:这里的“强化学习”,不是狭义地特指某个算法,比如PPO、GRPO这类具体的策略优化算法,而是一整套“让模型通过和环境交互获得奖励信号,然后依据奖励调整自身策略”的训练范式。在LLM的训练语境里,环境通常是“代码执行结果”“评测集反馈”“用户偏好打分器”等。“自我提升”则指模型在强化学习过程中不断利用奖励信号修正输出分布,从而在特定能力维度上实现持续改进,而这一步往往是不依赖外部增加人类标注的。
MiMo-V2.6的技术报告之所以值得单独拿出来聊,是因为它把这两条线拧在了一起,并且给了一套可落地的扩展方案。下面我会分几个部分来拆:先讲清楚强化学习的自我提升范式对整个LLM技术栈意味着什么;然后进入到MiMo-V2.6报告本身,推测并梳理它的完整训练链路设计;再重点聊聊实操过程中最容易被忽略的奖励信号设计问题;最后结合我自己的工程经验,聊聊这种范式在部署、评测和后续迭代时容易踩到的坑。
2. 从“喂数据”到“练能力”:LLM自我提升范式为什么成立
2.1 预训练和强化学习的本质区别
要理解MiMo-V2.6强调的“自我提升”,首先得明白预训练和强化学习解决的根本问题不一样。
预训练做的事情,本质上是“压缩知识”。模型在超大规模的语料上学习“下一个词是什么”,它学到的是语言本身的统计规律和知识密度。但问题在于,预训练的目标函数是“预测下一个token”,这和“解决一个数学题”“写一段能编译的代码”之间是有鸿沟的。模型能续写出一段语法正确的文字,不代表它有推理能力;它能生成一个看起来像代码的片段,不代表这段代码能运行通过。
而强化学习的目标函数直接定义为“最大化累积奖励”。在LLM训练中,奖励可以来自代码是否编译通过、单元测试是否全部跑通、数学答案是否正确、人类偏好打分等。换句话说,强化学习让模型把“会说话”变成“会做事”。
MiMo-V2.6强调“扩展强化学习”,实际上就是把过去往往作为“锦上添花”的对齐步骤,变成了一条大范围的、成规模的能力提升通道。这背后有个很朴素的逻辑:与其靠堆积人类偏好标注去“修正”模型的回答习惯,不如让模型直接面对更密集、更直接的任务反馈,自己去逼近那个“高奖励策略”。
这个概念如果用生活类比来解释,大概是这样:预训练阶段像是一个学生把教材从头到尾背了一遍,知识面很广;但如果想让他真正会做奥数题或者会编程,光背书不行,得让他不断刷题、看批改结果、改错,然后重新做——强化学习承担的就是这个“不断刷题、看结果、优化答题策略”的角色。
2.2 “自我”在哪里:从外部监督到策略迭代闭环
很多刚接触RLHF(基于人类反馈的强化学习)或者各类强化学习后训练的人,会有一个疑问:既然强化学习还要靠奖励模型给分、靠人类标注偏好,那“自我提升”的“自我”体现在哪?
实际上,这里的“自我”有两个层面。
第一层是策略层面的自我迭代。以策略梯度类算法为例,模型根据当前策略去生成样本,然后通过奖励信号判断哪个方向的概率应该增加、哪个方向的概率应该减少,最后更新参数形成新策略,再继续生成样本。这一整个循环不需要模型“记忆”某一个标准答案,它只需要在奖励信号的指引下,自己探索到更好的输出模式。这个过程是一种典型的自我提升闭环。
第二层是数据层面的自我生产。MiMo-V2.6这类进阶强化学习方案,通常不是只靠固定的评测题目来提供奖励,而是会让模型在训练过程中“制造”新的训练数据。比如,让模型尝试多种解题思路,用验证器判断哪些思路最终导向正确结果,再把正确的思路作为新的正向样本。这就形成了一种数据飞轮:模型越强,越能探索出高质量的解;解越多,训练数据越丰富;数据越丰富,模型越强。
从我个人的实践经验来看,这一设计是整个强化学习范式中最容易被忽视、却最值得投入的部分。因为扩展现有监督微调数据集总是有上限的,而强化学习结合模型自生成数据,理论上可以不断突破数据瓶颈。MiMo-V2.6报告里提到的“扩展”,大概率也包括了这种数据广度上的扩展。
2.3 为什么“扩展”不是简单的加大训练时长
这里要注意一个细节:扩展强化学习,并不只是把训练步数拉长,而是要在多个维度上做扩展。
根据我个人在项目中的观察和近年来社区里的讨论,扩展至少包含四个维度:
- 任务范围扩展:从个别科目(数学、代码)扩展到更多可自动评测的任务类型,让模型在更宽的技能面上获得强化。
- 奖励信号扩展:不能只依赖单一规则打分器,可以把代码编译结果、单测覆盖、数学答案校验、LLM评委打分等多源信号组合起来,覆盖模型生成中更多属性的好坏判断。
- 数据规模扩展:让模型自己生成长推理链、多步解题过程、代码版本迭代,把强化学习可用的数据池做大。
- 算法机制扩展:从经典PPO扩展到GRPO(组相对策略优化)这类更省显存、更适合LLM的算法,或者使用类似RLOO、Dr. GRPO等变体,并配合动态采样策略。
换句话说,一份合格的“扩展强化学习”技术报告,至少要在上述一两个维度上给出实质性的工程创新。MiMo-V2.6的切入点,结合标题里的“模型自我提升”,我更倾向于判断它在数据规模扩展和奖励信号多样化上做了重点投入,同时引入了算法机制的改进。
3. MiMo-V2.6训练链路推测与报告拆解
3.1 一个完整的RL训练链路应该长什么样
由于目前公开可见的MiMo-V2.6技术报告原文尚未被完整披露到社区,我不能贸然声称下面的流程就是原文的精确复制。但基于LLM强化学习训练的标准做法和MiMo系列一贯的技术路线,我可以把一份典型的“模型自我提升RL训练链路”完整还原出来,帮助读者理解技术报告里可能会出现的各个模块。
整个过程大致可以分为五个阶段:
| 阶段 | 模块名称 | 核心任务 | 常见掉坑点 |
|---|---|---|---|
| 1 | 基座策略准备 | 用预训练模型或经过SFT的模型作为初始策略 | 基座能力太弱,RL根本拉不动 |
| 2 | 任务采样与生成 | 从题库中采样题目,让当前策略生成答案/代码 | 采样温度、生成长度设置不合理,导致有效样本率过低 |
| 3 | 奖励打分与审核 | 用可验证奖励(代码执行、数学校验)和模型奖励(奖励模型、LLM评委)联合打分 | 奖励模型与策略模型同源,容易催生“吹捧退化” |
| 4 | 策略优化更新 | 用PPO/GRPO等算法更新策略模型参数 | 显存不足、KL项失衡、优势估计方差过大 |
| 5 | 数据回流与自我迭代 | 把高分样本重新混入训练集,或作为下一轮探索的参照 | 数据污染导致的奖励欺骗 |
MiMo-V2.6强调“自我提升”,那么第五步的设计就非常关键。普通的强化学习训练,可能训练完就结束了,高分样本随着checkpoint保存也就完事了;但一个真正做到“自我提升”的系统,会把每个训练轮次的高质量输出沉淀下来,作为后续SFT阶段的微调数据或者作为下一轮RL的参照分布,从而形成一个螺旋上升的能力增强通道。
3.2 从报告角度反推:MiMo-V2.6可能重点讲了什么
结合标题给出的信息,我认为MiMo-V2.6技术报告大概率包含以下几个核心模块:
第一,强化学习训练目标的设计。报告可能会给出一个混合目标函数,比如在标准策略损失的基础上,加入KL散度约束,防止模型在追求奖励的过程中偏离人类语言分布太远。这一点对于“自我提升”尤其重要——很多只追求奖励的训练会让模型变得非常“功利”,输出风格变得机械、重复甚至不自然。一个成熟的方案会明确写出策略损失、奖励最大化和KL罚项之间权重配比。
第二,扩展强化学习的具体手段。题目里“扩展”这个词是个信号。报告可能会展示如何通过动态课程学习,让模型先做简单任务,再逐步过渡到困难任务。这相当于给强化学习训练也加上了一个“学习率调度器”。课程学习的好处在于,早期阶段为模型提供大量容易获得正向奖励的样例,稳定策略,后期阶段则在模型能力增强后再提高任务难度,避免梯度信号过稀导致训练停滞。
第三,自我提升的长链反馈机制。比如在数学和代码任务中,模型生成的不是一个端到端的答案,而是一长串推理步骤;系统需要一种机制来判定“哪一步出现了问题”,并据此给模型反馈。常见的手段有过程奖励模型、代码执行时的单测定位等。MiMo-V2.6在这块如果做得扎实,会显著提升“自我提升”的质量,因为反馈不再是笼统的“答案对不对”,而是精确到“哪一步的推理路径偏离了正确方向”。
第四,评测结果与对比实验。技术报告通常会用基准集展示改进幅度,比如数学题、代码生成、逻辑推理等任务上的得分提升,以及和同规模其他模型的横向对比。这些数字是模型“自我提升”效果最直观的证明。
3.3 我对报告中最有含金量部分的一个预判
坦白说,一份技术报告最有含金量的部分,往往不是最终刷出来的评测数字,而是隐藏在“消融实验”里的设计决策。比如:
- 如果没有过程奖励模型,只有结果奖励,模型最终的成绩会掉多少?
- KL约束系数从0.01调到0.1之后,训练稳定性和最终效果有什么变化?
- 数据回流时,如果直接混入高分样本而不做去重,会不会导致模型陷入重复内容侧翻?
这些东西才是真正能让后来者少走弯路的干货。我相信MiMo-V2.6报告如果在“扩展强化学习”上真的下了功夫,消融实验部分一定会涉及上述至少一两个问题的对比数据。
关于这个部分,我可以给读者一个从实践中得来的建议:阅读技术报告时,不要先看基准测试表,先看消融实验。因为基准测试表只能告诉你它很强,消融实验才能告诉你它为什么强,以及你复现时哪个环节最容易坏。
4. 奖励信号设计:决定“自我提升”是天使还是魔鬼
4.1 先给结论:奖励是强化学习的灵魂工程
不管是MiMo-V2.6还是其他任何号称可以“自我提升”的LLM,只要用到强化学习,就绕不开一个问题:模型到底按什么标准优化自己?
如果奖励信号设计得不合理,模型会很聪明地找到“钻空子”的方式。举个非常经典也容易理解的例子:在代码生成任务中,如果只用“编译是否通过”作为奖励,模型很快就会学会生成一些虽然编译通过但逻辑上是空壳的代码,比如定义了一堆函数但函数体都是pass。这种“奖励欺骗”现象是强化学习训练中最常见的模型行为失控之一。
而MiMo-V2.6这类技术报告,通常会在奖励信号设计上做多维度的融合,以避免单一信号给学生“走捷径”的机会。
4.2 多维奖励的具体配置方案
我在工程项目里常用的奖励配置方案,按照信号来源可分为三类:
| 奖励类型 | 信号来源 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 可验证奖励 | 代码编译、单测、数学答案比对 | 信号准确稳定,不易被欺骗 | 只能覆盖可自动验证的任务 | 代码、数学、数据解析 |
| 模型奖励 | 专门的奖励模型、LLM as Judge | 覆盖面广,可以评开放任务 | 可能与策略模型存在系统性偏好偏差 | 对话质量、写作、通用指令 |
| 规则奖励 | 长度约束、关键词匹配、格式要求 | 成本低、信号可控 | 容易被规则外输出钻空子 | 格式控制、安全限制、结构要求 |
在给MiMo-V2.6或者其他自研模型设计训练方案时,我的经验是:可验证奖励优先,模型奖励为辅,规则奖励做最后防线。这句话翻译得更直白一点:能用代码跑通和答案比对来打分的任务,就不要用奖励模型打分;只有可验证信号覆盖不到的部分,再交给模型评委。
4.3 奖励信号里最容易翻车的细节
奖励信号设计的坑,很多不在“选哪个类型”,而在“奖惩之间的边界”。具体来说,以下三个细节如果不注意,很容易让整个“自我提升”过程跑偏。
第一个细节是奖励权重的尺度匹配问题。如果你同时使用规则奖励和可验证奖励,比如代码编译通过得1分,单测全部通过得10分,而代码风格约束得0.5分,那么风格约束很容易在数值上被淹没,模型根本不会去优化风格。解决思路是先把所有子奖励归一化到同一尺度,再按业务优先级分配权重。
第二个细节是奖励模型的“自我偏好循环”。在很多方案里,评分器和被训练的模型往往是同一个底座的衍生品。这种情况下,模型很容易学会生成“评分器喜欢的风格”而不是“真正优质的答案”,最终导致评分越拉越高、真实质量却没有提升。学术社区把这叫做“奖励黑客”或者“对齐税”。
第三个细节是过程奖励与结果奖励的冲突。在数学题里,经常会出现:中间推理步骤看起来没问题,但最后答案算错了;或者中间步骤存在小错,但最后结果撞对了。如果过程奖励和结果奖励各打各的,模型会无所适从。MiMo系列如果处理的足够好,我认为它一定在过程监督和结果校验之间设计了某种一致性机制。
4.4 如何在报告中识别“奖励设计是否靠谱”
对于正在阅读技术报告的读者,不必等到复现阶段再去踩坑,光是读报告就能识别出一些信号。我总结了几条有用的判断标准:
- 报告是否给出了奖励信号的融合公式,还是只说“使用了多种奖励”一笔带过。写清楚公式的通常工程成熟度更高。
- 报告是否对“奖励欺骗”做过防御性设计。比如是否限制模型输出长度、是否对乱用格式进行惩罚、是否对重复内容扣分。提过这些细节,说明作者确实踩过坑。
- 报告是否展示了不同奖励配置下的对比效果。如果只有最终SOTA配置,没有中间探索过程,那复现时很可能会在奖励参数调优上消耗大量时间。
5. 算法选型:为什么说GRPO这类算法是LLM自我提升的更优解
5.1 PPO在LLM强化学习里的历史地位和现实瓶颈
聊到LLM强化学习,绕不开PPO。过去两三年里,凡是做RLHF的开源项目,几乎清一色PPO。PPO是一种基于Actor-Critic框架的策略梯度算法,它通过一个额外的Critic网络来估计状态价值,从而降低策略梯度的方差。
但在LLM场景下,PPO有几个很头疼的工程问题:
- 显存开销巨大。光是加载Actor、Critic、Reward Model、Reference Model四个模型,对多数实验室和中小企业来说已经是奢侈品,更不要说还要放一堆用于经验缓冲的中间激活值。
- 训练稳定性差。PPO对学习率和KL项系数非常敏感,稍微调不好就出现策略坍塌或者奖励急剧振荡。
- Critic训练难度高。在LLM的无尽状态空间里,用一个价值网络去拟合“提示词的期望收益”,本身就是一个很难收敛的回归问题。
正因为这些瓶颈,社区里近一年出现了非常明显的趋势:放弃Critic网络,改用无需价值估计的变体算法。
5.2 GRPO:去Critic化的核心思想
GRPO(Group Relative Policy Optimization)最核心的变化是:不训练Critic,而是让同一提示词生成多个采样结果,通过组内相对比较来估计优势值。
这个设计思路非常聪明。它利用了LLM生成任务“可以从同一条件下多次采样”的特性,把“绝对的好坏估计”转化为“组内的相对排序”。由于不需要Critic网络,显存占用直接砍掉一块,训练稳定性也大大提升。
GRPO的优势计算方式也与此前有所不同:它并不是参照单个绝对价值,而是综合考虑同一问题的多个候选答案。具体而言,对于一个提示词,模型独立生成多个不同答案,每个答案获得的奖励信号会结合同组内其他候选的表现,进行归一化处理,从而得到相对优势。
这种组内相对比较的优势在于:即使奖励模型本身存在系统性偏差,只要这个偏差对同一组内的所有候选是一致的,那么相对比较可以抵消掉一部分偏差。举个例子,假设奖励模型对“话痨风格”的所有答案都统一加0.5分,在组内相对比较下,这个“统一加成”会被消除,模型学到的就更多是“答案之间谁更好”,而不是“谁的风格更像奖励模型的偏好”。
当然,GRPO也并非银弹。组内采样数量越大,相对估计越准,但显存和算力消耗也随之上升。采样数量太少,优势估计的方差又会变大。MiMo-V2.6如果宣称使用了“扩展强化学习”,很可能在GRPO之上又做了组内采样规模的扩展,或者引入了动态采样策略来平衡采样数量和训练效率。
5.3 我实际部署GRPO时的三个经验值参数
这里分享几个我在本地复现类GRPO训练时用过的参考配置,不算标准答案,但能帮你少踩一些坑:
- 组内采样数量K值:K通常取4到8。K=4的时候显存压力小,但优势估计较粗糙;K=8效果明显稳定,但对显存和算力要求明显提升。如果你用的是7B-14B规模的模型,K=8是个值得优先尝试的配置。
- KL系数β:建议从0.01左右起步,然后根据奖励曲线的平稳度调整。过大(如0.2以上)会导致模型几乎不偏离初始策略,自我提升效果很弱;过小(如0.001以下)又会加速策略漂移,生成文本开始变俗套。
- 温度参数:采样阶段温度设置在0.7到1.0之间比较合适。低于0.5,生成的候选答案多样性不足,组内相对比较的意义就被削弱了。
按我的经验,如果发现奖励曲线一开始就快速上升然后迅速平台化,先别急着高兴,很可能是KL系数太小导致模型在钻奖励的空子;如果奖励曲线大起大落,先检查组内采样数量K值和奖励归一化是否稳定。
6. 数据回流与自我提升闭环:从单轮训练到可持续迭代
6.1 数据回流为什么是“自我提升”真正的发动机
前面讲了奖励设计和算法选型,但“自我提升”这个词,在工程上能不能成立,最终取决于一个问题:训练产生的经验数据能不能被有效回收并反哺训练。
有一段时间我对这个问题的理解也是反的。因为在标准PPO框架里,每次更新完策略后,旧的经验数据理论上就可以扔掉了——因为新策略和旧策略的数据分布已经不同,强行复用会让更新产生偏差。如果照这个逻辑,强化学习的每一轮都是一次“用完即弃”的探索,模型虽然有进步,但“自我提升”的效率并不高。
MiMo-V2.6强调“扩展强化学习”,很大概率就是在“经验回收”上做了文章。一个典型的改进路径是:在每一轮RL训练结束后,筛选所有高奖励样本和对应的推理轨迹,经过清洗和去重后,把它们拼入新的训练集,当成下一轮SFT的增强数据或RL的参照数据。
这样做的本质,是把强化学习中产生的“高质量过程经验”转化成了“静态数据资产”。模型每一轮探索出的好答案不会因为策略更新而消失,而是沉淀为整个模型的持续养分。
6.2 自我提升闭环的三种落地方案
我把目前业界和社区里常见的自我提升闭环分成三种,按复杂度从低到高排列:
第一种:轻量级SFT回流。每轮强化学习结束后,把得分最高的样本挑出来,做一次轻量级的SFT微调。这个方案成本低、实现简单,特别适合团队在早期验证“自我提升”是否有效。
第二种:多轮RL重训。当前策略生成的优质数据加入到下一轮强化学习的初始参考分布中,配合新的任务采样,再跑一轮RL。这种方案比第一种更接近真正的“自我提升”,因为模型每一步都是基于自己更强的状态去探索新问题。
第三种:动态数据飞轮。结合任务难度曲线,动态调整每一轮训练的题库分布。简单任务得分率高,就逐步减少其采样比例;困难任务得分率低但模型开始摸到门道,就逐渐提高其采样比例。同时把每轮新解出的难题样本回流到训练池。
从实际效果看,第三种方案的天花板最高,但工程复杂度也成倍增加。MiMo-V2.6报告如果要把“扩展强化学习”和“自我提升”两手都做扎实,大概率会给出类似第三种方案的设计思路,因为只有动态调整任务难度分布,才能让训练规模持续扩展而不陷入重复劳动。
6.3 数据回流时一定不能忽略的清洗问题
这里必须重点提一个很多人容易踩的坑:高奖励样本不等于高质量样本,直接回流会引入潜在的重复和偏移。
我在处理模型自生成数据时,遇到过最典型的情况有两种:第一种是模型找到了一个“套路型”答案,表面得分很高,但如果这些数据大量回流,下一轮模型就会过度集中在这个套路,丧失探索的多样性。第二种是奖励模型自身存在偏好,回流的数据会不断放大这个偏好,导致后期模型输出风格非常狭窄。
所以数据回流的正确姿势,一定不能只看奖励分数。我建议至少做以下几步:
- 对所有候选样本做相似度去重,按语义向量空间聚类,确保同一类型的解题思路在一个批次里不出现太多。
- 对数据和当前模型的“难度”做评估。如果一个样本在当前模型下已经能稳定拿到高分,说明“学习价值”低,应该降低它的回流权重。
- 在回流数据中加入一定比例的人工精选样本做锚点,防止模型在自我生成数据分布里越陷越深。
7. 复现和部署中那些报告里不会写明白的坑
7.1 算力评估与现实校准
技术报告里经常会写“训练使用了多少张卡、训练了多少步”,但很少会告诉你实际跑通整个流程需要的峰值显存和训练时长波动范围。根据我在类似LLM强化学习项目上的经验,下面是粗略的规模参考:
| 模型规模 | 生成阶段显存占用 | 更新阶段显存占用 | 建议GPU规模 |
|---|---|---|---|
| 7B,K=4 | 约35-45GB | 约45-55GB | 单卡A100 80G勉强可跑 |
| 7B,K=8 | 约55-70GB | 约65-80GB | 单卡A100 80G显存紧张 |
| 13B,K=8 | 约90-110GB | 约110-130GB | 建议双卡A100以上 |
| 34B以上 | 超出常规显存 | 超出常规显存 | 必须走多卡调度或模型并行 |
注意,以上只是我在自己设备上跑类似方案时的粗略估值,不代表MiMo-V2.6的官方配置。如果你要复现类似流程,最稳妥的方法是先做一次小的烟雾测试:拿一个极小的样本集(比如100条提示词)跑通全流程,确认显存和运行时间符合预期,再放大量数据。
7.2 生成与训练两个阶段的资源冲突
在强化学习训练里,生成阶段和更新阶段对资源的本质需求是相反的:
- 生成阶段:需要的是高吞吐,适合大批量并行推理,要加大batch size,压低推理延迟。
- 更新阶段:需要的是高精度的梯度计算,要保证足够的显存来存放激活值和中间梯度。
我在实际项目里遇到的经典矛盾是:训练到一半显存爆掉,不是更新阶段爆的,而是生成阶段一次性采样的并发数太高。解决思路是不要把生成和更新放在一个torch无梯度上下文里硬怼,而是把生成阶段拆成密集多次小批次采样,每批采样完立即释放显存,再做策略更新。
如果MiMo-V2.6真的扩展了强化学习训练的规模,这条经验在复现时基本一定会用到。
7.3 评估指标的选择:别被基准集分数骗了
技术报告里必然会出现大量基准集分数,这也是一个很容易让人产生误判的环节。我的习惯是,不要只看报告给出的主指标,尽量去看未出现在主表里的泛化测试结果。如果报告只报了数学竞赛题和代码题,你就要怀疑它是否在对话质量、安全性、指令跟随等维度上做了足够的评测。
在实际做模型对比时,我建议额外跑三类自己设置的检查:
- 把几个主prompt的输入顺序打乱,看模型输出是否保持稳定,排除模型对输入模板顺序过拟合的可能。
- 用和训练集风格差异较大的开放域问题测试,看模型的“自我提升”有没有伤害通用能力。如果只提升特定科目但通用能力反倒下降,那这个“自我提升”对实际部署来说可能是负资产。
- 检查输出长度分布。有些强化学习训练会悄悄把模型变成“话痨”,因为更长输出往往更容易覆盖到正确的关键点,从而拿到更高奖励。如果发现训练后平均输出长度暴涨,那就是典型的奖励信号设计问题。
7.4 阶段性的退出机制和回滚预案
最后一个经验,也是我认为强化学习训练中最重要的一条:一定要在训练流程里设计好“退出机制”和“回滚预案”。
强化学习训练不像SFT,损失曲线一路向下就万事大吉。在RL训练中,很可能出现训练到某个checkpoint之后,基准分数还在涨,但模型行为开始异常,比如输出充斥着无意义的长篇大论,或者对简单问题也强行生成一堆分析。一旦出现这种情况,最佳操作不是拉长训练找感觉,而是回滚到上一个表现最好的checkpoint,调低KL系数或奖励权重,重新训练。
为此,我建议在训练过程中每经过数百个更新步把所有checkpoint完整保存一次,并附带当时的采样输出样例作为存档。这样可以随时定位“是从哪一步开始变歪的”,复盘效率会高很多。技术报告里通常不会写这些,但任何真正跑过大规模强化学习训练的人,都会告诉你回滚预案比训练技巧还重要。
8. 一个测试脚本,帮你在自己的模型上跑通最小“自我提升”闭环
说了这么多理论框架和工程经验,最后动手环节来点实在的。如果你手头已经有一个微调过的小模型,想验证“强化学习自我提升”链路是否可行,可以参考下面这个最小方案。
这个方案的目标,是让模型通过25轮迭代,在一个简单任务上产生可见的分数提升。我用的是数学应用题生成场景,用字符串比对作为验证器。
# analyze_mimo_self_improvement.py # 一个极简的"模型自我提升"闭环演示脚本,仅供参考 from datasets import Dataset from trl import GRPOConfig, GRPOTrainer import re training_prompts = [ "题目:小明有8个苹果,给了小红3个,又买了一袋里有5个,问小明现在有几个苹果?请回答最终数量。", "题目:一列火车每小时行驶120公里,行驶4小时后总共行驶了多少公里?请回答最终数量。", # 实际使用请替换为更多样本,并确保验证器覆盖到所有答案 ] def answer_contains_expected_answer(prompts_and_responses, expected_answers): # 因环境限制,这里只保留函数签名的示意 # 完整实现需载入推理后端,将每条生成回复与期望答案比对 rewards = [] for text, expected in zip(prompts_and_responses, expected_answers): # 规则1:提取最后一个数字作为模型给出的最终答案 numbers = re.findall(r"\d+", text) final_answer = numbers[-1] if numbers else "" # 规则2:如果答案正确,奖励1分,否则0分 rewards.append(1.0 if str(final_answer) == str(expected) else 0.0) return rewards config = GRPOConfig( num_generations=4, max_completion_length=128, beta=0.01, temperature=0.8, use_vllm=False, )这段脚本的核心逻辑非常直观:模型的回复会经过“提取最后一个数字”和“与标准答案比对”两个环节,然后输出1分或0分奖励。GRPO会在这个二进制奖励的引导下,逐步增加“输出正确数字”这个行为的概率。
我想特别说明的是,上面这段只是为了帮助理解整个闭环的示意代码,不代表可以直接用于训练任何模型。真实场景中你还需要补齐“推理后端调用”“经验数据回收”“checkpoint回滚”等模块,这些内容至少要再战数百行。
如果25轮迭代后你的模型在验证集上的准确率从20%提升到了35%左右,整条“强化学习自我提升”链路就算初步跑通了;如果没有任何提升,大概率是奖励信号太稀疏,建议把单一的数字比对改成“中间步骤分步奖励”。
9. 写在最后:技术报告之外,我依然建议你亲手跑一次强化学习
MiMo-V2.6这份技术报告的主题词是“通过扩展强化学习实现模型自我提升”。报告里会有漂亮的数据曲线和算法公式,但真正让这些概念转化为你自己能力的路径,永远只能是亲手跑一次实验。
在你动手之前,有几个判断我希望你带在身上:
第一个判断是,“自我提升”不是免费的。模型确实可以在强化学习过程中自己探索出更好的策略,但这个过程极其依赖高质量的奖励信号设计。如果你没有花时间打磨奖励函数,模型“自我提升”的方向很可能是一个你完全不想要的方向。
第二个判断是,复现技术报告永远比读懂技术报告难一个数量级。报告里不会告诉你采样阶段OOM炸过几次,也不会告诉你哪个超参数调了整整两周。所以做好心理准备,预留充足的时间和算力。
第三个判断是,这类训练的价值不在某个单一benchmark的绝对分数上,而在“训练闭环是否可持续”。如果一个方案能让模型每跑一轮训练都积累一点真实能力,那么即使单轮提升看起来平平无奇,积累三轮、五轮、十轮之后,差距就会大到肉眼可见。
我个人在多次实践中的一个体会是,强化学习训练像一个经验积累游戏,每跑完一轮训练,最宝贵的不是模型文件本身,而是你对奖励信号、采样策略、数据回流判断的那份体感。这份体感是任何技术报告都无法替代的,也是真正拉开工程能力差距的地方。
如果你最近正好准备在自己的模型上尝试强化学习,我的建议是从最小的任务闭环开始,先把奖励、采样、更新、回滚这一整条链路跑通,再考虑怎么把规模做大。先求闭环,再求规模,这条原则在MiMo-V2.6所代表的“扩展强化学习”路线上,依然是最实用的入门姿势。