LeRobot documentation

VLABench

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

VLABench

VLABench est un benchmark à grande échelle pour la manipulation robotique conditionnée par le langage avec raisonnement de long terme. La suite amont couvre 100 catégories de tâches sur plus de 2 000 objets et évalue six dimensions de l'intelligence robotique : la compréhension des maillages et des textures, le raisonnement spatial, le transfert de connaissances du monde, la compréhension des instructions sémantiques, la compréhension des lois physiques et la planification de long terme. Construit sur MuJoCo / dm_control avec un bras Franka Panda 7-DOF. LeRobot expose 43 de ces tâches via --env.task (21 primitives + 22 composites, voir Tâches disponibles ci-dessous).

VLABench benchmark overview

Tâches disponibles

VLABench fournit deux suites de tâches couvrant 43 catégories de tâches dans la surface --env.task de LeRobot :

SuiteNom de la CLITâchesDescription
Primitiveprimitive21Combinations of single / few skills (select, insert, physics QA)
Compositecomposite22Raisonnement multi-étapes et planification à long terme (cuisiner, réorganiser)

Tâches primitives : 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, et tâches de raisonnement physique (density_qa, friction_qa, magnetism_qa, reflection_qa, simple_cuestick_usage, simple_seesaw_usage, sound_speed_qa, thermal_expansion_qa, weight_qa).

Tâches composites : 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.

--env.task accepte trois formes :

  • un seul nom de tâche (select_fruit)
  • une liste séparée par des virgules (select_fruit,heat_food)
  • un raccourci de suite (primitive, composite ou primitive,composite)

Installation

VLABench n'est pas sur PyPI — sa seule distribution est le dépôt GitHub OpenMOSS/VLABench — LeRobot n'expose donc pas d'extra vlabench. Installez-le manuellement en tant que clone éditable, avec les versions de MuJoCo / dm_control requises par VLABench, puis récupérez les assets de maillage :

# After following the standard LeRobot installation instructions.

git clone https://github.com/OpenMOSS/VLABench.git ~/VLABench
git clone https://github.com/motion-planning/rrt-algorithms.git ~/rrt-algorithms
pip install -e ~/VLABench -e ~/rrt-algorithms
pip install "mujoco==3.2.2" "dm-control==1.0.22" \
            open3d colorlog scikit-learn openai gdown

python ~/VLABench/scripts/download_assets.py
VLABench requires Linux (`sys_platform == 'linux'`) and Python 3.10+. Set the MuJoCo rendering backend before running:
export MUJOCO_GL=egl  # for headless servers (HPC, cloud)

Évaluation

Tous les extraits d’évaluation ci-dessous reproduisent la commande exécutée par la CI (voir .github/workflows/benchmark_tests.yml). L’argument --rename_map associe les clés de caméra image / second_image / wrist_image de VLABench à la disposition d’entrée à trois caméras (camera1 / camera2 / camera3) sur laquelle la politique smolvla_vlabench publiée a été entraînée.

Évaluation monotâche (recommandée pour une itération rapide)

lerobot-eval \
  --policy.path=lerobot/smolvla_vlabench \
  --env.type=vlabench \
  --env.task=select_fruit \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.image": "observation.images.camera1", "observation.images.second_image": "observation.images.camera2", "observation.images.wrist_image": "observation.images.camera3"}'

Évaluation multi-tâches

Passer une liste de tâches séparées par des virgules :

lerobot-eval \
  --policy.path=lerobot/smolvla_vlabench \
  --env.type=vlabench \
  --env.task=select_fruit,select_toy,add_condiment,heat_food \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.image": "observation.images.camera1", "observation.images.second_image": "observation.images.camera2", "observation.images.wrist_image": "observation.images.camera3"}'

Évaluation de la suite

Exécuter une suite entière (les 21 primitives ou les 22 composites) :

lerobot-eval \
  --policy.path=lerobot/smolvla_vlabench \
  --env.type=vlabench \
  --env.task=primitive \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  --env.max_parallel_tasks=1 \
  '--rename_map={"observation.images.image": "observation.images.camera1", "observation.images.second_image": "observation.images.camera2", "observation.images.wrist_image": "observation.images.camera3"}'

Ou les deux suites :

lerobot-eval \
  --policy.path=lerobot/smolvla_vlabench \
  --env.type=vlabench \
  --env.task=primitive,composite \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  --env.max_parallel_tasks=1 \
  '--rename_map={"observation.images.image": "observation.images.camera1", "observation.images.second_image": "observation.images.camera2", "observation.images.wrist_image": "observation.images.camera3"}'

Épisodes d'évaluation recommandés

10 épisodes par tâche pour un benchmarking reproductible (210 au total pour la suite complète de primitives, 220 pour les tâches composites). Correspond au protocole du papier VLABench.

Entrées et sorties de la politique

Observations :

  • observation.state — état de l'effecteur final à 7 dimensions (position xyz + Euler xyz + pince)
  • observation.images.image — caméra avant, 480×480 HWC uint8
  • observation.images.second_image — deuxième caméra, 480×480 HWC uint8
  • observation.images.wrist_image — caméra du poignet, 480×480 HWC uint8

Actions :

  • Contrôle continu dans Box(-1, 1, shape=(7,)) — position 3D + orientation Euler 3D + pince 1D.

Entraînement

Jeux de données

Jeux de données VLABench précollectés au format LeRobot sur le Hub :

Exemple de commande d'entraînement

Effectuer un fine-tuning d'un modèle de base SmolVLA sur la suite de primitives :

lerobot-train \
  --policy.type=smolvla \
  --policy.repo_id=${HF_USER}/smolvla_vlabench_primitive \
  --policy.load_vlm_weights=true \
  --policy.push_to_hub=true \
  --dataset.repo_id=VLABench/vlabench_primitive_ft_lerobot_video \
  --env.type=vlabench \
  --env.task=select_fruit \
  --output_dir=./outputs/smolvla_vlabench_primitive \
  --steps=100000 \
  --batch_size=4 \
  --env_eval_freq=5000 \
  --eval.batch_size=1 \
  --eval.n_episodes=1 \
  --save_freq=10000

Reproduire des résultats publiés

Le point de contrôle publié lerobot/smolvla_vlabench a été entraîné sur le jeu de données primitive-suite ci-dessus et est évalué à l’aide des commandes Single-task / Suite-wide. CI exécute une évaluation de fumée sur 10 tâches primitives (un épisode chacune) sur chaque PR touchant le benchmark.

Update on GitHub