50M parameter cap · embeddings included

Half your model is a dictionary. A third is the right answer.

The 50M parameter cap counts token embeddings. That turns vocabulary size from a preprocessing detail into a capacity allocation decision: with GPT‑2’s 50,257-token vocabulary, 54% of the entire budget is a lookup table, leaving room for just 7 transformer layers. An 8k vocabulary buys 14 layers for the same parameters. So we measured which is actually better — and the answer splits in two.

Compression and reasoning don't trade off — at this scale, on real text, they agree. In our sweep the best model spends over a third of the budget on embeddings and has both the lowest bits‑per‑byte and the top reasoning score of every configuration tested. The lookup table isn't waste. It's the highest-leverage use of the budget, at least up to the point our sweep could reach.

Budget allocator
d_model 512 · SwiGLU · tied embeddings
5124k16k65k
Tokenizer presets
Model width
  • —
  • Best measured configuration: 16,384 tokens — lowest bits/byte and top reasoning score of the four tested.
  • GPT-2's 50,257-token vocabulary did not finish training inside the sweep's compute budget.
Total parameters
—
Transformer layers
—
Embedding share
—
Params / layer
—
Headroom to 50M
—

Where the budget goes

Live split between the embedding lookup table and the transformer layers it leaves room for.

Embedding table — a lookup, no computation Transformer layers — where reasoning happens
Transformer layers that fit

The slider is the whole argument. Every token you add to the vocabulary is paid for in transformer layers, one-for-one out of the same 50M. Drag it to GPT-2's 50,257 and watch the depth collapse; drag it to 2,048 and the model is deep but reads text through a coarse, wasteful tokenizer. The measured question is where in between to stop.