Downloads · 30 days
4
10% of all-time downloads
markhenry/topk-small-65k-wallclock-matched
topk-small-65k-wallclock-matched is a machine learning model from markhenry. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
A 1,813.94M-parameter 12L/d=1024 GPT with a flat learned-dictionary TopK SAE bottleneck at mlpin (dictionary 65,536, k=48). This is the learned-dictionary control for CayleySAE / ParityTransformer — same chassis, same…
Downloads · 30 days
4
10% of all-time downloads
All-time downloads
41
Public
Repo size
14.7 GB
Likes
0
Public
Click a slice to open those files.
.pt14.7 GB · 100%
From the Hugging Face model README
A 1,813.94M-parameter 12L/d=1024 GPT with a flat learned-dictionary TopK SAE
bottleneck at mlp_in (dictionary 65,536, k=48). This is the
learned-dictionary control for CayleySAE / ParityTransformer — same chassis,
same insertion point, same sparsity; the dictionary is learned instead of
parity-hashed.
This model was trained for 9.713 hours on 8×A100, the wall-clock that PT-Small-2L consumed for its 20B-token run.
The hardware is not identical. PT-Small-2L trained at ~572k tok/s on its host; this host runs the identical script at ~800k tok/s — 1.40× faster. So 9.713 h here buys roughly 40% more effective compute than the reference model ever received. That asymmetry is deliberate: the control was given every opportunity to win. Do not describe this as a same-hardware wall-clock match.
At the measured 122,818 tok/s this budget yielded 4.294B tokens (2,730 iters at 1,572,864 tok/iter — the same tok/iter as PT-Small-2L, so iteration counts are directly comparable).
| file | iter | tokens | note |
|---|---|---|---|
ckpt_final.pt | 2,730 | 4.294B | the deliverable; fully warmed down |
ckpt_iter002000.pt | 2,000 | 3.146B | trajectory snapshot, un-annealed |
ckpt_iter002000.pt sits only 89 iters into an 819-iter warmdown (LR still
~1.07e-2). It is a lower bound on what a genuinely ~7.1 h-budgeted run would
reach, because the end-of-run anneal is exactly what it lacks. Use it as a
trajectory point, not as a "7.5 h arm".
| architecture | 12 layers, d=1024, 8 heads, learned pos enc |
| bottleneck | TopK SAE at mlp_in, dict 65,536, k=48, unit-norm decoder |
| params | 1,813.94M = 202.53M backbone + 12 × 134.28M dictionary |
| data | FineWeb-Edu sample-100BT, 4.294B tokens |
| optimizer | Muon 1.2e-2 / AdamW 1.2e-2 (lockstep), momentum 0.95, ns_steps 5 |
| schedule | linear_warmdown, warmup 200, wf=0.3 (819 warmdown iters from 1,911) |
| batch | bs8 × ga192 (global), seq 1024 → 1,572,864 tok/iter |
| hardware | 8×A100-SXM4-80GB, 55.5 GB/GPU peak |
wf=0.3, not PT's 0.9, because at 4.29B tokens against D* ≈ 20 × 1.81B ≈ 36B this run sits at ~0.12× Chinchilla saturation, where a super-Chinchilla warmdown fraction would handicap it. Each arm gets the schedule appropriate to its budget.
Dictionary width is PT-Small-2L's unfolded feature count (32,768 × 2 polarity faces), since polarity faces are the units the interpretability claims are made in.
On identical hardware, PT-Small-2L trains at ~800k tok/s and this model at 122,818 tok/s — 6.5× slower for the same feature count and sparsity, because a learned dictionary materializes 2·d·dict_size parameters per layer where the parity construction adds none.
Training script train_topk_small_65k_wallclock_matched.sh is included in this
repo. Full experimental record: mh/reports/45-t6c-wallclock-matched-topk65k.md.
wandb: h76qtfjv