2 OLMo 2 Furious

2 OLMo 2 Furious:完全開放的下一代語言模型家族

原始論文:2 OLMo 2 Furious 作者:OLMo Team(Pete Walsh, Luca Soldaini, Dirk Groeneveld, Kyle Lo, Shane Arora, Akshita Bhagia, ... Ali Farhadi, Noah A. Smith, Hannaneh Hajishirzi 等;Allen Institute for AI、University of Washington、New York University) arXiv ID:2501.00656v3 日期:2025-10(v3 修訂;初版 2024-12-31) 標籤:LLM OLMo 開源模型 預訓練 Mid-training RLVR Tülu Allen AI

目錄

摘要

我們推出 OLMo 2,這是我們完全開放 (fully open) 語言模型 (Language Model, LM) 家族的下一代成員。OLMo 2 包含 7B、13B、32B 三種規模的稠密自回歸 (autoregressive) 語言模型,所有產出工件都完整開放:模型權重、完整訓練資料、訓練程式碼與配方 (recipes)、訓練日誌,以及數千個中間檢查點 (intermediate checkpoints)。在這份報告中,我們描述了修改後的模型架構與訓練配方,重點放在改善訓練穩定性 (training stability) 以及每個 token 的訓練效率 (per-token efficiency)。

我們更新後的預訓練資料混合導入了一個新的、特別策劃的資料集,叫做 Dolmino Mix 1124。當它在預訓練後期透過課程式 (curriculum) 訓練導入時,能在許多下游任務基準上顯著提升模型能力。最後,我們採納 Tülu 3 的最佳實務開發出 OLMo 2-Instruct,重點放在寬鬆授權 (permissive) 資料,並把最終階段的可驗證獎勵強化學習 (Reinforcement Learning with Verifiable Rewards, RLVR) 擴展為多階段流程。

OLMo 2 基礎模型位在效能對訓練計算量的 Pareto 前沿 (Pareto frontier) 上,常常與 Llama 3.1、Qwen 2.5、Gemma 2 等開放權重 (open-weights) 模型匹敵或超越,而所用的浮點運算量 (FLOPs) 更少,且訓練資料、程式碼與配方完全透明。我們完全開放的 OLMo 2-Instruct 模型可與相同規模的開放權重模型競爭,甚至能與一些專有 (proprietary) 模型如 GPT-3.5 Turbo 和 GPT 4o Mini 抗衡。


一、引言

過去一年,開放語言模型生態系成長迅速。我們看到既有開發者推出大量開放權重模型——Llama 3、DBRX、Yi 1.5、Qwen 2、Falcon、Mistral、Ministral、Phi——同時也有新進者如 Gemma、Grok、Command R 加入,公開可用模型與封閉系統之間的差距正大幅縮小。然而,這些只開放權重 (open-weights) 的模型只是整套複雜訓練流程的最終產物,它們本身不足以支撐對語言模型行為與用途的多元化研究。

為此,包括我們先前的 OLMo、Pythia、Amber、DCLM、MAP Neo 與 SmolLM 等先前工作,都採取了完全開放 (fully open) 的方式:不只發布權重,還包括訓練資料、訓練程式碼以及完整文件化的配方,以支援可重現性 (reproducibility)。完全開放語言模型的工件 (artifacts) 對於研究訓練動力學、概念學習、與記憶化 (memorization) 等議題都扮演了關鍵角色。儘管如此,最佳效能模型與開放模型之間仍存在差距。

現代語言模型開發是一個迭代過程:當前版本的限制驅動下一代版本的開發。我們先前的版本 OLMo-0424 著重於透過更佳的預訓練資料混合與課程提升 MMLU 等關鍵任務的表現。在這份技術報告中,我們推出 OLMo 2,一個 7B/13B/32B 的新模型家族,訓練 token 數最高達 6T。在英文學術基準上,這些模型已能與開放權重的 Llama 3.1、Qwen 2.5、Gemma 2 系列匹敵。我們進一步驗證了預訓練模型作為下游後訓練 (post-training) 起點的有效性:套用 Tülu 3 配方後產生的 OLMo 2-Instruct 模型,可與強大的開放權重模型甚至 GPT-3.5 Turbo / GPT 4o Mini 等熱門專有模型抗衡。

