File size: 10,994 Bytes
aaaee9d ec3e367 aaaee9d 345ef54 9a377db ec3e367 aaaee9d ec3e367 7862528 dba668c 7862528 ec3e367 7862528 ec3e367 aaaee9d ec3e367 aaaee9d 7862528 aaaee9d 7862528 aaaee9d 7862528 dba668c 7862528 aaaee9d ec3e367 7862528 ec3e367 7862528 ec3e367 7862528 ec3e367 7862528 ec3e367 aaaee9d 7862528 aaaee9d ec3e367 aaaee9d 7862528 ec3e367 aaaee9d ec3e367 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | ---
license: apache-2.0
base_model:
- allenai/Olmo-3.1-32B-Think
pipeline_tag: text-generation
language:
- en
tags:
- olmo
- mathematics
- olympiad
- theorem-proving
- reasoning
- imo
---
# FM-Pochi-32B
A 32B fully open-source **reasoning** model fine-tuned for writing **mathematics proofs**. It continues training from AllenAI's [**OLMo 3.1 32B Think**](https://huggingface.co/allenai/Olmo-3.1-32B-Think), with an
**attention-sink** modification and a transplanted **DeepSeek tokenizer**, and is
trained to emit a long `<think> … </think>` reasoning trace followed by a complete
written solution. The recommended checkpoint is **`opd-32b-bf16-step-225`** ("step-225").
> **Training cutoff — no IMO 2026 contamination.** Every checkpoint in this
> repository was trained **before IMO 2026 began**: before **09:00 on 15 July 2026,
> Shanghai time (UTC+8)**, the local start of the competition. The IMO 2026 problems
> were not public before that moment, so they cannot appear in any training data.
| Benchmark | Result | Grader | Setting | Solutions |
|---|---|---|---|---|
| **IMO 2026** | **21 / 42 — Bronze medal** | [Human expert (ex-IMO)](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/tree/main/imo_2026_eval) | step-225, `high` budget | [solutions.csv](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/blob/main/imo_2026_eval/raw/imo2026-step225-budget-high-tournament_submission.csv) |
| **IMO 2025** | **30 / 42 — Silver medal** | GPT-5.6-sol | step-225, `high` budget | [solutions.csv](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/blob/main/benchmarks/imo-2025/solutions.csv) |
| **IMO-ProofBench-V2** | **66.4%** (mean **4.65 / 7**) | GPT-5.6-sol | step-225, `medium` budget | [solutions.csv](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/blob/main/benchmarks/imo-proofbench-v2/solutions.csv) |
<sub>**Grader** — IMO 2026 solutions were graded per-problem by **human experts
(former IMO competitors)** against broad IMO standards. IMO 2025 is scored by
**GPT-5.6-sol** (xhigh) against the [MathArena](https://matharena.ai) `imo_2025`
checkpoint markschemes — full marks (7 points) for a complete proof by any method, partial credit
for genuine checkpoints, 0 for a wrong answer; IMO-ProofBench-V2
by the same autograder following the ProofAutoGrader protocol of
[arXiv:2511.01846](https://arxiv.org/abs/2511.01846). All numbers use the
generate–verify–refine harness (see **Inference** below), not single-shot decoding.
Details in [Evaluation](#evaluation).</sub>
## Checkpoints in this repository
Each sub-folder is a self-contained BF16 checkpoint (config + safetensors). Point
your loader at the sub-folder, not the repo root.
| Sub-folder | What it is |
|---|---|
| **`opd-32b-bf16-step-225`** | **Recommended.** Strongest single-step checkpoint; all reported numbers use this. |
| `opd-32b-bf16-step-125` … `-250` | Individual training-step checkpoints (125, 150, 175, 200, 225, 250). |
| `opd-32b-bf16-merged-*` | Weight-averaged ("model-soup") checkpoints over a range of steps. |
If you only want the best model, download `opd-32b-bf16-step-225`.
## Architecture
A dense decoder-only transformer derived from **OLMo 3.1 32B (Think)**, with two
modifications relative to stock OLMo:
- **Attention sink** — per-head learned attention-sink logits (the `Olmo3Sink`
variant). **The inference stack must apply the attention-sink patch.** Loading the
weights in an unpatched runtime silently produces **wrong numerics** (no sinks).
- **DeepSeek tokenizer** — the original OLMo tokenizer is replaced with DeepSeek's,
with the embedding / LM-head re-fit accordingly.
Other properties: BF16 weights, **262,144-token** context, "Think" reasoning format
(a `<think> … </think>` block, then the solution.
## Training
Starting from [OLMo 3.1 32B Think](https://huggingface.co/allenai/Olmo-3.1-32B-Think),
the model is adapted and then **distilled** for proof writing against a **DeepSeek-V4-Flash**
teacher:
1. **Base adaptation** — transplant the **DeepSeek tokenizer** (embeddings re-fit) and
add the **learnable attention sink**, so the OLMo body runs in DeepSeek's token
space with stable long-context attention.
2. **Stage-1 SFT** — supervised fine-tuning to establish proof behaviour: formatting,
mathematical style, and long-form `<think>` traces (~20 B tokens, max length 12,288).
3. **Full-vocab soft distillation** — offline distillation against the teacher's *full*
next-token distribution: teacher hidden states are stored and the full-vocab logits
reconstructed through the LM head, then KL/JSD to the student. Context length is
raised to **128 k**.
4. **Full-vocabulary OPD** — the final on-policy distillation stage matches the
teacher's **full next-token distribution** (as in step 3), not just its sampled or
top-k outputs.
The model is trained to play every role in the inference harness — **prover, verifier,
refiner and selector**.
## Inference
**Inference code (harness + Docker):**
[**inference harness on GitHub**](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot)
Because of the attention-sink modification, run this model through the provided
harness (patched SGLang) rather than a stock loader. The repository ships a
self-contained Docker image and a `scheduler.sh` launcher that apply the required
`Olmo3Sink` patch at boot; a hand-rolled `python -m sglang.launch_server` that
bypasses them runs **unpatched** and produces wrong outputs.
The reported numbers come from a **generate–verify–refine** harness
(best-of-N proving → self-verification → refinement, with an optional LLM
final-solution selector), configured by the checkpoint × budget presets
`config-model-step225-budget-{medium,high,xhigh}.yaml`:
| Preset | proofs/round | verifications/proof | top | refine parents × reviews | rounds |
|---|--:|--:|--:|---|--:|
| `medium` | 32 | 16 | 8 | 4 × 3 | 4 |
| `high` | 64 | 32 | 16 | 4 × 3 | 8 |
| `xhigh` | 128 | 64 | 32 | 4 × 3 | 8 |
Quick start (from the harness repo, on an 8×H200 node):
```bash
./download_models.sh step225 # fetches opd-32b-bf16-step-225 (+ DFlash draft)
./scheduler.sh config-model-step225-budget-xhigh.yaml /workspace/runs/step225-xhigh
```
Optional **DFlash speculative-decoding draft** and the sibling **deploy** checkpoint
live in [a separate HuggingFace repository](https://huggingface.co/fieldsmodelorg/Olmo-3.1-32B-Think-OPD-ProofPilot).
## Evaluation
### IMO 2026
step-225 at the `high` budget, graded per-problem by human experts (former IMO
competitors) against broad IMO standards (no markscheme was available). The proofs are
the tournament
[`solutions.csv`](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/blob/main/imo_2026_eval/raw/imo2026-step225-budget-high-tournament_submission.csv);
per-problem
[`scores.csv`](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/blob/main/imo_2026_eval/scores.csv)
and full commentary are in
[`imo_2026_eval/`](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/tree/main/imo_2026_eval).
| P1 | P2 | P3 | P4 | P5 | P6 | Total |
|--:|--:|--:|--:|--:|--:|--:|
| 7 | 0 | 0 | 7 | 7 | 0 | **21 / 42** |
Medal boundaries this year were Bronze 16 / Silver 23 / Gold 29, so **21 is a
Bronze**, just short of Silver. `xhigh` reruns independently reproduced P1, P4 and P5
at 7 each.
### IMO 2025
step-225 at the `high` budget, on all 6 problems, scored 0–7 by **GPT-5.6-sol** (xhigh)
using the [MathArena](https://matharena.ai) `imo_2025` **checkpoint markschemes**. The
proofs, per-problem scores, and the reproducible grading prompts are in
[`benchmarks/imo-2025/solutions.csv`](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/blob/main/benchmarks/imo-2025/solutions.csv)
(the markscheme is embedded in the prompts, so re-running them reproduces the scores).
| P1 | P2 | P3 | P4 | P5 | P6 | Total |
|--:|--:|--:|--:|--:|--:|--:|
| 7 | 7 | 2 | 7 | 7 | 0 | **30 / 42** |
The 2025 medal boundaries were Bronze 19 / Silver 28 / Gold 35, so **30 is a Silver** —
the model clears the Silver cut-off on IMO 2025.
- **Full marks (7): P1, P2, P4, P5** are complete rigorous proofs — including **P2**,
solved by a full coordinate-geometry computation (a valid alternative to the synthetic
solution; the route OpenAI and Gemini also took). A complete proof by *any* method earns 7.
- **Partial (P3 = 2):** the correct answer (c = 4) and a valid construction, but the
upper-bound crux — the identity-function branch — is "closed" by a false step, so only
the construction checkpoint is earned.
- **Zero (P6 = 0):** a wrong final answer (4048; the correct answer is 2112).
This is an LLM grade (GPT-5.6-sol + independent verification), not human coordination.
### IMO-ProofBench-V2
step-225 at the `medium` budget, on all 60 problems (30 Basic + 30 Advanced), scored
0–7 by the **GPT-5.6-sol** autograder following the ProofAutoGrader prompt of
[arXiv:2511.01846](https://arxiv.org/abs/2511.01846) (Luong et al., 2025). Full
solutions and per-problem scores:
[`benchmarks/imo-proofbench-v2/solutions.csv`](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot/blob/main/benchmarks/imo-proofbench-v2/solutions.csv).
| Subset | Problems | Mean / 7 | % of max |
|---|--:|--:|--:|
| **Overall** | 60 | **4.65** | **66.4%** |
| Basic | 30 | 6.45 | 92.1% |
| Advanced | 30 | 2.84 | 40.6% |
Numbers are averaged from 8 LLM gradings (grader self-consistency is high — 57/60 unanimous across 4 LLM judges). Please note that IMO-ProofBench-V2 results are usually graded using Gemini-2.5-Pro in previous literature, but we find GPT-5.6-Sol to be more precise and strict.
<sub>Benchmark problems, reference solutions and grading guidelines from
[google-deepmind/superhuman/imobench](https://github.com/google-deepmind/superhuman/tree/main/imobench)
(CC-BY 4.0).</sub>
## Intended use and limitations
- **Intended use:** research on olympiad-level mathematical reasoning and automated
proof generation. Designed to be driven by the generate–verify–refine harness.
- **Limitations:** weak on hard combinatorics/geometry and on problems requiring
synthetic (non-computational) geometry; can produce fluent-but-wrong "hallucinated
rigor" (fabricated load-bearing steps). Proofs should be independently verified.
- **Reproducibility:** the IMO'2026 and IMO-ProofBench-V2 results are stable accross multiple inference runs.
## Related repositories
- **Inference code / harness:** [GitHub repository](https://github.com/fieldsmodelorg/AIMO-Proof-Pilot)
- **Sibling `deploy` checkpoint + DFlash draft:** [HuggingFace repository](https://huggingface.co/fieldsmodelorg/Olmo-3.1-32B-Think-OPD-ProofPilot)
- **Base model (continued training from):** [`allenai/Olmo-3.1-32B-Think`](https://huggingface.co/allenai/Olmo-3.1-32B-Think)
## Acknowledgements
We thank the [Fields Model Initiative](https://www.fieldsmodel.org/) and
[LLMC NII](https://llmc.nii.ac.jp/en/) for providing the resources that made this work
possible.
|