|
Download README.md from Code2aum/HRM_sudoku: direct link, hf CLI and curl.
- Browser
- Download file 7.94 kB
-
https://huggingface.co/Code2aum/HRM_sudoku/resolve/main/README.md
- Command line
-
hf download hf://Code2aum/HRM_sudoku/README.md
-
curl -L -o README.md https://huggingface.co/Code2aum/HRM_sudoku/resolve/main/README.md
7.94 kB
| # Hierarchical Reasoning Model | |
|  | |
| Reasoning, the process of devising and executing complex goal-oriented action sequences, remains a critical challenge in AI. | |
| Current large language models (LLMs) primarily employ Chain-of-Thought (CoT) techniques, which suffer from brittle task decomposition, extensive data requirements, and high latency. Inspired by the hierarchical and multi-timescale processing in the human brain, we propose the Hierarchical Reasoning Model (HRM), a novel recurrent architecture that attains significant computational depth while maintaining both training stability and efficiency. | |
| HRM executes sequential reasoning tasks in a single forward pass without explicit supervision of the intermediate process, through two interdependent recurrent modules: a high-level module responsible for slow, abstract planning, and a low-level module handling rapid, detailed computations. With only 27 million parameters, HRM achieves exceptional performance on complex reasoning tasks using only 1000 training samples. The model operates without pre-training or CoT data, yet achieves nearly perfect performance on challenging tasks including complex Sudoku puzzles and optimal path finding in large mazes. | |
| Furthermore, HRM outperforms much larger models with significantly longer context windows on the Abstraction and Reasoning Corpus (ARC), a key benchmark for measuring artificial general intelligence capabilities. | |
| These results underscore HRM’s potential as a transformative advancement toward universal computation and general-purpose reasoning systems. | |
| **Join our Discord Community: [https://discord.gg/sapient](https://discord.gg/sapient)** | |
| ## Quick Start Guide 🚀 | |
| ### Prerequisites ⚙️ | |
| Ensure PyTorch and CUDA are installed. The repo needs CUDA extensions to be built. If not present, run the following commands: | |
| ```bash | |
| # Install CUDA 12.6 | |
| CUDA_URL=https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda_12.6.3_560.35.05_linux.run | |
| wget -q --show-progress --progress=bar:force:noscroll -O cuda_installer.run $CUDA_URL | |
| sudo sh cuda_installer.run --silent --toolkit --override | |
| export CUDA_HOME=/usr/local/cuda-12.6 | |
| # Install PyTorch with CUDA 12.6 | |
| PYTORCH_INDEX_URL=https://download.pytorch.org/whl/cu126 | |
| pip3 install torch torchvision torchaudio --index-url $PYTORCH_INDEX_URL | |
| # Additional packages for building extensions | |
| pip3 install packaging ninja wheel setuptools setuptools-scm | |
| ``` | |
| Then install FlashAttention. For Hopper GPUs, install FlashAttention 3 | |
| ```bash | |
| git clone git@github.com:Dao-AILab/flash-attention.git | |
| cd flash-attention/hopper | |
| python setup.py install | |
| ``` | |
| For Ampere or earlier GPUs, install FlashAttention 2 | |
| ```bash | |
| pip3 install flash-attn | |
| ``` | |
| ## Install Python Dependencies 🐍 | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| ## W&B Integration 📈 | |
| This project uses [Weights & Biases](https://wandb.ai/) for experiment tracking and metric visualization. Ensure you're logged in: | |
| ```bash | |
| wandb login | |
| ``` | |
| ## Run Experiments | |
| ### Quick Demo: Sudoku Solver 💻🗲 | |
| Train a master-level Sudoku AI capable of solving extremely difficult puzzles on a modern laptop GPU. 🧩 | |
| ```bash | |
| # Download and build Sudoku dataset | |
| python dataset/build_sudoku_dataset.py --output-dir data/sudoku-extreme-1k-aug-1000 --subsample-size 1000 --num-aug 1000 | |
| # Start training (single GPU, smaller batch size) | |
| OMP_NUM_THREADS=8 python pretrain.py data_path=data/sudoku-extreme-1k-aug-1000 epochs=20000 eval_interval=2000 global_batch_size=384 lr=7e-5 puzzle_emb_lr=7e-5 weight_decay=1.0 puzzle_emb_weight_decay=1.0 | |
| ``` | |
| Runtime: ~10 hours on a RTX 4070 laptop GPU | |
| ## Trained Checkpoints 🚧 | |
| - [ARC-AGI-2](https://huggingface.co/sapientinc/HRM-checkpoint-ARC-2) | |
| - [Sudoku 9x9 Extreme (1000 examples)](https://huggingface.co/sapientinc/HRM-checkpoint-sudoku-extreme) | |
| - [Maze 30x30 Hard (1000 examples)](https://huggingface.co/sapientinc/HRM-checkpoint-maze-30x30-hard) | |
| To use the checkpoints, see Evaluation section below. | |
| ## Full-scale Experiments 🔵 | |
| Experiments below assume an 8-GPU setup. | |
| ### Dataset Preparation | |
| ```bash | |
| # Initialize submodules | |
| git submodule update --init --recursive | |
| # ARC-1 | |
| python dataset/build_arc_dataset.py # ARC offical + ConceptARC, 960 examples | |
| # ARC-2 | |
| python dataset/build_arc_dataset.py --dataset-dirs dataset/raw-data/ARC-AGI-2/data --output-dir data/arc-2-aug-1000 # ARC-2 official, 1120 examples | |
| # Sudoku-Extreme | |
| python dataset/build_sudoku_dataset.py # Full version | |
| python dataset/build_sudoku_dataset.py --output-dir data/sudoku-extreme-1k-aug-1000 --subsample-size 1000 --num-aug 1000 # 1000 examples | |
| # Maze | |
| python dataset/build_maze_dataset.py # 1000 examples | |
| ``` | |
| ### Dataset Visualization | |
| Explore the puzzles visually: | |
| * Open `puzzle_visualizer.html` in your browser. | |
| * Upload the generated dataset folder located in `data/...`. | |
| ## Launch experiments | |
| ### Small-sample (1K) | |
| ARC-1: | |
| ```bash | |
| OMP_NUM_THREADS=8 torchrun --nproc-per-node 8 pretrain.py | |
| ``` | |
| *Runtime:* ~24 hours | |
| ARC-2: | |
| ```bash | |
| OMP_NUM_THREADS=8 torchrun --nproc-per-node 8 pretrain.py data_path=data/arc-2-aug-1000 | |
| ``` | |
| *Runtime:* ~24 hours (checkpoint after 8 hours is often sufficient) | |
| Sudoku Extreme (1k): | |
| ```bash | |
| OMP_NUM_THREADS=8 torchrun --nproc-per-node 8 pretrain.py data_path=data/sudoku-extreme-1k-aug-1000 epochs=20000 eval_interval=2000 lr=1e-4 puzzle_emb_lr=1e-4 weight_decay=1.0 puzzle_emb_weight_decay=1.0 | |
| ``` | |
| *Runtime:* ~10 minutes | |
| Maze 30x30 Hard (1k): | |
| ```bash | |
| OMP_NUM_THREADS=8 torchrun --nproc-per-node 8 pretrain.py data_path=data/maze-30x30-hard-1k epochs=20000 eval_interval=2000 lr=1e-4 puzzle_emb_lr=1e-4 weight_decay=1.0 puzzle_emb_weight_decay=1.0 | |
| ``` | |
| *Runtime:* ~1 hour | |
| ### Full Sudoku-Hard | |
| ```bash | |
| OMP_NUM_THREADS=8 torchrun --nproc-per-node 8 pretrain.py data_path=data/sudoku-hard-full epochs=100 eval_interval=10 lr_min_ratio=0.1 global_batch_size=2304 lr=3e-4 puzzle_emb_lr=3e-4 weight_decay=0.1 puzzle_emb_weight_decay=0.1 arch.loss.loss_type=softmax_cross_entropy arch.L_cycles=8 arch.halt_max_steps=8 arch.pos_encodings=learned | |
| ``` | |
| *Runtime:* ~2 hours | |
| ## Streamlined Training & Benchmarking 🛠️ | |
| For easier monitoring and automated reporting, use these consolidated scripts: | |
| ### 1. Unified Training | |
| Train either the Baseline or Tiered (SRAM/DRAM) model with multi-process support and integrated W&B monitoring. | |
| ```bash | |
| ./train_hrm.py arch=hrm_tiered epochs=1000 data_path=data/sudoku-1k | |
| ``` | |
| ### 2. Comprehensive Evaluation | |
| Load a checkpoint and generate a detailed Markdown report (`_report.md`) with accuracy breakdowns. | |
| ```bash | |
| ./eval_hrm.py checkpoint=checkpoints/hrm_run_.../best_model.pt | |
| ``` | |
| ### 3. Hardware Benchmark | |
| Compare Baseline vs. Tiered performance across multiple batch sizes and sequence lengths. Generates plots and CSV reports. | |
| ```bash | |
| ./benchmark_hrm.py --batch-sizes 1,8,32 --seq-lens 64,128 --plot | |
| ``` | |
| ## Evaluation | |
| Evaluate your trained models: | |
| * Check `eval/exact_accuracy` in W&B. | |
| * For ARC-AGI, follow these additional steps: | |
| ```bash | |
| OMP_NUM_THREADS=8 torchrun --nproc-per-node 8 evaluate.py checkpoint=<CHECKPOINT_PATH> | |
| ``` | |
| * Then use the provided `arc_eval.ipynb` notebook to finalize and inspect your results. | |
| ## Notes | |
| - Small-sample learning typically exhibits accuracy variance of around ±2 points. | |
| - For Sudoku-Extreme (1,000-example dataset), late-stage overfitting may cause numerical instability during training and Q-learning. It is advisable to use early stopping once the training accuracy approaches 100%. | |
| ## Citation 📜 | |
| ```bibtex | |
| @misc{wang2025hierarchicalreasoningmodel, | |
| title={Hierarchical Reasoning Model}, | |
| author={Guan Wang and Jin Li and Yuhao Sun and Xing Chen and Changling Liu and Yue Wu and Meng Lu and Sen Song and Yasin Abbasi Yadkori}, | |
| year={2025}, | |
| eprint={2506.21734}, | |
| archivePrefix={arXiv}, | |
| primaryClass={cs.AI}, | |
| url={https://arxiv.org/abs/2506.21734}, | |
| } | |
| ``` | |