本報告聚焦在 OLMo 2 開發過程中的四個關鍵主題:

  1. 預訓練穩定性 (Pretraining Stability):訓練常受 loss spike 與梯度爆炸困擾,這既昂貴又會傷害最終效能。我們在 Section 3 討論用來穩定訓練的技術。
  2. 中段訓練配方 (Mid-training Recipe):我們把預訓練拆成兩個階段,後段「中段訓練」用來注入新知識並修補能力短板。我們也介紹一種叫做微觀退火 (microannealing) 的方法,能以低成本獨立評估個別資料來源的價值(Section 4)。
  3. 後訓練流程 (Post-training Pipeline):基於 Tülu 3 構建 OLMo 2-Instruct,重視寬鬆授權資料,並把可驗證獎勵強化學習 (RLVR) 擴展為多階段以最大化效能(Section 5)。
  4. 基礎設施作為研究催化劑 (Infrastructure as a Research Catalyst):高效能且可靠的基礎設施對成功的預訓練至關重要。我們討論 OLMo-0424 之後的變動,以及如何投資於監控與編排工具來降低失敗率與提升叢集利用率(Section 6)。

Figure 1:OLMo 2 與其他模型在效能對訓練 FLOPs 的 Pareto 前沿

圖 1(說明): OLMo 2 與其他可比模型的「效能 vs 預訓練 FLOPs」對照圖。橫軸是近似 FLOPs(≈ 6 × 訓練 token 數 × 模型大小),縱軸是十項基準的平均效能。完全開放的 OLMo 2 位在 Pareto 前沿,在多個規模上勝過或匹敵其他開放程度不同的模型。


二、OLMo 2 家族

本節綜覽 OLMo 2 並重點介紹相對於 OLMo-0424 與先前 OLMo 模型的改進。OLMo 2 家族擁有更多 token、更多參數、且下游任務表現更好。我們會在合適處標示授權:所有訓練程式碼、資料與配方盡量採 Apache 2.0 開放,否則採用最寬鬆可用的授權。

2.1 模型架構

OLMo 2 採用僅解碼器 (decoder-only) Transformer 架構,提供 7B/13B/32B 三種變體。架構與第一版 OLMo 非常相似,但為了訓練穩定性與效能做了多項變動。

OLMo 1 沿用的設定:

  • 無 bias:架構中所有 bias 項目都移除
  • SwiGLU 激活函數:MLP hidden size 約為 (8/3) × d,並對齊到 128 的最近倍數(7B 為 11008)
  • 旋轉位置編碼 (Rotary Position Embedding, RoPE):取代絕對位置編碼

OLMo-0424 引入的設定:

  • QKV 裁切 (Clipping):穩定訓練(DBRX 也採用)
  • 上下文長度:從 2048 提升到 4096

OLMo 2 進一步引入的設定:

  • RMSNorm:以 RMSNorm 取代非參數化 LayerNorm(無 bias)
  • 重新排序的歸一化 (Reordered Norm):把 LayerNorm 套在注意力與 MLP 區塊的輸出而非輸入上。每個區塊變成:
    • h := x + RMSNorm(Attention(x))
    • h_out := h + RMSNorm(MLP(h))
  • QK-norm:對 query 和 key 投影在計算注意力之前各自套用 RMSNorm,避免 attention logits 過大導致發散
  • Z-Loss:採用 z-loss 正則化(係數 1e-4),避免 softmax 分母過大
  • RoPE θ = 5×10⁵:把 RoPE 的 base frequency 從 10000 提到 500000,提升位置編碼解析度(與 Llama 3 一致)

2.2 分詞器 (Tokenizer)

OLMo 1 與 OLMo-0424 使用修改版 GPT-NeoX-20B 分詞器,含有 |||PHONE_NUMBER|||、|||EMAIL_ADDRESS|||、|||IP_ADDRESS||| 等特殊 token 用於遮罩個資。

OLMo 2 改用更大的詞彙表:採納 cl100k(GPT-3.5 / GPT-4 的分詞器,Apache 2.0 授權),同時保留前述的 PII 遮罩 token 以維持與舊 Dolma 子集的相容性。在 1B 模型 100B token 的對照實驗中,OLMo 2 分詞器在 OLMES (CF) 與 MMLU (CF) 上都有可量測的提升。

2.3 基礎模型訓練配方

OLMo 2 採用兩階段訓練:

  • 階段 1:預訓練 (Pretraining):佔訓練 FLOPs 的 ≥90%,使用以高品質網頁資料為主的混合
  • 階段 2:中段訓練 (Mid-training):佔訓練 FLOPs 的 5–10%,上採樣 (up-sample) 高品質網頁文件與精選非網頁來源,並加入專為補強數學能力的合成資料

