# VLABench VLABench is a large-scale benchmark for **language-conditioned robotic manipulation with long-horizon reasoning**. It provides 100 task categories across 2000+ objects, evaluating six dimensions of robot intelligence: mesh & texture understanding, spatial reasoning, world knowledge transfer, semantic instruction comprehension, physical law understanding, and long-horizon reasoning. VLABench is built on MuJoCo/dm_control and uses a Franka Panda 7-DOF arm. - Paper: [VLABench: A Large-Scale Benchmark for Language-Conditioned Robotics Manipulation with Long-Horizon Reasoning](https://arxiv.org/abs/2412.18194) - GitHub: [OpenMOSS/VLABench](https://github.com/OpenMOSS/VLABench) - Project website: [vlabench.github.io](https://vlabench.github.io) ## Available tasks VLABench includes **two task suites** covering **100 task categories**: | Suite | CLI name | Tasks | Description | | --------- | ----------- | ----- | ---------------------------------------------------------------- | | Primitive | `primitive` | 21 | Single/few skill combinations (select, insert, physics QA) | | Composite | `composite` | 22 | Multi-step reasoning and long-horizon planning (cook, rearrange) | ### Primitive tasks Includes `select_fruit`, `select_toy`, `select_chemistry_tube`, `add_condiment`, `select_book`, `select_painting`, `select_drink`, `insert_flower`, `select_billiards`, `select_ingredient`, `select_mahjong`, `select_poker`, and physical reasoning tasks (`density_qa`, `friction_qa`, `magnetism_qa`, `reflection_qa`, `simple_cuestick_usage`, `simple_seesaw_usage`, `sound_speed_qa`, `thermal_expansion_qa`, `weight_qa`). ### Composite tasks Includes `cluster_billiards`, `cluster_book`, `cluster_drink`, `cluster_toy`, `cook_dishes`, `cool_drink`, `find_unseen_object`, `get_coffee`, `hammer_nail`, `heat_food`, `make_juice`, `play_mahjong`, `play_math_game`, `play_poker`, `play_snooker`, `rearrange_book`, `rearrange_chemistry_tube`, `set_dining_table`, `set_study_table`, `store_food`, `take_chemistry_experiment`, `use_seesaw_complex`. ### Evaluation tracks VLABench defines five standard evaluation tracks: | Track | Focus | | ----- | ----------------------------- | | 1 | In-distribution task learning | | 2 | Cross-category generalization | | 3 | Commonsense reasoning | | 4 | Semantic instruction | | 6 | Unseen texture robustness | ## Installation After following the LeRobot installation instructions: ```bash pip install -e ".[vlabench]" ``` VLABench also requires downloading simulation assets: ```bash # Clone the VLABench repo and download assets git clone https://github.com/OpenMOSS/VLABench.git cd VLABench python scripts/download_assets.py ``` VLABench requires Linux (`sys_platform == 'linux'`) and Python 3.10+. Set the MuJoCo rendering backend before training or evaluation: ```bash export MUJOCO_GL=egl # for headless servers (HPC, cloud) ``` ## Evaluation ### Default evaluation (recommended) Evaluate on a single task (10 episodes): ```bash lerobot-eval \ --policy.path="your-policy-id" \ --env.type=vlabench \ --env.task=select_fruit \ --eval.batch_size=1 \ --eval.n_episodes=10 ``` ### Suite-wide evaluation Evaluate across all primitive tasks: ```bash lerobot-eval \ --policy.path="your-policy-id" \ --env.type=vlabench \ --env.task=primitive \ --eval.batch_size=1 \ --eval.n_episodes=10 \ --env.max_parallel_tasks=1 ``` ### Multi-suite evaluation Evaluate across both primitive and composite suites: ```bash lerobot-eval \ --policy.path="your-policy-id" \ --env.type=vlabench \ --env.task=primitive,composite \ --eval.batch_size=1 \ --eval.n_episodes=10 \ --env.max_parallel_tasks=1 ``` ### Individual task evaluation Evaluate on specific tasks by name: ```bash lerobot-eval \ --policy.path="your-policy-id" \ --env.type=vlabench \ --env.task=select_fruit,heat_food \ --eval.batch_size=1 \ --eval.n_episodes=10 ``` ## Policy inputs and outputs **Observations:** - `observation.state` — 7-dim end-effector state (position xyz, euler xyz, gripper) - `observation.images.image` — front camera view, 480x480 HWC uint8 - `observation.images.second_image` — second camera view, 480x480 HWC uint8 - `observation.images.wrist_image` — wrist camera view, 480x480 HWC uint8 **Actions:** - Continuous control in `Box(-1, 1, shape=(7,))` — 3D position + 3D euler orientation + 1D gripper ### Recommended evaluation episodes For reproducible benchmarking, use **10 episodes per task**. For the full primitive suite this gives 210 episodes; for the full composite suite, 220 episodes. ## Training ### Datasets Pre-collected VLABench datasets in LeRobot format are available on the Hugging Face Hub: - Primitive tasks: [VLABench/vlabench_primitive_ft_lerobot_video](https://huggingface.co/datasets/VLABench/vlabench_primitive_ft_lerobot_video) (5,000 episodes, 128 tasks, 480x480 images) - Composite tasks: [VLABench/vlabench_composite_ft_lerobot_video](https://huggingface.co/datasets/VLABench/vlabench_composite_ft_lerobot_video) (5,977 episodes, 167 tasks, 224x224 images) ### Example training command ```bash lerobot-train \ --policy.type=smolvla \ --policy.repo_id=${HF_USER}/vlabench-test \ --policy.load_vlm_weights=true \ --dataset.repo_id=VLABench/vlabench_primitive_ft_lerobot_video \ --env.type=vlabench \ --env.task=select_fruit \ --output_dir=./outputs/ \ --steps=100000 \ --batch_size=4 \ --eval.batch_size=1 \ --eval.n_episodes=1 \ --eval_freq=1000 ```