Точки входа в скрипты 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— строгий протокол учебника. Результаты четырёхсидового дымового теста скрипта не следует принимать за достаточное доказательство обобщения.