知识卡片:Mixture-of-Kittens——面向NVL72的开源MoE训练megakernel
一句话结论
Cursor 开源了名为 Mixture-of-Kittens(MoK) 的确定性 MoE 训练 megakernel,将 MoE 层的通信与计算融合到单个内核中;在 GB300 NVL72 上,其 MXFP8 前向吞吐量最高可达最快公开基线的 2.37 倍,并在生产训练环境中将端到端 tokens/s 提升了 1.41 倍。
事件概述或研究问题
Cursor 在训练其智能体编程模型 Composer 时发现,混合专家(MoE)层始终是主要瓶颈:根据负载和训练配置,MoE 层可消耗超过一半的端到端训练时间。过去他们曾编写 MXFP8、NVFP4 训练内核和“warp decode”推理方法,但这些技术只优化了计算部分,通信开销仍独立存在。转向 GB300 NVL72 后,硬件特点(单 NVLink 域内的多节点机架、相对较慢的 Grace CPU)进一步要求将通信直接构建进内核,并尽量减少 CPU 与 GPU 的同步。MoK 正是为此从第一性原理重新设计的 MoE 训练 megakernel。
方法/产品要点
- 核心设计:MoK 将 MoE 的所有通信和计算融合进单一、完全确定性的内核,避免了传统 dispatch/combine 与专家 FFN 顺序执行造成的通信等待。
- 面向架构:针对 DeepSeek-V3(DSV3)风格 MoE 层(如 GLM、Qwen、Kimi 等广泛使用的结构),支持 MXFP8,并针对 NVL72 的 NVLink 域做了深度优化。
- 通信方向选择:提出 pull-based(拉取)与 push-based(推送)各有适用场景,MoK 采用 pull-based 前向 dispatch、push-based 前向 combine、pull-based 反向 reverse-combine、push-based 反向 reverse-dispatch,调度表可复用,避免多次排序和 CPU 参与。
- 消除 CPU-GPU 同步:通过 ring token buffers(环形令牌缓冲区)等技术,调度内核完全在设备端运行,调度开销不到 MoE 总运行时的 3%。
- 性能数据:在 GB300 NVL72 上,MoK 的 MXFP8 前向吞吐量比最快公开基线(如 NCCL+PyTorch、DeepEP+PyTorch、DeepEP+TransformerEngine、HybridEP+Megatron)最高高出 2.37 倍;生产环境中,跨多个 NVL72 机架的端到端 tokens/s 提升 1.41 倍。
主要结果或产业意义
MoK 已用于 Composer 的训练,支撑数万 GPU 规模的生产环境。该项目已在 GitHub 开源,社区可以直接试用和贡献。对于大规模 MoE 训练而言,MoK 展示了在不改变模型架构的前提下,通过硬件感知的通信-计算融合,可以显著提升训练吞吐,具有直接的系统工程参考价值。
为什么重要
MoE 是大模型扩展的关键架构,但通信开销往往使 MoE 层成为训练瓶颈。MoK 的开源意味着其他研究团队和工程团队可以借鉴其内核设计、通信方向选择策略和确定性实现,减少重复造轮子的成本。与已有相关卡片提到的模型级成果(如 Grok 4.5)不同,本卡片关注的是支撑这些模型训练的系统层基础设施,属于增量信息——Cursor 不仅在训练模型,也在开源其底层训练系统。
局限与不确定性
- MoK 是面向 NVL72(尤其是 GB300 NVL72)优化的,对非 NVLink 域集群的适用性尚未在现有材料中说明,待核实。
- 2.37 倍和 1.41 倍是在特定硬件、工作负载和配置下的结果,实际提升幅度可能因环境而异。
- 文中没有说明 MoK 与 Grok 4.5 训练的直接关系,是否用于 Grok 4.5 训练待核实。
- 更详细的实现细节和性能复现方法需参考 GitHub 代码仓库。
可用于图书/PPT/简报的角度
- 数字亮点:MoE 层占训练时间 >50%;MoK 带来最高 2.37 倍前向吞吐提升;1.41 倍端到端训练吞吐提升。
- 技术叙事:从“先通信后计算”到“通信与计算融合”,再到按场景选择 pull/push 方向,展示了系统优化思路。
- 产业意义:开源训练内核将降低大规模 MoE 训练的门槛,对 AI Infra 领域是重要参考。
原始材料
- URL: https://cursor.com/blog/mixture-of-kittens
- 英文标题: Mixture-of-Kittens: our open-source MoE megakernel for NVL72s
- 英文关键词: Mixture-of-Kittens, MoE, megakernel, NVL72, Cursor