LeRobot documentation

VLABench

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

VLABench

VLABench — это крупномасштабный бенчмарк для языково-условленного манипулирования роботами с рассуждениями на длинной дистанции. Исходный набор охватывает 100 категорий задач более чем с 2000 объектами и оценивает шесть аспектов интеллекта робота: понимание мешей и текстур, пространственное рассуждение, перенос знаний о мире, понимание семантических инструкций, понимание физических законов и планирование на длинной дистанции. Построен на базе MuJoCo / dm_control с манипулятором Franka Panda 7-DOF. LeRobot предоставляет доступ к 43 из этих задач через --env.task (21 примитив + 22 составные, см. Доступные задачи ниже).

VLABench benchmark overview

Доступные задачи

VLABench включает два набора задач, охватывающих 43 категории задач в интерфейсе --env.task LeRobot:

SuiteИмя CLIЗадачиОписание
Примитивprimitive21Комбинации одного / нескольких навыков (select, insert, physics QA)
Композитныйcomposite22Многоступенчатое рассуждение и планирование на длинной дистанции (готовка, перестановка)

Примитивные задачи: 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.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)

Оценка

Все приведённые ниже фрагменты кода для оценки повторяют команду, которую запускает 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 uint8
  • observation.images.second_image — вторая камера, 480×480 HWC uint8
  • observation.images.wrist_image — камера запястья, 480×480 HWC uint8

Действия:

  • Непрерывное управление в Box(-1, 1, shape=(7,)) — 3D-позиция + 3D-ориентация Эйлера + 1D-захват.

Обучение

Наборы данных

Предварительно собранные наборы данных VLABench в формате LeRobot на Hub:

Пример команды обучения

Настройте базовую модель 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, затрагивающего бенчмарк.

Update on GitHub