Skip to content

AllenAI Olmo 系列

📅 发表于 2026/09/23
🔄 更新于 2026/09/23
👁️ — 次访问
📝 3312 字
⏳ 10 分钟
mainllm
#基模
#Pretrain
#SFT
#RL

变化点 ​

2025

2025.12 · Olmo 3

  • 公开预训练、长上下文扩展、SFT、DPO 与推理 RL 的数据和中间检查点。
  • Think 采用 SFT → Delta Learning DPO → OlmoRL,并对比 Instruct 与 RL-Zero 路线。

(2512) Olmo 3 (开放训练流程、Delta Learning、OlmoRL) ​

🌺 论文摘要

Olmo 3 论文摘要

参考链接

问题背景

  • 仅开放最终权重,难以研究训练数据、基础能力和 RL 之间的关系;需要可重建各阶段的模型与数据流程。

核心方法

  • 架构与预训练:7B / 32B Dense 模型采用 3:1 局部/全局 Attention;用 Token 预算约束的数据混合与质量感知上采样训练 Dolma 3 语料。
  • 中训练与长上下文:100B 高质量 Dolmino 数据增强数学、代码和后训练基础,再用 Longmino 混合长短文本将上下文从 8K 扩至 65K。
  • Think 后训练:约 2.25M 条 SFT 数据、200K 对高能力差异的偏好数据,再用数学、代码、指令与聊天组成的 OlmoRL 训练。
  • Instruct / RL-Zero:Instruct 从 Think SFT 起步,加入工具轨迹并控制偏好对的长度差;RL-Zero 从 Base 直接训练,并清除 RL 数据与前期训练语料的重叠。

模型效果(Olmo 3 Think 32B + SFT/DPO/OlmoRL)

  • SFT → DPO → 初版 RL:AIME 2025 66.2 → 70.7 → 72.5,LiveCodeBench v3 75.8 → 81.9 → 83.5。
  • 同报告的延长 RL 版本 Olmo 3.1 Think 32B,AIME 2025 达到 78.1、IFBench 达到 68.1。

重要结论

  • 偏好差异比单独模仿更有效:7B 开发实验中,继续 SFT 强模型回答使均分 70.3 → 64.5;将它与弱模型回答配对做 DPO,均分达到 72.9。
  • 中训练可提前放入推理与指令数据:固定 100B Token 的对照中,加入后 OlmoBaseEval 均分 48.8 → 50.7。

关键贡献

  • 提供完整 Model Flow、Dolma / Dolci 数据家族、OlmoBaseEval 与 OlmoRL,使预训练到 RL 的因果分析有公开起点。

未来方向

  • 研究多目标 RL 的领域相互作用、后训练超参数选择,以及更长 RL 训练和更高效的 Learner 配置。

问题背景 ​

研究训练过程需要中间产物
  • 数据贡献难以定位:最终权重无法揭示哪些能力来自预训练、中训练、蒸馏或 RL。
  • 不同使用目标需要不同分支:长推理模型、简洁交互模型和直接从 Base 开始的 RL 实验,其数据与模板不相同。
  • 小规模试验需要可靠评测:不同任务对模型大小、数据与采样噪声的响应不同,单一总分可能掩盖退化。
  • 开放范围:发布数据、处理代码、训练代码、日志和阶段检查点,并记录模型之间的训练与合并关系。

核心方法 ​

Dense 架构与 Dolma 3 预训练 ​

7B / 32B 网络与训练预算
  • 网络:分别为 32 / 64 层、隐藏维度 4096 / 5120,使用 SwiGLU、RMSNorm 与 QK-Norm。
  • Attention:7B 为 32 个 Query / KV Heads 的 MHA;32B 为 40 个 Query Heads、8 个 KV Heads 的 GQA。
  • 局部/全局布局:每四层中三层采用 4096 Token 窗口,一层使用全局 Attention,最后一层保持全局。
  • 预训练上下文:8192;7B 训练 5.93T tokens,32B 的原定余弦计划在 5.5T tokens 处结束,进入中训练。
  • 计算精度与实现:BF16 训练,OLMo-core 结合编译、自定义 Attention / LM Head 算子、异步指标与检查点写入。
