LeRobot documentation

Política do GR00T

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Política do GR00T

GR00T é uma família de modelos de fundação da NVIDIA para raciocínio e habilidades generalizadas de robôs humanóides. Trata-se de uma política de interação com o ambiente que aceita entrada multimodal, incluindo linguagem, imagens e propriocepção, para executar tarefas de manipulação em diversos ambientes.

O LeRobot integra o GR00T N1.7 por meio do tipo de política groot.

Mudança que quebra compatibilidade: o suporte a GR00T N1.5 foi removido do LeRobot, e as versões atuais suportam apenas GR00T N1.7. Checkpoints e configs do N1.5 são rejeitados com uma nota de migração. Para continuar usando um checkpoint do N1.5, fixe a última versão que o suporta: pip install 'lerobot==0.5.1'. Para usar a versão atual, migre para GR00T N1.7 (modelo base nvidia/GR00T-N1.7-3B).

Visão geral do modelo

O GR00T N1.7 utiliza um backbone Cosmos-Reason2/Qwen3-VL e fornece checkpoints para SimplerEnv, DROID e LIBERO.

Desenvolvedores e pesquisadores podem realizar pós-treino do GR00T com seus próprios dados reais ou sintéticos para adaptá-lo a robôs humanoides ou tarefas específicas.

O GR00T usa codificadores pré-treinados de visão e linguagem com um transformer de ações de correspondência de fluxo para modelar um conjunto de ações condicionado à visão, à linguagem e à propriocepção.

An overview of GR00T

Seu forte desempenho se deve ao treinamento em um conjunto de dados humanoide extenso e diversificado, que inclui:

  • Dados reais capturados de robôs.
  • Dados sintéticos gerados usando o NVIDIA Isaac GR00T Blueprint.
  • Dados de vídeo em escala de internet.

Essa abordagem permite que o modelo seja altamente adaptável por meio de pós-treino para incorporações, tarefas e ambientes específicos.

Requisitos de instalação

GR00T é destinado a sistemas com aceleração por GPU da NVIDIA. Instale o LeRobot com o extra GR00T:

pip install "lerobot[groot]"

Para uma verificação de origem:

pip install -e ".[groot]"

Uso

Para usar o GR00T N1.7:

--policy.type=groot

Treinamento

Exemplo de Comando de Treinamento

Aqui está um comando completo de treinamento para fazer o ajuste fino do modelo base GR00T no seu próprio conjunto de dados:

Este comando utiliza a flag new_embodiment, que é usada para o robô SO-101, leia mais sobre como o GR00T lida com diferentes 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

Resultados de Desempenho

Resultados do Benchmark LIBERO

Siga as instruções de configuração do LIBERO antes de executar lerobot-eval.

O GR00T N1.7 demonstrou um desempenho robusto na suíte de benchmarks LIBERO. Para reproduzir os resultados do LeRobot, siga as instruções na seção LIBERO.

Treinar no LIBERO

Exemplo de comando de treinamento para uma suíte LIBERO (aqui 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

Isso seguirá a receita encontrada aqui.

Resultados do GR00T N1.7 LIBERO

Resultados preliminares da integração do LeRobot (GR00T-LeRobot, eval.n_episodes >= 50 por suíte):

SuiteTaxa de sucessoCheckpoint
LIBERO Spatial95%nvidia/gr00t17-lerobot-libero_spatial-640
Objeto LIBERO100%nvidia/gr00t17-lerobot-libero_object-640
Objetivo do LIBERO98%nvidia/gr00t17-lerobot-libero_goal-640
LIBERO 10 (Long)93%nvidia/gr00t17-lerobot-libero_10-640
Média96.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

Use eval.n_episodes >= 50 por suite ao relatar as taxas de sucesso.

Avalie em sua configuração de hardware

Depois de treinar seu modelo usando seus parâmetros, você pode executar inferência em sua tarefa de ponta final. Siga as instruções em Policy Deployment (lerobot-rollout). Por exemplo:

# 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

O valor de inference.queue_threshold não deve exceder 5 para garantir uma inferência estável.

Licença

O GR00T N1.7 é lançado sob o NVIDIA Open Model License Agreement.

Update on GitHub