3 后训练
本文为论文《Kimi K2:面向智能体能力的开源大模型》「中文全文翻译」板块的对应章节,与「论文原文」板块同一章节一一对应,层级保持一致。
3.1 监督微调
我们在后训练中采用 Muon 优化器 [33],并建议在对 K2 进行微调时使用它。这源于我们先前工作 [46] 的结论:使用 Muon 预训练的检查点在使用 Muon 微调时能够获得最佳性能。
我们构建了一个覆盖多个领域的大规模指令微调数据集,遵循两条核心原则:最大化提示多样性并确保高响应质量。为此,我们针对不同任务领域开发了一套数据生成流水线,每条流水线都结合了人工标注、提示工程和验证流程。 我们采用 K1.5 [35] 和其他内部领域专用专家模型为各种任务生成候选响应,然后由 LLM 或基于人工的评判器进行自动质量评估和过滤。 对于智能体数据,我们创建了一个数据合成流水线,通过多步交互式推理来教模型工具使用能力。
3.1.1 用于工具使用学习的大规模智能体数据合成
现代 LLM 智能体的一项关键能力,是能够自主使用不熟悉的工具、与外部环境交互,并通过推理、执行和纠错迭代地改进行动。智能体工具使用能力对于解决需要与现实世界系统动态交互的复杂多步任务至关重要。近期基准测试如 ACEBench [6] 和 $\tau$-bench [85] 强调了全面工具使用评估的重要性,而 ToolLLM [58] 和 ACEBench [6] 等框架则展示了教模型有效使用数千种工具的潜力。
然而,大规模训练此类能力面临重大挑战:尽管真实世界环境能够提供丰富且真实的交互信号,但由于成本、复杂性、隐私和可访问性等限制,往往难以大规模构建。近期在合成数据生成方面的工作(AgentInstruct [51];Self-Instruct [75];StableToolBench [20];ZeroSearch [66])已显示出在不依赖真实世界交互的情况下创建大规模数据的良好前景。基于这些进展,并受到 ACEBench [6] 全面数据合成框架的启发,我们开发了一条流水线,可大规模模拟真实世界的工具使用场景,从而生成数以万计多样且高质量的训练样本。

(a) 合成工具规范、智能体和任务

(b) 生成智能体轨迹
图 8:工具使用的数据合成流水线。(a) 工具规范来自真实世界工具和 LLM;智能体和任务由工具仓库生成。(b) 用于生成和过滤带工具调用轨迹的多智能体流水线。

(a) 真实 MCP 工具的 t-SNE 可视化,按其原始来源类别着色