数据比例与质量共同优化

Dolma 3 Mix

  • 从约 9.31T Token 池形成约 5.93T 的训练混合:Common Crawl 76.1%、olmOCR 科学 PDF 13.6%、Stack-Edu 代码 6.89%、FineMath 2.56%,其余为 arXiv 与百科数据。
  • Web 数据经过清洗、质量筛选和全局去重;科学 PDF 由 olmOCR 线性化为可训练文本。

Token 约束混合

  • 训练一组 30M 参数代理模型,每个训练 3B tokens;从以自然分布为中心的 Dirichlet 分布采样数据比例。
  • 为每项 Base Easy 任务拟合“混合比例 → Bits-per-Byte”回归模型,再搜索平均 BPB 最低的比例。
  • 搜索同时约束总 Token 预算和各领域重复次数上限,通常不超过约 4~7 次。
  • 新领域加入时,将已有最优混合冻结为一个虚拟领域,仅重做它与新增领域的混合,减少重新搜索成本。

质量感知上采样

  • 在每个 Web 主题内部,按质量分位设计采样曲线,让高质量数据重复更多次。
  • 曲线积分满足该主题的目标 Token 数,同时受最大重复次数限制;跨领域比例与领域内部质量选择共同决定最终数据。

Dolmino 中训练与 Longmino 上下文扩展 ​

100B 中训练:兼顾基础分数与后训练能力
  • 数据池与预算:从 2.19T Token 池采样约 100B;混合数学、代码、QA、推理轨迹、指令与高质量自然文本。
  • 代码数据:10B Stack-Edu FIM 与 10B CraneCode;数学包含 Dolmino Math、CraneMath、TinyMATH 等。
  • QA 与推理:Reddit 转 Flashcards、Wikipedia 转阅读理解问答,加入 Meta-Reasoning、程序可验证推理和多个开放推理数据集。
  • 格式处理:中训练中的指令数据去掉特殊 Chat Tokens 与模板,保留普通换行组织;正式对话格式留给 SFT 学习。
  • 32B 合并:用不同数据顺序分别跑两次 100B 中训练,再平均两支检查点权重;两次是独立分支。
从 8192 扩展到 65536
  • Longmino 数据:约 639B Token 的长文本池,以科学 PDF 为主;添加跨段词频统计 CWE 与跨片段表达改写 REX,增强聚合信息的训练信号。
  • 最终配比:约 34% 长文本与 66% 中训练短文本混合;7B 训练 50B、32B 训练 100B tokens。
  • 位置编码:仅在全局 Attention 层应用 YaRN,局部层保持原位置设置。
  • 打包与掩码:Best-Fit Packing 减少长文被切断;Intra-Document Masking 禁止无关文档之间互相注意。
  • 系统实现:8-way Context Parallelism 将每个 65K 序列分到八张卡;32B 最后平均长上下文阶段的三个检查点。

Think:SFT、Delta Learning 与 OlmoRL ​

先学习完整推理,再学习回答之间的能力差异

Dolci Think SFT

  • 7B / 32B 分别使用约 2.268M / 2.254M 条样本,覆盖数学、代码、指令、聊天、安全、科学和多语言。
  • 数学与代码主要使用 QwQ-32B 等开放轨迹;不完整推理重新生成到最多 32K,仍不完整则丢弃。
  • 代码通过执行测试筛选,精确指令通过约束验证器筛选;聊天、安全等来源由 DeepSeek R1 生成推理回答。
  • 清理重复、模型身份和无关任务,并去除评测重叠;训练 2 epochs,最后合并两个不同学习率的 SFT 检查点。

