Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Точки входа в скрипты Python

Эти скрипты дополняют Notebook, а не заменяют их. Notebook нужен для пошагового просмотра изображений, действий и диагностических метрик; скрипты — для пакетной оценки, воспроизведения наборов данных и генерации проверяемых видео. Скрипты не содержат наборов данных, весов моделей и полного проекта mujoco_pnp.

Учебник для нескольких бенчмарков также предоставляет две лёгкие точки входа:

  • convert_discoverse_to_lerobot.py: переводит два видеопотока AIRBOT из DISCOVERSE, 7-мерное состояние и 7-мерное действие в данные LeRobot и выводит список конвертированных эпизодов;
  • robocasa_match16/sitecustomize.py: во время выполнения регистрирует фиксированную панель сравнения RoboCasa365 из 16 задач, не меняя исходный код RoboCasa.

Подготовка к запуску

В каталоге этой темы задайте пути:

cd /path/to/every-embodied/<topic-folder>
export PROJECT_ROOT=/path/to/mujoco_pnp
export DATA_ROOT=/path/to/datasets/every_embodied
export MODEL_ROOT=/path/to/checkpoints/every_embodied
export OUTPUT_ROOT=/path/to/outputs/every_embodied

<topic-folder> — каталог этой темы в исходном репозитории every-embodied.

PROJECT_ROOT должен содержать как минимум asset/example_scene_y2.xml и mujoco_env/y_env2.py. В DATA_ROOT по умолчанию ищется omy_pnp_language/meta/info.json; можно также задать DATASET_ROOT напрямую. Происхождение, размер и способ размещения вышестоящего проекта описаны в ../external/README.md.

PyTorch на ROCm по-прежнему использует DEVICE=cuda. Если нужно только проверить пути и импорты, можно явно задать DEVICE=cpu, но по этому запуску нельзя судить о реальной производительности GPU.

Для записи видео в первую очередь используется H.264 через imageio и imageio-ffmpeg. Если в окружении есть только opencv-python, скрипт автоматически переходит на кодек MP4, доступный OpenCV. Для стабильного воспроизведения в браузере рекомендуется дополнительно установить:

pip install imageio imageio-ffmpeg

Пакетная замкнутая оценка

run_closed_loop.py напрямую читает checkpoint, помещает стратегию в SimpleEnv2, получает с частотой 20 Гц изображения с двух камер, 6-мерное состояние суставов и языковую инструкцию, а затем выводит 7-мерное действие. Одновременно записываются:

  • legacy_success: старое геометрическое условие успеха вышестоящей среды;
  • physical_success: строгое условие, которое дополняет старое длительностью подъёма, высотой укладки, прямостоянием кружки, смещением тарелки, освобождением захвата, подъёмом концевого эффектора и числом кадров устойчивого положения;
  • вспомогательные поля проверки: xy_dist, max_target_lift, upright_cos и др.;
  • видео rollout для каждого seed в формате H.264/yuv420p (при недоступности кодека используется OpenCV) и файл results.jsonl.

Пример:

export POLICY_TYPE=smolvla
export MODEL_RUN_DIR="$MODEL_ROOT/smolvla_weighted_000500"
export EVAL_SEEDS=1000,1001,1002,1003
export RENDER=0
python code/run_closed_loop.py

POLICY_TYPE принимает значения act, smolvla и pi0. Если каталог модели уже является pretrained_model, используйте:

export POLICY_PATH=/path/to/pretrained_model
python code/run_closed_loop.py

По умолчанию замкнутый цикл не открывает 3D-окно, поэтому он подходит для Xvfb или серверов без дисплея. Чтобы наблюдать окно в реальном времени, задайте RENDER=1 и заранее настройте DISPLAY. В официальном отчёте не ограничивайтесь стандартными четырьмя seed: используйте не менее 20–30 отложенных seed и отдельно считайте результаты для красной кружки, синей кружки и физического успеха.

Быстрая точка входа для SmolVLA

python code/task11_smolvla_eval.py

Скрипт лишь задаёт POLICY_TYPE=smolvla и четыре seed по умолчанию, после чего вызывает run_closed_loop.py. Если путь к модели другой, сначала явно задайте MODEL_RUN_DIR. Скрипт не выполняет код по фиксированным номерам ячеек Notebook и не записывает файлы авторизации X-сервера.

Воспроизведение набора данных

Сначала выведите список эпизодов:

python code/replay_dataset.py --list

Затем экспортируйте вид с основной камеры (agent) или с камеры запястья (wrist):

python code/replay_dataset.py --episode 0 --view agent
python code/replay_dataset.py --episode 3 --view wrist --fps 20

По умолчанию файл записывается в $OUTPUT_ROOT/replay_ep{episode}_{view}.mp4. Для основного вида скрипт сначала читает observation.image, а для совместимости также принимает старое имя agent_image; вид с запястья берётся из observation.wrist_image. Если набор лежит не в DATA_ROOT/omy_pnp_language, задайте:

export DATASET_ROOT=/path/to/omy_pnp_language

Вводная демонстрация MuJoCo

Демонстрация с шариком не требует внешних ресурсов:

python code/demo/demo_ball.py

Демонстрация с манипулятором требует сцену вышестоящего проекта:

python code/demo/demo_arm.py

Оба видео записываются в outputs/demo_videos в формате H.264/yuv420p, который легко декодируется браузерами. Демонстрации проверяют только рендеринг, сцену и цепочку видео; они не равны обучению стратегии и не измеряют успех в замкнутом цикле.

Известные ограничения

  • Облегчённая ветка amd-rocm не содержит обучающих демонстраций, checkpoint, кэша Hugging Face и полного каталога third_party/.
  • Скрипты должны соответствовать вышестоящему mujoco_pnp и версии LeRobot. При несовпадении сначала сверьте пути и аудит окружения в Notebook 01.
  • Если не заданы PROJECT_ROOT, метаданные набора или веса модели, скрипт явно сообщит об отсутствующем пути и не будет обращаться к абсолютным каталогам машины автора.
  • physical_success — строгий протокол учебника. Результаты четырёхсидового дымового теста скрипта не следует принимать за достаточное доказательство обобщения.