表 3(說明): OLMo 2 各規模超參數對照。32B 模型採用 GQA (Grouped Query Attention) 而非 MHA (32B 為 40 query head / 8 key-value head)。Sequence length 為 4096。Peak LR:7B 為 3e-4,13B 為 9e-4,32B 為 6e-4。學習率排程:cosine decay 後對 7B 與 32B 在 4T / 6T token 處截斷,再切到中段訓練的線性退火至零。

訓練 token 總量:

  • OLMo 2 7B:4.05T(預訓練 3.90T)
  • OLMo 2 13B:5.6T(預訓練 5T)
  • OLMo 2 32B:6.6T(預訓練 6.06T)

2.4 基礎模型資料

2.4.1 預訓練資料:OLMo 2 Mix 1124

表 4(說明): 預訓練資料組成共約 3.9T token,其中 95% 以上為網頁資料:

  • DCLM-Baseline(網頁):3.71T token
  • StarCoder filtered(程式碼):83B
  • peS2o(學術論文):58.6B
  • arXiv(STEM 論文):20.8B
  • OpenWebMath:12.2B
  • Algebraic Stack(數學證明 / 程式):11.8B
  • Wikipedia & Wikibooks:3.7B

關鍵清理步驟:

  • StarCoder 資料:移除 stars < 2 的 repo;移除最高頻字佔超過 30% 或前兩高頻字佔超過 50% 的文件
  • 重複 n-gram 過濾:移除含 32 次以上重複 n-gram 序列的文件,避免 loss spike

2.4.2 中段訓練資料:Dolmino Mix 1124

表 5(說明): Dolmino Mix 1124 由「高品質子集」與「數學子集」組成,總共可採樣為 50B、100B、300B 三種規模。

  • 高品質子集(總計 832.6B):DCLM-Baseline 過濾後的高品質網頁 (752B)、FLAN 指令資料 (17B)、peS2o (58.6B)、Wiki & Wikibooks (3.7B)、Stack Exchange Q&A (1.26B)
  • 數學子集(總計 10.7B):TuluMath、DolminoSynthMath、TinyGSM-MIND、MathCoder2 合成書、Metamath、CodeSearchNet、GSM8K train split

2.5 評估與結果

我們以 OLMES 評估套件評估 OLMo 2,並維持一組保留集 (held-out) 任務供開發決策結束後驗證泛化能力。

表 6(說明): 基礎模型對照表。OLMo 2 7B/13B/32B 與 Mistral 7B、Llama 3.1 8B、Qwen 2.5 7B/14B/32B、Gemma 2 9B/27B、Llama 3.1 70B 等開放權重模型對照,以及與 Amber、OLMo 1、MAP Neo、DCLM 等完全開放模型對照。OLMo 2 在「完全開放」這個範疇中顯著領先;OLMo 2 32B 平均 73.3,FLOPs 為 13e23,已能與 Qwen 2.5 32B(74.9,FLOPs 16e23)和 Gemma 3 27B(74.7,FLOPs 23e23)匹敵,且 FLOPs 更少。

表 7(說明): Instruct 模型對照表。OLMo 2-Instruct 1B/7B/13B/32B 與 Tülu 3 8B、Qwen 2.5 Instruct、Gemma 2/3 Instruct、Llama 3.1 Instruct、GPT-3.5 Turbo、GPT-4o Mini 對照。OLMo 2 13B Instruct 平均 63.5,OLMo 2 32B Instruct 平均 68.8,後者已能超越 GPT 4o Mini 0724(65.7)、Mistral Small 24B Instruct(67.5)。


三、深入:預訓練穩定性

OLMo-0424 雖然達到了預期效能範圍,但訓練過程有兩個顯著問題:

  1. Loss 與梯度範數的突然 spike:模型越大 spike 越頻繁;劇烈的梯度範數 spike 通常先於 loss spike 發生
  2. 梯度範數隨訓練緩慢成長:與 spike 頻率上升相關

這些問題最終會導致訓練發散,使大規模訓練不可行。我們的修正組合包括:

  • 過濾預訓練資料中的重複 n-gram(§3.1)
  • 從 scaled init 切換為標準正態初始化 (mean 0, std 0.02)(§3.2)
  • 使用 RMSNorm(§3.3)
  • 重排序 LayerNorm 位置(套在 attention/MLP 輸出上)(§3.3)
  • 對 Q 與 K 套用 QK-norm(§3.3)
  • 採用 Z-Loss 正則化(§3.3.3)
  • embedding 層不做 weight decay(§3.4.2)
  • 將 AdamW 的 ε 從 1e-5 降到 1e-8(§3.4.1)

3.1 重複 n-gram

調查 spike 發生時的訓練 batch 後,我們發現大量含有長重複 n-gram 序列的實例,例如:

