In developmentMoroLM-56M is a research base model, not a chatbot. Things here change often.See what changed
MoroLM
Home / Docs / Training history

Training history

The complete base-model lineage, failure analysis and v0.6 clean restart.

Work in progress: this page describes MoroLM-56M v0.6 and will change as the project moves.

Version lineage#

v0.1 — first base#

Custom 56M architecture trained for 6,000 updates. Loss decreased, but raw generation remained poor. Later discovered to use the wrong two-token-ahead objective.

v0.2 — Arabizi pilot#

Added Morisco and synthetic Latin-Darija data. Held-out metrics improved under the old objective, but generation still failed.

v0.3 — MVP candidate#

Expanded Darija/Arabic mix and replay strategy. Still trained with the hidden alignment bug.

v0.4 — strengthen run#

More replay lowered the historical loss without solving language generation.

v0.5 — fresh 100M-token run#

Major fresh-data expansion. The model still generated loops and punctuation despite substantial training, triggering a deep pipeline audit.

Alignment audit#

The base dataset was found to pre-shift labels while the model also shifted them internally. Effective target: t+2. Dataset fixed to return x, x.

500-step overfit proof#

A random-weight 56M model trained on a tiny sample reached validation loss 0.6584 / perplexity 1.93 and reproduced the exact expected continuation with rank #1 probabilities around 97–99%.

v0.6 — cleanstart#

First clean lineage. Random initialization, corrected objective, 12,500 updates and approximately one 102.4M-token pass.

The double-shift bug#

Old TokenBlockDataset#

x = tokens[i : i+seq]
y = tokens[i+1 : i+seq+1]

Because the model also shifted labels internally, the network learned A→C instead of A→B.

Fixed dataset#

x = tokens[i : i+seq]
y = x
return x, y

The model now performs the only shift, producing the intended next-token objective.

v0.6 training configuration#

SettingValue
Sequence length512
Batch size2
Gradient accumulation8
Tokens/update8,192
Peak LR4e-4
Warmup300 updates
Optimizer updates12,500
Weight decay0.1
PrecisionBF16

Validation trend#

UpdateLossPPL
5007.25341412.89
1,0006.7544857.80
1,5006.4553636.08
2,5006.0883440.67
3,5005.8417344.36
10,0005.2623192.93
11,0005.2406188.78
12,5005.2239185.65
Important: historical v0.1–v0.5 base losses were measured under the same faulty two-token-ahead pipeline. They are preserved as research artifacts but must not be compared as ordinary next-token perplexities against v0.6.
↑ ↓ to move · Enter to open · Esc to close