LeRobot documentation

Политика GR00T

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Политика GR00T

GR00T — это семейство фундаментальных моделей NVIDIA для обобщённого рассуждения и навыков гуманоидных роботов. Это политика, работающая с разными воплощениями, которая принимает мультимодальный ввод, включая язык, изображения и проприоцепцию, для выполнения задач манипуляции в разнообразных средах.

LeRobot интегрирует GR00T N1.7 через тип политики groot.

Существенное изменение: поддержка GR00T N1.5 была удалена из LeRobot, а текущие версии поддерживают только GR00T N1.7. Чекпоинты и конфигурации N1.5 отклоняются с примечанием о миграции. Чтобы продолжать использовать чекпоинт N1.5, зафиксируйте последнюю версию, которая его поддерживает: pip install 'lerobot==0.5.1'. Чтобы использовать текущую версию, выполните миграцию на GR00T N1.7 (базовая модель nvidia/GR00T-N1.7-3B).

Обзор модели

GR00T N1.7 использует базовую модель Cosmos-Reason2/Qwen3-VL и предоставляет контрольные точки для SimplerEnv, DROID и LIBERO.

Разработчики и исследователи могут выполнять постобучение GR00T на собственных реальных или синтетических данных, чтобы адаптировать его под конкретные гуманоидные роботы или задачи.

GR00T использует предобученные визуальные и языковые энкодеры вместе с трансформером действий на основе flow matching для моделирования блока действий, обусловленного визуальными данными, языком и проприоцепцией.

An overview of GR00T

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

  • Реальные данные, полученные от роботов.
  • Синтетические данные, сгенерированные с помощью NVIDIA Isaac GR00T Blueprint.
  • Видео данные интернет-масштаба.

Этот подход позволяет модели быть высокоадаптивной благодаря дообучению для конкретных воплощений, задач и сред.

Требования к установке

GR00T предназначен для систем с ускорением на GPU от NVIDIA. Установите LeRobot с дополнительным пакетом GR00T:

pip install "lerobot[groot]"

Для установки из исходного кода:

pip install -e ".[groot]"

Использование

Для использования GR00T N1.7:

--policy.type=groot

Обучение

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

Вот полная команда обучения для дообучения базовой модели GR00T на собственном наборе данных:

Эта команда использует флаг new_embodiment, который применяется для робота SO-101, узнайте больше о том, как GR00T обрабатывает различные embodiments..

# install extra deps for training
pip install "lerobot[training]"

hf auth login
# Trackio needs no login for local runs; pass --trackio.space_id=<user>/<space> to sync runs to a Hugging Face Space.

export DATASET_NAME=your_data_set
export HF_USER=your_hf_username
export DATASET=$HF_USER/$DATASET_NAME
export REPO_ID="${DATASET}_GR00T17" #this is the model that will be uploaded to huggingface
export OUTPUT_DIR=outputs/train/$REPO_ID

lerobot-train \
  --dataset.repo_id=$DATASET \
  --dataset.image_transforms.enable=true \
  --policy.type=groot \
  --policy.device=cuda \
  --policy.base_model_path=nvidia/GR00T-N1.7-3B \
  --policy.embodiment_tag=new_embodiment \
  --policy.chunk_size=16 \
  --policy.n_action_steps=16 \
  --policy.use_relative_actions=true \
  --policy.relative_exclude_joints='["gripper"]' \
  --policy.use_bf16=true \
  --policy.push_to_hub=true \
  --policy.repo_id=$REPO_ID \
  --seed=42 \
  --batch_size=64 \
  --steps=20000 \
  --save_checkpoint=true \
  --save_freq=5000 \
  --use_policy_training_preset=true \
  --env_eval_freq=0 \
  --eval_steps=0 \
  --log_freq=10 \
  --output_dir=$OUTPUT_DIR \
  --job_name=$DATASET \
  --trackio.enable=true \
  --trackio.disable_artifact=true

Результаты производительности

Результаты бенчмарка LIBERO

Перед запуском lerobot-eval следуйте инструкциям по настройке LIBERO.

GR00T N1.7 продемонстрировал высокие результаты на наборе бенчмарков LIBERO. Чтобы воспроизвести результаты LeRobot, следуйте инструкциям в разделе LIBERO.

Обучение на LIBERO

Пример команды обучения для набора LIBERO (здесь libero_spatial):

