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

RoboCasa365: загрузка, обучение и оценка на ROCm

RoboCasa365 — это фреймворк обучения и бенчмарк для роботов в бытовой обстановке: 365 задач, кухонные ресурсы, демонстрационные данные, а также точки входа для стратегий GR00T и Pi0.5. В этой главе воспроизводятся загрузка ресурсов, безголовый рендеринг, вывод официального checkpoint, официальная оценка 16 задач и видео с четырёх видов, которые мы получили на AMD Ryzen AI MAX+ 395.

1. Результаты главы

  • RoboCasa, RoboSuite и среда MuJoCo;
  • около 10 ГБ кухонных ресурсов и необязательные сгенерированные ИИ объекты;
  • checkpoint GR00T N1.5 и многозадачный checkpoint Pi0.5;
  • одинаковый протокол 16 задач × 50 эпизодов;
  • видео с четырёх камер: центральной, левой, правой и «глаз-рука»;
  • точки входа для продолжения обучения GR00T или Pi0.5.

Версия и контракт задач

После установки зафиксируйте версии исходного кода:

git -C "$SRC_ROOT/robosuite" rev-parse HEAD
git -C "$SRC_ROOT/robocasa" rev-parse HEAD

Официальная оценка использует PandaOmron, 12-мерное действие, одни и те же 16 задач и по 50 эпизодов на задачу. Успех задачи определяет проверка условий в среде RoboCasa: состояние объектов, отношения контейнеров, положение суставов открытия и устойчивый кадр должны одновременно соответствовать определению задачи. Скрипт оценки записывает это поле в результаты по каждому эпизоду без изменений.

2. Загрузка исходного кода и ресурсов

# Сначала в текущем терминале задайте переменные каталогов WORK_ROOT, SRC_ROOT и др. из главы README_10.
test -n "$SRC_ROOT" && test -n "$DATA_ROOT" && test -n "$MODEL_ROOT"
cd "$SRC_ROOT"

git clone https://github.com/ARISE-Initiative/robosuite.git
git clone https://github.com/robocasa/robocasa.git

python -m pip install -e "$SRC_ROOT/robosuite"
python -m pip install -e "$SRC_ROOT/robocasa"
python -m pip install imageio imageio-ffmpeg

cd "$SRC_ROOT/robocasa"
python -m robocasa.scripts.setup_macros
python -m robocasa.scripts.download_kitchen_assets

Ресурсы загружаются долго; если загрузка прервалась, повторите ту же команду. Чтобы посмотреть кухни, объекты и задачи:

python -m robocasa.demos.demo_kitchen_scenes
python -m robocasa.demos.demo_objects
python -m robocasa.demos.demo_tasks

Для обучения pretrain_human300 нужны человеческие демонстрации из предобучающего разбиения. RoboCasa по реестру наборов данных загрузит все соответствующие задачи:

cd "$SRC_ROOT/robocasa"
python -m robocasa.scripts.download_datasets \
  --split pretrain \
  --source human

Этот набор данных очень большой. Если изучаете только одну-две задачи, загрузите их по именам:

python -m robocasa.scripts.download_datasets \
  --tasks PickPlaceCounterToCabinet CloseFridge

После загрузки проверьте по реестру, что pretrain_human300 найден и содержит каталоги данных:

python - <<'PY'
from robocasa.utils.dataset_registry import DATASET_SOUP_REGISTRY

rows = DATASET_SOUP_REGISTRY["pretrain_human300"]
print("datasets:", len(rows))
print("first:", rows[0])
assert len(rows) > 0
PY

3. Загрузка официальных стратегий

hf download robocasa/robocasa365_checkpoints \
  --include 'gr00t_n1-5_multitask_120000/**' \
  --local-dir "$MODEL_ROOT/robocasa365"

hf download robocasa/robocasa365_checkpoints \
  --include 'pi05_pretrain_human300_multitask_75000/**' \
  --local-dir "$MODEL_ROOT/robocasa365"

В каталоге модели должно быть:

checkpoints/robocasa365/
├── gr00t_n1-5_multitask_120000/
└── pi05_pretrain_human300_multitask_75000/

4. Проверка окружения и действий

Публичные вспомогательные скрипты находятся в Radeon Physical AI Evidence Suite:

git clone https://github.com/Ethan-Chen-plus/radeon-physical-ai-evidence-suite.git \
  "$SRC_ROOT/radeon-physical-ai-evidence-suite"

