LeRobot documentation

GR00T Policy

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GR00T Policy

GR00T est une famille de modèles de fondation d’NVIDIA pour le raisonnement et les compétences des robots humanoïdes généralisés. Il s’agit d’une politique inter-embodiment qui accepte des entrées multimodales, y compris le langage, les images et la proprioception, afin d’exécuter des tâches de manipulation dans des environnements variés.

LeRobot intègre GR00T N1.7 via le type de politique groot.

Changement majeur : la prise en charge de GR00T N1.5 a été retirée de LeRobot, et les versions actuelles ne prennent en charge que GR00T N1.7. Les points de contrôle et configurations N1.5 sont rejetés avec une note de migration. Pour continuer à utiliser un point de contrôle N1.5, fixez la dernière version qui le prend en charge : pip install 'lerobot==0.5.1'. Pour utiliser la version actuelle, migrez vers GR00T N1.7 (modèle de base nvidia/GR00T-N1.7-3B).

Aperçu du modèle

GR00T N1.7 utilise un backbone Cosmos-Reason2/Qwen3-VL et fournit des checkpoints pour SimplerEnv, DROID et LIBERO.

Les développeurs et les chercheurs peuvent effectuer un entraînement postérieur de GR00T avec leurs propres données réelles ou synthétiques afin de l'adapter à des robots humanoïdes ou à des tâches spécifiques.

GR00T utilise des encodeurs de vision et de langage pré-entraînés avec un transformateur d’actions par correspondance de flux pour modéliser un lot d’actions conditionnées par la vision, le langage et la proprioception.

An overview of GR00T

Ses excellentes performances proviennent de son entraînement sur un jeu de données humanoïde vaste et diversifié, qui comprend :

  • Données réelles capturées par des robots.
  • Données synthétiques générées à l'aide de NVIDIA Isaac GR00T Blueprint.
  • Données vidéo à l'échelle d'Internet.

Cette approche permet au modèle d'être hautement adaptable grâce à un entraînement postérieur pour des incarnations, des tâches et des environnements spécifiques.

Prérequis d'installation

GR00T est destiné aux systèmes accélérés par GPU NVIDIA. Installez LeRobot avec l'extra GR00T :

pip install "lerobot[groot]"

Pour une installation depuis le dépôt source :

pip install -e ".[groot]"

Utilisation

Pour utiliser GR00T N1.7 :

--policy.type=groot

Entraînement

Exemple de commande d'entraînement

Voici une commande de formation complète pour l’ajustement fin du modèle de base GR00T sur votre propre jeu de données :

Cette commande utilise le drapeau new_embodiment, qui est utilisé pour le robot SO-101, en savoir plus sur la manière dont GR00T gère les différentes incarnations..

# 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

Résultats de performance

Résultats du benchmark LIBERO

Suivez les instructions de configuration de LIBERO avant d'exécuter lerobot-eval.

GR00T N1.7 a démontré de solides performances sur la suite de benchmarks LIBERO. Pour reproduire les résultats de LeRobot, suivez les instructions de la section LIBERO.

Entraîner sur LIBERO

Exemple de commande d'entraînement pour une suite LIBERO (ici 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

Cela suivra la recette trouvée ici.

Résultats de GR00T N1.7 LIBERO

Résultats préliminaires de l'intégration LeRobot (GR00T-LeRobot, eval.n_episodes >= 50 par suite) :

SuiteTaux de réussitePoint de contrôle
LIBERO Spatial95%nvidia/gr00t17-lerobot-libero_spatial-640
LIBERO Object100%nvidia/gr00t17-lerobot-libero_object-640
Objectif LIBERO98%nvidia/gr00t17-lerobot-libero_goal-640
LIBERO 10 (Long)93%nvidia/gr00t17-lerobot-libero_10-640
Moyenne96.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

Utilisez eval.n_episodes >= 50 par suite lors de la déclaration des taux de réussite.

Évaluer dans votre configuration matérielle

Une fois que vous avez entraîné votre modèle à l'aide de vos paramètres, vous pouvez exécuter l'inférence dans votre tâche en aval. Suivez les instructions de Policy Deployment (lerobot-rollout). Par exemple :

# 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

La valeur de inference.queue_threshold ne doit pas dépasser 5 afin de garantir une inférence stable.

Licence

GR00T N1.7 est publié sous le NVIDIA Open Model License Agreement.

Update on GitHub