IMAGE_TRANSFORMS='{
  "brightness": {"weight": 1.0, "type": "ColorJitter", "kwargs": {"brightness": [0.7, 1.3]}},
  "contrast":   {"weight": 1.0, "type": "ColorJitter", "kwargs": {"contrast":   [0.6, 1.4]}},
  "saturation": {"weight": 1.0, "type": "ColorJitter", "kwargs": {"saturation": [0.5, 1.5]}},
  "hue":        {"weight": 1.0, "type": "ColorJitter", "kwargs": {"hue":        [-0.08, 0.08]}}
}'

lerobot-train \
  --dataset.repo_id=IPEC-COMMUNITY/libero_spatial_no_noops_1.0.0_lerobot \
  --dataset.root=/datasets/libero_spatial \
  --dataset.revision=main \
  --dataset.video_backend=pyav \
  --dataset.image_transforms.enable=true \
  --dataset.image_transforms.max_num_transforms=4 \
  --dataset.image_transforms.tfs="$IMAGE_TRANSFORMS" \
  --policy.type=groot \
  --policy.base_model_path=nvidia/GR00T-N1.7-3B \
  --policy.embodiment_tag=libero_sim \
  --policy.push_to_hub=false \
  --policy.use_relative_actions=false \
  --policy.max_steps=20000 \
  --batch_size=320 \
  --steps=20000 \
  --save_freq=2000 \
  --env_eval_freq=0 \
  --eval_steps=0 \
  --log_freq=10 \
  --trackio.enable=true \
  --trackio.project=lerobot \
  --trackio.disable_artifact=true \
  --num_workers=4 \
  --prefetch_factor=2 \
  --persistent_workers=true \
  --output_dir=$OUTPUT_DIR \
  --job_name=$JOB_NAME

Это будет следовать рецепту, найденному здесь.

Результаты GR00T N1.7 LIBERO

Предварительные результаты интеграции LeRobot (GR00T-LeRobot, eval.n_episodes >= 50 на каждый набор):

SuiteУспешностьЧекпоинт
LIBERO Spatial95%nvidia/gr00t17-lerobot-libero_spatial-640
LIBERO Object100%nvidia/gr00t17-lerobot-libero_object-640
LIBERO Цель98%nvidia/gr00t17-lerobot-libero_goal-640
LIBERO 10 (Long)93%nvidia/gr00t17-lerobot-libero_10-640
Среднее96.5%
export MODEL_ID=your_trained_model_on_huggingface

lerobot-eval \
  --policy.path=$MODEL_ID \
  --policy.embodiment_tag=libero_sim \
  --env.type=libero \
  --env.task=libero_spatial \
  --eval.n_episodes=50

При сообщении о показателях успеха используйте eval.n_episodes >= 50 на каждый набор.

Оценка в вашей аппаратной конфигурации

После того как вы обучите модель с использованием своих параметров, вы сможете выполнять инференс в вашей целевой задаче. Следуйте инструкциям в Policy Deployment (lerobot-rollout). Например:

# install extra deps for roullout and real hardware
pip install "lerobot[feetech,viz]"

export MODEL_ID=your_trained_model_on_huggingface

# make sure that camera index matches your setup!
# find index using `uv run lerobot-find-cameras opencv`
WRIST_CAM='wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: "MJPG"}'
FRONT_CAM='front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"}'
export ROBOT_CAMERAS="{ $WRIST_CAM, $FRONT_CAM }"
export ROBOT_ID=follower_robot
export ROBOT_PORT=/dev/ttyACM0

# Set --inference.rtc.enabled=False if RTC causes inference instability
uv run lerobot-rollout \
  --strategy.type=base \
  --policy.path=$MODEL_ID \
  --policy.base_model_path=nvidia/GR00T-N1.7-3B \
  --policy.n_action_steps=8 \
  --robot.type=so101_follower \
  --robot.port=$ROBOT_PORT \
  --robot.id=$ROBOT_ID \
  --robot.cameras="$ROBOT_CAMERAS" \
  --task="place the vial in the rack" \
  --duration=60 \
  --device=cuda \
  --display_data=true \
  --inference.type=rtc \
  --inference.rtc.enabled=True \
  --inference.rtc.execution_horizon=8 \
  --inference.queue_threshold=0

Значение inference.queue_threshold не должно превышать 5 для обеспечения стабильного вывода.

Лицензия

GR00T N1.7 распространяется по NVIDIA Open Model License Agreement.

Update on GitHub