(b) 合成工具的 t-SNE 可视化,按预定义领域类别着色
图 9:工具嵌入的 t-SNE 可视化。(a) 真实世界 MCP 工具基于其原始来源类别呈现自然聚类。(b) 合成工具被组织为预定义的领域类别,从而系统性地覆盖工具空间。二者共同确保了对不同工具功能的全面表示。
我们的数据合成流水线包含三个阶段,如图 8 所示。
- •
工具规范生成:我们首先从真实世界工具和 LLM 合成工具中构建一个大型工具规范仓库;
- •
智能体和任务生成:对于从工具仓库中采样的每个工具集,我们生成一个使用该工具集的智能体以及若干相应任务;
- •
轨迹生成:对于每个智能体和任务,我们生成智能体通过调用工具完成任务的轨迹。
领域演化与工具生成。
我们通过两种互补的方法构建了一个全面的工具仓库。首先,我们直接从 GitHub 仓库中获取 3000 多个真实的 MCP(Model Context Protocol)工具,利用现有的高质量工具规范。其次,我们通过分层领域生成过程系统性地演化 [82] 合成工具:从关键类别(例如金融交易、软件应用、机器人控制)开始,然后在每个类别中演化出多个具体应用领域。随后为每个领域合成专用工具,并为其定义清晰的接口、描述和操作语义。该演化过程产生了超过 20,000 个合成工具。图 9 通过 t-SNE 嵌入可视化了我们工具集合的多样性,表明 MCP 工具和合成工具覆盖了工具空间中互补的区域。
智能体多样化。
我们通过合成不同的系统提示并为其配备来自工具仓库的不同工具组合,生成了数千个不同的智能体。这创建了一个具有多样能力、专业领域和行为模式的智能体群体,确保了对潜在用例的广泛覆盖。
基于评分标准的任务生成。
对于每种智能体配置,我们生成从简单到复杂操作的任务。每个任务都配有明确的评分标准(rubric),用于指定成功标准、预期的工具使用模式和评估检查点。这种基于评分标准的方法确保了对智能体性能的一致且客观的评估。
多轮轨迹生成。
我们通过以下组件模拟真实的工具使用场景:
- •
用户模拟:由 LLM 生成的具有不同沟通风格和偏好的用户画像与智能体进行多轮对话,从而创建自然的交互模式。
- •
工具执行环境:一个复杂的工具模拟器(功能上等同于世界模型)执行工具调用并提供真实的反馈。该模拟器在每次工具执行后维护并更新状态,从而支持具有持续效果的复杂多步交互。它还引入受控的随机性,以产生包括成功、部分失败和边缘情况在内的多样化结果。
质量评估与过滤。
基于 LLM 的评判器根据任务评分标准评估每条轨迹。只有满足成功标准的轨迹才会被保留用于训练,从而在允许任务完成策略自然变化的同时确保高质量数据。
与真实执行环境的混合方法。
虽然模拟提供了可扩展性,但我们承认模拟保真度存在固有局限。为了解决这一问题,我们在真实性至关重要的场景(尤其是编码和软件工程任务)中,用真实执行沙箱来补充模拟环境。这些真实沙箱执行实际代码,与真实开发环境交互,并通过测试套件通过率等客观指标提供真实反馈。这种结合确保我们的模型既能从模拟场景的多样性中学习,也能从真实执行的真实性中学习,从而显著增强实际的智能体能力。
通过利用这一将可扩展模拟与有针对性的真实世界执行相结合的混合流水线,我们生成了兼顾覆盖面和真实性的多样化高质量工具使用演示。我们的合成数据生成在规模和自动化方面的优势,加上真实执行环境提供的落地性,通过质量过滤过程有效地实现了大规模拒绝采样 [26, 87]。这些高质量合成数据在用于监督微调时,已在广泛的实际应用中显著提升了模型的工具使用能力。
3.2 强化学习
人们普遍认为,强化学习(RL)相比监督微调(SFT)具有更好的 token 效率和泛化能力。 基于 K1.5 [35] 的工作,我们在 K2 中继续在任务多样性和训练 FLOPs 两个维度上扩展 RL。为此,我们开发了一个类似 Gym 的可扩展框架,以促进在广泛场景下的 RL。我们通过大量具有可验证奖励的任务扩展了该框架。对于依赖主观偏好的任务,例如创意写作和开放式问答,我们引入了一种自我批判奖励机制,让模型通过成对比较来评判自己的输出。这种方法使来自不同领域的任务都能从 RL 范式中受益。
3.2.1 可验证奖励 Gym
数学、STEM 与逻辑任务
对于数学、STEM 和逻辑推理领域,我们的 RL 数据准备遵循两个关键原则:多样化覆盖和适中难度。
多样化覆盖。 对于数学和 STEM 任务,我们通过专家标注、内部问答提取流水线和开放数据集 [41, 52] 相结合的方式收集高质量问答对。在收集过程中,我们利用标签系统有意识地增加对覆盖不足领域的覆盖。对于逻辑任务,我们的数据集包含多种形式,包括结构化数据任务(例如多跳表格推理、跨表聚合)和逻辑谜题(例如 24 点、数独、谜语、字谜算术和摩尔斯电码解码)。
适中难度。 RL 提示集既不应过于简单,也不应过于困难,这两种情况都可能产生很少的学习信号并降低学习效率。我们使用 SFT 模型的 pass@k 准确率评估每个问题的难度,并仅选择难度适中的问题。
复杂指令遵循
有效的指令遵循不仅需要理解显式约束,还需要处理隐含要求、应对边界情况,并在长对话中保持一致性。我们通过一个混合验证框架来应对这些挑战,该框架将自动验证与对抗性检测相结合,并辅以可扩展的课程生成流水线。 我们的方法采用双路径系统,以确保精确性和鲁棒性:
混合规则验证。我们实现了两种验证机制:(1)通过代码解释器对具有可验证输出的指令(例如长度、风格约束)进行确定性评估;(2)对需要细致理解约束的指令采用 LLM-as-judge 评估。为了解决模型可能在未实际遵循指令的情况下声称已完成指令的对抗性行为,我们引入了一个额外的 hack-check 层,专门用于检测此类欺骗性声明。
多源指令生成。为了构建训练数据,我们采用三种不同的生成策略以确保全面覆盖:(1)由数据团队开发的专家编写的复杂条件提示和评分标准;(2)受 AutoIF [12] 启发的智能体式指令增强;(3)一个专门微调的模型,用于生成额外指令,以探测特定失败模式或边界情况。这种多管齐下的方法确保了指令覆盖在广度和深度上的兼顾。
忠实性
忠实性对于在多轮工具使用、自生成推理链和开放环境交互等场景中运行的智能体模型至关重要。 受 FACTS Grounding [30] 评估框架的启发,我们训练了一个句子级忠实性评判模型来执行自动验证。该评判器能够有效检测在上下文中缺乏支持证据却作出事实性声明的句子。它作为奖励模型,用于提升整体忠实性表现。
编码与软件工程
为了增强我们解决竞赛级编程问题的能力,我们从开源数据集 [27, 83] 和合成来源收集问题及其评测器。为了确保合成数据的多样性和奖励信号的正确性,我们引入了从预训练数据中检索到的高质量人工编写单元测试。
对于软件工程任务,我们从 GitHub 收集了大量拉取请求和 issue,以构建由用户提示/issue 和可执行单元测试组成的软件开发环境。 该环境建立在由 Kubernetes 提供支持的稳健沙箱基础设施之上,具备可扩展性和安全性。它支持超过 10,000 个并发沙箱实例并保持稳定性能,非常适合竞赛编程和软件工程任务。
安全性
我们提升安全性的工作始于一组人工整理的种子提示,这些提示经过手工设计,涵盖暴力、欺诈和歧视等常见风险类别。
为了模拟复杂的越狱尝试(例如角色扮演、文学叙事和学术话语),我们采用了一个包含三个关键组件的自动化提示演化流水线:
- •
攻击模型:迭代生成旨在诱导目标 LLM 产生不安全响应的对抗性提示。
- •
目标模型:对这些提示生成响应,以模拟潜在漏洞。
- •
评判模型:评估交互过程,以确定对抗性提示是否成功绕过了安全机制。
每次交互都使用特定任务的评分标准进行评估,使评判模型能够给出二元的成功/失败标签。
3.2.2 超越验证:自我批判评分奖励
为了将模型对齐扩展到具有可验证奖励之外的任务,我们引入了一个基于自我批判反馈的通用强化学习框架。该方法旨在通过将从可验证场景中学到的能力扩展到更广泛的主观任务,使 LLM 与细致的人类偏好(包括有用性、创造性、推理深度、事实性和安全性)保持一致。该框架使用自我批判评分奖励机制运行,其中模型通过评估自身输出来生成偏好信号。 为了将 K2 引导为一个合格的评判者,我们整理了开源和内部偏好数据集的混合数据,并在 SFT 阶段初始化其批判能力。
自我批判策略优化
在学习循环的第一个核心过程中,K2 actor 为覆盖广泛用例的通用提示生成响应。随后,K2 critic 通过依据一组评分标准进行成对评估,对所有结果进行排序。这些评分标准包括核心评分标准(附录 F.1,代表我们珍视的 AI 助手的基本价值观)、规范性评分标准(附录 F.2,旨在消除奖励黑客行为),以及由数据团队针对特定指令场景精心制定的人工标注评分标准。尽管某些评分标准可以被指定为强制性的,K2 仍保留根据其内部先验对其进行权衡的灵活性。这种能力使其能够与不断演化的在线策略行为进行动态且持续的对齐,确保模型的响应在适应特定指令的同时,仍与其核心身份保持一致。
闭环 Critic 精炼与对齐
在 RL 训练期间,critic 模型使用可验证信号进行精炼。由可验证奖励提示生成的在线策略 rollout 被用于持续更新 critic,这是将来自 RLVR 的客观性能信号直接提炼到其评估模型中的关键步骤。这一迁移学习过程将其更主观的判断建立在可验证数据之上,使可验证任务中的性能提升能够增强 critic 在缺乏显式奖励信号的复杂任务上的判断能力。 这种闭环过程确保 critic 能够随着策略的演化不断重新校准其评估标准。通过将主观评估建立在可验证数据之上,该框架实现了与复杂、不可验证的人类目标之间稳健且可扩展的对齐。
因此,这种整体对齐在广泛领域中带来了全面的性能提升,包括用户意图理解、创意写作、复杂推理和细致的语言理解。
3.2.3 RL 算法
我们采用 K1.5 [35] 中引入的策略优化算法作为 K2 的基础。 对于每个问题 $x$,我们从先前策略 $\pi_{\mathrm{old}}$ 中采样 $K$ 个响应 ${y_{1},\dots,y_{k}}$, 并相对于以下目标优化模型 $\pi_{\theta}$:
| | $\displaystyle L_{\mathrm{RL}}(\theta)=\mathbb{E}{x\sim\mathcal{D}}\left[\frac{1}{K}\sum{i=1}^{K}\left[\left(r(x,y_{i})-\bar{r}(x)-\tau\log\frac{\pi_{\theta}(y_{i}|x)}{{\pi}{\mathrm{old}}(y{i}|x)}\right)^{2}\right]\right]\,,$ | |
其中 $\bar{r}(x)=\frac{1}{k}\sum_{i=1}^{k}r(x,y_{i})$ 是采样响应的平均奖励,$\tau>0$ 是促进稳定学习的正则化参数。 与 SFT 一样,我们采用 Muon 优化器 [33] 来最小化该目标。 随着我们在 K2 中将 RL 训练扩展到更广泛的任务,一个主要挑战是在所有领域实现一致的性能提升。为此,我们在 RL 算法中引入了若干改进。
预算控制
人们普遍观察到,RL 往往会导致模型生成响应的长度显著增加 [35, 19]。虽然更长的响应可以让模型利用额外的测试时计算来提升在复杂推理任务上的表现,但在非推理领域,这些收益往往不足以抵消其推理成本。 为了鼓励模型合理分配推理预算,我们在整个 RL 训练过程中对每个样本强制执行最大 token 预算,该预算根据任务类型确定。 超过该 token 预算的响应会被截断并施加惩罚,这激励模型在指定限制内生成解决方案。经验表明,这种方法显著提高了模型的 token 效率,促使其在所有领域生成简洁而有效的解决方案。
PTX 损失
为了防止在联合 RL 训练过程中遗忘有价值的高质量数据,我们整理了一个由精心挑选的高质量样本组成的数据集,并通过辅助 PTX 损失 [54] 将其整合到 RL 目标中。 该策略不仅利用了高质量数据的优势,还降低了对训练机制中明确存在的有限任务集过拟合的风险。 这一增强显著提高了模型在更广泛领域中的泛化能力。
温度衰减
对于创意写作和复杂推理等任务,我们发现,在训练初期通过较高的采样温度促进探索至关重要。 较高的温度允许模型生成多样且新颖的响应,从而促进有效策略的发现,并降低过早收敛到次优解的风险。 然而,在训练后期或评估期间保持高温度可能是有害的,因为它会引入过多随机性并损害模型输出的可靠性和一致性。 为了解决这一问题,我们采用温度衰减调度,使训练过程从探索转向利用。该策略确保模型在探索最有益时充分利用探索,同时最终收敛到稳定且高质量的输出。
3.3 RL 基础设施
3.3.1 共置架构
与 K1.5 [35] 类似,我们在同步 RL 训练中采用混合共置架构,其中训练引擎和推理引擎驻留在同一组工作节点上。当一个引擎处于活跃工作状态时,另一个引擎会释放或卸载其 GPU 资源以腾出空间。在每次 RL 训练迭代中,一个集中式控制器首先调用推理引擎生成新的训练数据。然后,它通知训练引擎在新数据上进行训练,并将更新后的参数发送给推理引擎以用于下一次迭代。
每个引擎都针对吞吐量进行了深度优化。此外,随着模型扩展到 K2 的规模,引擎切换和故障恢复的延迟变得十分显著。我们将在这些方面介绍系统设计考量。
3.3.2 高效的引擎切换
在 rollout 期间,训练引擎的参数会被卸载到 DRAM。因此,启动训练引擎只是一个简单的 H2D 传输步骤。 然而,启动推理引擎则是一个更大的挑战,因为它必须从具有不同分片范式的训练引擎获取更新后的参数。

