---
url: /olmo-core/introduction.md
description: >-
  Olmo-core 3 是什么？Ai2（艾伦人工智能研究院）于 2026 年 10 月 1 日开源发布的 MoE 大模型训练框架 v3.0.0，把 FSDP
  换成 DDP 的专家常驻方案，47B MoE 在 8 卡 B300 上吞吐 52,000 tokens/s/GPU（旧方案 19,400，约 2.7
  倍），512 卡验证 1.2 万亿参数模型，MXFP8 低精度再提速 21%。Apache 2.0 协议，一行 pip install
  ai2-olmo-core 上手，是目前 Megatron-Core 之外少有的开放 MoE 训练栈
---

# 认识 Olmo-core 3 —— 专家池从 8 扩到 128 只慢 5%，Ai2 把万亿 MoE 训练栈开源了

先说个让我有点憋屈的事实。

这两年大模型的参数一路往上涨，从千亿卷到万亿。但**能亲手训一遍的人，反而越来越少了**。不是技术退步了，是钱把它挤出去了——万卡集群按亿美元计价，电费单子比很多公司的全年营收还长。到今天，真正有资格做前沿预训练的团队，两只手大概数得过来。学术界基本被请出了牌桌。

MoE（混合专家）本来是救场的。它的承诺很诱人：**装很多参数，但每个 token 只唤醒一小撮**，算力不用跟着参数线性涨。可这承诺里有个隐蔽的坑——模型再稀疏，全部权重还是得塞进显存、每个 step 还得更新；而你把一个 token 路由到正确专家的通信和协调开销，会随着专家数量暴涨。专家一多，省下来的算力又被原样吃了回去。

所以你看到的现象是：**MoE 理论上省，实际上贵。**

就在昨天，**2026 年 10 月 1 日**，Ai2（Allen Institute for AI）把补这个洞的整套方案开源了：**Olmo-core 3**。

先亮一个我觉得最离谱的数字：在他们的实验里，专家数量从 **8 个扩到 128 个**（每 token 仍只选 4 个），激活参数基本没动（约 32 亿），总参数从 46 亿涨到 470 亿——**训练吞吐只掉了不到 5%**。

> 容量涨了十倍，速度几乎没变。这句话如果成立，MoE 才第一次兑现了它十几年前许下的承诺。

先把丑话说在前面（后面还会说）：这些是 **Ai2 自己的测量**，万亿规模的测试用的是**随机路由**，只验证系统性能、**不代表训出来的模型质量**。而且人家把失败的实验也一并写进技术报告了。这一点我特别respect，后文会讲。

## 什么是 Olmo-core 3

一句话：**Olmo-core 3 是 Ai2 开源的大模型训练框架 v3.0.0，专门重写过一遍用来训大规模 MoE。**

注意容易混淆的点：**它不是模型权重，是训练框架。** 你要是想"下载下来跑个聊天"，走错门了。

把 Olmo 家族的时间线捋一下就清楚了：

| 项目 | 是什么 | 架构 |
| --- | --- | --- |
| **OlmoE** | 稀疏模型系列，64 个路由专家 | MoE |
| **Olmo 3**（2025 年 11 月） | 7B / 32B 模型家族 | **Dense（密集）**，几乎全部参数对每个 token 都激活 |
| **Olmo-core 3**（2026-10-01） | 不是模型，是训练框架新版 | 为下一代 MoE 版的 Olmo 铺路 |

也就是说，Olmo 3 从 MoE 退回 Dense，是因为当时的训练栈是围绕 Dense 设计的；而 Olmo-core 3 是把基础设施先补上，**下一代 Olmo 确定走 MoE，用 Ai2 最大的数据集和史上最长的上下文窗口**。参数规模、上下文长度、发布日期都没公布。

> 这是一次"把方法先于模型公开"的发布：万亿参数 MoE 怎么训，牌先亮出来，模型后到。这个顺序，比反过来体面多了。

基本盘：

