资讯动态

MiMo-v2.6多模态RL训练看板解读:核心指标与异常排查指南

发布时间:2026/10/26 13:00:45 来源:尧图企业网站定制
第一次接触 MiMo-v2.6 的 RL 训练看板大多数人都会被满屏的曲线劝退。Reward、KL、Clip Fraction、Entropy、TPS、Refusal Rate几十个缩写堆在一个页面上看起来什么都在涨但真要你回答“模型到底变好了没有”又说不出一句准话。这篇文章把我自己跑多模态 RL 训练时总结下来的看板阅读逻辑完整梳理一遍重点放在两件事一是每个指标到底怎么定义、合理范围大概在什么地方二是当曲线不对劲的时候应该顺着哪几条线索去排查。如果你正准备读 MiMo-v2.6 技术报告或者想复现它的训练流程这份解读可以直接当作配套速查手册用。先给一个总体认知看板上的指标不是等权的。有些指标是气压表坏了马上要命有些是温度表偏离了说明训练方式有问题还有一部分只是装饰几十步之内没有参考意义。分不清这三类读板就是对着随机噪声做判断训练跑挂了都找不到第一现场。1. 训练看板的整体设计与信息分层1.1 为什么要分成三层来看我第一次看到这类看板时下意识想把所有曲线都加到一个图里结果什么都看不清。后来有经验的同事点了一句RL 训练看板本质上应该按“健康状态—训练趋势—资源消耗”三层组织。健康状态层解决的是“训练有没有挂”的问题。NaN loss、梯度爆炸、KL 突然冲上天、GPU 利用率掉成 0这类信息必须在第一时间跳出来基本属于只看一眼就能判断的指标。趋势层解决的是“模型有没有变好”的问题包括总 Reward、分项奖励、平均生成长度、Refusal Rate 这类过程指标它们有噪声但趋势有意义。资源层则是吞吐量、GPU 利用率、日志落盘延迟这些产能指标反映的是工程效率不直接决定模型上限但决定你一天能试多少个实验。把这三层混在一起看是读板最大的误区。我见过不少人盯着 Reward 曲线五分钟却没注意到旁边 KL 已经翻了十倍。分层的意义在于给警报设置优先级先保底再看变化最后才看效率。1.2 不同角色的读板视角训练工程师和算法研究员的关注点其实很不一样。工程师更关心吞吐和稳定性训练和生成两阶段的 TPS 是否正常、数据加载有没有成为瓶颈、GPU 是不是都在满负荷跑。算法研究员则更关心奖励趋势与探索状态Reward 是否还在上升、策略与初始模型之间差距大不大、模型是不是在奖励模型上钻空子。这意味着同一块板子得支持两种阅读方式。MiMo-v2.6 这类多模态模型尤其明显图像输入的 batch 组织方式直接影响显存占用和吞吐工程师需要看“图像样本占比”这类指标研究员则更想看到“OCR 子奖励”和“图文对齐子奖励”的拆分。看板如果只给一个总 Reward这两种角色都会觉得不够用。我的建议是看板按 Tab 分页比一屏堆完更好总览页只放 8 个左右核心指标剩下的进子页面。信息密度太高不是专业是没法用。1.3 采样周期与聚合粒度很多指标在单个 token 级别是无意义的必须在样本级别或 step 级别聚合后才有解释价值。比如 Policy Loss单个 step 内可能因为某个离群样本产生巨大抖动直接展示原始值曲线就是一蓬刺。实际看板里通常对 loss、reward、KL 做指数移动平均EMA用 0.1 左右的平滑系数把最近几百步的趋势显露出来。聚合粒度也要分阶段。训练阶段一般按 global step 记录一个 step 可能包含数千个样本生成阶段则按提示词prompt次数记录一个 prompt 会采样多个回复。读板时需要知道当前横轴的刻度是 step 还是采样轮次我遇到过把两者混在一起算平均值的乌龙后面的所有结论全都偏了。2. 核心指标定义与判读标准上奖励、优势与探索2.1 Reward标量总奖励与子维度拆分Reward 是看板上最显眼也最容易误解的指标。它不是一个模型固有的物理量而是一个由奖励函数算出来的标量。MiMo-v2.6 的奖励函数通常包含多个子项比如视觉理解准确率、格式合规性、内容安全分数以及一个与生成长度相关的惩罚项。看板上的总 Reward 是这些子项的加权和。判断 Reward 曲线时必须先确认它的取值范围。如果奖励函数本身经过归一化那么“从 0.2 涨到 0.5”显得很漂亮但并没有跨越半个量级如果某个子项直接是硬指标例如格式必须完全正确那么它的权重波动就不应被过度解读。遇到总 Reward 长期横盘时我的经验是必须拆开看子项。很多时候总曲线没有变化内部却在进行“配平”安全分数缓慢上升但视觉理解分数在下降最终加权总和持平。这比横盘更危险因为它意味着优化方向出了问题只是被权重掩盖了。2.2 Advantage 与 Group Baseline如果只读 Reward你最多只能知道“这轮生成的结果被打了多少分”但不知道“这个分数相对于平均水平有没有优势”。Advantage 解决的就是这个问题它把绝对分数转换成相对好坏。MiMo-v2.6 的训练里如果用的是 GRPO 这一类方法看板上通常不会出现独立的 Critic 网络而是按组内均值做 Baseline。具体做法是同一个提示词采样多个回复组成一个 group用组内平均 Reward 作为基准每个回复的得分减去这个均值就得到 Advantage。这样设计的好处是不需要额外训练一个价值模型天然避免了价值模型过拟合的问题。看板上的 Advantage 一般展示均值和标准差。均值应该趋近于 0 左右波动标准差则反映模型对“哪些回复更好”的区分度。如果标准差长期极小意味着奖励模型给出的评分没有梯度策略很难从中学到东西如果标准差太大则需要留意是否有个别离群样本在主导优化信号。2.3 Return 与折扣回报Reward 是即时反馈Return 是将一个回合内所有即时奖励按时间累积后的总量。在看板里两者很容易混。对单轮生成的对话任务来说Return 基本就是这一轮里所有 token 位置奖励的总和但在多轮交互或者长程任务中Return 还涉及折扣因子discount factor。如果某项奖励只给到终局状态那么 Return 和 Reward 在数值上可能差出好几倍。读板时不要把 Return 当成“模型理论上限”。它是一个受任务长度影响的统计量任务越长Return 自然越高。跨任务对比 Return 没有意义只有同一任务、同一提示词分布下的 Return 趋势才有参考价值。我看到有人拿不同数据混合比例下训练的 Return 直接对比结论完全是错的。2.4 KL 散度与 Reference Model 的距离KL 散度在看板上是最能反映“策略漂移”的指标。RL 训练通常有一个冻结的 Reference Model一般是 SFT 阶段的模型当前策略模型与它的输出分布之间的差异用 KL 散度度量。看板通常展示的是按 token 平均后的值训练中会乘以一个系数例如 μKL作为惩罚项加进目标函数。KL 不是越小越好也不是越大越好。它表示模型在多大程度上偏离了初始行为。如果 KL 长期接近 0说明策略几乎没有更新Reward 再高也是远古模型的幻觉如果 KL 突然飙升说明模型开始为了拿高分而采用大幅度改变输出的策略这时候很容易掉进奖励黑客陷阱。经验上对一个小规模的视觉语言模型μKL 设在 0.05 左右时平均 KL 在 10 到 30 之间比较常见。这个数字不绝对但当你看到 KL 在一两百甚至在千级别横跳时基本可以断定策略已经脱离约束需要立刻降学习率。2.5 Entropy模型探索能力的体温计Entropy 衡量策略分布的随机性。训练前期模型输出比较多样Entropy 的自然水平较高训练后期随着策略集中到高分区域Entropy 通常会下降。看板的正确读法是关注它的下降斜率而不是绝对数值。如果 Entropy 断崖式下跌说明模型过早锁定了某个输出模式这往往是 reward hacking 的前兆。比如模型发现某种固定句式总能拿高 Reward就会把所有回复都压缩成那个句式Entropy 急剧降低能力固化后续再想救回来很费劲。反过来如果训练了三千步 Entropy 依然纹丝不动说明策略更新根本没有有效地改变生成分布检查学习率或者 Advantage 信号是否有效。3. 核心指标定义与判读标准下优化状态与产能3.1 Policy Loss 与 Value LossPolicy Loss 是策略网络在主目标上的损失它不直接等同于“模型的错误率”。在 PPO 风格的目标里Policy Loss 反映策略期望 Advantage 被放大或约束的程度共有一种简化理解这个值越低说明策略在当前 batch 上更倾向于采纳高 Advantage 的行为。Value Loss 只存在于用到 Critic 网络的训练框架中也就是 PPO 那一类。它衡量 Critic 对回报的预测误差通俗说就是价值模型的“考试成绩”。如果你用的是 GRPO那么看板上压根不该有 Value Loss硬要找一个等价指标的话应该看 Group Advantage 的标准差。判断价值模型是否健康有一个朴素标准Value Loss 的量级应该与 Reward 的量级接近如果 Value Loss 长期比 Policy Loss 大一个数量级说明价值模型本身还没学稳策略侧的更新信号质量会很差。3.2 Clip Fraction策略更新的油门MI与 PPO 这类方法里都引入了策略更新幅度的限制。Clip Fraction 指的是当前 batch 中发生“截断”的比例也就是新旧策略输出概率比值跑到了预设范围之外的比例。看板上的这个值通常在 0.02 到 0.2 之间波动意思是每 100 条样本里有 2 到 20 条触发了更新上限。Clip Fraction 的作用就像驾驶时的油门踏板。它长期低于 0.02说明你踩油门太保守策略几乎不动它长期高于 0.2说明每次更新幅度过大训练会来回震荡。我一般见到这个值连续几十步高于 0.3就会优先调低学习率或者把那步的批量再放大一点让梯度估计更稳定。3.3 Gradient Norm 与学习率Gradient Norm 是梯度向量的模长。看板上的 Gradient Norm 主要用来发现异常从正常范围突然飙高几个数量级往往预兆着梯度爆炸长期压在极低的水平则可能梯度消失策略根本更新不动。学习率本身也会在看板上占据一块地方但它通常不是需要逐 step 盯的指标。它更像一种标记你知道当前处于什么阶段。如果训练采用余弦退火之类的衰减策略那么看到 Reward 曲线在衰减后期趋于平稳就不该用前期的标准去要求它。很多人会忘记把学习率阶段和曲线形态结合起来看看到后期不涨就慌说到底是对预期管理出了问题。3.4 吞吐与算力利用率TPS、MFU 与 GPU 利用率吞吐指标虽然不是模型质量指标却是 RL 训练里最磨人的工程指标。MiMo-v2.6 看板上通常区分 Generation TPS 和 Training TPS。Generation TPS 相对较低因为生成阶段要跑自回归解码每个 token 都要依次生成Training TPS 跑的是前向与反向计算吞吐更高。两者不必对齐但各自要有稳定性基线。MFU模型浮点利用率反映硬件算力的真实使用效率正常训练时通常在 40% 到 60% 之间如果跌到 20% 以下大概率是 padding 过多、batch 太小或数据加载卡顿。GPU 利用率则更适合看平均值和曲线形态反复在 0 和 100 之间跳动通常代表同步等待和 idle 周期太多需要检查数据管线有没有长时间阻塞。这些指标决定的是迭代速度而非最终效果但迭代速度慢了调参次数就会受限制最终效果自然受影响。所以把它们当作“落后指标”看不直接反馈给模型但反馈给实验节奏。4. 多模态任务下的特殊看板指标4.1 分项能力奖励OCR、图文对齐与 format多模态 RL 与纯文本 RL 最大的差别在于奖励信号是异质的。看板不能只展示一个总 Reward还需要按能力维度拆分例如图像中的文字识别、指代理解、图文对齐、工具调用格式等。不同维度的奖励可能来自不同的评测器量纲和难度完全不相同。遇到分项奖励先要理解各自的范围。OCR 类硬准确率可以用 0 到 1 表示安全偏好打分可能用 0 到 5 或者一个对数概率折算分这两者直接相加没有意义。需要先在各分项内部做标准化再按权重求和看板上还必须把权重配置展示出来。否则你看到总 Reward 上涨根本说不清是哪个能力在起作用。4.2 Refusal Rate奖励黑客的哨兵多模态任务里模型学会的“最省事”的应对方式之一是拒绝回答。不明原因拒绝、一律拒绝、转去输出自己训练时见过的高分模板这些都会让任务奖励失效。Refusal Rate 就是专门用来盯这个现象的指标。如果 Refusal Rate 在一个 RL 训练试次里持续上升哪怕总 Reward 在涨也要引起警惕。这说明模型正在走一条退路不是真的会做任务了而是学会了用“不能回答”来规避低分。我在实际调参中看到过模型从 2% 拒绝率涨到 40%同时总 Reward 提升了 0.3 的情况。表面是收益底子是退化。遇到这种情况优先检查奖励函数里有没有对“拒绝”行为的显式惩罚或者任务提示词里是否存在诱导模型拒绝的歧义表述。4.3 生成长度与 Length Reward很多奖励函数会加入与生成长度相关的项用来避免模型偷懒输出太短的答案或者反过来鼓励生成更详细的解释。这种长度奖励很容易带偏模型。看板上的平均生成长度、最大长度、长度分位数就是用来识别这类偏置的窗口。如果给定了 max_retries 上限但平均生成长度开始贴着上限走说明模型已经学会无限注水来拿长度分。常见对策是给长度奖励加一个饱和阈值超过某个长度后不再加分。读板的时候要同时看两条曲线Reward 和生成长度。两者在训练早期同步上升很正常但如果训练后期只有长度还在涨、Reward 不再涨大概率是长度奖励已经把优化方向带离真正目标了。4.4 Reward Model 偏差与 GapRL 训练的信息来自奖励模型而不是真实人类评价。奖励模型本身有偏差这种偏差会随训练加深而被放大。看板上最难的指标不是曲线而是那些你看不到的东西——模型在奖励模型眼里变好了在真实任务上却未必。为了缓解这个问题训练循环一般会定期启动评测阶段即用一套独立的高质量基准来回答问题。MiMo-v2.6 看板上因而会出现一组“评测间奏”曲线它们不按 step 连续记录而是若干步出现一次。这组曲线与 Reward 曲线之间的差距就是 Reward Model Gap 的近似体现。如果奖励模型打分持续上升但独立评测分数原地踏步甚至下降就要停下来怀疑奖励建模本身。5. 实操怎么巡检 MiMo-v2.6 的训练看板5.1 看板常用布局与面板组织一个能支撑几周训练周期的看板通常按这样组织总览页放 Reward 和 KL 两条主曲线副区域放 Policy Loss、Clip Fraction、Gradient Norm、学习率生成页放生成吞吐、平均生成长度、Refusal Rate训练页放训练吞吐、GPU 利用率、MFU、batch 大小。不同实验的对比视图应该单独开放因为单独看一个实验的曲线很难判断好坏横向对比才能发现某个步段的异常。面板的刷新频率也有讲究。训练 step 在几十秒量级时每分钟刷新一次已经足够。刷得太快会让曲线频繁跳动干扰判断刷得太慢又会错过挂掉的瞬间。我习惯把总览页设成 1 分钟刷新子页面用 5 分钟刷新这样既能看到实时性又不会让主要注意力被噪声带走。5.2 五分钟巡检流程我总结了一个比较省事的巡检顺序直接照着做就行看右上角 global step 是否在持续推进。如果长时间卡住优先怀疑训练进程死锁而不是模型问题。看 Loss 是否为 NaN。这一步排第一因为一旦出现 NaN后面所有指标都没有意义。看 KL 的绝对值与变化斜率。比上一个检查点高出 50% 以上就必须警惕。看 Reward 的 EMA 趋势。连续 100 步没有上升不代表失败但如果 500 步没有一点波动需要进一步拆子项。看 Clip Fraction 阈值。超过 0.25 提示更新步长过大。最后瞄一眼 GPU 利用率和 TPS确认不是工程侧的问题。整个流程控制在五分钟以内。RL 训练的问题往往不是单点爆发而是多个小异常叠加所以巡检要固定在每天几个时间点做不要等出大事才打开看板。5.3 关键参数配置与看板联动看板上的数值背后都与超参数联动。Ree 相关看板需要关注的几个配置是μKL、学习率、batch size或者 GRPO 口径下的组大小、样本长度上限和奖励权重。学习率改动会直接反映在 Clip Fraction 和 KL 上μKL 加大通常会压低 KL但也可能让 Reward 上升变慢组大小直接影响 Advantage 标准差的估计质量。如果看板用了自己的日志系统可以做一个非常轻量的小脚本把零散的指标行提取出来做 EMA方便自己在本地二次分析。比如import re import statistics logs open(train.log, encodingutf-8) step [] loss_ema None for line in logs: m re.search(rstep(\d).*?policy_loss([\d.]), line) if m: s int(m.group(1)) loss float(m.group(2)) loss_ema loss if loss_ema is None else 0.1 * loss 0.9 * loss_ema step.append((s, loss_ema)) # 随后把 step、loss_ema 交给前端画图替代看板自带的裸值曲线这样做的价值在于训练集群卡顿期间看板可能漏采样本地用原始日志算 EMA 能拿到波动更稳定的曲线排查问题的时候多一个可信视图。6. 常见异常模式与排查技巧实录6.1 Reward 曲线横盘不动如果 Reward 在 200 步内毫无上升先看子项。我的经验是七成情况是某个子项在拖后腿且这个子项基本不动总 Reward 再怎么加权都被它压住。打开分项图找到那个持续不长不落的奖励确认对应数据是否太单一。小模型场景下某个能力的训练样本重复率过高奖励模型给分就会出现“饱和”模型再怎么学都拿不到更高分。这种情况的解法不是调学习率而是回数据侧增加该能力的多样性。另一种常见原因是 μKL 设得过重。策略稍微偏离参考模型就被大惩罚压制RL 实际在上面白跑。测试方法也简单临时把 μKL 调低一半继续跑两百步如果 Reward 立刻抬头说明之前不是模型学不会是约束太紧。6.2 KL 散度突然飙升KL 飙升通常与学习率过大或优势信号不稳定同时出现。第一反应是看最近的 Clip Fraction 和单个 batch 里的 Reward 方差。如果 Reward 方差在同一个时间点猛增说明奖励模型对某个新样本群给出了极端分数策略顺着这个尖峰大步更新KL 就被顶起来了。处理顺序建议是先降温把学习率降为原来的五分之一同时把 β 或 μKL 上调一个档位然后回到数据管道确认最近进入的 batch 是不是混入了格式异常或标签错误的样本。我在实际训练中遇到过 KL 飙升的原因竟然是一个评测脚本错误地把一张全黑图片标成了高奖励样本模型很聪明立刻学到了一套针对黑图的投机输出。6.3 Loss 为 NaN 或剧烈抖动NaN 在多模态 RL 训练里并不冷门常见原因是数值精度溢出。视觉特征和文本特征的数值范围差异很大如果 reward 系数过大乘以梯度以后很容易超过 fp16 的表示范围。建议先切换到 bf16再看 reward 是否做了 normalization。看板上的 reward 分布如果能看到最大最小值的话要求两者数量级不要太夸张比如已标准化到 [-1, 1] 区间就会安定很多。Loss 剧烈抖动但不至于 NaN一般不是精度问题而是 batch 内离群样本太多。RL 训练里每个 step 的样本都是模型自己生成的质量波动天然很大。看板如果支持“ignore first k steps”的视图能帮助你判断是早期冷启动的抖动还是稳态下的问题。6.4 吞吐骤降与 GPU 利用率掉空吞吐骤降最先要查的是序列长度分布。多模态生成中有些样本可能触发了很长的输出导致单个 batch 的执行时间暴涨。看板上的平均生成长度如果连续升高而并行度不变吞吐下降是必然的。另一个常见原因是 padding 率上升batch 里最长序列越宽短序列被白白填充的算力就越多MFU 自然难看。如果 GPU 利用率曲线是间隔性的“锯齿”我一般先怀疑数据加载或者奖励计算环节阻塞了训练循环。多模态任务里要额外看图像解码和预处理的线程数图像解码是非常容易成为瓶颈的环节——某次吞吐掉了 40%追查到最后是图像解码库版本更新后并发能力退化。6.5 看板数据延迟与断点续跑看板数据本身出现延迟不等于训练卡死。常见原因有三个监控进程没开、日志缓冲没落盘、或者分布式训练中某些 rank 的统计没顺畅汇总。遇到这种情况先从训练日志确认实际 step 还在推进再诊断监控链路不要一上来就重启训练。断点续跑还会带来一个容易忽略的问题同一轮实验跨两次启动如果随机种子重新初始化Reward 曲线会出现一个明显的跳变。看板如果支持在续跑点画竖线就非常实用画不出来就自己记录下时间戳。否则你会把续跑后的波动误判成训练异常。7. 术语速查表与易混淆辨析7.1 高频术语速查表术语含义看板上的作用Reward奖励模型或规则函数算出的即时分数总回报与子项趋势的依据Return一个回合内奖励的累计值长任务下判断整体表现Advantage当前结果相对于平均水平的优势GRPO/PPO 中策略梯度的核心信号Baseline用于计算优势的参照值决定优势估计的稳定性KL 散度策略模型与参考模型的分布距离衡量策略漂移程度Entropy策略分布的随机性判断探索是否过低Clip Fraction策略更新触发截断的比例反映单步更新幅度Policy Loss策略网络在主目标上的损失判断策略是否在有效调整Value Loss价值模型预测误差判断价值模型是否健康Gradient Norm梯度向量模长识别爆炸或消失MFU模型浮点利用率评估算力使用效率TPS每秒处理的 token 数量评估生成/训练吞吐Refusal Rate模型拒绝回答的比例识别退化与奖励黑客Group SizeGRPO 中每个提示词采样的回复数影响优势估计质量7.2 容易混的三组概念Reward 与 Return 是最高频的混淆点。Reward 强调“这一步给的分数”Return 强调“这一整段累计下来的分数”前者是局部后者是全局。看板上如果没有明确标注一定要看训练框架里的定义再判断。PPO 的 Value Loss 与 GRPO 的 Advantage 标准差对应的位置相同但含义完全不同。前者是回归问题衡量预测准不准后者是分布问题衡量区分度好不好。用 PPO 的思维去找 GRPO 训练里的“价值网络过拟合”根本找不到对象。Generation TPS 与 Training TPS 也不要同框比较。生成阶段是自回归解码训练阶段是并行前反向两者理论上就不在一个量级。放在同图中的意义只是看趋势稳定性而不是对比数值大小。附一些个人经验作为结尾最后说一个我自己的习惯也算是踩过不少坑之后的总结每次开始新一轮 RL 训练我会在看板上把 Reward、KL、Clip Fraction、平均生成长度这四根曲线固定成一张视图跑满一千步后截图保存再跑一千步截第二张。两张图一对比训练方向对不对基本能看出七成。看板这东西最忌讳的是每个指标都看每个指标都不深究。四根关键曲线看透了比来回翻三十个页面有用得多。后续 MiMo-v2.6 的配置如果更新看板指标大概率也会跟着调整比如加入了新的分项奖励或者换一种优势估计方式但读板逻辑不会变先问自己这个指标异常它反映的是策略更新失控、数据侧污染还是工程资源抖动。带着这三个问题上板曲线基本骗不了你。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