Delta Learning DPO

  • 对同一 Prompt,选择 Qwen3 32B Thinking 的回答作为 Chosen,Qwen3 0.6B Thinking 的回答作为 Rejected,形成 200K 对偏好数据。
  • 过滤 Chosen 的无关内容与身份信息,保留 Rejected 中的错误以提供有用差异;不要求 Chosen 本身一定强到值得继续模仿。
  • 用 DPO 提高 Chosen 相对 Rejected 的概率;训练 1 epoch,搜索学习率与数据规模,避免更多偏好数据造成退化。
OlmoRL:多领域奖励与 GRPO 修改

数据和奖励

  • Think RL 共 104869 个 Prompt:数学、代码、精确指令和一般聊天;7B 离线每题采样 8 次,去掉通过率超过 62.5% 的过易题。
  • 数学用规范化答案与 SymPy 验证;代码运行测试,比较全通过二值奖励与通过比例奖励;指令检查是否满足全部约束。
  • 一般聊天由 Qwen3 32B 非 Thinking Judge 给出 [0,1] 分,可使用参考答案,也可直接评价开放回答。
  • 代码合成流程为问题改写、解答生成、测试生成;保留参考解答通过率高于 80% 的问题,并去掉失败测试。

训练目标

  • 优势为 r_i − mean_group(r),不做组内标准差归一化;按 Batch 总 Token 数归一化损失,去掉 KL。
  • 过滤全组相同奖励的零梯度样本;Active Sampling 持续补样本,直到凑齐所需有效 Batch。
  • 非对称裁剪采用 ε_low=0.2、ε_high=0.272;每题采样 8 条,温度 1.0。
  • 新版实现使用截断重要性采样,修正训练引擎和 vLLM 的 Token 概率差异;32B 配置的比率上限为 2.0。
  • Think 的回答上限为 32768;初版 32B 训练 750 steps,同报告的 Olmo 3.1 Think 延长至 2300 steps。
连续生成与生成中更新权重
  • 异步 Learner / Actor:中心 Learner 更新参数,多组 vLLM Actor 持续生成,结果通过队列送回。
  • Continuous Batching:某个回答结束后立即填入新请求,避免短回答等待最长回答;论文实例平均长度 14628、上限 32K,静态组批可浪费约 54% 计算。
  • Inflight Updates:无需等待所有回答结束即可更新 Actor 权重,正在生成的回答继续复用原 KV Cache。
  • 版本差异:初版 7B Think RL 未使用后来的 PipelineRL 与截断重要性采样;新版实现复现实验达到接近质量,训练时间由约 15 天缩至 6 天。

Instruct 与 RL-Zero 分支 ​

简洁交互与可控研究分别训练

Olmo 3 Instruct

  • 从 Think SFT 模型继续训练,使用约 2.152M 条 Instruct SFT 数据,其中工具数据约 228K 条。
  • 工具数据包含真实 MCP 环境交互和合成函数调用,覆盖科学检索、网页搜索等;非推理回答移除思考轨迹和特殊 Token。
  • DPO 结合非 Thinking 强弱模型回答、GPT Judge 偏好和多轮偏好;多轮对只改变最后一轮,避免不同历史导致比较含混。
  • 在聊天与多轮偏好子集中,将 Chosen / Rejected 长度差限制为 100 tokens,缓解偏好训练学到的冗长倾向。
  • 后续用 OlmoRL 训练,7B / 32B 回答上限分别为 8K / 16K;使用较容易的数学、代码数据,并跳过 Think 分支的离线难度筛选。

Olmo 3 RL-Zero

  • 从 Base 直接进行数学、代码、精确指令、聊天或混合领域 RL,发布独立数据和检查点供受控比较。
  • 数学数据经语义聚类、去重及与预训练/中训练/评测去重,再去掉起点模型 8/8 全部答对的问题,保留约 13.3K 个 Prompt。
  • 使用与 Base 相容的简单文本模板;训练回答上限 16K,评测上限 32K、温度 1.0,同时观察 pass@1 和 pass@k。

