Microsoft规模下多模态后训练的工程与算法干预

Microsoft Engineering 2026-06-22T09:36:19.492592

Microsoft规模下多模态后训练的工程与算法干预

Aditya Challapally 负责 Copilot 智能体能力的后训练研究与基础设施,这些能力处理数百万次多模态交互。

本文基于诊断生产规模智能体强化学习中的不稳定性的诊断结果,结合我们开发的工程与算法干预措施,旨在从大规模后训练中获得最佳结果。

大规模后训练多模态智能体以文献未能预见的方式失效。不是因为算法本身有误——它们按描述工作——而是因为故障模式只有在生产规模下,在真实约束和真实异构性中才显现出来。

我们训练的系统是生产级模型,作为模块化智能体能力嵌入 Copilot,覆盖 Microsoft 的多个应用表面。它们编排工具、在企业文档和混合媒体输入上进行推理(这些输入以学术基准无法反映的格式和模态呈现)、审核多模态内容,并在严格的延迟和安全约束下运行。单一策略必须同时处理工具编排、多模态推理、内容审核和多步骤任务执行,轨迹长度从 100 到 2000+ token 不等,交互步数从 6 到 25+ 步。奖励信号来自程序化验证器、人工评估者和隐式使用信号,每种信号都有不同的尺度、噪声特征和延迟。这些模型每天为数百万用户服务,在严格的延迟和安全要求下运行,无声故障不是指标回归,而是大规模用户体量的糟糕体验。

标准的后训练手册假设的环境比这更理想。在我们面临的异构性和规模下,策略梯度估计器会无声退化:聚合奖励上升的同时,梯度信号集中在越来越少的轨迹上;能力在看似健康的仪表板背后倒退;策略退化到满足约束但无法解决问题的行为。

本文描述了为解决这些问题而开发的五种干预措施。其中几种与近期公开的智能体系统(如 Kimi K2.5: Visual Agentic Intelligence)中出现的模式一致,这表明随着更多系统转向生产规模的多模态智能体,该领域将越来越多地面临这些问题。

注意: 由于无法共享生产数据,图表为示意性复现。文中报告的所有数值阈值和相对改进均反映生产观察结果。

共同线索

大多数问题源于同一个根本原因。标准策略梯度估计器假设你的批次轨迹包含足够的回报方差,以产生有用的梯度信号:

g(θ) = 𝔼[∇θ log πθ(a|s) Â(s,a)]

在大规模下,这个假设以多种独立方式被打破,而且是无声地打破:聚合奖励持续上升,而实际更新信息量却在退化。我们构建的一切都可以理解为:在规模、异构性和轨迹长度增加时,保持优势估计 Â(s,a) 的信息量。

I. 阶段化目标课程学习以防止过早特化

当部署关键行为悄然退化时,聚合奖励却在稳步上升。鲁棒性下降。长时间跨度的执行失败更频繁。我们花了两个星期才发现,因为仪表板看起来一切正常。教科书式的答案是熵正则化。我们试过了:熵保持在高位,但错误的行为被强化了。问题不在于探索不足,而在于标量奖励将高维行为压缩成单一统计量,优化会收敛到最容易得分的那些行为上,而不是下游重要的那些。

判断决策: 我们将奖励拆分为可验证信号(工具语法、格式合规性,可以通过程序检查的内容)和偏好信号(工具选择、由评估者判断的响应质量)。在训练的前 30%,我们只训练可验证目标。之后,偏好信号线性引入。我们用熵下限(而非熵奖励)锚定早期学习,该下限通过 KL 惩罚实现,仅当 H(π) 低于阈值时激活。30% 的预热比例是通过经验确定的。10% 不够,策略在偏好信号提供信息之前就已特化。50% 过于保守,策略将一半训练时间浪费在已经掌握的目标上。30% 在我们的任务系列中表现稳健,可能不是最优的,但它有效。

图1:基线崩溃与我们的课程学习方法

图1显示基线在大约第25个 epoch 时熵崩溃,之后成功率停滞。阶段化课程学习保持了足够的多样性,使得偏好信号在进入时实际上是有用的。熵下限偶尔会过度约束那些早期特化本来没问题的任务上的探索,我们接受这一权衡。这超出了标量奖励的范畴。在多模态系统中,我们发现,在联合预训练建立了足够的对齐后,训练早期,纯文本监督比直接的多模态监督更可靠地激活跨模态能力。任何在策略准备好使用之前引入的噪声信号都会产生相同的故障模式。

II. 基于估计器健康度的自适应课程学习

训练陷入停滞,而平均奖励略有增加。更多数据和算力带来递减的回报。我们的标准指标无法解释原因。诊断来自追踪有效样本量(ESS)——一种经过重要性加权的度量,衡量实际有多少轨迹对梯度有贡献:

ESS = (Σ w_i)² / Σ w_i²

在第60个 epoch 左右,ESS 降至标称批次大小的 20% 以下。学习在第95个 epoch 左右停滞。这 35 个 epoch 的滞后在不同运行中一致。ESS 崩溃是学习停滞的领先指标,在任何下游指标变化之前就能检测到。事后看来这很明显:当 ESS 较低时,你的 10,000 条轨迹的批次实际上等效于 500 条轨迹,而那 500 条正是具有极端重要性权重的那些。但我们当时没有追踪它,而且大多数训练仪表板中也没有。

判断决策: 我们没有调整批次大小或奖励尺度,而是构建了一个自适应循环,实时监控 ESS,并在其降至 20% 以下时进行干预。触发时,系统从储备缓冲区中注入“险些失误”的轨迹,以恢复批次中的结果对比度,并暂时增加 KL 惩罚以在估计器恢复期间减缓策略漂移。具体来说,是“险些失误”的轨迹——我们最初尝试注入硬负样本,虽然恢复了 ESS 但降低了学习效果,因为梯度指向远离失败的方向,却没有指向成功。险些失误的轨迹保留了决策边界附近动作的相对排序,而那里正是信息信号所在之处。

图2:自适应课程学习下的 ESS 崩溃与恢复

图2显示基线 ESS 崩溃,大约 35 个 epoch 后学习停滞。我们的修复方法使 ESS 在整个过程中保持在 70% 以上。储备缓冲区增加了约 15% 的内存开销,自适应 KL 偶尔会减慢简单任务的学习速度。对我们来说,这是可接受的成本。

III. 基于估计器结构的方差校正归一化

一些任务系列得到改进,而另一些则出现倒退。小幅的混合比例变化导致了不成比例的行为转变。系统变得脆弱,使得迭代迭代痛苦不堪。标准方法是每任务梯度归一化。它平衡了各任务间的梯度幅度,但忽略了

查看原文