图 10:利用检查点引擎进行参数更新
鉴于 K2 的规模和涉及的大量设备,使用网络文件系统进行参数重分片和广播是不切实际的。为了将开销保持在较低水平,所需的聚合带宽达到每秒数 PB。为了解决这一挑战,我们开发了一个与训练节点共置的分布式检查点引擎来管理参数状态。为了执行参数更新,每个检查点引擎工作进程从训练引擎获取一份本地参数副本,然后在所有检查点引擎工作进程之间广播完整参数集。随后,推理引擎仅从检查点引擎中检索其所需的参数分片。该过程如图 10 所示。为了在 1T 模型上实现这一点,更新以逐参数流水线方式执行,从而将内存占用降至最低(见附录 G)。
我们选择在整个集群中广播完整参数集,而不考虑每个推理工作进程上的具体分片方案。虽然这比理论上最优的方法传输了数倍的数据,但它提供了更简单的系统设计,对训练和推理引擎的侵入性更小。我们选择以这一较小的开销为代价,完全解耦训练引擎和推理引擎,从而显著简化维护和测试。
值得注意的是,由于同步开销更低且网络带宽利用率更高,这种方法的性能优于“按需传输”方法。 我们的系统可以在不到 30 秒内完成 Kimi K2 的完整参数更新,对于典型的 RL 训练迭代而言,这一时长可以忽略不计。
3.3.3 高效的系统启动
由于大规模训练容易出现系统故障,因此优化启动时间对于像 Kimi K2 这样的大模型至关重要。
为了启动训练引擎,我们让每个训练工作进程选择性地从磁盘读取部分或全部参数,并将必要参数广播给其对等节点。设计目标是确保所有工作进程共同只读取一次检查点,从而将昂贵的磁盘 I/O 降至最低。
由于推理引擎是相互独立的副本,我们希望避免在它们之间引入额外的同步屏障。因此,我们选择复用检查点引擎进行启动:让检查点引擎以类似训练引擎启动的方式集体从磁盘读取检查点。然后,它使用上一节介绍的方法更新未初始化推理引擎的状态。通过利用专用的检查点引擎,系统还对单点故障具有鲁棒性,因为推理副本可以在不与其他副本通信的情况下重启。
3.3.4 智能体 Rollout
我们的 RL 基础设施支持长时程、多轮智能体任务的训练。在 rollout 过程中,这些任务带来了独特的挑战,例如复杂的环境交互和较长的 rollout 时长。这里我们介绍一些优化措施以缓解这些问题。
由于环境的多样性,某些交互可能会因等待环境反馈(例如虚拟机或代码解释器)而被阻塞,从而导致 GPU 空闲。我们采用两种策略来最大化 GPU 利用率:(i)将重型环境部署为可更轻松扩展的专用服务;(ii)采用大量并发 rollout,以摊销某些昂贵交互带来的延迟。
智能体 rollout 中的另一个挑战是,单条 rollout 轨迹可能非常长。为了防止长尾轨迹阻塞整个 rollout 过程,我们采用了部分 rollout [35] 技术。该策略允许将长尾未完成任务暂停,并在下一次 RL 迭代中恢复。
为了提高研究效率,我们还设计了一个受 OpenAI Gym 框架 [49] 启发的统一接口,以简化新环境的集成。我们希望未来将 RL 基础设施扩展到更多样化的交互环境中。
