NoCap-Test evidence CSVs
Public, same-origin logs behind the Verify section of the report. Every published percentage on the page can be recomputed from these files with three lines of arithmetic.
Columns
Each file shares the same header:
| Column | Meaning |
|---|---|
step | Optimizer update index (0 → 4768). |
tokens | Cumulative tokens seen. |
train_time_ms | Measured training clock in milliseconds (validation is paused; compile warmup is inside the measured path). This is the speed clock. |
step_avg_ms | Rolling average step time. |
lr | Learning rate at that row. |
train_loss | Training cross-entropy (diagnostic). |
val_disjoint | Official disjoint validation loss. This is the quality gate. Lower is better. |
val_sliding | Sliding-window val (diagnostic only — never defines the cross). |
ema_val_disjoint / ema_val_sliding | EMA diagnostics (unused for the claim). |
Rows where val_disjoint is blank are training-only steps; validation rows are logged periodically.
Files
| File | Run | Role |
|---|---|---|
f1_seal.csv | Stock AdamW baseline, Clock-W | The sealed public denominator. First-cross @ step 4736, val_disjoint = 3.381538, train_time_ms = 13,918,667.5 → T = 3.866 h. |
f1_claim_w2.csv | F1 re-seal, Claim-W2 | Same-workspace baseline check. First-cross @ step 4768, val 3.380977, train_time_ms = 13,889,386.9 → 3.858 h (~+0.2% vs F1_seal). |
s2029_cand.csv | Candidate (Muon B32 + timing-cheap split-QKV), seed 2029 | First-cross @ 4736, val 3.372588, train_time_ms = 12,840,827.6 → 3.567 h, +7.7% vs F1_seal. Terminal CE 3.369498. |
s2029_stock.csv | Joint-QKV stock control, seed 2029 | Never crosses 3.3821 (min val_disjoint = 3.384017, terminal 3.384017). This is the quality ablation, not a speed denominator. |
s4242_cand.csv | Candidate, seed 4242 | First-cross @ 4736, val 3.373309, train_time_ms = 12,640,470.5 → 3.511 h, +9.2% vs F1_seal. Terminal CE 3.370249. |
Recompute the claim (three lines)
For any candidate CSV:
- First-cross = the first row where
val_disjoint ≤ 3.3821. - T_h =
train_time_msat that row ÷ 3,600,000 (i.e./ 3.6e6). - ΔT% =
100 × (3.866 − T_h) / 3.866, where 3.866 h is the sealed F1_seal denominator.
Worked example — s2029_cand.csv:
first-cross row: step=4736, val_disjoint=3.372588, train_time_ms=12,840,827.6
T_h = 12,840,827.6 / 3.6e6 = 3.5669 h
ΔT% = 100 × (3.866 − 3.5669) / 3.866 = +7.7%
A minimal check (Python, standard library only):
import csv
TH, BASE = 3.3821, 3.866
for fn in ["f1_seal","s2029_cand","s4242_cand","s2029_stock","f1_claim_w2"]:
rows = [r for r in csv.DictReader(open(fn + ".csv")) if r["val_disjoint"].strip()]
cross = next((r for r in rows if float(r["val_disjoint"]) <= TH), None)
if cross:
Th = float(cross["train_time_ms"]) / 3.6e6
print(fn, "cross@", cross["step"], "T_h=%.4f" % Th, "dT%%=%+.1f" % (100*(BASE-Th)/BASE))
else:
print(fn, "never crosses (min val =", min(float(r["val_disjoint"]) for r in rows), ")")
Seed 1337 — summary-only (no CSV)
Seed 1337 has no downloadable CSV here. Its sealed numbers come from the seed summary:
- First-cross @ step 4736,
val 3.3741→ T = 3.553 h, +8.1% vs F1_seal, terminal CE 3.3710. - Stock control (joint QKV): terminal 3.3848, no cross.
On the page, the seed 1337 chart marker and table row are labelled summary-only for this reason. Do not treat its hours as CSV-derived.
Claim boundary
The published comparison is candidate vs our sealed F1_seal (3.866 h) on the matched pin (A100-SXM4-40GB · torch 2.13.0+cu130) — not an official NoCap-Test win, and not a matched candidate-vs-stock first-cross speedup (the stock control never crosses where it was run, so that ΔT% is N/A). See ../NUMBERS_CANON.md for the canonical table.