Downloads · 30 days
0
ncgc-mila/GeoNexus-OLMo-20M
GeoNexus-OLMo-20M is a machine learning model from ncgc-mila. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for pytorch. The card lists the license as apache-2.0.
Full checkpoint archive for the 20M-parameter tier of the GeoNexus project: an empirical study of whether cross-source gradient agreement — measured in the outer optimizer's own geometry — causes better downstream gen…
Downloads · 30 days
0
Access
Public
Updated Aug 7, 2026
Repo size
229 GB
Likes
0
Public
Click a slice to open those files.
.pt229 GB · 100%
From the Hugging Face model README
Full checkpoint archive for the 20M-parameter tier of the GeoNexus project: an empirical study of whether cross-source gradient agreement — measured in the outer optimizer's own geometry — causes better downstream generalization, as claimed by the Nexus line of work (arXiv 2604.09258, "Same Pretraining Loss, Better Downstream Generalization via Common Minima").
This tier is the mechanism-and-ablation lab of the project: small enough that a full arm trains in ~40 minutes, so hypotheses are tested with matched controls rather than single runs. The companion repo GeoNexus-130M-pilots holds the larger-scale pilots.
llm_jp_pp/GeoNexus-Olmo (every run here streams there
under the same name)Each run directory contains a final checkpoint plus periodic archives:
<run-name>/ckpt.pt # final (step 1525 for the 400M-token config)
<run-name>/ckpt_step000500.pt # periodic archives, every 500 steps
<run-name>/ckpt_step001000.pt # plus dense archives every 50 steps after step 1000
...
Every file is a plain torch.save dict — including full optimizer state, so any run can be
resumed or re-diagnosed exactly:
| key | contents |
|---|---|
model | state_dict of the GPT model |
opt | optimizer state for the whole optimizer set (Muon + AdamW, or AdamW alone) |
loader | data-loader position (shard, epoch, RNG) for bit-exact resumption |
opt_name | "muon" or "adamw" |
step | training step |
model_cfg, train_cfg | the exact configs used |
import torch
ck = torch.load("o20-dg-base-s42/ckpt.pt", map_location="cpu", weights_only=False)
print(ck["step"], ck["opt_name"], ck["model_cfg"])
# model definition: model.py in the GitHub repo
Note these are research checkpoints, not a released language model — a 20M-parameter model trained on 400M tokens is a measurement instrument, not something to deploy.
| architecture | Llama-style decoder: 8 layers, d_model 256, 8 heads, d_ff 1024, RoPE, RMSNorm, untied embeddings |
| parameters | 24.8M total / 16.6M non-embedding |
| context | 1024 tokens, vocab 32000 |
| data | SlimPajama, 9 sources (arxiv, book, c4, commoncrawl, freelaw, github, pubmedcentral, stackexchange, wikipedia) |
| budget | 400M tokens = 1526 steps × 262144 tokens (batch 8 × grad-accum 32 × 1024) |
| optimizer | Muon (lr 0.02, momentum 0.95, NS-5) on hidden matrices + AdamW (lr 1e-3) on embeddings/norms; WSD schedule |
| precision | bf16 autocast, fp32 master weights |
| seed | 42 throughout (arms are compared through matched controls, not seed replication) |
Held-out evaluation uses in-distribution validation on the 9 training sources plus two out-of-distribution domains (FreeLaw and PubMedCentral held out of the training mixture in the DG cohorts).
o20-<cohort>-<variant>-<dose>-s42, where s42 is the seed and the dose encodes the arm's
hyperparameter (g002 = γ 0.002, lam4e5 = λ 4e-5, r025 = constant ratio 0.25, and so on).
Suffix -b1000 marks the extended-budget (1000-step) variant of an earlier cohort; -e100
marks an earlier eval cadence; -swa3/-swa6 are tail-averaged (checkpoint-averaged) models
built from the dense archives of their parent run.
| prefix | what it studies |
|---|---|
o20-muon-*, o20-adamw-* | the original tier-1 grid: baselines and Nexus variants (l2, adamgeo, geo-v2) under each outer optimizer |
o20-jgap-* | Nexus-D: optimizing the Jensen gap directly via a Danskin two-point probe |
o20-specgd-*, o20-signgd-* | outer-optimizer controls (spectral-descent, sign-descent) — do the effects survive a change of outer geometry? |
o20-dg-* | domain-generalization cohort: base/v2 anchors, srcwindow batching, and literature baselines (SAM, GroupDRO, PCGrad) |
o20-attr-* | attribution controls for the v2 effect: sign-flip, norm-matched random walk, ℓ2-geometry walk, gradient rescale, momentum retunes (μ.96/.97) |
o20-nexusv2e-* | Nexus-v2E: explicit optimizer of v2's implicit objective L̄ − c⟨ḡ, sg(q̄)⟩, at fixed λ, at constant force/gradient ratio, and as a walk-faithful path-ordered twin (p025) |
o20-jw-* | Jensen walks: conform, leap, tight, conformleash — inner walks designed so their implicit objective targets the Jensen gap rather than the transfer score |
o20-v1-*, o20-v2frozen-*, o20-sb-* | mechanism surgery: v1 (both-polar) reference, the frozen-direction walk (steering ablation), and IsoLoCo-style σ̄ outer rescaling |
Headline findings this tier produced (details, tables, and the diagnostic scripts are in the
GitHub repo under results/o20/ and analysis/):
v2frozen) preserves the displacement budget but multiplies the curvature response ~3.6×;
projecting the displacements onto the top Hessian eigendirections shows the sequential walk
suppresses its sharp-subspace components 6–30× per mode. The benefit lives in the walk's
higher-order, trajectory-coupled structure, not in any first-order objective it appears to
descend.These are findings at this scale (20M parameters, 400M tokens, one seed with matched controls). The Nexus paper's own claims are made at 1B+; nothing here settles that regime, and the 130M pilots repo is the intermediate rung.
With the GitHub repo checked out and a checkpoint downloaded:
# fine-tune proximity + sharpness of the per-source minima
python analysis/closeness_sharp.py --ckpt o20-dg-base-s42/ckpt.pt --steps 100 --probe-iters 8
# Jensen gap, transfer score T, and bound tightness on fixed probe batches
python analysis/transfer_probe.py --ckpts o20-dg-base-s42/ckpt.pt
# cross-source gradient similarity in raw / Muon / transfer geometries
python analysis/report_diag.py --ckpts o20-dg-base-s42/ckpt.pt --diag-batches 16
Apache-2.0. Training data is SlimPajama (see its own terms). If these checkpoints are useful in your work, a link back to the GitHub repository is appreciated.