tinywmcraft checkpoints
Checkpoints of tinywmcraft, a 14M-parameter pixel world model of Craftax-Classic trained from scratch in under 10 minutes on one A100. Play it in your browser at maharishiva.github.io/tinywmcraft. Data: maharishiva/tinywmcraft.
Each model.npz holds the tokenizer, the world model with reward and done heads, and JSON metadata with the training config and time;
ledger_row.jsonl is its eval.py row. Every run was trained cold on one Colab A100-SXM4-40GB. gFVD is over 64 generated frames, shown times 10^4.
Iteration 1
train_tiny.py: the whole model in one file, about 250 lines, no custom kernels. Mean gFVD 56.9 ± 5.4.
| folder | gFVD ×10⁴ | gFVD 1-16 | AF | reward AP | done AP | train s | eval s |
|---|---|---|---|---|---|---|---|
iteration1/seed0 |
50.81 | 16.39 | 0.910 | 0.922 | 0.038 | 556 | 132 |
iteration1/seed1 |
58.95 | 16.48 | 0.925 | 0.923 | 0.043 | 561 | 135 |
iteration1/seed2 |
61.04 | 16.37 | 0.922 | 0.930 | 0.047 | 559 | 133 |
Iteration 2
Tile transformer tokenizer, fused Pallas kernels, hard-window mining, symlog reward head (train.py at 80b1c34). Mean gFVD 50.7 ± 5.1.
| folder | gFVD ×10⁴ | gFVD 1-16 | AF | reward AP | done AP | train s | eval s |
|---|---|---|---|---|---|---|---|
iteration2/seed0 |
44.84 | 13.23 | 0.929 | 0.950 | 0.055 | 583 | 105 |
iteration2/seed1 |
54.17 | 15.16 | 0.930 | 0.935 | 0.041 | 588 | 106 |
iteration2/seed2 |
52.97 | 15.18 | 0.931 | 0.941 | 0.055 | 586 | 105 |
Iteration 3
train.py: NorMuon, a two-frame tokenizer, shortcut and temporal losses, training on its own context, cached sampling. Mean gFVD 42.5 ± 2.1.
| folder | gFVD ×10⁴ | gFVD 1-16 | AF | reward AP | done AP | train s | eval s |
|---|---|---|---|---|---|---|---|
iteration3/seed0 |
44.01 | 12.86 | 0.935 | 0.916 | 0.029 | 568 | 103 |
iteration3/seed1 |
40.09 | 12.38 | 0.936 | 0.914 | 0.030 | 564 | 102 |
iteration3/seed2 |
43.42 | 12.20 | 0.930 | 0.908 | 0.022 | 572 | 104 |
curl -L --fail --create-dirs -o runs/best/model.npz https://huggingface.co/maharishiva/tinywmcraft/resolve/main/iteration3/seed1/model.npz
python play_wm.py --model runs/best/model.npz
web/play.onnx, web/play.wgr
Iteration 3, seed 1, as one graph for the browser player: the past frames are computed once per keypress, then 8 Euler steps run on
the new frame only. play.wgr runs on the player's own WebGPU runtime (docs/wgr.js): 1107 kernels, one memory plan, fp16 weights, 23 MB.
Built by docs/export_web.py and docs/convert_web.py; matches the training code's sampler to 1.4e-6.