LeRobot documentation
VLABench
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).
- Article : VLABench: A Large-Scale Benchmark for Language-Conditioned Robotics Manipulation with Long-Horizon Reasoning
- GitHub : OpenMOSS/VLABench
- Site web du projet : vlabench.github.io
- Politique pré-entraînée :
lerobot/smolvla_vlabench
Tâches disponibles
VLABench fournit deux suites de tâches couvrant 43 catégories de tâches dans la surface --env.task de LeRobot :
| Suite | Nom de la CLI | Tâches | Description |
|---|---|---|---|
| Primitive | primitive | 21 | Combinations of single / few skills (select, insert, physics QA) |
| Composite | composite | 22 | Raisonnement 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,compositeouprimitive,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.pyVLABench 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 uint8observation.images.second_image— deuxième caméra, 480×480 HWC uint8observation.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 :
VLABench/vlabench_primitive_ft_lerobot_video— 5 000 épisodes, 128 tâches, images 480×480.VLABench/vlabench_composite_ft_lerobot_video— 5 977 épisodes, 167 tâches, images 224×224.
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=10000Reproduire 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.