hitori-hrm: a 27M-parameter HRM that solves hard 9×9 Hitori
A Hierarchical Reasoning Model (HRM) checkpoint trained from scratch on 1,000 uniquely-solvable 9×9 Hitori puzzles from siaglass/hitori-9x9-unique. No language, no pretraining: 27,275,266 parameters trained on one RTX 4090 for about two hours.
Results
| eval set | exact-solution accuracy |
|---|---|
| standard test (200 puzzles, same difficulty as training) | 100% |
| hard set (750 stratified puzzles, stratum medians up to ~40× the training median difficulty) | 97.7% (733/750) |
Per-stratum on the hard set: raw 98.7%, hard24 99.3%, anneal150 100%, anneal400 94.7%, anneal400x2 96.0%. All 17 failures occur on puzzles where the global connectivity rule is load-bearing; 8 of 17 predictions violate only connectivity. On the same frozen 25-puzzle hard subset, gpt-5.6-luna and gemini-3.5-flash each scored 0/25 under direct and extended-reasoning prompting.
Files
step_52080: the checkpoint (torch save, HRM format), SHA-256 inSHA256SUMSall_config.yaml: exact training configurationeval_curve.csv: held-out eval metrics for all 10 evals during training
Usage
The checkpoint loads with the official HRM codebase
(sapientinc/HRM, Apache-2.0), architecture
HierarchicalReasoningModel_ACTV1 with the configuration in all_config.yaml
(hidden 512, 4+4 layers, 2×2 cycles, ACT halting up to 16 steps, RoPE).
Training data was the dataset above rendered into HRM's puzzle format:
seq_len 81, vocab_size 11, inputs = digits 1-9, labels = digit for unshaded
cells or a SHADED token, with dihedral + digit-permutation augmentation
(num_aug 1000). The encoding is documented in the dataset card. Run HRM's
evaluate.py with this checkpoint against a dataset built that way to
reproduce the numbers.
Training recipe follows HRM's published Sudoku-Extreme-1k recipe unchanged (batch 384, lr 7e-5, 20,000 epochs, eval every 2,000): the point of the experiment was that nothing needed tuning for a new puzzle domain.
Context
Part of PRISM, an experiment testing whether the HRM architecture generalizes to a puzzle domain it was never designed around, versus how LLMs handle the same domain in-context. Write-up: https://anstall-mig.se/blog/prism