LeRobot documentation
VLABench
VLABench
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회)를 실행합니다.