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

圖 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 雖然達到了預期效能範圍,但訓練過程有兩個顯著問題:
- Loss 與梯度範數的突然 spike:模型越大 spike 越頻繁;劇烈的梯度範數 spike 通常先於 loss spike 發生
- 梯度範數隨訓練緩慢成長:與 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)。
中段訓練配方流程:
- 找出能在開發評估套件全面提升效能的高品質資料來源組合(§4.3)
- 對特定能力短板(OLMo 2 是數學)收集領域特化資料(§4.4)。透過微觀退火 (microannealing) 獨立評估
- 把高品質與數學資料混成 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)
微觀退火配方:
- 找出想評估品質的數學資料來源
- 從一般資料 mix(如 DCLM)抽取大致相同數量的資料
- 以 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 在眾多基準上能與開放權重模型甚至專有模型抗衡。
關鍵貢獻:
- 預訓練穩定性:一套經過驗證的穩定性配方(init、norm 重排、QK-norm、z-loss、AdamW ε、不對 embedding 做 weight decay)
- 中段訓練方法論:以微觀退火 (microannealing) 為核心的低成本資料評估方法
- 多階段 RLVR:把 RLVR 從單階段擴展為依序的多階段微調
- 基礎設施投資:以 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 工作負載管理系統 |