export MUJOCO_GL=egl
python "$SRC_ROOT/radeon-physical-ai-evidence-suite/scripts/robocasa_amd_smoke.py" \
  --task PickPlaceCounterToCabinet \
  --episodes 3 \
  --steps 40 \
  --out-dir "$RUN_ROOT/robocasa365/smoke"

Мобильный манипулятор PandaOmron имеет 12-мерный интерфейс: правая рука 6, захват 1, плоское шасси 3, подъёмный корпус 1, режим шасси 1. Проверьте каждое измерение действия вспомогательным скриптом:

python "$SRC_ROOT/radeon-physical-ai-evidence-suite/scripts/robocasa_mobile_mvp.py" \
  --env-name PickPlaceCounterToMicrowave \
  --dataset-base-path "$DATA_ROOT/robocasa365" \
  --output-dir "$RUN_ROOT/robocasa365/mobile_gate" \
  --episodes 1 \
  --steps 40

5. Обучение GR00T N1.5

cd "$SRC_ROOT"
git clone https://github.com/robocasa-benchmark/Isaac-GR00T.git
python -m pip install -e "$SRC_ROOT/Isaac-GR00T"

cd "$SRC_ROOT/Isaac-GR00T"
python scripts/gr00t_finetune.py \
  --output-dir "$RUN_ROOT/robocasa365/gr00t_train" \
  --dataset_soup pretrain_human300 \
  --max_steps 120000 \
  --save_steps 5000 \
  --batch_size 32 \
  --report_to tensorboard

pretrain_human300 соответствует комбинации человеческих демонстраций RoboCasa365 для 300 задач. Перед длительным обучением установите --max_steps равным 10, проверьте loss, загрузку GPU и запись checkpoint, и только потом верните 120000 шагов. Официально для обучения рекомендуется видеопамять от 80 ГБ; на AMD устройствах меньшего размера лучше проводить вывод, оценку или эксперименты с меньшим размером батча. При уменьшении batch size обязательно записывайте фактическое значение в конфигурацию запуска.

6. Обучение Pi0.5

Pi0.5 использует отдельное окружение JAX:

cd "$SRC_ROOT"
git clone https://github.com/robocasa-benchmark/openpi.git robocasa-openpi
python -m pip install -e "$SRC_ROOT/robocasa-openpi"
python -m pip install -e "$SRC_ROOT/robocasa-openpi/packages/openpi-client"

cd "$SRC_ROOT/robocasa-openpi"
XLA_PYTHON_CLIENT_MEM_FRACTION=1.0 python scripts/train.py \
  pi05_pretrain_human300 \
  --exp-name=robocasa_pi05_amd

Перед запуском AMD JAX обязательно пройдите предварительную проверку матрицы из главы README_10. Модель, статистику нормализации и конфигурацию обучения храните в одном выходном каталоге.

7. Официальная оценка

GR00T:

cd "$SRC_ROOT/Isaac-GR00T"
export MATCH16_SITE="$EVERY_EMBODIED_ROOT/<topic-folder>/code/robocasa_match16"
export PYTHONPATH="$MATCH16_SITE${PYTHONPATH:+:$PYTHONPATH}"

python scripts/run_eval.py \
  --model_path "$MODEL_ROOT/robocasa365/gr00t_n1-5_multitask_120000" \
  --task_set amd_match16 \
  --split pretrain \
  --n_episodes 50 \
  --n_envs 1 \
  --video_dir "$RUN_ROOT/robocasa365/gr00t_eval"

python gr00t/eval/get_eval_stats.py \
  --dir "$RUN_ROOT/robocasa365/gr00t_eval" \
  --task_set amd_match16

<topic-folder> — это каталог этой темы в исходном репозитории every-embodied (раздел тем для совместного обучения, тема AMD ROCm).

sitecustomize.py регистрирует amd_match16 при запуске Python и не меняет исходный код RoboCasa. Переменная MATCH16_SITE берёт значение $EVERY_EMBODIED_ROOT из главы README_10, поэтому Every Embodied и исходный код симуляции могут находиться на разных дисках.

Pi0.5 разделяется на сервис стратегии и клиент симуляции. Сервис постоянно занимает терминал, поэтому откройте два терминала и в каждом активируйте одно и то же окружение ROCm JAX.

