Hume: Introducing System-2 Thinking in Visual-Language-Action Model

August 21, 2025 Β· View on GitHub

Hume: Introducing System-2 Thinking in Visual-Language-Action Model

[πŸ“„Paper] [πŸ”₯Project Page] [πŸ“– Document] [πŸ€— Model Zoo]

perform

News

  • 2025/06/12: Manage the project dependency using uv. Isolate the evaluation and training environments
  • 2025/06/08: Release the evaluation code and ckpts on LIBERO.
  • 2025/06/03: We release the training codebase of Hume.

TODO LIST

  • Release Training Code
  • Release LIBERO Evaluation
  • Switch to uv Manage the Project Dependency
  • Release Real-Wold Evaluation
  • Release Simpler Evaluation

Try Hume

from hume import HumePolicy
import numpy as np

# load policy
hume = HumePolicy.from_pretrained("/path/to/checkpoints").to("cuda")

# config Test-Time Computing args
hume.init_infer(
    infer_cfg=dict(
        replan_steps=8,
        s2_replan_steps=16,
        s2_candidates_num=5,
        noise_temp_lower_bound=1.0,
        noise_temp_upper_bound=1.0,
        time_temp_lower_bound=0.9,
        time_temp_upper_bound=1.0,
        post_process_action=True,
        device="cuda",
    )
)

# prepare observations
observation = {
    "observation.images.image": np.zeros((1,224,224,3), dtype = np.uint8), # (B, H, W, C)
    "observation.images.wrist_image": np.zeros((1,224,224,3), dtype = np.uint8), # (B, H, W, C)
    "observation.state": np.zeros((1, 8)), # (B, state_dim) match the state dimension of the corresponding model
    "task": ["Lift the papper"],
}

# Infer the action
action = hume.infer(observation) # (B, action_dim)

LIBERO

Note

Follow the instruction in LIBERO

Documents

πŸ› οΈ Installation

We use uv manage our project dependency

Install uv in just one line command

curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/hume-vla/hume.git
GIT_LFS_SKIP_SMUDGE=1 uv sync

🌟 Train System2

  • Download pretrained System2 Weights hume-system2-pt
  • Set pretrained_policy in scripts/train_s2.sh to path of the pretrained System2 weights
  • Set environment veriable in scripts/env.sh
  • Launch training
bash scripts/train_s2.sh

🌟 Train System2 and Value Query Head

  • Set pretrained_s2_path in scripts/train_vqh_s1.sh
  • Download DinoV2-Small and set --pretrained_dino_path to the DinoV2-Small in scripts/train_vqh_s1.sh
  • Launch training
bash scripts/train_vqh_s1.sh

πŸ€— Model Zoo

Model Name Link Note
Hume-System2 hume-system2-pt pretrained weights exported from pi0

πŸŽ„ Datasets

  • You can download all lerobot dataset used in our project from here
Dataset Name Link
LIBERO-Spatial IPEC-COMMUNITY/libero_spatial_no_noops_lerobot
LIBERO-Goal IPEC-COMMUNITY/libero_goal_no_noops_lerobot
LIBERO-Object IPEC-COMMUNITY/libero_object_no_noops_lerobot
LIBERO-10 IPEC-COMMUNITY/libero_10_no_noops_lerobot
Bridge IPEC-COMMUNITY/bridge_orig_lerobot
Fractal IPEC-COMMUNITY/fractal20220817_data_lerobot
  • If you want to train Hume using your own dataset, check the convert scripts in any4lerobot: πŸš€ A collection of utilities and tools for LeRobot. GitHub Repo stars

πŸ€— FAQs

If you encounter any issues, feel free to open an issue on GitHub or reach out through discussions. We appreciate your feedback and contributions! πŸš€

License

This project is released under the MIT license. Parts of this project contain code and models from other sources, which are subject to their respective licenses.

Citation

If you find this project useful in your research, please consider cite:

@article{song2025hume,
  title={Hume: Introducing System-2 Thinking in Visual-Language-Action Model},
  author={Anonimous Authors},
  journal={arXiv preprint arXiv:2505.21432},
  year={2025}
}