Trainer delta — timing-cheap split-QKV
Sealed candidate kit (claim-stack v1) is public here under kit/ (byte-frozen copies on this site).
Corresponding trainer tree:
rainbowpuffpuff/nocap/kit ↗
· sealed blobs
train_gpt2_split_qkv_cheap_v1.py
/
muon_opt_split_qkv_cheap_v1.py
· evidence
results/claim_stack_v1/ ↗
·
reproduce notes ↗.
Muon attribution: Keller Jordan. Timing-cheap split is this campaign’s banked treatment — not a claim that we invented Muon or Ortho/NS.
Ecosystem context only: Modded-NanoGPT.
Files
| File | Role | SHA-256 (PREREG freeze) |
|---|---|---|
kit/train_gpt2_split_qkv_cheap_v1.py | Sealed candidate trainer | becfce387c3f82ba1a98d2c83d69b8382a99cb406e283e19882a6072a7ac9cbc |
kit/muon_opt_split_qkv_cheap_v1.py | Cheap-split Muon wrapper (same NS×5) | 9086531ff1c70e1eb30473a020f5ec555b91cd489900d8ee8c5e7f3bf06b1b20 |
kit/train_gpt2_split_qkv_v1.py | Joint / dual-polar lineage trainer (contrast) | not the seal freeze |
kit/muon_opt_split_qkv_v1.py | Split Muon with default match_joint_frobenius=True | not the seal freeze |
SHA freeze source: results/claim_stack_v1/PREREG.md ↗.
Verified byte-identical to Claim-W1 and Claim-W2 volume kit_override/ (2026-07-17 pull).
What “timing-cheap” changes
Candidate seal flags:
--muon_split_qkv 1
--muon_split_qkv_match_joint 0
| Mode | Flags | Behavior |
|---|---|---|
| Joint stock control | muon_split_qkv=0 | Fused QKV; historical joint Ortho/NS |
| Dual-polar / match-joint | split=1, match_joint=1 | Three block NS5 maps plus a second joint polar to rescale Frobenius — extra work on the clock (~1.026× step tax → NO-GO) |
| Timing-cheap (sealed) | split=1, match_joint=0 | Three block NS5 maps only — no second polar, no extra closed-form scale |
Same kernel: zeropower_via_newtonschulz5 (Keller Ortho / NS×5). Split ≠ inventing Ortho — see split-vs-ortho-explained.html.
Claim boundary
Sealed wall-clock evidence is the full stack (Muon B32 + timing-cheap split-QKV) vs F1_seal, not Muon-alone and not matched % vs joint Muon stock (N/A). Numbers: NUMBERS_CANON.html.