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는 장기 추론을 수반하는 언어 조건 로봇 조작을 위한 대규모 벤치마크입니다. 상위 스위트는 2,000개 이상의 객체를 아우르는 100개의 작업 카테고리를 다루며, 로봇 지능의 여섯 가지 차원을 평가합니다: 메시 & 텍스처 이해, 공간 추론, 세계 지식 전이, 의미적 지시 이해, 물리 법칙 이해, 그리고 장기 계획. MuJoCo / dm_control 기반이며 Franka Panda 7-DOF 암을 사용합니다. LeRobot은 --env.task를 통해 이 중 43개의 작업을 노출합니다(21개 원시 작업 + 22개 복합 작업, 아래 사용 가능한 작업 참조).
- 논문: VLABench: A Large-Scale Benchmark for Language-Conditioned Robotics Manipulation with Long-Horizon Reasoning
- GitHub: OpenMOSS/VLABench
- 프로젝트 웹사이트: vlabench.github.io
- 사전 학습된 정책:
lerobot/smolvla_vlabench
사용 가능한 작업
VLABench는 LeRobot의 --env.task 인터페이스에서 43개의 작업 카테고리를 다루는 두 가지 작업 스위트를 제공합니다:
| Suite | CLI 이름 | 작업 | 설명 |
|---|---|---|---|
| 원시 | primitive | 21 | 단일/소수 스킬 조합 (select, insert, physics QA) |
| 복합 | composite | 22 | 다단계 추론 및 장기 계획(요리, 재배치) |
원시 작업: 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 및 물리 추론 작업(density_qa, friction_qa, magnetism_qa, reflection_qa, simple_cuestick_usage, simple_seesaw_usage, sound_speed_qa, thermal_expansion_qa, weight_qa).
복합 작업: 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는 세 가지 형식을 지원합니다:
- 단일 작업 이름(
select_fruit) - 쉼표로 구분된 목록(
select_fruit,heat_food) - a suite 단축키(
primitive,composite또는primitive,composite)
설치
VLABench은 PyPI에 등록되어 있지 않습니다 — 배포 방식은 OpenMOSS/VLABench GitHub 저장소뿐입니다 — 따라서 LeRobot은 vlabench extra를 제공하지 않습니다. VLABench에 필요한 MuJoCo / dm_control 고정 버전과 함께 편집 가능한 클론으로 수동 설치한 뒤, 메시 에셋을 가져오세요:
# 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)
평가
아래의 모든 eval 스니펫은 CI가 실행하는 명령을 그대로 따릅니다(자세한 내용은 .github/workflows/benchmark_tests.yml 참조). --rename_map 인수는 VLABench의 image / second_image / wrist_image 카메라 키를 공개된 smolvla_vlabench 정책이 학습된 3개 카메라(camera1 / camera2 / camera3) 입력 레이아웃에 매핑합니다.
단일 작업 평가 (빠른 반복을 위한 권장 사항)
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"}'멀티 태스크 평가
쉼표로 구분된 작업 목록을 전달합니다:
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"}'Suite-wide evaluation
전체 스위트 (원시 21개 또는 복합 22개 전체)를 실행합니다:
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"}'또는 두 가지 스위트 모두:
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"}'권장 평가 에피소드
재현 가능한 벤치마크를 위해 태스크당 10에피소드를 사용합니다(원시 프리미티브 전체 스위트는 210개, 복합은 220개). VLABench 논문에서 제시한 프로토콜과 일치합니다.
정책 입력 및 출력
관찰 사항:
observation.state— 7차원 엔드 이펙터 상태 (위치 xyz + 오일러 xyz + 그리퍼)observation.images.image— 전면 카메라, 480×480 HWC uint8observation.images.second_image— 두 번째 카메라, 480×480 HWC uint8observation.images.wrist_image— 손목 카메라, 480×480 HWC uint8
작업:
Box(-1, 1, shape=(7,))의 연속 제어 — 3D 위치 + 3D 오일러 방향 + 1D 그리퍼.
학습
데이터셋
Hub에 LeRobot 형식으로 사전 수집된 VLABench 데이터셋:
VLABench/vlabench_primitive_ft_lerobot_video— 5,000 에피소드, 128개 작업, 480×480 이미지.VLABench/vlabench_composite_ft_lerobot_video— 에피소드 5,977개, 작업 167개, 224×224 이미지.
예시 학습 명령
primitive 스위트에서 SmolVLA 베이스를 Fine-tune합니다:
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발표된 결과 재현
발행된 체크포인트 lerobot/smolvla_vlabench는 위의 primitive-suite 데이터셋으로 학습되었으며, Single-task / Suite-wide 명령어로 평가됩니다. CI는 벤치마크에 영향을 미치는 모든 PR에서 10개 primitive-task 스모크 평가(에피소드당 1회)를 실행합니다.