Olmo 3
- title
- Olmo 3
- type
- summary
- summary
- AI2's Olmo 3 report (Dec 2025), fully open 7B/32B Base, Think, Instruct and RL-Zero models with every stage's data, code and checkpoints released
- parent
- olmo
- tags
- ai, llm, open-weights, pretraining, post-training, datasets, reasoning, reinforcement-learning
- sources
- olmo-3-technical-report
- created
- 2026-09-14
- updated
- 2026-09-14
Olmo 3 is the third generation of the Allen Institute for AI's olmo family, and the first spelled "Olmo" instead of "OLMo". The report is credited to the Olmo Team with authors listed alphabetically; the core contributors include Nathan Lambert, Kyle Lo, Luca Soldaini, Dirk Groeneveld and Hamish Ivison. It was posted in December 2025 (arXiv 2512.13961). The models are dense transformers at 7B and 32B in four variants: Olmo 3 Base; Olmo 3 Think, trained to write a reasoning trace before answering; Olmo 3 Instruct, which answers directly and calls tools; and Olmo 3 RL-Zero, a 7B trained with reinforcement learning straight from the base model. A later round of RL produced Olmo 3.1 Think 32B and Olmo 3.1 Instruct 32B, which the report treats as its flagships. Its headline claim is that Olmo 3.1 Think 32B is the strongest fully open thinking model released so far, close to Qwen 3 32B on reasoning benchmarks after training on about six times fewer tokens.
The "model flow"
Where olmo-2-furious listed what it released, Olmo 3 names the thing being released: the "model flow", the full lifecycle of a model including "every stage, checkpoint, datapoint, and dependency". The argument is that an endpoint, even with its data, lets you study only the endpoint, while intermediate stages let a researcher intervene anywhere, for example by starting RL from the midtrained base instead of the finished model. A concrete benefit only a fully open reasoning model can offer is that reasoning chains can be traced back to the training data that produced them.
The release follows from that. Weights ship for the end of every stage (base after pretraining, midtraining and long-context extension; SFT, DPO and RL checkpoints for Think and Instruct) along with intermediate checkpoints. Data ships twice: the exact mixes that were trained on, and the full source pools they were sampled from, 9T tokens for pretraining, 2T for midtraining and 640B for long-context extension. Smaller 150B and 10B sample mixes are there for groups without the compute. The code covers OLMo-core for pretraining and SFT, Open Instruct for DPO and RL, datamap-rs and the Rust deduplicator Duplodocus for data processing, the dolma3 recipes, the OLMES evaluation suite, and a new decontamination tool, decon. The comparison set has changed since OLMo 2: the fully open peers are now Stanford's Marin, Apertus and LLM360's K2-V2, and Olmo 3 Base claims to beat all of them.
Cost, stated as wall-clock time
The report avoids a single dollar figure, noting DeepSeek V3's "$5.576M in H800-hours" as the usual style, and reports elapsed time instead. From the start of pretraining to evaluating the first Olmo 3 Think 32B took about 56 days on 1,024 H100s, which the authors price at $2.75M at $2 per H100-hour: about 47 days for the three base stages, crash recovery included, and 9 for post-training, most of it hyperparameter sweeps and evaluation. Olmo 3.1 Think 32B came from continuing the best RL run for another 21 days on 224 GPUs.
Base model
The architecture barely moves from OLMo 2: 32 layers and width 4096 with multi-head attention for 7B, 64 layers and width 5120 with 40 query and 8 key-value heads for 32B, the same cl100k-derived tokenizer, QK-norm, post-sublayer RMSNorm and z-loss. Two things change. Pretraining context doubles to 8,192 tokens, and three of every four layers use sliding-window attention over 4,096 tokens, with the last layer always full attention, to keep long sequences affordable. OLMo-core trains the 7B at 7,700 tokens per second per GPU (about 43% MFU) and the 32B at 1,960 (41%).
Base training has three stages. The 7B pretrains on 5.93T tokens, exactly one epoch of the mix, and the 32B on the same schedule truncated at 5.5T with double the batch (8M tokens). Midtraining is 100B tokens; the 32B runs it twice with different data orders and averages the two, because merging gave it nearly a point on STEM multiple-choice and up to 2.9 on math, while the 7B saw no such gain and uses a single run. Long-context extension adds 50B tokens for 7B and 100B for 32B.
OlmoBaseEval
AI2 rebuilt its base-model evaluation because data decisions are made on small proxy models, which score at chance on math, code and multiple choice. OlmoBaseEval has 43 tasks, four times OLMo 2's, grouped by clustering 23K scores from 70 open models: benchmarks that rank models the same way are treated as measuring the same thing. Small models are judged on a "Base Easy" suite scored in bits per byte, which shows signal before accuracy does, and benchmarks with poor signal-to-noise such as BoolQ were dropped. MMLU-Pro, DeepMind Math, LBPP and BBH are held out.
Dolma 3 and the pretraining pipeline
Dolma 3 Mix is 5.93T tokens sampled from a 9.31T pool: Common Crawl web text 4.51T (76.1%), olmOCR science PDFs 805B (13.6%), Stack-Edu code 409B (6.9%), FineMath 152B (2.6%), arXiv LaTeX 50.8B and Wikipedia 2.5B.
The web pipeline starts from 104 Common Crawl dumps up to the end of 2024, 252.6B documents. DCLM-style heuristic filtering cuts that by 84.6% to 38.8B. Exact, MinHash and a new suffix-array substring deduplication then cut the count by another 75%, to 9.7B documents. The aim is to remove all repetition first and add it back deliberately where quality is highest. Documents are sorted into 24 topics and 20 quality tiers each, 480 buckets over an 8T-token pool.
The science PDFs replace the peS2o papers used before. AI2 crawled them itself as AI2Bot, obeying robots.txt and not getting around paywalls, and converted 238M PDFs to text with its olmOCR model. Filtering left 108M. The personal-information step is document-type aware, using Gemma 3 models to decide whether a document is the kind meant for publication: a conference paper naming its authors stays, a bank statement with the same details goes. How much web data is still available on those terms is the subject of consent-in-crisis-ai-data-commons.
Mixing ratios come from a swarm of 30M-parameter proxy models, each trained on 3B tokens of a different mix, with a regression per task predicting the best mix under a cap of about 4 to 7 repeats per domain. The result heavily upweights science, math and software topics. Inside each topic, quality-aware upsampling replaces flat filtering: instead of keeping the top quartile once, the bottom of the quality range is discarded and the best documents are repeated up to 7 times.
Midtraining
Dolma 3 Dolmino Mix is 100B tokens sampled from a 2.19T pool, and its purpose widens from OLMo 2's math patch to five capabilities: math, code, QA, instruction following and reasoning. Candidate datasets are tested with microanneals (5B tokens of the candidate plus 5B of web, compared against 10B of web alone) and the promising ones go into full 100B integration runs, each followed by a quick SFT to check that base-model gains survive post-training. Five rounds were run; math alone involved 25 sources and 80 microanneals.
Licensing shapes the mix directly. Several of the best synthetic datasets were generated with Llama models and inherit the Llama license, which would require any model trained on them to carry "Llama" in its name. AI2 regenerated them with Qwen3 under the same prompts: CraneMath reproduces SwallowMath (+18.5 MATH and +27.4 GSM8K in microanneals), MegaMatt reproduces MegaMath-Web-Pro-Max, and CraneCode reproduces SwallowCode. New synthetic sets add MATH-style problem variants, QA rewritten from Reddit and Wikipedia, and reasoning traces built around skills such as backtracking, alongside existing traces from QwQ, Gemini and OpenThoughts2, Tülu 3 SFT data, Flan, and high-quality web text.
Putting chat special tokens like <|im_start|> into midtraining data made the base model emit them at inference and dropped GSM8K from 49.4 to 0, while the same data with a plain-text chat format scored 46.0, so the tokens are left for SFT. Including instruction and reasoning data improved every base metric, not just post-training. Skewing the mix trades domains: a math-code-reasoning mix raised math and code but cost multiple-choice and QA, and a QA-heavy mix barely helped QA while hurting math. The decontamination pass found that most leakage came from established datasets like Flan and Nemotron, often whole templated validation or test splits, and removed over 60,000 DROP training examples. Contamination inflated some scores (DROP, Minerva, SQuAD) but not all; a complete GSM8K leak actually scored lower than the clean data, which the report explains, following Marin's authors, by the leaked format not matching the evaluated one.
Long context
Olmo 3 is the first OLMo model with long context, extended from 8,192 to 65,536 tokens. The data is Dolma 3 Longmino, built mostly on the olmOCR PDFs: 22.3M documents over 8K tokens (640B tokens) and 4.5M over 32K (380B), which the report calls the largest openly available collection for long-context research. The mix is 34% long documents and 66% short midtraining data, since the reverse proportion cost 2.5 points on short-context tasks against 0.8. YaRN is applied only to the full-attention layers, documents are packed best-fit with intra-document masking, and synthetic aggregation tasks generated by OLMo 2 Instruct 32B are inserted into long papers. On RULER at 65K the 32B scores 79.7, near Qwen 2.5 32B (80.7) and below Mistral Small 3.1 24B (88.8); the 7B scores 68.0. The extension stage costs some short-context math: the 7B's math composite goes from 59.8 after midtraining to 54.4 after extension.
Against OLMo 2, the base models are much stronger on math, code and science and slightly weaker on general knowledge, which the authors attribute to the STEM upweighting. The 32B base leads the fully open 32B class by double digits on math (61.9 against Marin 32B's 49.3) and code (39.7 against 30.8) and sits a few points behind Qwen 2.5 32B.
Olmo 3 Think
Think uses three post-training stages where most open reasoning models used one or two (OpenThoughts3 and s1 only SFT, SmolLM SFT and DPO). Dolci Think SFT is about 2.27M prompts with traces mostly from QwQ-32B and DeepSeek R1, filtered for licenses, incomplete traces, failed verification, mentions of other developers or knowledge cutoffs, repetition, and "an excessive number of Chinese characters or Chinese political values reflected in reasoning chains". Moving SFT onto OLMo-core made it 8 times faster.
The DPO stage is the report's most interesting post-training result. Further SFT on traces from Qwen3 32B made the model worse (average 70.3 down to 64.5), which the authors read as imitation having saturated. Pairing those same traces as "chosen" against answers from Qwen3 0.6B as "rejected" and running DPO raised the average to 72.9. The "delta learning" idea is that the quality of a preference pair lies in the gap between its two responses, not in either response, so a weak rejected answer makes the pair useful. The gains show up in pass@k as well as pass@1, which the report takes as evidence that DPO extended what the model can solve.
RL uses OlmoRL, a variant of GRPO with changes from DAPO and Dr GRPO: dropping groups whose rewards are all identical, token-level loss normalization, no KL penalty, a higher upper clip, truncated importance sampling to correct for differences between vLLM and trainer probabilities, and no division by the group's standard deviation. Rewards come from verifiers for math (SymPy comparison), code (test cases run on AWS Lambda) and instruction constraints, and from a Qwen3 32B judge for chat. Dolci-Think-RL holds about 105K prompts. Mixing domains lowered training reward but not downstream scores, and training on instruction following alone raised IFEval while dropping AlpacaEval, which the report reads as the mix limiting reward hacking. RL starting from the DPO model beat RL from SFT on every measure.
Inference dominates RL cost. The 32B run used 8 nodes to train and 20 to generate rollouts averaging over 10K tokens, and the learner spent 75% of its time waiting. Asynchronous actors, continuous batching (static batching would have wasted up to 54% of generation compute), "active sampling" to keep batches full of useful samples, and weight updates applied without pausing generation took a benchmark from 881 to 2,949 tokens per second, and the 7B Think RL run from 15 days to 6.
Olmo 3.1 Think 32B continued RL from 750 to 2,300 steps without saturating, gaining over 4 points on AIME, 4 on IFEval and 20 on IFBench while losing 5 on AlpacaEval. Its scores against Qwen 3 32B show where it stands: AIME 2025 78.1 against 70.9, IFBench 68.1 against 37.3, but MMLU 86.4 against 88.8, GPQA 57.5 against 67.3 and LiveCodeBench 83.3 against 90.2. The 7B Think trails Qwen 3 8B on knowledge, which the report attributes to Qwen 3's small models being distilled from Qwen's largest; see llm-distillation.
Olmo 3 Instruct and RL-Zero
Instruct is built for the common case where users want a short answer. Its SFT starts from the Think SFT checkpoint, which added 3.3 points on average with no leftover thinking in responses, and adds function-calling data: trajectories from agents using real MCP servers for scientific literature and web search, plus 200K simulated trajectories. Its DPO combines delta-learning pairs with GPT-judged pairs, and simply modernizing OLMo 2's judge pipeline failed because every model in the pool was good, leaving no contrast between chosen and rejected. Forcing weak models into the pool and taking the worst response as rejected fixed it. Preference data also tends to reward length, so chat pairs were filtered to a length difference of at most 100 tokens; the shorter DPO model scored lower on math but made a better starting point for RL, which then improved both. Olmo 3.1 Instruct 32B reaches 57.9 on AIME 2025 against 21.3 for Qwen 3 32B with thinking off.
RL-Zero exists because the standard open RLVR benchmarks train on open-weight bases whose pretraining data is unknown, so gains can come from contamination: random rewards have been shown to work as well as real ones on such models. With Olmo 3 the whole pipeline is visible. The 7B is trained with RL directly on math, code, instruction following, chat and a mix, using decontaminated prompts and simple templates instead of <think> tags. As a negative control, training with random rewards produced no improvement on any benchmark, which the authors present as evidence that decontamination worked. RL-Zero also doubles as a test for midtraining data: a base without enough reasoning data never learned to lengthen its answers under RL.
Nathan Lambert's ATOM Project page cites Olmo 3 32B Think as the best fully open reasoning model, which is worth reading knowing he is a core contributor to it.