LeRobot documentation

GR00T 정책

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GR00T 정책

GR00T는 범용 휴머노이드 로봇 추론 및 기술을 위한 NVIDIA의 파운데이션 모델 패밀리입니다. 언어, 이미지, 고유수용감각을 포함한 멀티모달 입력을 받아 다양한 환경에서 조작 작업을 수행하는 크로스 연보디먼트(embodiment) 정책입니다.

LeRobot은 groot 정책 유형을 통해 GR00T N1.7을 통합합니다.

중요 변경 사항: LeRobot에서 GR00T N1.5 지원이 제거되었으며, 현재 릴리스는 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은 사전 학습된 비전 및 언어 인코더와 플로우 매칭 액션 트랜스포머를 사용하여 비전, 언어, 고유수용감각에 조건부인 액션 청크를 모델링합니다.

An overview of GR00T

뛰어난 성능은 방대하고 다양한 휴머노이드 데이터셋으로 학습된 데서 비롯됩니다. 해당 데이터셋에는 다음이 포함됩니다:

  • 로봇에서 실제로 수집된 데이터.
  • NVIDIA Isaac GR00T Blueprint를 사용하여 생성된 합성 데이터.
  • 인터넷 규모의 비디오 데이터.

이 접근 방식은 특정 구현, 작업, 환경을 위한 사후 학습을 통해 모델이 높은 적응성을 갖도록 합니다.

설치 요구 사항

GR00T은 NVIDIA GPU 가속 시스템용으로 설계되었습니다. GR00T extra와 함께 LeRobot을 설치하세요:

pip install "lerobot[groot]"

소스 체크아웃의 경우:

pip install -e ".[groot]"

사용

GR00T N1.7를 사용하려면:

--policy.type=groot

학습

학습 명령어 예시

…

이 명령은 SO-101 로봇에 사용되는 new_embodiment 플래그를 사용하며, GR00T이 다양한 embodiment를 처리하는 방법에 대해 자세히 알아보세요..

# 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 결과

GR00T-LeRobot, eval.n_episodes >= 50 (suite당 기준)을 적용한 LeRobot 통합 예비 결과:

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