| --- |
| license: mit |
| datasets: |
| - roneneldan/TinyStories |
| language: |
| - en |
| pipeline_tag: text-generation |
| tags: |
| - gpt |
| - from-scratch |
| - tinystories |
| - educational |
| --- |
| |
| # mpu-30m-base |
|
|
| **mpu-30m** is a 30.3M-parameter GPT-style language model trained from scratch |
| on 400M tokens of [TinyStories](https://huggingface.co/datasets/roneneldan/TinyStories). |
| It is the first model in the **mpu** series and the proof-of-concept run for an |
| elastic, checkpoint-driven training platform that migrates a single training |
| job across free and disposable GPU sessions (Colab/Kaggle) without losing |
| progress. |
|
|
| It writes short, simple children's stories. It is small on purpose: the goal |
| of this run was to validate the training infrastructure end to end, not to |
| compete on quality. |
|
|
| ## Model details |
|
|
| | | | |
| |---|---| |
| | Architecture | Decoder-only transformer (GPT-2 style, pre-LN, tied embeddings) | |
| | Parameters | 30.3M total (10.6M non-embedding) | |
| | Layers / heads / width | 6 / 6 / 384 | |
| | Context length | 1024 | |
| | Vocabulary | GPT-2 BPE, 50,304 (padded) | |
| | Precision (training) | fp16 + loss scaling (Tesla T4) | |
| | Format | safetensors | |
|
|
| ## Training |
|
|
| | | | |
| |---|---| |
| | Data | TinyStories, ~400M tokens (GPT-2 tokenizer, uint16 memmap shards) | |
| | Steps | 6,104 (65,536 tokens/step: batch 8 × 1024 ctx × grad-accum 8) | |
| | Optimizer | AdamW (β=0.9/0.95, wd 0.1), lr 6e-4, cosine to 10%, 300 warmup steps | |
| | Hardware | 1× NVIDIA T4 (free Colab), ~2 hours, ~49k tokens/sec | |
| | Checkpointing | Atomic checkpoints pushed to this repo every 300 steps | |
|
|
| ### The interesting part: how it was trained |
|
|
| This model was trained by an elastic training system in which **compute is |
| disposable and checkpoints are persistent**. Every ~20 minutes the trainer |
| writes a full checkpoint (weights, optimizer, scaler, RNG state) and promotes |
| it atomically to this repo. A session can be killed at any time; any other |
| GPU session resumes from the latest promoted checkpoint and — because data |
| batches are a pure function of (seed, step) — continues **bit-identically**, |
| verified by test. This run survived a mid-training kill-and-resume across |
| sessions. |
|
|
| ## Usage |
|
|
| The checkpoint uses a custom (nanoGPT-style) architecture and is **not** |
| loadable via `transformers.AutoModel`. Weights are standard safetensors |
| (see `config.json` in the checkpoint folder for the architecture: 6 layers, |
| 6 heads, width 384, GPT-2 BPE tokenizer). The training and inference code |
| is not yet public; it will be released alongside a later model in the |
| series. |
|
|
| ## Sample output |
|
|
| > Once upon a time there was a little robot. He was very happy and liked to |
| > roll with his friends. But one day, he rolled too fast and fell into a big |
| > puddle. He tried to roll out of his wet puddle, but he couldn't. He was |
| > stuck and couldn't get out. Luckily, a kind little girl saw the robot and |
| > knew just what to do. [...] From then on, the robot was extra careful. |
|
|
| ## Limitations |
|
|
| - Trained only on synthetic children's stories: tiny vocabulary in practice, |
| simple grammar, no factual knowledge, English only. |
| - At this scale the model loses track of characters and pronouns, and |
| occasionally substitutes a wrong noun mid-story. |
| - No instruction tuning, no safety tuning, no formal evaluation. Not for any |
| production use — this is an educational artifact. |