{
  "generated_at": "2026-07-17T16:40:04.624Z",
  "source": "/gallery/manifest.json",
  "note": "All five models share the same architecture (12L, d=256, ctx=256, ~9.6M params, char-level). Each was trained from scratch in this browser for 5000 steps on ~1.1 MB of its corpus. Compare the samples — same machinery, different patterns.",
  "benchmarks": [
    {
      "id": "tinystories-ppl",
      "name": "TinyStories PPL",
      "lowerIsBetter": true,
      "unit": "perplexity",
      "description": "Held-out perplexity over 50 stories from a slice of the TinyStories corpus that wasn't seen during gallery training. Score = exp(mean per-byte cross-entropy). Lower is better.",
      "scored_entries": 6
    },
    {
      "id": "sort-6",
      "name": "Sort-6",
      "lowerIsBetter": false,
      "unit": "accuracy",
      "description": "Karpathy minGPT algorithmic task. Prompt is \"sort: 5 1 4 2 6 3 = \", model must continue \"1 2 3 4 5 6\". Exact-match accuracy over 200 deterministic trials. Higher is better.",
      "scored_entries": 5
    },
    {
      "id": "reverse-16",
      "name": "Reverse-16",
      "lowerIsBetter": false,
      "unit": "accuracy",
      "description": "Reverse a lowercase string of up to 16 characters. Exact-match over 200 deterministic trials. Higher is better.",
      "scored_entries": 5
    },
    {
      "id": "fineweb-ppl-bpe",
      "name": "FineWeb PPL (BPE)",
      "lowerIsBetter": true,
      "unit": "perplexity",
      "description": "Held-out perplexity over a 5MB FineWeb-style text slice, scored token-level using the model's BPE tokenizer. Lower is better.",
      "scored_entries": 1
    }
  ],
  "entries": [
    {
      "id": "shakespeare",
      "name": "Shakespeare",
      "icon": "🎭",
      "params": "9.6M",
      "param_count": 9608704,
      "corpus": "tinyshakespeare (Karpathy)",
      "corpus_url": "https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt",
      "train_loss": "1.22",
      "steps": 5000,
      "train_wall": null,
      "train_wall_ms": null,
      "browser_trained": true,
      "featured": true,
      "author": "posttrainllm",
      "scores": {
        "tinystories-ppl": {
          "score": 7.8643341682876375,
          "rank": 4
        },
        "sort-6": {
          "score": 0,
          "rank": 1
        },
        "reverse-16": {
          "score": 0,
          "rank": 1
        }
      }
    },
    {
      "id": "tinystories",
      "name": "TinyStories",
      "icon": "📖",
      "params": "9.6M",
      "param_count": 9608704,
      "corpus": "roneneldan/TinyStories",
      "corpus_url": "https://huggingface.co/datasets/roneneldan/TinyStories",
      "train_loss": "0.89",
      "steps": 5000,
      "train_wall": "48 min",
      "train_wall_ms": 2850278,
      "browser_trained": true,
      "featured": true,
      "author": "posttrainllm",
      "scores": {
        "tinystories-ppl": {
          "score": 2.152068139374971,
          "rank": 1
        },
        "sort-6": {
          "score": 0,
          "rank": 2
        },
        "reverse-16": {
          "score": 0,
          "rank": 2
        }
      }
    },
    {
      "id": "code",
      "name": "Python code",
      "icon": "⌨️",
      "params": "9.6M",
      "param_count": 9608704,
      "corpus": "codeparrot/github-code-clean (Python)",
      "corpus_url": "https://huggingface.co/datasets/codeparrot/github-code-clean",
      "train_loss": "0.59",
      "steps": 5000,
      "train_wall": "47 min",
      "train_wall_ms": 2820673,
      "browser_trained": true,
      "featured": true,
      "author": "posttrainllm",
      "scores": {
        "tinystories-ppl": {
          "score": 11.221931628820712,
          "rank": 5
        },
        "sort-6": {
          "score": 0,
          "rank": 3
        },
        "reverse-16": {
          "score": 0,
          "rank": 3
        }
      }
    },
    {
      "id": "chat",
      "name": "Q&A chat",
      "icon": "💬",
      "params": "9.6M",
      "param_count": 9608704,
      "corpus": "databricks/databricks-dolly-15k",
      "corpus_url": "https://huggingface.co/datasets/databricks/databricks-dolly-15k",
      "train_loss": "1.30",
      "steps": 5000,
      "train_wall": "50 min",
      "train_wall_ms": 3000378,
      "browser_trained": true,
      "featured": true,
      "author": "posttrainllm",
      "scores": {
        "tinystories-ppl": {
          "score": 5.345929627164713,
          "rank": 2
        },
        "sort-6": {
          "score": 0,
          "rank": 4
        },
        "reverse-16": {
          "score": 0,
          "rank": 4
        }
      }
    },
    {
      "id": "seatales",
      "name": "Sea Tales",
      "icon": "🐟",
      "params": "9.6M",
      "param_count": 9608704,
      "corpus": "Moby-Dick (first 800K) + Heart of Darkness — both public domain",
      "corpus_url": "https://www.gutenberg.org/ebooks/2701",
      "train_loss": "1.28",
      "steps": 5000,
      "train_wall": "48 min",
      "train_wall_ms": 2880809,
      "browser_trained": true,
      "featured": true,
      "author": "posttrainllm",
      "scores": {
        "tinystories-ppl": {
          "score": 7.311166017769345,
          "rank": 3
        },
        "sort-6": {
          "score": 0,
          "rank": 5
        },
        "reverse-16": {
          "score": 0,
          "rank": 5
        }
      }
    },
    {
      "id": "flagship-huge",
      "name": "flagship-huge",
      "icon": null,
      "params": "34.6M",
      "param_count": 34615552,
      "corpus": "BPE-trained (vocab 49152)",
      "corpus_url": null,
      "train_loss": null,
      "steps": null,
      "train_wall": null,
      "train_wall_ms": null,
      "browser_trained": false,
      "featured": false,
      "author": "posttrainllm (Mac)",
      "scores": {
        "tinystories-ppl": {
          "score": 85.924,
          "rank": 6
        },
        "fineweb-ppl-bpe": {
          "score": 110.392,
          "rank": 1
        }
      }
    }
  ]
}
