LeRobot documentation
VLABench
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).
- Makalah: VLABench: A Large-Scale Benchmark for Language-Conditioned Robotics Manipulation with Long-Horizon Reasoning
- GitHub: OpenMOSS/VLABench
- Situs web proyek: vlabench.github.io
- Kebijakan pra-terlatih:
lerobot/smolvla_vlabench
Tugas yang tersedia
VLABench menyediakan dua kumpulan tugas yang mencakup 43 kategori tugas di permukaan --env.task LeRobot:
| Suite | Nama CLI | Tugas | Deskripsi |
|---|---|---|---|
| Primitif | primitive | 21 | Kombinasi satu / beberapa keterampilan (select, insert, physics QA) |
| Komposit | composite | 22 | Penalaran 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, atauprimitive,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.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)
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 uint8observation.images.second_image— kamera kedua, 480×480 HWC uint8observation.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:
VLABench/vlabench_primitive_ft_lerobot_video— 5.000 episode, 128 tugas, gambar 480×480.VLABench/vlabench_composite_ft_lerobot_video— 5.977 episode, 167 tugas, gambar 224×224.
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=10000Mereproduksi 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.