Quality recovered via post-surgery SFT (held-out ppl 50.0 vs 41.5 for the 6-layer original)
Note: The HuggingFace model card may display ~10M parameters and an "8-bit" quantization badge. Both are artifacts of reading the packed model.safetensors directly. The actual model has 40.2M stored parameters quantized to 1/3/4-bit.
"Scratch" carries two meanings: built for Scratch, trained from scratch.
How it differs from SSMoELM-it
SSMoELM-it
SSMoELM-it-5L
Stored layers
6 (0–5)
5 (0,1,2,3,5 — layer 4 dropped)
Compute passes
6
6 (layer 3 runs at depths 3 and 4, separate KV caches)
Embedding
4-bit
3-bit
Stored params
47.0M
40.2M
Active params / pass
25.8M
25.8M (unchanged)
Packed size
12.1 MB
10.2 MB
Scratch sb3
12.3 MB (over limit)
9.6 MiB (uploadable)
Held-out ppl
41.5
50.0
The stored-layer / pass mapping is recorded in the safetensors __metadata__
(layer_ids=[0,1,2,3,5], pass_order=[0,1,2,3,3,5]) and picked up automatically by inference.py.
How this variant was made
Ablation (no training): among 8 drop/repeat configurations, drop layer 4 + repeat layer 3 degraded least (ppl 76.3 with 3-bit embedding).
Recovery SFT: same data as SSMoELM-it (Dolly-15k + oasst1 EN), lr 1e-5, ~60k cumulative steps with QAT (1/3/4-bit STE). Quality peaks there — longer training collapses generation, so the peak checkpoint was selected by generation quality, not loss.