littlerock

littlerock-1M is a decoder-only language model with 1,002,720 parameters — 609,504 of them outside the embedding table — trained from scratch on 5 billion tokens. It exists to measure what capability actually survives at a one-million-parameter budget.

Architecture

PropertyValue
ArchitectureLlama (loads with stock Transformers, no custom code)
Parameters1,002,720 (609,504 non-embedding)
Layers6
Hidden dimension96
Attention heads6 (16 dims per head)
FFN hidden size224 (SwiGLU)
Context window512
Vocabulary4,096
Position encodingRoPE
NormalizationRMSNorm, tied embeddings

Training

5,000,000,000 tokens from a mixture of 40% FineWeb-Edu and 60% DCLM-baseline, across 19,073 steps at 262,144 tokens per step, with AdamW and a cosine learning-rate schedule. Total wall-clock: 1 hour 49 minutes on one RTX 3060.

It is a next-token predictor with no instruction tuning and no alignment.

littlerock-1M-arithmax: a negative result worth publishing

littlerock-1M-arithmax is littlerock-1M finetuned on synthetic arithmetic word problems, generated from templates written for this project. It is published as a research artifact, not as a model to use.

ArithMark-3 setScore
Public (published set)40.4%strong for 1M parameters
Private held-out (memorization test)35.5%passes — above the 25% floor
Private variety (rephrased questions)21.5%fails — below the floor
Base model, before finetuning25.2%at chance

Scores on the two private sets were measured independently by AxiomicLabs. On the variety-set result the finetune was declined for leaderboard ranking, correctly, and the base model was listed instead.

Dropping below chance is the interesting part. A model that had learned nothing would score 25%. Scoring 21.5% means the finetune taught surface cues strong enough that unfamiliar phrasing actively pulls the model toward wrong answers.

The protocol was sound and still missed it

The independent variety set reported 21.5% — a ~15-point error in the project's own estimate of its own generalization. The cause is structural: the same author wrote both the training templates and the held-out ones, so both shared number ranges, unit phrasing, and sentence rhythm. A held-out split cannot detect distribution-level specialization when you wrote both sides of it. An earlier iteration was worse still: 87.9% against a same-template dev set versus 26.9% on the real benchmark, a 61-point gap.

Per-topic breakdown (public set)

TopicScoreCovered by the generator?
division72.2yes
multiplication56.8yes
subtraction48.7yes
addition39.8yes
two-step add/subtract15.2yes, did not transfer
fractions: counting24.0no
patterns13.2no

High on covered topics, at or below chance on uncovered ones — the opposite of what test-set contamination produces. That was taken as evidence the ability was real. It is good evidence the ability was not copied from the test set, which turns out to be a weaker claim than it appears.

Takeaway

Benchmark specialization can survive a rigorous contamination audit, honest dev-set selection, and a plausible-looking capability profile. Detecting it needs evaluation data the model's author did not write. That is an argument for private variety sets, and a caution against trusting held-out splits you built yourself.