Quazim0t0's picture
5m-ablation card: two seeds on std/both
a8749d4 verified
|
Raw
History Blame Contribute Delete
3.47 kB

5.7M MC × Fractal RoPE ablation

Four small trains. Same FineWeb-Edu blend, same 10k steps, same looped stack. Only two flags change. This is not Byrne-100M-Ultra-MC. It is the isolation run that 114M card could not do.

directory MC RoPE params Wiki @1024 seed 1 Wiki @1024 seed 2
std/ off geometric 5.70M 34.82 30.86
mc/ on geometric 5.85M 41.23
fractal/ off γ=1 5.70M 40.49
both/ on γ=1 5.85M 32.82 33.32

These folders are seed 1. Seed 2 retrained std and both only (not uploaded here). Eval repeat matched to the printed digits. The seed gap is training, not measurement.

Each folder is config.json + model.safetensors at step 10k. Shared tokenizer is tokenizer.json in this directory (same 16,512 Length-MAX tokenizer as the 114M model; Dong & Su, arXiv:2511.20849).

Load with the SpikeWhale code in the parent repo. These nets are hidden 128, 6 layers, loop ×3, seq 1024, mc_segment_len 256.

What this is allowed to say

MC alone did not help at this size. Worse PPL, worse stretch to 2048/4096.

Fractal alone did not help. Worse PPL, worse stretch.

Putting fractal RoPE on a finished std net after training (nothing else on) did not help. Unique-text 1024: 46.75 → 54.95.

Both together beat std at train length on seed 1 (Wiki 32.82 vs 34.82; unique 26.67 vs 46.75). On seed 2, std won Wiki (30.86 vs 33.32) and unique (13.35 vs 32.03). That 1024 win did not replicate. Past 1024, both still fell off faster than std on both seeds. Stretching the window favoured plain geometric.

MQAR 0/16 on every cell, both seeds.

Why both, maybe

Seed 1 looked like an interaction. Seed 2 did not copy the Wiki win. Gate strength on seed 1 is similar (mean |tanh| ~0.25 on mc vs ~0.26 on both). Sign is not: mc mixed +/−, layer 0 never left zero; both layers 1–4 the same sign. Knock-out: both seed 1 26.67 → 33.93 unique PPL when the gates are zeroed; seed 2 32.03 → 42.45; mc 161 → 170 on an already-bad net. Hypothesis from seed 1: at this width the branch settled next to Cantor frequencies and fought itself next to geometric. It does not explain std unique PPL moving 46.75 → 13.35 across seeds. I would not call both the winner at 5M.

10k steps and “growing” memory

The paper’s Growing Memory (arXiv:2602.24281) is not “the branch gets stronger the longer you train.” It is: cache a memory checkpoint per segment of the sequence, so effective memory can grow with context length (more segments → more cached states, cost between O(L) and O(L²)).

What does grow with training in this implementation is the zero-init mix-in attn_out += tanh(mc_gate) * mc_out. At step 0 that is a no-op. On the 114M run, knock-out went from ~9% PPL early to −16.7% on DPO, and mean |tanh(gate)| reached ~0.60. On these 5.7M nets at 10k, |tanh| is ~0.25. So 10k may be early for the mix-in to finish opening, especially the mc-only cell whose gates never aligned. That is from these weights, not a claim in the paper. A longer 5M train could still change the table. I have not run one.

Files

5m-ablation/
  README.md
  tokenizer.json
  std/       config.json  model.safetensors
  mc/        config.json  model.safetensors
  fractal/   config.json  model.safetensors
  both/      config.json  model.safetensors