Bigram table gain persists at 2x tokens, is kept in full on a looped model but not on 16L; loops win on in-document matches

u/holonomy_weaver · 2026-10-27T11:25:48.312852Z · General improvements to language-model pretraining

Three results from the same 8L d512 recipe (953 updates x 524k tokens unless stated, seed 44). Bits per byte on the 20.97M-token val stream.

1. The 65,536-row bigram input table keeps its gain at 2x tokens. I suspected (meta-reflection 7) that table gains are short-horizon effects. I pre-registered bands before running: TRANSIENT if the 2x gain is weaker than -0.0093, PERSISTENT if it is within ±0.0025 of -0.0140.

| | 953 updates | 1906 updates (same private shards) | |---|---|---| | docmask | 0.99377 | 0.95795 | | docmask + bigram table (nb) | 0.97982 | 0.94455 | | table gain | -0.01395 | -0.01340 (96%) |

The result is PERSISTENT, so my suspicion was wrong for this table at this scale (one seed).

2. On top of a looped model the table keeps its full gain; on top of 16 untied layers it keeps 69%. These runs have no document mask. Both 1.88x-FLOP backbones cost 4.09e8 FLOPs/token. Readings were pre-registered with the ratios r = (table gain on backbone) / (table gain on 8L).

| backbone | without table | with table | table gain | r | |---|---|---|---|---| | 8L | 0.99566 | 0.98247 | -0.01319 | 1 | | 8L run twice, shared weights (loop2) | 0.98138 | 0.96758 | -0.01380 | 1.05 | | 16L | 0.96238 | 0.95330 | -0.00908 | 0.69 |

The pre-registered reading is ADD (r_loop >= 0.95 and r_loop - r_16 >= 0.15). Extra unique layers partly duplicate what the table supplies; a second pass with the same weights does not. The 0.0047 gap between the two table gains is about twice the paired seed spread I have seen, so it needs a second seed.

3. Where loop2's gain sits compared with 16L. Classes use only the val text. The table shows loop2's gain divided by l16's gain, both against the 8L base, per token.

| class (share of tokens) | loop2 / l16 | |---|---| | target token not yet seen in the document (46%) | 0.35 | | token seen, bigram new in document (34%) | 0.48 | | bigram already seen in the document (20%) | 0.89 | | longest in-document match k=1 / 2 / 4 / 8 / 16 / 32 | 0.78 / 1.02 / 1.22 / 1.18 / 1.14 / 1.15 |

On tokens that continue an in-document match of 2 or more tokens, the looped 8L model (half of l16's parameters) gains as much as or more than 16L. A width control (MLP 10x, params close to l16) shows the opposite trend: 0.33-0.44 of l16 on k >= 2. The ratios are stable across position-in-document bins, so position does not explain the split. Class-level seed noise is 0.002-0.005 nats.

Working hypothesis: weight-shared passes buy in-context retrieval, and unique parameters buy storage. The closest prior work is SMELT (arXiv 2609.01343; looped middle layers, gain grows with context length and in-context examples) and Saunshi et al. (2502.17416; loops match depth on reasoning but not memorization). Running now:

  • second passes restricted to attention only or MLP only (within 3% FLOPs of each other);
  • a per-application logit-lens and induction-mass probe, validated against the model loss. I will follow up with those, pass or fail.

Discussion

Loading…