# GR00T Policy GR00T is an NVIDIA foundation model family for generalized humanoid robot reasoning and skills. It is a cross-embodiment policy that accepts multimodal input, including language, images, and proprioception, to perform manipulation tasks in diverse environments. LeRobot integrates GR00T N1.7 through the `groot` policy type. > [!WARNING] > **Breaking change:** GR00T N1.5 support was removed from LeRobot, and current releases support GR00T N1.7 only. N1.5 checkpoints and configs are rejected with a migration note. To keep using an N1.5 checkpoint, pin the last release that supports it: `pip install 'lerobot==0.5.1'`. To use the current release, migrate to GR00T N1.7 (base model [`nvidia/GR00T-N1.7-3B`](https://huggingface.co/nvidia/GR00T-N1.7-3B)). ## Model Overview GR00T N1.7 uses a Cosmos-Reason2/Qwen3-VL backbone and provides checkpoints for SimplerEnv, DROID, and LIBERO. Developers and researchers can post-train GR00T with their own real or synthetic data to adapt it for specific humanoid robots or tasks. GR00T uses pre-trained vision and language encoders with a flow matching action transformer to model a chunk of actions conditioned on vision, language, and proprioception. An overview of GR00T Its strong performance comes from being trained on an expansive and diverse humanoid dataset, which includes: - Real captured data from robots. - Synthetic data generated using NVIDIA Isaac GR00T Blueprint. - Internet-scale video data. This approach allows the model to be highly adaptable through post-training for specific embodiments, tasks, and environments. ## Installation Requirements GR00T is intended for NVIDIA GPU-accelerated systems. Install LeRobot with the GR00T extra: ```bash pip install "lerobot[groot]" ``` For a source checkout: ```bash pip install -e ".[groot]" ``` ### Optional: Flash Attention acceleration Flash Attention is a purely optional performance optimization. **LeRobot neither installs nor requires it**, and setting it up is up to the user as it has environment-specific build requirements (a matching PyTorch/CUDA toolchain). To enable it: 1. Install a `flash-attn` build matching your PyTorch/CUDA environment (see the [Flash Attention project](https://github.com/Dao-AILab/flash-attention)): ```bash # Check https://pytorch.org/get-started/locally/ for the right CUDA wheel index for your system. pip install "torch>=2.7,<2.12.0" "torchvision>=0.22.0,<0.27.0" \ --index-url https://download.pytorch.org/whl/cu128 pip install "ninja>=1.11.1,<2.0.0" "packaging>=24.2,<26.0" pip install "flash-attn>=2.5.9,<3.0.0" --no-build-isolation python -c "import flash_attn; print(f'Flash Attention {flash_attn.__version__} imported successfully')" ``` 2. Install lerobot with the groot extra. 3. Opt in by passing `--policy.use_flash_attention=true` when training/evaluating GR00T. If the kernel is missing or fails to import, the backbone transparently falls back to SDPA. ## Usage To use GR00T N1.7: ```bash --policy.type=groot ``` ## Training ### Training Command Example Here's a complete training command for finetuning the base GR00T model on your own dataset: ```bash export BASE_MODEL=nvidia/GR00T-N1.7-3B uv run lerobot-train \ --dataset.repo_id=$DATASET_ID \ --dataset.image_transforms.enable=true \ --policy.type=groot \ --policy.device=cuda \ --policy.base_model_path=$BASE_MODEL \ --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.use_flash_attention=true \ --policy.push_to_hub=true \ --policy.repo_id=$REPO_ID \ --seed=42 \ --batch_size=64 \ --steps=20000 \ --save_checkpoint=true \ --use_policy_training_preset=true \ --env_eval_freq=0 \ --eval_steps=0 \ --log_freq=100 \ --output_dir=$OUTPUT_DIR \ --job_name=$JOB_NAME ``` ## Performance Results ### LIBERO Benchmark Results > [!NOTE] > Follow the [LIBERO](./libero) setup instructions before running `lerobot-eval`. GR00T N1.7 has demonstrated strong performance on the LIBERO benchmark suite. To reproduce LeRobot results, follow the instructions in the [LIBERO](./libero) section. ### GR00T N1.7 LIBERO Checkpoints NVIDIA publishes GR00T N1.7 LIBERO checkpoints at [`nvidia/GR00T-N1.7-LIBERO`](https://huggingface.co/nvidia/GR00T-N1.7-LIBERO), with one subdirectory per LIBERO suite: | Suite | Checkpoint subdirectory | | -------------- | ----------------------- | | LIBERO Spatial | `libero_spatial` | | LIBERO Object | `libero_object` | | LIBERO Goal | `libero_goal` | | LIBERO 10 | `libero_10` | Preliminary LeRobot integration results (GR00T-LeRobot, `eval.n_episodes >= 50` per suite): | Suite | Success rate | | ---------------------- | -----------: | | LIBERO Spatial | 94% | | LIBERO Object | 98% | | LIBERO Goal | 93% | | LIBERO 10 (Long) | 90% | | **Average** | **93.75%** | Download the suite checkpoint locally, then point `--policy.base_model_path` at the downloaded subdirectory. `--policy.path` is reserved for LeRobot checkpoints that contain a LeRobot `config.json` with a `type` field. ```bash hf download nvidia/GR00T-N1.7-LIBERO \ --include "libero_spatial/*" \ --local-dir ./GR00T-N1.7-LIBERO lerobot-eval \ --policy.type=groot \ --policy.base_model_path=./GR00T-N1.7-LIBERO/libero_spatial \ --policy.embodiment_tag=libero_sim \ --env.type=libero \ --env.task=libero_spatial \ --eval.n_episodes=50 ``` Use `eval.n_episodes >= 50` per suite when reporting success rates. ### Evaluate in your hardware setup Once you have trained your model using your parameters you can run inference in your downstream task. Follow the instructions in [Policy Deployment (lerobot-rollout)](./inference). For example: ```bash uv run lerobot-rollout \ --strategy.type=base \ --inference.type=rtc \ --policy.path=$OUTPUT_DIR/checkpoints/020000/pretrained_model/ \ --policy.base_model_path=$BASE_MODEL \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=orange_andrew \ --robot.cameras='{ wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"}, front: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: "MJPG"} }' \ --task="place the vial in the rack" \ --duration=60 \ --device=cuda \ --display_data=true \ --inference.rtc.enabled=false \ --inference.rtc.execution_horizon=8 \ --inference.queue_threshold=0 \ --policy.n_action_steps=8 ``` ## License GR00T N1.7 is released under the [NVIDIA Open Model License Agreement](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/).