Olmo-core 3:面向大型 MoE 的开放可扩展训练基建

HuggingFace Blog · 原文 2026-10-01 · 译文 2026-10-01 · 难度 进阶
精读 · 译文(非本站原创)
来自资源池 · HuggingFace Blog ↗ · 原文:Introducing Olmo-core 3: Open, scalable training infrastructure for large MoEs ↗ · 版权归 HuggingFace Blog 所有 · 译文为个人学习的非官方翻译,以原文为准;如权利方有疑虑可联系公众号「疯了再说」删除
导读 · AllenAI 开源 MoE 训练基建:专家池 8→128 吞吐仅掉不足 5%,万亿参数基准,DDP 换 FSDP 提速 2.7 倍

为什么精读这篇它是「开放不只是权重」的实践样本——把万亿参数 MoE 训练的全套基建(三并行+三优化+精度权衡)开源,还公布了四种「试过没采用」的反直觉发现。对《MoE》《并行训练》两篇笔记:一边是专家扩容的通信代价实测,一边是 ZeRO/FSDP 之外的 DDP 常驻路线,正好补齐谱系。

  • MoE 的scaling 困境:专家再多、每 token 只激活少数(省算力),但全模型仍要摊在显存里且训练要更新——路由通信与协调成本会吃掉稀疏激活的算力优势
  • 战果:专家池 8→128、每 token 仍选 4 个(激活参数约 3.2B 不变),总容量 4.6B→47B,训练吞吐掉不到 5%;1.2 万亿参数 × 512 GPU 基准跑到 858 TFLOP/s/GPU,DeepEP v2 短时容量测试摸到 2.38 万亿
  • 关键路线切换:弃 FSDP(每批聚合再切分权重)转 DDP 常驻(专家留在 GPU、数据流向专家)——8 张 B300 上 47B MoE 从 19400 提到 52000 token/s/GPU,约 2.7 倍
  • 三并行(专家并行摊专家池/流水线并行摊层/分布式优化器摊优化态)+ 三优化(行级并行直写输入缓冲、GPU 常驻路由元数据、grouped GEMM 合并小专家计算)
  • MXFP8 低精度:4 张 B300 受控基准吞吐 +21%、峰值激活显存 103→95 GiB——收益主要来自前馈与专家间搬运,注意力贡献小
  • 反直觉发现四则:token gerrymandering(奖励均衡路由的分数可以越优化越不均衡);压专家学习率(因见 token 少)无效;GPU 耗时随数值内容变(性能对比要配数值不配形状);通信计算重叠有时反而更慢
17 段 · 约 10 分钟

Today we're releasing Olmo-core 3, a significant upgrade to our framework for developing large language models featuring a redesigned open mixture-of-experts (MoE) training system.

今天我们发布 Olmo-core 3——我们大模型开发框架的一次重大升级,核心是重新设计的开放混合专家(MoE)训练系统。

Olmo-core 3 is designed to scale MoE training into the trillion-parameter range while preserving computational efficiency. It's one of the core systems behind the next generation of Olmo, and part of our ongoing commitment to open up the tools and training infrastructure behind each new model.

Olmo-core 3 的设计目标:把 MoE 训练扩到万亿参数量级同时保住计算效率。它是下一代 Olmo 背后的核心系统之一,也是我们持续承诺的一部分——把每个新模型背后的工具与训练基建一并开放。

Training large AI models takes a lot of compute, driving up costs and energy use and putting advanced model development out of reach for many academic researchers and smaller labs. MoE models offer a more efficient approach—they can contain many more learned components, or parameters, without requiring every input to use all of them. But the full model still has to be stored across GPU memory and updated during training, and directing inputs to the right experts – the specialized components within an MoE – across a cluster creates its own communication and coordination costs. As MoEs grow, those costs can erode much of the computational advantage of using only part of the model for each input.

训练大模型要花大量算力,推高成本与能耗,把前沿模型开发挡在许多学术研究者和小实验室门外。MoE 提供了更高效的路线——容纳多得多的学习组件(参数),而不要求每个输入都用上全部。但完整模型仍要摊在 GPU 显存里、训练时仍要全部更新;而把输入送往正确的专家(MoE 里的专职组件)又要跨集群付出通信与协调成本。MoE 越大,这些成本越能侵蚀「每个输入只用一小部分模型」带来的计算优势。

