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.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GR00T ポリシー

GR00Tは、汎用的なヒューマノイドロボットの推論とスキルを目的としたNVIDIAのファウンデーションモデルファミリーです。これは、言語、画像、固有受容を含むマルチモーダル入力を受理する、エンボディメントを横断するポリシーであり、多様な環境での操作タスクを実行します。

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エクストラを指定してLeRobotをインストールしてください:

pip install "lerobot[groot]"

ソースチェックアウトの場合:

pip install -e ".[groot]"

使用方法

GR00T N1.7を使用するには:

--policy.type=groot

トレーニング

トレーニングコマンドの例

GR00Tベースモデルを独自のデータセットでファインチューニングするための完全なトレーニングコマンドを以下に示します。

このコマンドは、SO-101 ロボットに使用される new_embodiment フラグを使用しています。GR00T が異なるエンボディメントをどのように処理するかについて詳しくはこちら。

# 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 結果

LeRobot統合の予備的な結果(GR00T-LeRobot、スイートごとにeval.n_episodes >= 50):

スイート成功率チェックポイント
LIBERO Spatial95%nvidia/gr00t17-lerobot-libero_spatial-640
LIBERO Object100%nvidia/gr00t17-lerobot-libero_object-640
LIBERO Goal98%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