LeRobot documentation
GR00T Policy
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 basenvidia/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.
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_NAMECela 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) :
| Suite | Taux de réussite | Point de contrôle |
|---|---|---|
| LIBERO Spatial | 95% | nvidia/gr00t17-lerobot-libero_spatial-640 |
| LIBERO Object | 100% | nvidia/gr00t17-lerobot-libero_object-640 |
| Objectif LIBERO | 98% | nvidia/gr00t17-lerobot-libero_goal-640 |
| LIBERO 10 (Long) | 93% | nvidia/gr00t17-lerobot-libero_10-640 |
| Moyenne | 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=50Utilisez 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=0La valeur de
inference.queue_thresholdne 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