Olmo-core 3 is built to close that gap. In one benchmark, we increased the expert pool from 8 to 128 while still selecting only four experts per token – the small units of text a language model processes – keeping the number of active parameters per token roughly fixed at about 3.2B. Total parameter capacity grew from 4.6B to 47B, while training throughput fell by less than 5%.

Olmo-core 3 就为堵住这个缺口而造。一项基准里,我们把专家池从 8 扩到 128、每 token 仍只选 4 个专家(token 是语言模型处理文本的小单元),每 token 激活参数大致钉在约 3.2B——总参数容量从 4.6B 涨到 47B,训练吞吐掉得还不到 5%。

The same infrastructure has been benchmarked at over one trillion total parameters.

同一套基建已在超过一万亿总参数的规模上完成基准测试。

Building a training stack around how MoEs actually work · 围绕 MoE 的真实工作方式搭训练栈

Olmo-core has evolved with each generation of Olmo. Our work on sparse models goes back to OlmoE, which used an MoE architecture with 64 routed experts. Olmo 3, by contrast, used a dense architecture, meaning nearly all of the model was active for every token and its training stack was built around that design. Olmo-core 3 extends the framework with a training system designed for much larger MoE models.

Olmo-core 随每一代 Olmo 演进。我们的稀疏模型工作追溯到 OlmoE(64 个路由专家的 MoE 架构);Olmo 3 反而是稠密架构——几乎整个模型对每个 token 都激活,训练栈也围绕稠密设计。Olmo-core 3 为框架扩展出面向大得多的 MoE 模型的训练系统。

Our earlier MoE implementation in Olmo-core used fully sharded data parallelism (FSDP), configured to gather and reshard model weights for each small batch of training data. Olmo-core 3 switches to a system based on distributed data parallelism (DDP). It keeps experts resident on GPUs and routes the relevant data to them, avoiding that repeated weight gathering.

我们早期在 Olmo-core 里的 MoE 实现用的是全分片数据并行(FSDP)——每小批训练数据都要把模型权重聚合再切分。Olmo-core 3 切换到基于分布式数据并行(DDP)的系统:专家常驻 GPU、把相关数据路由过去,省掉反复的权重聚合。

NVIDIA's Megatron-Core is an established option for training large MoEs. Olmo-core 3 brings an integrated MoE training stack to the framework behind Olmo, with a redesign that improves throughput over our earlier FSDP-based implementation. In a preliminary test on eight NVIDIA B300 GPUs, a 47-billion-parameter MoE processed 52,000 tokens per second per GPU with the new stack, compared with 19,400 using our earlier implementation—about 2.7× the throughput.

NVIDIA 的 Megatron-Core 是训练大型 MoE 的成熟选项。Olmo-core 3 给 Olmo 背后的框架带来了集成的 MoE 训练栈,经重新设计后吞吐超过我们早先的 FSDP 实现:八张 NVIDIA B300 的初步测试里,47B 参数 MoE 每 GPU 每秒处理 52000 token,旧实现只有 19400——约 2.7 倍吞吐。

Scaling and optimizing MoE training · 扩展与优化 MoE 训练

Olmo-core 3 combines several techniques for distributing large MoEs across GPU clusters with optimizations that make routing and computation more efficient. Three techniques determine how the model and its training state are split across hardware: Expert parallelism spreads the experts across GPUs, so each GPU stores only part of the full expert pool. Pipeline parallelism splits the model's layers – the successive stages that transform an input – across groups of GPUs, reducing how much of the model each GPU needs to keep in memory. A distributed optimizer spreads the optimizer state – the additional data used to calculate and apply updates during training – across GPUs instead of storing a full copy on every GPU. Together, these techniques allow an MoE to scale without requiring every GPU to keep the entire model and its training state in memory.

Olmo-core 3 把「跨 GPU 集群摊开大型 MoE」的若干技术与「让路由和计算更高效」的优化组合起来。决定模型与训练状态怎么切到硬件的是三并行:**专家并行**把专家摊到各 GPU(每卡只存专家池的一部分);**流水线并行**把模型的层(逐级变换输入的阶段)切给 GPU 组(降低单卡要驻存的模型量);**分布式优化器**把优化器状态(训练中计算并应用更新所需的额外数据)摊到各 GPU,而不是每卡存一份全量。三者合力,MoE 扩容不再要求每张 GPU 装下整个模型及其训练状态。