Терминал A запускает сервис стратегии:

cd "$SRC_ROOT/robocasa-openpi"
python scripts/serve_policy.py \
  --port=8000 policy:checkpoint \
  --policy.config=pi05_pretrain_human300 \
  --policy.dir="$MODEL_ROOT/robocasa365/pi05_pretrain_human300_multitask_75000"

Когда порт 8000 начнёт слушать, оставьте терминал A без изменений. В терминале B запускаются клиент симуляции и сводка результатов:

cd "$SRC_ROOT/robocasa-openpi"
export MATCH16_SITE="$EVERY_EMBODIED_ROOT/<topic-folder>/code/robocasa_match16"
export PYTHONPATH="$MATCH16_SITE${PYTHONPATH:+:$PYTHONPATH}"
python examples/robocasa/main.py \
  --args.port 8000 \
  --args.task_soup amd_match16 \
  --args.split pretrain \
  --args.num_trials 50 \
  --args.log_dir "$RUN_ROOT/robocasa365/pi05_eval"

python examples/robocasa/get_eval_stats.py \
  --dir "$RUN_ROOT/robocasa365/pi05_eval"

Наш официальный протокол фиксирует 16 задач по 50 эпизодов на каждую; обе модели используют одни и те же задачи, знаменатель и условия успеха среды:

ArrangeTea, CloseFridge, CloseToasterOvenDoor, CoffeeSetupMug,
DeliverStraw, OpenCabinet, OpenDrawer, PackIdenticalLunches,
PickPlaceDrawerToCounter, PortionHotDogs, PrepareCoffee,
RecycleBottlesByType, RinseSinkBasin, ScrubCuttingBoard,
SeparateFreezerRack, SlideDishwasherRack
МодельУспешныхВсего эпизодовУспешность
GR00T N1.523080028,75%
Pi0.514280017,75%

8. Длинное видео с четырёх видов

python "$SRC_ROOT/radeon-physical-ai-evidence-suite/scripts/robocasa365_showcase.py" \
  --help

Скрипт показа сохраняет разрешение входа стратегии неизменным и повышает разрешение только камер записи. Рекомендуется записывать центральную, левую, правую камеры и камеру «глаз в руке» по 960×540, а затем склеивать их в 1920×1080 при 20 кадрах в секунду. Полный пример см. в длинном успешном видео PackIdenticalLunches.

9. Ключевые моменты переноса на AMD

МодульДопущение вышестоящего проектаРешение на AMDСпособ проверки
GR00T N1.5PyTorch на CUDAУстановить PyTorch для ROCm, строка устройства остаётся cudaПрямой проход, обратный проход, оптимизатор и сохранение модели
Pi0.5JAX на CUDAИзолированная установка ROCm JAXМатрица 64×64, загрузка модели и сервис стратегии
MuJoCoЛокальное графическое окноMUJOCO_GL=eglreset → step → render → MP4
ДанныеОтносительные пути в реестреСмонтировать на диск данных, оба репозитория стратегий читают один реестрЧисло записей в реестре, декодирование видео, размерность действий
Интерфейс действий12-мерное действие PandaOmronСохранить порядок правой руки, захвата, шасси, корпуса и режимных битовПоэлементная проверка фиксированного действия
ОценкаСвой скрипт у каждой стратегииЗарегистрировать один и тот же набор задач amd_match16Сводка 16×50 с одним знаменателем

Лучше устанавливать PyTorch, JAX и MuJoCo [симулятор динамики роботов] в отдельных окружениях. После успешной загрузки стратегии сначала проверьте интерфейс действий: нормализация действий, тип робота и частота управления определяют, соответствует ли действие в замкнутом цикле среде.

10. Частые проблемы

СимптомЧто проверить
При создании окружения не хватает ресурсовПовторно выполнить download_kitchen_assets и проверить macros_private.py
Ошибка рендеринга на удалённой машинеЗадать MUJOCO_GL=egl и PYOPENGL_PLATFORM=egl
Модель загружается, но действия неверныСверить тип робота, размерность действия, статистику нормализации и частоту управления
Видео успеха не совпадает со статистикойВидео должно быть из того же каталога эпизода; проверяйте поле успеха среды
Pi0.5 не видит устройство AMDПереустановить ROCm JAX в изолированном окружении и повторить проверку матрицы

11. Официальные материалы