NoCap-Test evidence · think2earn claim boundary · split ≠ Ortho
Source code ↗

Learn the claim boundary · code-adjacent

Split ≠ Ortho

Keller NS×5 Ortho vs timing-cheap split-QKV · two mechanisms, one sealed stack

Two different things get conflated under Muon talk. Ortho / NS×5 is Keller Jordan’s Muon kernel — Newton–Schulz orthogonalization of the momentum update. Timing-cheap split-QKV is a separate campaign mechanism: treat Q, K, and V as separate matrices under that same Muon.

Split wrappers still call the same Ortho kernel. Separating QKV does not invent Muon. The sealed wall-clock claim needs both pieces in the stack — not Ortho alone, not split alone.

From Keller Jordan’s blog (reference) Ortho ≈ newtonschulz5; separate Q/K/V is a layout preference under Muon, not the Ortho kernel.

Our implementation Kit zeropower_via_newtonschulz5 + timing-cheap split flags muon_split_qkv=1 · match_joint=0.

Our commentary Two-column compare and beats teach the claim boundary. No sealed ΔT% invented here — full stack vs F1_seal lives on the report.

Ortho = NS ×5 split = Q/K/V layout same NS still called seal needs both

Muon · #split-vs-ortho split-qkv-explained GLOSSARY NUMBERS_CANON

Visual · split ≠ Ortho · same NS TT matrix-transpose pattern · Play / Step

Beat 01

Layout ≠ kernel

Joint QKV vs split Q/K/V — not the same as Ortho/NS.

Beat 02

Converge

Separate paths merge into one Ortho kernel.

Beat 03

Same NS ×5

Newton–Schulz output identical; layout does not redefine Ortho.

layoutjoint · split
kernel
NS steps
claimsplit ≠ Ortho

Beat 01 · Layout — Ortho is the kernel; split is Q/K/V shape. Different columns.

TensorTonic-style step transport (cf. matrix-transpose layout walkthrough + adam-optimizer Step readouts). Play or Step through layout → converge → same NS; walkthrough cards below sync via data-beat. Schematic only — sealed ΔT% stays on the report.

Definition

Ortho / NS×5 = approximate nearest semi-orthogonal update via five Newton–Schulz steps (blog newtonschulz5 · kit zeropower_via_newtonschulz5). That is Muon’s distinguishing kernel.

Timing-cheap split-QKV = campaign architecture path that runs separate Q, K, V under Muon with low step-time tax (vs dual-polar, which was killed). It is not a new Ortho algorithm.

One-line claim boundary

Ortho = Keller Muon kernel
Split = Q/K/V treatment under that kernel
Seal = Muon B32 + timing-cheap split vs F1_seal

Problem 01 · contrast Ortho vs Split

Side by side — what each thing is

Left column is the optimizer kernel. Right column is the attention layout / campaign bank. Same Muon training run can use both; they answer different questions.

COLUMN A · KERNEL Ortho / NS×5

Momentum update → Newton–Schulz → semi-orthogonal step.

  • Keller Jordan Muon
  • Attribution required
  • Claim pin: NS 5

kit/muon_opt.py · zeropower_via_newtonschulz5

blog: newtonschulz5 ≈ Ortho(G)=UVᵀ

COLUMN B · LAYOUT Timing-cheap split-QKV

Separate Q, K, V matrices instead of one fused QKV projection.

  • Campaign banked mechanism
  • Not inventing Muon
  • Flags: split=1 · match_joint=0

kit/muon_opt_split_qkv_*.py

still calls zeropower_via_newtonschulz5

Two mechanisms. One sealed stack uses both. Neither column is a sealed ΔT% by itself.

Visual · Shared NS under either layout Our commentary
LAYOUT (SPLIT OR JOINT) joint QKV split Q/K/V SAME ORTHO KERNEL NS ×5 zeropower · newtonschulz5 W ← W − η · Ortho(G) Muon step · layout does not redefine Ortho Candidate arm = split layout Stock control = joint · same NS split ≠ inventing Muon

Schematic only. Sealed percentages stay on the report / NUMBERS_CANON.

Problem 02 · shared kernel same NS

Same Newton–Schulz is still called

Timing-cheap split changes how QKV weights are shaped and stepped. It does not replace Ortho. Split wrappers call the same zeropower_via_newtonschulz5 used by joint Muon.

Ortho/NS  →  kit/muon_opt.py · zeropower_via_newtonschulz5
Split path  →  kit/muon_opt_split_qkv_*.py · calls same NS
Dual-polar  →  killed (CE edge, step tax ≈ 1.026) · not Ortho either
Not inventing Muon via split. Keller’s public Ortho/NS stays attributed. Blog note that separate Q/K/V often helps under Muon is a layout preference — our timing-cheap path is the banked campaign implementation of that class of idea, not a redefinition of Ortho. Detail: split-qkv-explained.html · Muon primer: muon-explained.html#split-vs-ortho.
Problem 03 · seal composition both required

Sealed claim needs both

Plain Muon compose failed or lost under our seal (FAILURE_LEDGER). What was sealed is the composed candidate: Keller Muon on a B32 systems path plus timing-cheap split-QKV, scored vs sealed AdamW F1_seal only.

Piece Role Alone a sealed ΔT%?
Ortho / NS×5 Muon kernel (Keller) No — not Muon-alone % on explainers
B32×accum16 Systems path (banked) No — step-time component only
Timing-cheap split-QKV Layout / campaign bank No — mechanism, not full seal
Full candidate stack Muon B32 + timing-cheap split Yes — vs F1_seal on report

Published mean ΔT% and seed table live on report.html / NUMBERS_CANON — not invented on this page.

Hedges / non-claims

Split ≠ Ortho/NS. Separating QKV does not invent Muon and does not redefine Newton–Schulz.

No sealed wall-clock % invented on this page. Full stack vs F1_seal only — see report / NUMBERS_CANON.

Matched candidate-vs-joint-stock first-cross ΔT% = N/A where measured. Not an official NoCap win.