Olmo-core 3 also reduces the cost of routing data to the right experts and running their computations. Rowwise expert parallelism places routed data directly into expert input buffers, minimizing the extra work needed to rearrange it. GPU-resident routing keeps routing metadata on the GPUs, so the CPU can queue work without waiting for that information to be copied back. And grouped GEMM combines many small expert computations so GPUs can execute them more efficiently.

Olmo-core 3 还降低了「把数据路由到对的专家并完成计算」的成本:**行级专家并行**把路由数据直接放进专家的输入缓冲,省掉重排的额外功;**GPU 常驻路由**让路由元数据留在 GPU 上,CPU 排活儿不必等它拷回来;**grouped GEMM** 把许多小的专家计算合并,GPU 执行更高效。

Finally, Olmo-core 3 supports MXFP8, a lower-precision number format that represents some values with fewer bits. This can reduce computation and the amount of data moved between GPUs, as long as those savings outweigh the cost of converting between number formats. We measured MXFP8's effect on end-to-end training throughput in a controlled benchmark on four NVIDIA B300 GPUs, with work distributed uniformly across experts. With MXFP8 enabled across the parts of the system where it helped most, training throughput was about 21% higher than with BF16, the higher-precision format we used as our baseline, while peak active memory fell from 103 GiB to 95 GiB. Most of the gain came from feed-forward computation and moving data between experts rather than attention alone.

最后,Olmo-core 3 支持 MXFP8——一种用更少位表示部分数值的低精度格式,能省计算与跨 GPU 搬运量,前提是这些节省盖过格式转换的成本。我们在四张 B300 的受控基准上测了 MXFP8 对端到端训练吞吐的影响(负载均匀分布到专家):在收益最大的部分启用 MXFP8 后,吞吐比 BF16 基线高约 21%,峰值激活显存从 103 GiB 降到 95 GiB。收益大头来自前馈计算与专家间数据搬运,而非注意力本身。

These techniques and optimizations have to work together. Speeding up one part of training can create costs elsewhere; faster computation may require more data movement, while moving fewer bits may not help if converting the data takes too long. Olmo-core 3 is built around those trade-offs across the full training process, giving us – and researchers using the open stack – control over how the pieces fit together. Explore our interactive walkthrough to see how data, expert, and pipeline parallelism work together to scale MoE training—from a single GPU to many.

这些技术与优化必须协同:加速训练的一处可能在别处产生代价——计算变快可能要搬更多数据,位搬得少了若转换太慢也白搭。Olmo-core 3 就是围绕全训练流程的这些权衡构建的,让我们(以及用这套开放栈的研究者)掌控各部件怎么拼。交互式 walkthrough 演示了数据/专家/流水线三种并行怎么协同把 MoE 训练从单卡扩到多卡。

Scaling into the trillion-parameter range · 扩进万亿参数区间

We've benchmarked Olmo-core 3 across a range of configurations on NVIDIA B300 GPUs, including a 1.2-trillion-parameter model with 58.36 billion parameters active per token across 512 GPUs. Its highest observed throughput was 858 TFLOP/s/GPU—a measure of useful model computation per second on each GPU. These tests used random routing to measure system performance, rather than the quality of a trained model.

我们在 B300 上对多组配置做了基准,包括一个 1.2 万亿参数、每 token 激活 58.36 亿参数、横跨 512 张 GPU 的模型,最高观测吞吐 858 TFLOP/s/GPU(每卡每秒有效模型计算的度量)。这些测试用随机路由测的是系统性能,不是训练出的模型质量。

We've also experimented with DeepEP v2, an alternative way of handling communication between experts across GPUs, reaching a configuration with 2.38 trillion total parameters. This was a short-capacity test rather than a full training run, so it demonstrates the scale Olmo-core 3 can reach rather than sustained training performance.