实验设置 ​

按阶段评测与比较
  • Base:OlmoBaseEval 共 43 项任务,分小模型开发用的 Easy 与最终模型用的 Main;另保留 MMLU Pro、DeepMind Math、LBPP、BBH 四个未用于发布前开发的测试集。
  • Think / Instruct:数学、推理、代码、指令、知识问答与聊天;主表统一 32K 上下文上限、温度 0.6、Top-p 0.95。
  • 降低采样方差:AIME 使用多次采样平均、LiveCodeBench 使用 Avg@10;主比较与开发消融分别标明,不把单次开发均分当最终模型成绩。
  • 工具评测:BFCLv3,以及基于 MCP 的 LitQA2 / SimpleQA;温度 0、最多 10 轮,运行三次取均值。
  • 版本范围:本地报告包含 Olmo 3.1 的延长训练结果,下面与初版 Olmo 3 分开列出。

关键结果(Olmo 3 Think 32B + SFT/DPO/OlmoRL) ​

各阶段收益与延长 RL

32B:SFT → DPO → 初版 Olmo 3 Think

  • AIME 2024:73.5 → 76.0 → 76.8;AIME 2025:66.2 → 70.7 → 72.5。
  • LiveCodeBench v3:75.8 → 81.9 → 83.5;IFBench:37.0 → 34.4 → 47.6。
  • DPO 与 RL 改善的领域不同;例如 DPO 后 IFEval 从 83.9 降至 80.6,RL 后提高到 89.0。

32B:初版 RL → Olmo 3.1 延长 RL

  • 750 → 2300 steps 后,AIME 2025 72.5 → 78.1,IFBench 47.6 → 68.1。
  • LiveCodeBench v3 基本不变:83.5 → 83.3;AlpacaEval 2 LC 从 74.2 → 69.1,延长 RL 并非所有能力都同步提高。
训练数据和偏好机制消融
  • 中训练提前加入推理与指令有效:固定 100B tokens 的中间混合对照中,Base 均分 48.8 → 50.7,数学 43.1 → 48.7、代码 23.3 → 24.4。
  • Chosen 未必适合直接 SFT:7B 开发检查点均分 70.3;继续模仿 Qwen3 32B Chosen 后降至 64.5,与 0.6B Rejected 配对 DPO 后提高到 72.9。
  • DPO 可改善 RL 起点:另一组 7B 单次评测、同为 1000 RL steps 的比较中,SFT+RL 均分 71.9,SFT+DPO+RL 为 74.1;两者分别用各自起点筛选 RL 数据。
  • 短文本混合保护基础能力:10B Token 上下文扩展消融中,长/短 66/34 使基础任务均分降低 2.5pt,调整为 34/66 后只降 0.8pt。
  • Think SFT 可作为 Instruct 起点:7B 中间检查点对照均分 44.5 → 47.8,MATH 60.3 → 65.9;最终输出仍保持简洁。
RL 系统与研究用途
  • 同一系统消融依次加入连续组批、线程优化、生成中更新后,吞吐为 881 → 975 → 1358 → 2949 tokens/s,生成中更新带来的增量最大。
  • RL-Zero 的数学训练同时改善 pass@1 与 pass@32,可用于观察 RL 对解题覆盖范围的影响。
  • 混合领域 RL 的各领域均有进步,但相较单领域训练仍不充分,说明公开混合任务可用于研究目标之间的竞争与协同。

未来方向 ​

作者提出的后续问题
  • 使用 RL-Zero 的混合任务研究多目标 RLVR 中不同领域的相互作用。
  • 改进后训练超参数选择,降低反复搜索与长输出评测的计算成本。
  • 延长尚未充分饱和的 RL 训练,并改善 32B Learner 的分片与利用率。
总访客数:— · 总访问量:—
PLM's Blog @ 2016 - 2026