LeRobot documentation
VLABench
VLABench
VLABench — это крупномасштабный бенчмарк для языково-условленного манипулирования роботами с рассуждениями на длинной дистанции. Исходный набор охватывает 100 категорий задач более чем с 2000 объектами и оценивает шесть аспектов интеллекта робота: понимание мешей и текстур, пространственное рассуждение, перенос знаний о мире, понимание семантических инструкций, понимание физических законов и планирование на длинной дистанции. Построен на базе MuJoCo / dm_control с манипулятором Franka Panda 7-DOF. LeRobot предоставляет доступ к 43 из этих задач через --env.task (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 включает два набора задач, охватывающих 43 категории задач в интерфейсе --env.task LeRobot:
| 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) - комбинированное сокращение (
primitive,compositeилиprimitive,composite)
Установка
VLABench не опубликован на PyPI — его единственный способ распространения — это репозиторий GitHub OpenMOSS/VLABench — поэтому LeRobot не предоставляет дополнительный пакет vlabench. Установите его вручную в режиме редактирования, вместе с фиксированными версиями MuJoCo / dm_control, необходимыми для VLABench, а затем загрузите сеточные ассеты:
# 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)
Оценка
Все приведённые ниже фрагменты кода для оценки повторяют команду, которую запускает CI (см. .github/workflows/benchmark_tests.yml). Аргумент --rename_map сопоставляет ключи камер image / second_image / wrist_image из VLABench с трёхкамерной (camera1 / camera2 / camera3) схемой ввода, на которой обучалась опубликованная политика smolvla_vlabench.
Оценка по одной задаче (рекомендуется для быстрой итерации)
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"}'Оценка всего набора
Запустите весь набор (все 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-захват.
Обучение
Наборы данных
Предварительно собранные наборы данных VLABench в формате LeRobot на Hub:
VLABench/vlabench_primitive_ft_lerobot_video— 5000 эпизодов, 128 задач, изображения 480×480.VLABench/vlabench_composite_ft_lerobot_video— 5977 эпизодов, 167 задач, изображения 224×224.
Пример команды обучения
Настройте базовую модель SmolVLA на наборе примитивов:
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 выполняется smoke-оценка на 10-примитивной задаче (по одному эпизоду на каждую) для каждого PR, затрагивающего бенчмарк.