我们还试了 DeepEP v2——另一种处理专家间跨 GPU 通信的方式——摸到了 2.38 万亿总参数的配置。这是短时容量测试而非完整训练,展示的是 Olmo-core 3 能到的规模,不是持续训练性能。

At these scales, systems performance is only part of the picture. Our technical report also documents experiments that informed how we train MoEs and measure their performance. For example: A score intended to encourage balanced routing could improve even as the actual workload became less balanced. We call this failure token gerrymandering. Lowering experts' learning rates – the size of their training updates – because they process fewer tokens did not improve results in the model family we tested. GPU calculations took different amounts of time when the values being processed changed, even with the same matrix dimensions. Performance comparisons therefore need matching input values as well as matching shapes. Overlapping communication and computation on separate GPU streams did not always make training faster. In some tests, it slowed end-to-end execution—a reminder that more overlap does not necessarily mean higher throughput.

到这个规模,系统性能只是画面的一半。技术报告还记录了指导我们怎么训 MoE、怎么测性能的一批实验,例如:**token gerrymandering(选区划分式作弊)**——一个本意鼓励路由均衡的分数,可以在真实负载越来越不均衡的同时照样上涨;因为专家见的 token 少就压低其学习率(训练更新的步幅),在我们测的模型家族里没有改善结果;GPU 计算耗时随被处理数值的内容而变——即使矩阵形状完全相同,所以性能对比要配数值不配形状;在独立 GPU 流上重叠通信与计算并不总是更快,某些测试里反而拖慢端到端——重叠多不等于吞吐高。

The report explains these findings alongside the approaches we tested and chose not to adopt.

报告把这些发现与「我们测过但选择不采用」的路线一并讲清。

Built for the next generation of Olmo, open for everyone · 为下一代 Olmo 而造,向所有人开放

Olmo-core 3 is the foundation for what we're building next. Our next-generation Olmo will use an MoE architecture, and we're aiming for it to be our most capable Olmo yet, trained on our largest dataset and with our longest context window. The new stack lets us scale beyond our previous MoE work while giving us more flexibility to adapt training as models and hardware evolve. And it's fully open—researchers and developers can use Olmo-core 3 to train their own MoEs, adapt it to different hardware, and experiment with routing, parallelism, and other parts of the system. That's part of how we think about open model development—model weights are more useful when the infrastructure and training decisions behind them are open too. For a deeper look at the systems design, experiments, ablations, and approaches we tested along the way, read our technical report and explore Olmo-core 3 on GitHub.

Olmo-core 3 是我们下一步的地基:下一代 Olmo 将用 MoE 架构,目标是最强的一代 Olmo——最大数据集、最长上下文窗口。新栈让我们越过往日的 MoE 工作,也留足随模型与硬件演进调整训练的灵活度。而且完全开放——研究者与开发者可以用 Olmo-core 3 训自己的 MoE、适配不同硬件、实验路由与并行等各部分。这也是我们对开放模型开发的立场:权重背后的基建与训练决策也开放,权重才更有用。系统设计、实验、消融与试过的路线,见技术报告与 GitHub 上的 Olmo-core 3。

回忆挑战

先不看答案自己回忆——讲不出来再回正文找。考的是关系,不是标签。

1MoE 每 token 只激活少数专家(省算力),为什么说「总成本仍随专家数增长」?

因为全部专家参数仍要摊在 GPU 显存里、训练时全部要更新,且把输入路由到对的专家需要跨集群通信——稀疏激活省的是计算,省不掉存储、更新与路由协调;专家一多,这些成本会吃掉计算优势。

2Olmo-core 3 从 FSDP 切到 DDP 常驻,为什么对 MoE 特别有效?

FSDP 每个小批都要把权重聚合再切分,专家越多这个往返越贵;DDP 让每个专家常驻在自己的 GPU 上、把数据路由过去——权重不动数据动。对「参数多但每步只用一小部分」的 MoE,这是把稀疏性从计算延伸到了通信。

3MXFP8 低精度在他们的基准里 +21%,你直接照搬到自己的训练就一定赚吗?

不一定——收益主要来自前馈计算与专家间搬运(注意力贡献小),且格式转换本身有成本,「省的字节不够抵转换开销时就亏」;原文明确说这是全流程权衡的一部分,配置错了可能负优化。先测自己负载的收益分布再开。