LeRobot documentation

VLABench

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

VLABench

The commands below run the simulator locally. To keep its dependencies away from your policy's, serve it instead with `lerobot-env-server --config_path=docker/sim/configs/vlabench.yaml --sim.task=--docker=true`, where `` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).

VLABench adalah benchmark berskala besar untuk manipulasi robotik berbasis bahasa dengan penalaran jangka panjang. Suite hulu mencakup 100 kategori tugas di lebih dari 2.000 objek dan mengevaluasi enam dimensi kecerdasan robot: pemahaman mesh & tekstur, penalaran spasial, transfer pengetahuan dunia, pemahaman instruksi semantik, pemahaman hukum fisika, dan perencanaan jangka panjang. Dibangun di atas MuJoCo / dm_control dengan lengan Franka Panda 7-DOF. LeRobot mengekspos 43 dari tugas-tugas ini melalui --env.task (21 primitif + 22 komposit, lihat Tugas yang tersedia di bawah).

VLABench benchmark overview

Tugas yang tersedia

VLABench menyediakan dua kumpulan tugas yang mencakup 43 kategori tugas di permukaan --env.task LeRobot:

SuiteNama CLITugasDeskripsi
Primitifprimitive21Kombinasi satu / beberapa keterampilan (select, insert, physics QA)
Kompositcomposite22Penalaran multi-langkah dan perencanaan jangka panjang (memasak, menata ulang)

Tugas primitif: 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, dan tugas penalaran fisika (density_qa, friction_qa, magnetism_qa, reflection_qa, simple_cuestick_usage, simple_seesaw_usage, sound_speed_qa, thermal_expansion_qa, weight_qa).

Tugas komposit: 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 menerima tiga bentuk:

  • nama tugas tunggal (select_fruit)
  • daftar yang dipisahkan koma (select_fruit,heat_food)
  • singkatan suite (primitive, composite, atau primitive,composite)

Instalasi

VLABench tidak tersedia di PyPI — satu-satunya distribusinya adalah repo GitHub OpenMOSS/VLABench — sehingga LeRobot tidak menyediakan extra vlabench. Instal secara manual sebagai clone editable, bersama dengan pin MuJoCo / dm_control yang dibutuhkan VLABench, lalu ambil aset mesh:

# 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)

Evaluasi

Semua cuplikan eval di bawah mencerminkan perintah yang dijalankan CI (lihat .github/workflows/benchmark_tests.yml). Argumen --rename_map memetakan kunci kamera image / second_image / wrist_image dari VLABench ke tata letak input tiga kamera (camera1 / camera2 / camera3) yang digunakan untuk melatih kebijakan smolvla_vlabench yang dirilis.

Evaluasi tugas tunggal (disarankan untuk iterasi cepat)

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"}'

Evaluasi multi-tugas

Lewatkan daftar tugas yang dipisahkan koma:

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"}'

Evaluasi seluruh suite

Jalankan seluruh suite (semua 21 primitif atau semua 22 komposit):

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"}'

Atau kedua suite:

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"}'

Episode evaluasi yang direkomendasikan

10 episode per tugas untuk benchmarking yang dapat direproduksi (total 210 untuk suite primitif lengkap, 220 untuk komposit). Sesuai dengan protokol dalam paper VLABench.

Input dan output kebijakan

Observasi:

  • observation.state — keadaan ujung-efektor 7-dimensi (posisi xyz + Euler xyz + gripper)
  • observation.images.image — kamera depan, 480×480 HWC uint8
  • observation.images.second_image — kamera kedua, 480×480 HWC uint8
  • observation.images.wrist_image — kamera pergelangan tangan, 480×480 HWC uint8

Aksi:

  • Kontrol kontinu dalam Box(-1, 1, shape=(7,)) — posisi 3D + orientasi Euler 3D + gripper 1D.

Pelatihan

Dataset

Dataset VLABench yang telah dikumpulkan sebelumnya dalam format LeRobot di Hub:

Perintah pelatihan contoh

Lakukan fine-tuning pada SmolVLA base di suite primitif:

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

Mereproduksi hasil yang dipublikasikan

Checkpoint yang dirilis lerobot/smolvla_vlabench dilatih pada dataset primitive-suite di atas dan dievaluasi dengan perintah Single-task / Suite-wide. CI menjalankan smoke eval 10-primitive-task (satu episode masing-masing) pada setiap PR yang menyentuh benchmark.

Update on GitHub