| 项目 | 情况 |
| --- | --- |
| 仓库 | [github.com/allenai/olmo-core](https://github.com/allenai/olmo-core) |
| 最新版本 | **v3.0.0**（2026-10-01 发布） |
| 开源协议 | **Apache 2.0** |
| 安装 | `pip install ai2-olmo-core`（或源码 `pip install -e .[all]`） |
| Python | ≥ 3.10 |
| PyTorch | ≥ 2.10（v3 把最低版本要求提到了 2.10） |
| 技术报告 | allenai.org/papers/olmocore3 |
| 交互式讲解 | narrative.allen.ai/scaling-up-training |
| 定位 | 训练和微调 Olmo 系列模型的 PyTorch 构建块 |

顺带一提，Ai2 这套东西一直是"**完全开放**"路线的代表：不只放权重，连数据（Dolma）、配方、中间 checkpoint、训练日志都往外掏。在一堆"开放权重但数据闭源"的厂商中间，这属于稀有物种。

## 核心特点

### 一、最大的改动：从 FSDP 换成 DDP

这是本次的灵魂。

上一版 Olmo-core 的 MoE 实现用的是 **FSDP（全分片数据并行）**，配置成"**每喂进一小批数据，就把权重聚拢起来再分片一次**"。批次一碎，搬权重的时间比算的时间还多。

Olmo-core 3 换成 **DDP（分布式数据并行）** 思路，一句话概括差别：

* **旧：每个 micro-batch 反复搬运权重**（gather → reshard → gather → reshard……）
* **新：专家常驻在各自的 GPU 上不动，把数据路由过去**

在 8 张 NVIDIA B300 的初步测试中，一个 470 亿参数的 MoE：

| 方案 | 吞吐（每 GPU 每秒 token 数） |
| --- | --- |
| 旧 FSDP 实现 | 19,400 |
| **Olmo-core 3（DDP）** | **52,000** |
| 提升 | 约 **2.7 倍** |

> 别小看这个改动描述得这么"朴素"。分布式训练里最贵的优化往往不是数学上的聪明，是**别做不该做的搬运**。

### 二、三种并行 + 三个路由优化

模型怎么切到一堆 GPU 上，靠三件事：

* **专家并行（Expert Parallelism）**：把专家摊到不同 GPU，每张卡只存一部分专家
* **流水线并行（Pipeline Parallelism）**：把模型的层切成若干组，分摊到不同 GPU 组，每张卡要记住的模型就少了
* **分布式优化器（Distributed Optimizer）**：优化器状态也摊开存，而不是每张卡都留一份完整副本

这三者合起来，让 MoE 能长大，而**不必要求每张 GPU 都装得下整个模型和它的训练状态**。

在此之上还有三个专门为 MoE 打磨的优化：

* **Rowwise 专家并行**：把路由后的数据**直接写进专家的输入缓冲区**，少做一次重排。技术报告里的版本基于 **NVSHMEM**，配合 device-scheduled 的分组矩阵乘，做到**专家并行全程无同步**
* **GPU-resident routing**：路由元数据留在 GPU 上，CPU 排队干活时不用等数据拷回来
* **Grouped GEMM**：把一堆小的专家矩阵乘合并成一次大的，**GPU 才吃得饱**

第三点看着最不起眼，实际最要命。128 个专家如果各算一次小 GEMM，GPU 基本在空转；合并之后，利用率才回到正常水平。

### 三、MXFP8：便宜且省显存

Olmo-core 3 支持 **MXFP8** 低精度格式。在 4 张 B300 上、负载均匀分布的受控对比中：

| 指标 | BF16 基线 | MXFP8 |
| --- | --- | --- |
| 训练吞吐 | 基线 | **+约 21%** |
| 峰值活跃显存 | 103 GiB | **95 GiB** |

Ai2 特别说明，**收益大头来自前馈网络和专家之间的数据搬运，不是注意力部分**——这也侧面印证了前面那个判断：MoE 的瓶颈从来不在算力，在搬运。

### 四、几个"生产友好"的细节

这些不上头条，但真到用的时候会救命：

* **拓扑无关的检查点（topology-agnostic checkpoints）**：全局 FP32 张量独立于并行布局来记录，**换个集群拓扑也能接着训**。谁经历过"换个并行策略就得重头再来"，谁知道这个多值钱
* **激活重计算（activation recompute）**：受控对比里砍掉近 **2/3** 的激活显存、峰值显存降约 **1/4**，代价是约 **1/5** 的吞吐
* **HuggingFace 互操作**：新增 `olmo3moe` 模型与 checkpoint 转换工具，并对 Qwen-MoE、GPT-OSS 做了 logit 对齐测试
* **现成的配置模板**：仓库里直接给了 **Qwen3-MoE、GPT-OSS、Nemotron** 三种 config-builder 变体；v2 路由器支持全局负载均衡与 EMO routing，还有共享专家、rowwise FP8 路由专家
* **Beaker 启动 CLI**：`python -m olmo_core.launch.beaker`，给已在 Ai2 集群上的同学（轻量版 gantry）

## 关键数据一览

把散在各处的数字汇总一下，方便你转发的时候直接抄：

| 场景 | 配置 | 结果 |
| --- | --- | --- |
| 专家规模效应 | 专家 8 → 128，top-4，激活约 3.2B | 总参数 4.6B → 47B，**吞吐掉不到 5%** |
| vs 旧实现 | 8× B300，47B MoE | 52,000 vs 19,400 tokens/s/GPU，**约 2.7×**（官方称初步测试） |
| 低精度收益 | 4× B300，负载均匀 | MXFP8 较 BF16 **吞吐 +21%**，峰值活跃显存 103 → 95 GiB |
| 万亿规模 | **1.2 万亿参数**、每 token 激活 583.6 亿，**512 张 B300** | 观测最高吞吐 **858 TFLOP/s/GPU** |
| 极限试探 | DeepEP v2 实验配置 | 达 **2.38 万亿**总参数（官方标注为短时容量测试，非持续训练） |
| 显存优化 | 激活重计算 | 激活显存减近 2/3、峰值降约 1/4，代价约 1/5 吞吐 |

**必须加的三个限定条件：**

1. 万亿规模的测试用的是**随机路由**，测的是系统性能上限，**不反映真实模型的训练质量**
2. 2.7 倍那个是 Ai2 自己标的 **preliminary（初步）** 测试
3. Ai2 **没有发布与 NVIDIA Megatron-Core 的正面对比数据**。官方说法是"Megatron-Core 是训大 MoE 的成熟选项，而 Olmo-core 3 给 Olmo 框架带来了一套集成的 MoE 训练栈"——定位清楚，但没有头对头的分数

## 技术报告里的"翻车记录"，比benchmark更值得读

这一段是我今天最想聊的。

技术报告里除了吹的部分，还老实写了几条**反直觉的负面结果**：

* **"Token gerrymandering"（token 杰利蝾螈）**：负载均衡的评分在变好，**但实际的工作负载分布反而在变差**。也就是说你盯着的那条 loss 曲线在骗你——这个发现对任何做 MoE 路由的人都是一记闷棍
* **降专家学习率没用**：因为每个专家分到的 token 变少了，直觉上应该调低学习率补偿一下。实测在测试的模型家族里**没有改善**
* **kernel 计时会因为输入数值而变**：矩阵乘的维度完全相同，只要里面的数值不同，耗时就不一样。所以 benchmark 不但要对齐 shape，**还得对齐 value**
* **通信与计算分stream重叠，有时会拖慢端到端**：经典的"我明明优化了它怎么变慢了"

> 大部分开源模型的技术报告是广告，这份是实验记录。**有多少团队会把自己"以为有用、结果没用"的实验写进报告？** 就冲这一点，我认为它比那几个漂亮的吞吐量数字更值得读。

## 什么时候该用它

说人话，Olmo-core 3 的适用面比 vLLM / SGLang 这种"人人可装"的东西窄得多，但在窄的地方它几乎没对手：

* **你是高校实验室或小团队，想研究 MoE 的路由、负载均衡、并行策略的取舍**，又不想依赖闭源训练栈——这是目前为数不多的开放选项，**连踩过的坑都给你写好了**
* **你要训的是自己的 MoE 基座**，且手上有 8 张以上较新的 GPU（注意：官方基准跑的是 **B300**，H100 能跑但性能自己测）
* **你关心"完全开放"这件事本身**：数据、代码、中间 checkpoint、配方全开放，可以拿去做模型可复现性研究
* **你想复现别人的 MoE**：仓库直接给了 Qwen3-MoE / GPT-OSS / Nemotron 的 config-builder，起点比从零搭高不少

不适合的情况也直说：

* **只是想本地跑个模型**——出门左拐找 vLLM / SGLang / Ollama
* **只有一两张消费级显卡**——这套东西是为多机多卡设计的，"在自己的 Mac 上试试"不在射程内
* **想要开箱即用的中文支持**——Olmo 系列是英文为主的科学语料训练出来的，中文能力别抱幻想
* **想要第三方背书**——**发布才一天，目前一个外部落地案例都没有。** 我知道这话不好听，但这就是事实，我不想拿"Ai2 自己说很强"包装成"业界广泛采用"

> 顺脖子说一句大实话：这类"训练基础设施"的开源，受益面永远是小众的那几千人。但它决定了剩下那几十万人能用什么模型、以及能不能验证那些模型说的话。它是地基，不是装修。

## 初体验：从零跑到第一个 checkpoint

老规矩，先泼冷水：**完整体验需要多张高端 GPU。** 但你完全可以只花十分钟把安装、配置校验这步走完，搞清楚门槛在哪。

### 装

推荐源码装（要跟着 main 走，MoE 这套是最近才合进来的）：

```bash
git clone https://github.com/allenai/olmo-core.git
cd olmo-core
pip install -e .[all]
```

或者 PyPI 直接来：

```bash
pip install ai2-olmo-core
```

环境要求：**Python ≥ 3.10、PyTorch ≥ 2.10**（v3 把最低 PyTorch 版本提到了 2.10，先确认你的版本）。

有一批可选依赖要按需补，官方 README 点名的：

* `flash-attn` / `ring-flash-attn` / `TransformerEngine` —— 对应不同的注意力后端
* `Liger-Kernel` —— 低显存的 fused-linear loss
* `torchao` —— float8 训练
* `grouped_gemm` —— dropless MoE 需要
* `QuACK` —— 部分 CuTe kernel

嫌麻烦也可以用官方 Docker 镜像，依赖齐了但**不带 olmo-core 本体**（方便你迭代代码）。注意镜像是在 Ai2 自家的 H100 集群上测的，**硬件或驱动/CUDA 版本不同的话不一定能用**，那就照着 Dockerfile 自己改。

### 先别急着训：用 dry-run 校验配置

这一步**不需要 GPU**，强烈建议先跑一遍，搞明白这套配置 override 的机制：

```bash
python src/scripts/official/OLMo3/OLMo-3-1025-7B-pretrain-1.py \
  --save-folder=models/tutorial-run-01 \
  --train_module.rank_microbatch_size=8192 \
  --dry-run
```

关键概念：**所有超参数都在 `ExperimentConfig` 里，可以在命令行用 `--xxx.yyy=value` 覆盖**。这是这套框架最好用的地方——改学习率不用改代码：

```bash
--train_module.optim.lr=6e-3
```

### 真跑起来

单节点 8 卡，官方脚本用 `torchrun` 起，这里先只跑 100 步验证链路通不通：

```bash
torchrun --nproc-per-node=8 \
  src/scripts/official/OLMo3/OLMo-3-1025-7B-pretrain-1.py \
  --save-folder=models/tutorial-run-01 \
  --train_module.rank_microbatch_size=8192 \
  --trainer.callbacks.lm_evaluator.enabled=false \
  --trainer.callbacks.downstream_evaluator.enabled=false \
  --trainer.hard_stop='{value: 100, unit: steps}'
```

checkpoint 会落到 `--save-folder` 指定的目录，脚本会**自动从最新 checkpoint 续训**（中断之后想接着跑很方便）。

想 **MoE 怎么配**：v3.0.0 专门加了 tech-report 参考脚本，在 `src/examples/olmo_ddp` 下。里面的 `ExpertParallelConfig`、`MoEV2TransformerTrainModule` 这些抽象，就是前面那些 benchmark 的真实出处——**比看文档准，以它为准**。

摸完脚本还想快速验证模型可用不想训，可以直接聊两句：

```bash
python -m olmo_core.generate.chat \
  https://olmo-checkpoints.org/ai2-llm/Olmo-3-1025-7B/stage3/step11921/ \
  --max-new-tokens 512
```

### 下一步去哪儿

1. 先把 `--dry-run` 玩明白，搞清楚配置覆盖机制
2. 读官方那份 all-in-one **researcher 指南**（仓库里 `make docs` 本地起服务，开 `http://127.0.0.1:8000/guides/all_in_one_for_researchers.html`）
3. 去啃技术报告 allenai.org/papers/olmocore3，**重点读"负面结果"那节**
4. 配 `narrative.allen.ai/scaling-up-training` 那个交互式讲解一起看，比干读代码直观

### 几句必须说的丑话

* **版本号虽是 3.0.0，但 breaking change 不少**：v3 里 model ladder 框架和一批旧训练脚本被**直接删掉**了（`Remove model ladder framework and retired training scripts`），`FusedAttention` 也被 `FusedAttentionV2` 取代。老代码升级过来大概率要改
* **MoE 这套依赖很重**：专家并行的关键技术路径依赖 **NVSHMEM** + **支持 RMA 的 NCCL**，以及 CUDA 12.8 / 13.0 的 kernel 构建。镜像里才省事，裸机上你会踩不少坑
* **数据是用 B300 跑出来的**：H100 / A100 能跑，但别指望复现那几个数字
* **`flash-linear-attention` 被钉在 0.4.1**（main 上已是 0.5.2），因为 0.5.2 要求 Triton ≥ 3.7.1 和更新的 torch。这是官方明知故犯的妥协，升级依赖时记得
* **万亿规模数字用随机路由测的**：再说一遍，它证明的是"系统撑得住"，不是"模型训得好"
* **下一代 Olmo 的规格一个都没公布**：参数规模、上下文长度、发布时间全是未知数，别拿现在的消息当期货炒

> 最后一句个人立场。过去两年整个行业的注意力都在模型排行榜上，谁跑分高谁开发布会。但真正决定"这个领域还有多少人有资格参与"的，是**训练栈是不是开源的**。模型可以被下载，基建不能。Olmo-core 3 这种东西的价值，不在那个 2.7 倍，在于它让"万亿参数 MoE 该怎么训"这件事，**从少数几家公司的内部知识，变成了任何人可以读的一行行代码。**

## 进阶

更多开源技术干货和学习资料，关注公众号「遇码」，领取专属福利。