g4ODg4ODg4ODg4OD...
[\n 365, 0, 667, 1000, 1000, 667, 667, ...
255, 255, 255, 255, 255, ...

在資料清理階段,我們移除任何含有 32 個以上重複 n-gram(n 範圍 1–13 token)的文件。在 trainer 中還加了一道防護:偵測到這類序列就在計算 loss 時 mask 掉。圖 3 顯示這個介入大幅減少(但未完全消除)梯度 spike,但對梯度範數的緩慢成長沒有效。

3.2 模型初始化

OLMo 2 改採標準正態 (mean 0, std 0.02) 對所有參數初始化,取代 OLMo-0424 用的 Zhang et al. (2019) scaled init。我們以三種角度驗證新初始化更佳:

  • 梯度與激活成長 (growth exponent):定義 λ = (1/n_layers) × log(‖v'‖/‖v‖)。理想上 λ 應接近 0。圖 5 顯示 OLMo 2 的 growth exponent 在不同寬度下都更接近 0。
  • 跨寬度的超參數遷移 (Hyperparameter transfer across width):根據 Yang et al. (2024) 的理論,當 activation 與 update 的 norm 與 √d_model 正相關時,超參數可以跨寬度遷移。OLMo 2 在這點上明顯優於 OLMo-0424。
  • Spike 分數 (spike score):定義為時間序列中超過滾動平均 ±7 標準差的值之比例。新初始化把 L2 梯度 spike 分數從 0.40 降到 0.03。

3.3 架構改進

3.3.1 RMSNorm vs 非參數化 LayerNorm

OLMo 2 改回 RMSNorm。我們的消融顯示兩者效能相當,但 RMSNorm 是大多數 Transformer 實作的標準,更穩妥。

3.3.2 重排序 LayerNorm 與 QK-norm

把 LayerNorm 套用在 attention/MLP 輸出(OLMo 2)而非輸入(OLMo-0424),加上對 Q、K 套用 QK-norm。單獨任一項都沒有好結果,但兩者合用能改善 L2 梯度範數的成長與 spike:聯合套用後梯度 spike 分數從 0.108 降到 0.069。

3.3.3 Z-Loss

採用 Chowdhery 等人提出的 z-loss 正則化:在 loss 中加上 1e-4 × log²Z,其中 Z 是 softmax 分母。這抑制最終 logits 過大,提升穩定性。注意:Flash Attention 的 z-loss 實作與 PyTorch 純手寫實作在反向傳播上有差異(前向相同),原因可能是精度差異。我們選擇放棄 fused 版本,從分歧點重新訓練。

3.4 超參數改進

3.4.1 AdamW 的 ε

從 1e-5 降到 1e-8(PyTorch 預設)。較小的 ε 允許訓練早期較大的更新步長,幫助模型更快學習,並使梯度範數更快穩定且永久維持較低。

3.4.2 Embedding 上的 weight decay

OLMo 用標準 weight decay:每步把所有參數乘以 (1 − 0.1 × lr)。但對 embedding 這會把它們縮得太小。根據 Takase et al. (2024):當 embedding 的 norm 變小時,前幾層的梯度會變大(因為 LayerNorm 對 x 的 Jacobian 與 ‖x‖ 成反比)。我們關掉 embedding 的 weight decay,發現 embedding norm 自然落在健康範圍。Spike 分數從 0.16 降到 0.092。


四、深入:中段訓練配方

中段訓練 (mid-training) 的核心想法很簡單:預訓練後,產生領域特化的資料混合並重啟訓練,線性把學習率降到零。目標是注入專業知識並補強能力。

4.1 學習率退火

我們以 Llama 3 的設定為起點:對 7B 變體,先在前 2000 步把 lr 從 0 線性 warmup 到 3e-4,接著用 cosine decay 在 5T token 上跑。過去經驗顯示 cosine 末段可以截斷並用線性 decay 替代,幾乎沒有效能損失。我們在 4T token 處停下 cosine,切到中段訓練的線性退火。

我們嘗試了 6e-4、9e-4、12e-4、30e-4 等更高 lr。30e-4 在 warmup 階段就出現無法恢復的 spike,立刻放棄。其他 lr 一開始 loss 都比較好,但最後反而被低 lr 追過:3e-4 與 6e-4 的交叉點甚至超過 200B token。短期的超參數實驗會得出錯誤結論。

表 8(說明): 不同 lr × 退火時長下的 OLMES (CF, valid) 9 任務平均分數。所有變體在 0.5 點之內,差異很小。

4.2 資料課程:Dolmino Mix 1124

表 9(說明): OLMo 2 1B/7B/13B/32B 在預訓練結束後與中段訓練結束後的對照。中段訓練平均提升 10 點以上,特別是在知識密集多選題(MMLU、Arc challenge、AGIEval)、閱讀理解(NQ、DROP)、與數學(GSM8K:7B 從 24.1 → 67.5;13B 從 37.3 → 75.1)。

中段訓練配方流程:

  1. 找出能在開發評估套件全面提升效能的高品質資料來源組合(§4.3)
  2. 對特定能力短板(OLMo 2 是數學)收集領域特化資料(§4.4)。透過微觀退火 (microannealing) 獨立評估
  3. 把高品質與數學資料混成 50B / 100B / 300B 三種預算

4.3 高品質資料來源

兩種網頁品質分類器:

  • DCLM FastText 分類器:用 ELI5 Reddit 子集 + Open Hermes 2.5 作為正例,DCLM 隨機樣本作為負例。閾值 0.03311014,保留約 65.6% 網頁
  • FineWeb Edu 分類器:從 Arctic Embed M 編碼器微調,由 Llama 3 70B Instruct 標註 40 萬網頁;分數 0–5

我們嘗試把 FineWeb 閾值設為 ≥3(保留 5.8%)以及較寬鬆的 ≥2(保留 20.3%)。

指令資料與 Q&A 對:使用 Dolma 1.7 的 FLAN 子集(去汙染:移除與評估任務 10% 以上 n-gram 重疊的文件)。Stack Exchange 來自 2024-09-30 dump,過濾為「有 accepted answer、問題 ≥3 votes、答案 ≥5 votes」。

表 11(說明): 不同中段訓練 mix 的對照。Web^FT_FW72 + Math + Ins 在所有指標上都表現最佳(OLMES +1.7、生成 +5.7、MMLU +1.3、GSM* +19.5)。

4.4 數學資料子集與微觀退火 (Microanneal)

數學資料來源:

  • TuluMath:用 Persona Hub 的 persona 條件,請 GPT-4o 生成多步驟數學問題與解答(約 230M token)
  • DolminoSynthMath:28M 合成數學 token,包含基本算術 Q&A、合成 GSM8K、MIND-rewriting 的 GSM8K 範例
  • TinyGSM-MIND:6.5B token,從 Tiny-GSM 過濾並由 Qwen2.5-7B-Instruct 改寫成 MIND 風格
  • MathCoder2-Synthetic:模仿 MathCoder2 程序,從 Ajibawa-2023 與 M-A-P Matrix 過濾合成數學教科書
  • ProofPile OWM-Filtered:把 OpenWebMath 過濾器套到 Metamath 與 CodeSearchNet
  • GSM8K-Train:GSM8K 訓練集

4.4.2 微觀退火 (Microanneal)

微觀退火配方:

  1. 找出想評估品質的數學資料來源
  2. 從一般資料 mix(如 DCLM)抽取大致相同數量的資料
  3. 以 50/50 混合進行退火訓練,正確地線性 decay lr

我們跑了 19 次微觀退火,總共 130B token,比 3 次完整 50B 退火還少。能在 10B token 內就看到結果。

表 12(說明): 三組微觀退火實驗:

  • 實驗 1:領域資料即使只佔 10% 也很有幫助(GSM* 從 28.5 → 61)
  • 實驗 2:適度重複數學資料有益(1× / 2× / 4× 分別得到 GSM* 63.5 / 66.0 / 65.0)
  • 實驗 3:把程式形式的 Tiny-GSM 改寫為自然語言形式效果驚人(程式版降低分數,MIND 改寫版大幅提升)

4.5 最終中段訓練混合與檢查點湯 (Checkpoint Soup)

表 13(說明): Dolmino Mix 1124 在 50B / 100B / 300B 三種預算下的組成。Source% 表示該來源被使用的比例(>100 表重複),Mix% 表該來源在混合中所佔比例。Filtered DCLM 在所有 mix 中佔約 50%。

模型湯 (Model Souping):對 6 組 mid-training mix,3 個使用不同 data 順序的 checkpoint 平均後的效果一致地等於或優於最佳單一 checkpoint。

最終做法:

  • OLMo 2 7B:對 50B Dolmino mix 訓練 3 次(不同隨機順序),平均三個 checkpoint
  • OLMo 2 13B 與 32B:對 100B mix 訓練 3 次 + 對 300B mix 訓練 1 次,平均所有四個 checkpoint

五、深入:後訓練流程

我們套用 Tülu 3 配方並做兩個調整:(1) 更重視寬鬆授權;(2) 把 RLVR 擴展為多階段。Tülu 3 的三階段是 SFT → DPO → RLVR。

5.1 監督式微調 (SFT)

我們開發了兩個 SFT mix:

  • tulu-3-sft-olmo-2-mixture(7B / 13B 用,939,104 prompts)
  • tulu-3-sft-olmo-2-mixture-0225(1B / 32B 用,866,138 prompts)

對 1B / 32B mix,我們進一步:

  • 過濾掉合成過程中含「日期截斷」字串的指令(與「As an AI language model...」這類不良行為相關)
  • 對 Persona MATH 與 Grade School Math 用 5-completion 多數投票,避免 SFT 在錯誤答案上

超參數:7B SFT 用 LR 1e-5,sum loss,2 epochs,effective batch size 128,linear schedule,warmup ratio 0.3。一個關鍵發現是 OLMo 2 需要遠高於 Llama 3.1 配方的 LR。

5.2 偏好微調 (DPO)

我們延伸 UltraFeedback pipeline,並使用 on-policy 資料:從 OLMo 2 SFT 開發版中採樣回應。模型池僅包含寬鬆授權模型(見附錄 Table 25)。

從 OLMo 2 7B / 13B 各得 366.7k / 377.7k prompts。對每個 prompt,從 20 個不同家族與規模的模型抽取回應。用 GPT-4o-2024-08-06 作為 LM judge(評 helpfulness / truthfulness / honesty / instruction-following),按 Argilla 的 binarize 方法組成偏好對。

DPO 學習率:13B 用 8e-7,7B 用 1e-6。

5.3 可驗證獎勵的強化學習 (RLVR)

RLVR 是針對「答案可被驗證」的領域設計的微調技術——例如數學題只在答案正確時才給獎勵。我們用 PPO 並從對應的 reward model 初始化 value function。

對 7B 與 13B:我們在 GSM8K + MATH + 帶約束的指令上做第一次 RLVR。對 13B 觀察到 GSM8K / MATH 反而退步,所以又做了兩輪:先在 GSM8K 上微調,再在 MATH 上微調。最終的 OLMo 2-Instruct 就是這條多階段 RLVR 鏈的產物。

對 1B 與 32B:改用 GRPO (Group Relative Policy Optimization),無需 reward model。

表 18(說明): PPO 超參數。LR 13B 用 3e-7、7B 用 4e-7;effective batch size 13B 用 248、7B 用 224;KL β 多階段不同;clipping ε 0.2;value coef 0.1;max episodes 13B 用 200k、7B 用 100k;max token length 與 response length 皆 2048。

表 16(說明): SFT → DPO → Instruct 的逐階段對照。32B 從 SFT 的 61.7 提升到 DPO 的 68.8,最終 Instruct 維持 68.8。

5.4 評估

評估類別涵蓋知識回憶 (MMLU、PopQA、TruthfulQA)、推理 (BBH、DROP)、數學 (GSM8K、MATH)、指令遵循 (IFEval、AlpacaEval 2)、安全。OLMo 2 13B Instruct 接近 Qwen 2.5 14B Instruct,超越 Tülu 3 8B 與 Llama 3.1 8B Instruct。


六、深入:基礎設施作為研究催化劑

6.1 叢集

6.1.1 Jupiter 叢集

  • 位置:德州 Austin,由 Cirrascale Cloud Services 運營
  • 算力:1,024 張 NVIDIA H100 GPU(80GB HBM3、700W),分佈在 128 台伺服器(每台 2× Intel Xeon Platinum 8468、2 TB DDR5、18 TB NVMe)
  • 儲存:800 Gbps 區網接到 WEKA 高效能儲存叢集(1 PB NVMe + 5 PB HDD),實測 64 client 達 761 Gbps 讀寫
  • 互連:每台伺服器 8× 400 Gbps InfiniBand(總計 3200 Gbps),2-Tier Rail Optimized 全雙工網路
  • 冷卻:Dynamic Density Cabinet,PUE 1.2;H100 峰值溫度 75°C,平均 60–65°C

6.1.2 Augusta 叢集

  • 位置:愛荷華 Council Bluffs,Google Cloud
  • 算力:160 個 A3 Mega VM,每個 8 張 H100
  • 儲存:Google Cloud Storage(每 VM 1 GB/s)
  • 互連:GPUDirect-TCPXO + gVNIC + 緊湊節點配置;Jupiter 數據中心網路 + Titanium tiered offloading
  • 冷卻:氣冷,PUE 1.12

6.2 Beaker

OLMo 2 工作流由 Beaker 排程,這是 Ai2 自研的工作負載管理系統。優勢:

  • 可攜性 (Portability):跨 3 個資料中心;單一靜態 binary 部署;改一行程式碼就能搬移工作負載
  • 隔離性 (Isolation):容器化,可與其他工作共存;container 同時封裝相依與執行細節,幫助實驗可重現

6.3 穩定性與運維

  • GPU 健檢:在執行工作負載前先做張量乘法測試,失敗就把節點 cordon 並重新排程
  • 節點 cordoning:覆蓋自動健檢,標記節點待修
  • 主動監控:基於叢集遙測的標準警報,並有運維流程

6.4 最大化硬體利用率

PyTorch 最佳化:

  • torch.compile():大幅提升吞吐並節省 GPU 記憶體
  • 最小化 host-device sync:避免 tensor.to("cuda") 同步複製、避免 GPU→CPU 傳輸(包括 print CUDA tensor 或在 tensor 上做 if 判斷)。可用 torch.cuda.set_sync_debug_mode("warn") 偵測
  • 非同步記帳 (asynchronous bookkeeping):把 metric logging 與 checkpointing 放到獨立 thread。NCCL 不是 thread-safe,所以為 bookkeeping 設置另一個 GLOO backend
  • 顯式 Python 垃圾回收:呼叫 gc.disable() 後在固定 step 同步呼叫 gc.collect(1),避免分散式訓練中各 process 不同步的 GC 拖慢整體(圖 16)

6.5 環境衝擊

表 19(說明): 環境衝擊估算。

  • OLMo 2 7B:131 MWh、PUE 1.2、碳強度 0.332 kg CO2/kWh、52 公噸 CO2、202 kL 水
  • OLMo 2 13B:257 MWh、PUE 1.12、碳強度 0.351、101 公噸 CO2、892 kL 水
  • 對照:Llama 3.1 8B 為 1022 MWh / 420 公噸 CO2 / 1450–4823 kL 水

OLMo 2 比同規模 Llama 模型在能耗、碳排與用水上都顯著更低。


七、結論

OLMo 2 是我們致力於完全開放語言模型生態系的下一步。透過公開:

  • 7B / 13B / 32B 三種規模的權重
  • 完整訓練資料(OLMo 2 Mix 1124、Dolmino Mix 1124)
  • 完整訓練程式碼(OLMo 第一代 + OLMo-core 第二代)
  • 完整後訓練配方(Tülu 3 變體)
  • 訓練日誌與數千個中間檢查點

我們希望讓整個社群能在我們的軌跡上接續研究、複製、批評、改進。OLMo 2 在效能對 FLOPs 的 Pareto 前沿上佔有一席之地,且 OLMo 2-Instruct 在眾多基準上能與開放權重模型甚至專有模型抗衡。

關鍵貢獻:

  1. 預訓練穩定性:一套經過驗證的穩定性配方(init、norm 重排、QK-norm、z-loss、AdamW ε、不對 embedding 做 weight decay)
  2. 中段訓練方法論:以微觀退火 (microannealing) 為核心的低成本資料評估方法
  3. 多階段 RLVR:把 RLVR 從單階段擴展為依序的多階段微調
  4. 基礎設施投資:以 Beaker 為核心的可攜、可重現工作負載管理

附錄概覽

完整論文包含以下附錄(共約 22 頁):

  • A. OLMo 2 評估框架:A.1 基礎模型評估細節(OLMES 任務設定);A.2 Instruct 模型評估細節
  • B. OLMo 2 1B:B.1 訓練 1B 模型遇到的難題(與較大模型不同的不穩定模式)
  • C. 額外的 Instruct 細節:C.1 額外超參數;C.2 RLVR 學習曲線;C.3 OLMo 2-Instruct 預覽模型
  • D. 額外超參數
  • E. 退火資料細節:mid-training mix 的詳細組成

參考文獻

完整參考文獻請見原始論文 PDF 第 36–47 頁。為節省篇幅,本翻譯文件不重複列出。下列為文中重點引用的工作(保留英文原文):

  • Groeneveld, D. et al. OLMo: Accelerating the Science of Language Models. ACL 2024.
  • Soldaini, L. et al. Dolma: An Open Corpus of Three Trillion Tokens for Language Model Pretraining Research. ACL 2024.
  • Lambert, N. et al. Tülu 3: Pushing Frontiers in Open Language Model Post-Training. 2024.
  • Li, J. et al. DataComp-LM: In search of the next generation of training sets for language models (DCLM). 2024.
  • Grattafiori, A. et al. The Llama 3 Herd of Models. 2024.
  • Yang, A. et al. Qwen 2.5 Technical Report. 2024.
  • Gemma Team. Gemma 2: Improving Open Language Models at a Practical Size. 2024.
  • Rafailov, R. et al. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. NeurIPS 2023.
  • Schulman, J. et al. Proximal Policy Optimization Algorithms. 2017.
  • Shao, Z. et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models (GRPO). 2024.
  • Su, J. et al. RoFormer: Enhanced Transformer with Rotary Position Embedding (RoPE). 2021.
  • Shazeer, N. GLU Variants Improve Transformer (SwiGLU). 2020.
  • Zhang, B. & Sennrich, R. Root Mean Square Layer Normalization (RMSNorm). NeurIPS 2019.
  • Dehghani, M. et al. Scaling Vision Transformers to 22 Billion Parameters (QK-norm). ICML 2023.
  • Chowdhery, A. et al. PaLM: Scaling Language Modeling with Pathways (z-loss). JMLR 2022.
  • Wortsman, M. et al. Model Soups. ICML 2022.
  • Chan, X. et al. Scaling Synthetic Data Creation with 1,000,000,000 Personas (PersonaHub). 2024.
  • Ainslie, J. et al. GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints. 2023.
  • Cobbe, K. et al. Training Verifiers to Solve Math Word Problems (GSM8K). 2021.
  • Hendrycks, D. et al. Measuring Massive Multitask Language Understanding (MMLU). ICLR 2021.
  • Gu, Y. et al. OLMES: A Standard for Language Model Evaluations. 2024.

術語對照表

English 繁體中文
Language Model (LM) 語言模型
Fully Open Model 完全開放模型
Open-weights Model 開放權重模型
Pretraining 預訓練
Mid-training 中段訓練
Post-training 後訓練
Supervised Fine-Tuning (SFT) 監督式微調
Direct Preference Optimization (DPO) 直接偏好最佳化
Reinforcement Learning with Verifiable Rewards (RLVR) 可驗證獎勵的強化學習
Proximal Policy Optimization (PPO) 近端策略最佳化
Group Relative Policy Optimization (GRPO) 群組相對策略最佳化
Reward Model (RM) 獎勵模型
Preference Pair 偏好對
On-policy Data 在策略 (on-policy) 資料
LM Judge 語言模型評審
Instruction Following 指令遵循
Chain-of-Thought (CoT) 思維鏈
Decoder-only Transformer 僅解碼器 Transformer
Multi-Head Attention (MHA) 多頭注意力
Grouped Query Attention (GQA) 分組查詢注意力
Rotary Position Embedding (RoPE) 旋轉位置編碼
SwiGLU SwiGLU 激活函數
LayerNorm 層歸一化
RMSNorm 均方根層歸一化
Reordered Norm 重排序歸一化
QK-norm 對 Query 與 Key 的歸一化
Z-Loss Z 損失正則化
Weight Decay 權重衰減
AdamW AdamW 優化器
Tokenizer 分詞器
Vocabulary 詞彙表
Sequence Length 序列長度
Batch Size 批次大小
Learning Rate (LR) 學習率
Cosine Decay 餘弦衰減
Linear Decay 線性衰減
Warmup 暖身 (warmup)
Hyperparameter Transfer 超參數遷移
Loss Spike 損失尖峰
Gradient Norm 梯度範數
Spike Score 尖峰分數
Growth Exponent 成長指數
Initialization 初始化
Repeated n-gram 重複 n-gram
Deduplication 去重
Decontamination 去汙染
Curriculum Training 課程式訓練
Annealing 退火
Microannealing 微觀退火
Model Soup / Model Merging 模型湯 / 模型合併
Checkpoint 檢查點
Data Mix 資料混合
Pareto Frontier Pareto 前沿
FLOPs 浮點運算量
Throughput 吞吐量
Token token
Token Per Second (TPS) 每秒 token 數
Benchmark 基準測試
OLMES OLMES 評估套件
Held-out Evaluation 保留集評估
Personally Identifiable Information (PII) 個人可識別資訊
Synthetic Data 合成資料
Persona 人設 (persona)
Reward Hacking 獎勵駭客
KL Divergence KL 散度
Value Function 價值函數
Cluster 叢集
GPU GPU
InfiniBand InfiniBand 網路
Power Usage Effectiveness (PUE) 電源使用效率
Water Usage Effectiveness (WUE) 用水效率
Carbon Intensity 碳強度
torch.compile() PyTorch 編譯函式
Host-device Sync 主機-裝置同步
Garbage Collection (GC) 垃圾回收
Container 容器
Beaker Beaker 工作負載管理系統
← 回到列表
已複製連結