summaryrefslogtreecommitdiff
path: root/NOTES-PHASE3.md
diff options
context:
space:
mode:
Diffstat (limited to 'NOTES-PHASE3.md')
-rw-r--r--NOTES-PHASE3.md58
1 files changed, 33 insertions, 25 deletions
diff --git a/NOTES-PHASE3.md b/NOTES-PHASE3.md
index b7b1631..5eea353 100644
--- a/NOTES-PHASE3.md
+++ b/NOTES-PHASE3.md
@@ -132,28 +132,36 @@ as a path to a grokking result on its own.
place-value parsing was a real tax on learning. / within ±10 points → parsing was not the
bottleneck; the algorithmic content is the wall."
-**Commentary.** **UNRESOLVED — evaluation crashed on all three integer-token runs**, so the
-locked ±10-point val-EM comparison cannot be scored. The three runs (`int` rnn, `int`
-transformer, `int01` rnn) all completed 200k training steps with `train_em 1.0`, then died in
-the evaluator with `IndexError: index out of range in self` inside `torch.nn.functional.embedding`
-(`rnn._encode` / `transformer.forward` → `self.embed`), reached from `probe_report` → `greedy_decode`.
-The integer-vocab token IDs exceed the embedding's vocab size of 103 (eos=102, pad=103). No
-`results.json` was written, so there is no clean best/last EM and no probe.
-
-Training-time val EM (from the logs) is the only signal, and it is **far below** the digits
-control rather than above it: best_val_em was 0.133 (`int` rnn), 0.100 (`int` transformer),
-0.067 (`int01` rnn), with val EM oscillating ~0.000–0.067 throughout. The digits-mode controls at
-the same wd scored 0.367 (rnn 1.0), 0.867 (transformer 1.0), 0.700 (rnn 0.1). So the integer
-tokens are ~23–80 points *below* the digits control — the opposite of the "parsing tax" lift.
-If this provisional training-time reading holds after the fix, D2 points at **parsing was not the
-bottleneck** (arguably integer tokens even hurt, e.g. by collapsing the halting gate to the floor,
-halt mean 2.00 in `int01`), but this is a bug report, not a scientific negative.
-
-**Caveats.** The crash is a real evaluator bug (integer vocab not wired through the probe/eval
-embedding), not a model failure; the training-time val_em numbers above are not the locked metric.
-Until the vocab bug is fixed and the runs re-evaluated, D2 contributes no clean measurement.
-
-**Implications for E6.** Fix the integer-vocab eval bug before any [2,1000] run that might want
-`vocab_mode=integers`; note that at range [2,1000] the inputs are 1–4 digits, so digits mode (with
-a widened embedding/position budget) is the natural default anyway. Do not carry the parsing-tax
-hypothesis into E6 as if confirmed — the provisional signal points the other way.
+**Commentary.** First evaluation crashed (out-of-vocab probe inputs: atomic tokens ≥ 104 exceed
+the vocab — out-of-range probing is unrepresentable by construction for integers mode). Fixed:
+probe is now N/A for integers mode (regression-tested); D2 is scored on in-range val EM, the
+only metric its locked clause uses.
+
+| job | model | wd | val EM best | val EM last | O | P | H | digits control (best/last, same wd) |
+|-----|-------|----|-------------|-------------|---|---|---|--------------------------------------|
+| int | rnn | 1.0 | 0.133 | 0.000 | O2 | N/A | H4 | 0.367 / 0.167 |
+| int | transformer | 1.0 | 0.100 | 0.067 | O2 | N/A | — | 0.867 / 0.700 |
+| int01 | rnn | 0.1 | 0.067 | 0.000 | O2 | N/A | H1 | 0.700 / 0.567 |
+
+All three cells are **20–77 points BELOW** the digits-mode control. Neither locked branch
+fires literally (the "within ±10 points" branch was written expecting a flat outcome; the
+measured outcome is a collapse). The measured fact, reported without a locked claim:
+**atomic integer tokens destroy the task** — every run is O2 (train memorizes, val ≈ 0),
+even the transformer that reaches 86.7% in digits mode.
+
+**Interpretive commentary (post-hoc, separated).** The digit representation was not a tax —
+it was the scaffolding. Compositionality is what let any generalization exist at all: in
+digits mode the model shares structure across "42", "43", "4", "3" (tens digit, units digit,
+position); in integers mode every number is a unique, once-seen token with nothing shared,
+so there is nothing to generalize — pure memorization, and even that barely holds under wd.
+This inverts the reviewer's hypothesis: removing the parsing overhead removed the substrate
+the in-range heuristic was built on.
+
+**Caveats.** Seed 0, three cells only. "Probe N/A" is a representational fact of the encoding,
+not a measurement failure. The integer-token task also changed the output distribution shape
+(2-token outputs) — the collapse is attributable to the input representation change, but that
+change bundles several things (no positional structure, unique tokens, shorter sequences).
+
+**Implications for E6.** Digits mode is not just the default — it is load-bearing. The [2,1000]
+phase should use digits (inputs are 1–4 digits there anyway) and treat integer tokens as a
+known-broken encoding, not a diagnostic toggle worth re-running.