LeRobot documentation

OpenGalaxea G0.5

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

OpenGalaxea G0.5

G0.5は、Qwen3.5-2Bのビジョン・言語・アクションモデルであり、1つのストリームでエンボディド推論とアクションを生成できます。LeRobotは、アクションフェーズをSystem 1として、任意のネイティブなチェーン・オブ・サウ思(思考連鎖)フェーズをSystem 2として公開しています。これらは別々のモデルではありません。ランタイムは1回の推論呼び出しから両方を取得し、アクションは推論に条件付けられたまま維持されます。

モデル概要

Transformersには、ネイティブのマルチモーダルQwen3.5バックボーン、ビジョンタワー、プロセッサが含まれています。ただし、G0.5は標準のQwen3_5ForConditionalGenerationチェックポイントではありません。G0.5では、プロプライオセプション/アクションパス、アクションエキスパート、フローマッチングヘッド、ActionCodec、統合されたCoT/アクションデコードが追加されています。LeRobotはこれらのG0.5コンポーネントをネイティブで実装しており、OpenGalaxea Pythonパッケージ、Hydra、OmegaConfなしで変換済みチェックポイントを読み込みます。

LeRobot統合の範囲

  • 標準的なpolicy.type=g05設定と、Hubからのチェックポイントの読み込み。
  • ネイティブな連続フローおよび離散的なActionCodecアクション生成。
  • オプションの同一パスによるSystem 2推論とアクション生成。
  • シリアライズ可能なカメラ、状態、アクション、正規化、プロンプトプロセッサ。
  • lerobot-trainによるファインチューニングと、lerobot-rolloutによる推論。
  • LIBERO、RoboTwin、SO-101、および公開されたR1 Lite/Proのチェックポイント契約。

G0.5統合コード(src/lerobot/policies/g05)およびチェックポイントは、非商用利用制限を含むG0.5 Community Licenseの対象であり、Apache-2.0はこれらの資料には適用されません。 変換されたチェックポイントは、そのライセンスをLICENSEとして、NOTICEとともに提供されており、Galaxeaによる推奨はありません。

チェックポイント

入力と出力の契約

チェックポイントリリースされたアクションパスRaw → policy レイアウトカメラ予測実行済み正規化
g05_base明示的に選択されたAR ActionCodecまたはフローR1 Lite/Proの関節 → 27次元の全身レイアウトhead + both wrists, 6-step history3216段階的zスコア
g05_libero連続フロー右EEF 6 + グリッパー 1 → 20D グループ化レイアウト外側、右手首3210ステップワイズ q01/q99
g05_robotwin20連続フロー2アーム 6+グリップ → 20D グループ化レイアウトhigh, 左手首, 右手首328ステップワイズ q01/q99
g05_so101FlowまたはAR ActionCodec + ネイティブCoT右腕の関節 6 → 20D グループ化レイアウト外側、任意の左手首 + 右手首3216ステップワイズ q01/q99

変換された各チェックポイントは、解決済みのモデルおよびプロセッサの設定、ActionCodecメタデータ、統計情報、正確なプロンプトテンプレート、ライセンスを保存します。

変換されたチェックポイント

リポジトリコントラクト
lerobot/g05_base27Dベース、R1 Liteプロセッサ
lerobot/g05_libero20D LIBERO
lerobot/g05_robotwin2020D RoboTwin
lerobot/g05_so10120D SO-101(so100プロファイル)

これらのチェックポイントは、非商用のG0.5 Community Licenseの下で公開されています。Licenseを参照してください。

lerobot/g05_base は、これら 27 次元のモデル重み、両方のアクションヘッド、ActionCodec トークナイザー、および公開されている 6 ステップの R1 Lite プロセッサ/統計契約を提供します。

インストール要件

G0.5のTransformers依存関係を指定してLeRobotをインストールします:

uv sync --extra g05 --extra test

Install flash-linear-attention for training and inference on GPU. Most Qwen3.5 decoder layers are Gated DeltaNet linear attention, and without it Transformers falls back to a much slower PyTorch kernel, logging “The fast path is not available”. It is pure Triton, so it installs without a build:

uv pip install flash-linear-attention

これを使用すると、損失は同一のまま、トレーニングは約1.5倍速くなり、メモリ使用量も少なくなります。Tritonがカーネルをコンパイルしているため、最初のステップは約20秒長くなります。

SO-100とSO-101は、リリースされたso100エンボディメントトークンと6関節の右腕コントラクトを共有しています。左手首カメラが欠落している場合は、ゼロパディングが適用されます。

使用方法

ターゲットのエンボディメントに一致するチェックポイントを、標準的な--policy.pathオプションで読み込みます。パッケージ化された設定により、正しいアクションヘッド、カメラの順序、次元、正規化、実行ホライズンが選択されます。

インタラクティブな System 1 と System 2 ランタイム

G0.5は、単一の推論ストリームから推論とアクションを出力します。思考の連鎖はチャンクと同じパスで生成され、アクションはそれに条件付けられます。

チェックポイント上のpolicy.runtime_systemがパスを選択します。System 1は選択されたActionCodecまたはフローチャンクを直接実行し、CoTを生成しません。

lerobot-rollout \
  --policy.path=lerobot/g05_so101 \
  --policy.runtime_system=system1 \
  --task="pick up the cup" \
  --fps=30

System 2 は、パッケージ化されたチェックポイントのメタデータに predict_cot=true が設定されている場合のみ利用可能です。その Chain of Thought はポリシーの予測として返されます: predict_action_chunk は PolicyOutput のバッチを返し、"action" にはチャンク、"prediction" には各環境の CoT サブタスク (language["subtask"]、環境ごとに1文字列) と、policy.config.bbox_camera 上の [0, 1] の xyxy 分数で表されたボックス (boxes[camera]、環境ごとに1回答) を保持します。また、select_action は各チャンクの最初のアクションとともにこれを返します。モデルはカメラを指定しません。その BBox ターゲットはすべて、トレーニング中にそのカメラ上で描画されます。System 1 は CoT を生成せず、アクションのみを返します。

output = policy.predict_action_chunk(batch)
print(output["prediction"])
# {"language": {"subtask": ["grasp the cup"]},
#  "boxes": {"observation.images.top": [{"detections": [{"label": "cup", "bbox": [...]}]}]}}

--display_data=true を使用すると、lerobot-rollout はサブタスクを表示し、Rerun または Foxglove で bbox カメラ上にボックスを描画します。

stdinからセッションを駆動する

--interactive=true を指定すると、ハードウェアとポリシーが接続されたままウォームな状態で、チャット形式のコマンドによってロールアウトを制御できます。ロボットは、/start を入力するまで動きません。そのため、物理的な SO-101 を安全に起動するには、まずカメラのインデックスとアームのポートを確認してから開始するのが安全な方法です。

lerobot-rollout \
  --interactive=true \
  --policy.path=lerobot/g05_so101 \
  --policy.device=cuda \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras='{exterior: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist_right: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}' \
  --task="pick up the cube" \
  --fps=30
コマンド効果
/startポリシー制御ループを開始(または再起動)します
/subtask <text>ポリシーが従う指示を設定します
/vqa <text>G0.5ではサポートされていません(下記を参照)
/autosteer <goal>\|off高レベルの目標に向けて、ポリシーが独自のサブタスクを選択できるようにする
/reset動きを停止し、初期位置に戻り、タスクを復元します
/stopセッションを終了してシャットダウンします
/helpコマンド一覧を表示します

/autosteer は、predict_cot=true を持つチェックポイントと、ライブ観測からの回答を必要とするため、/start が実行中になるまで拒否されます。選択したサブタスクをAutosteer subtask:として表示し、--autosteer_interval_s は、2回の再計画クエリの間に経過する動作の秒数を設定します。

G0.5の学習方法に合わせて、タスクの与え方に応じたランタイムを選択してください:

  • 高レベルのタスク、ステアリングなし: System 2を維持します。各チャンクはタスクから現在のサブタスクを予測し、それに対してアクションを実行します。
  • /subtask または /autosteer: --policy.runtime_system=system1 を使用します。サブタスクがタスクとなり、ポリシーが直接それに対して動作します。/autosteer は引き続き、System 2 クエリを使用してゴールから各サブタスクを計画します。サブタスクをタスクとして System 2 を使用すると、サブタスクのサブタスクを計画することになり、これはモデルが学習していないプロンプトとなります。

思考の連鎖の選択

--policy.runtime_cot_fields は、System 2 が各チャンクを生成する前に使用する、G0.5で学習されたチェーン・オブ・サウスの形式を選択します。アクションはチェーン・オブ・サウスの全体に注意を払うため、その内容がアクションの条件となります。

runtime_cot_fields学習済み指示生成された思考の連鎖
["subtask"](デフォルト)predict subtaskサブタスク
["bbox", "subtask"]predict bbox, subtask and actionボックス、次にサブタスク

例えば、["bbox", "subtask"] は以下を生成します:

BBox: cube <loc0397><loc0717><loc0625><loc0895>|Subtask: pick up the blue cube
  • ["subtask"] はチャンクあたりの生成トークン数が最も少ないため、より高速な選択肢です。
  • ["bbox", "subtask"] はまず関連するオブジェクトを特定し、サブタスクとアクションをシーン内に定着させます。各ボックスはラベルに続き、y1, x1, y2, x2 の順で4つの位置トークンから構成されます。トークン <locNNNN> は、画像の分数として表した座標に1024を掛けた値です。ボックスは BBox カメラ(--policy.cot_bbox_camera、デフォルトでは最初の非空カメラスロット)を参照します。

lerobot/g05_base と lerobot/g05_so101 は両方の形式で学習されています。LIBERO と RoboTwin のチェックポイントは predict_cot=false であり、System 2 は含まれていません。ファインチューニングが有用なボックスを生成するのは、そのデータセットに BBox カメラに対するグラウンディングされた vqa アノテーションが含まれている場合のみです(データ要件を参照)。

/vqa がサポートされていない理由

G0.5のテキストヘッドは汎用のビジョン言語アシスタントではありません。上記の思考連鎖(chain-of-thought)形式のみを出力するように、その固定指示のいずれかの後に学習されており、プロンプトには自由形式の質問を入れるスロットがありません。/vqaの質問はタスクの位置にのみ配置できるため、モデルは回答ではなく、その「タスク」に対するサブタスク(およびボックス)を返します。/autosteerが機能するのは、そのゴールがタスクであり、そのスロットが期待するものだからです。

インタラクティブモードでは、--duration はセッション全体ではなく、各 /start セグメントの上限を指定します。

データ要件

データセットは、選択したチェックポイントの契約に一致する state、action、camera、task の特徴を公開する必要があります。カメラ名は自由です: --policy.camera_order は、チェックポイントの各画像スロットにデータセットのどのカメラを供給するかを列挙し、null はスロットを空(ゼロ埋め)にします。SO-101 の場合、スロットは exterior、left wrist、right wrist であり、left wrist は任意です。

Training System 2 の言語ターゲットの追加には、チェックポイントのアノテーション済み CoT フィールドが必要です。通常の LeRobot 録画はアクションの教師信号を提供しますが、CoT ラベルを合成しません。アノテーションパイプライン に記載されているように、lerobot-annotate を使用して subtask およびグラウンデッドな vqa 言語列を生成してください。

トレーニング

G0.5 は LeRobot の学習機能をネイティブで実装しています: forward はアシスタントトークンのクロスエントロピーとフローマッチング損失を計算し、ポリシーは VLM/ビジョン/アクションのオプティマイザグループを公開し、チェックポイントは通常の LeRobot スクリプトによって保存、再開、読み込みできます。 目的関数はパッケージ済みの ar.ce_weight、オプションの ar.ce_z_loss_scale、および fm.fm_weight を保持し、自己回帰損失は CoT テキストと ActionCodec のターゲットを同時にカバーします。 例えば、LeRobot データセットで SO-101 チェックポイントをファインチューニングするには:

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

export HF_USER=your_hf_username

lerobot-train \
  --dataset.repo_id=${HF_USER}/my_so101_dataset_annotated \
  --policy.path=lerobot/g05_so101 \
  --policy.device=cuda \
  --policy.use_language_recipe=true \
  --policy.cot_bbox_camera=observation.images.exterior \
  --policy.repo_id=${HF_USER}/g05_so101_finetuned \
  --policy.private=true \
  --output_dir=outputs/train/g05_so101 \
  --job_name=g05_so101 \
  --batch_size=16 \
  --steps=10000 \
  --save_freq=1000

組み込みのレシピは、アップストリームのトレーニングミックスと同様に、3種類のサンプルを混合します:

  • 4/6 チェーン・オブ・サウツ: タスク、次にそのタイムスタンプで有効なsubtaskおよび根拠付きvqaアノテーションのBBoxおよび/またはSubtaskターゲット、最後にアクション。
  • 1/6 サブタスクをタスクとして: アクティブなサブタスクが指示となり、そのままアクションに移ります。 これは、/subtask または /autosteer がサブタスクを設定した際に、ポリシーが参照する内容です。
  • 1/6 plain: タスクをそのままアクションに変換する、System 1のプロンプト。

タイムスタンプにアノテーションが付いていないチェーン・オブ・サンプルのサンプルは、プレーンなプロンプトを学習させます。

アノテーションパイプラインに記載されているように、lerobot-annotate を使用して、必要な subtask 列と grounded な vqa 言語列を生成します。組み込みのレシピは、BBox カメラにアノテーションされたボックスを読み取ります: --policy.cot_bbox_camera。デフォルトでは、最初の空でないカメラスロットが使用されます。ボックスの座標は、画像の幅と高さに対する [0, 1] の割合でなければなりません。lerobot-annotate が保存する形式です。ピクセル単位のボックスは拒否されます。別のレシピで学習するには、--policy.recipe_path=/path/to/recipe.yaml を介して明示的な外部 YAML を渡します。これは設定が構築される際に一度だけ policy.recipe に読み込まれるため、後でファイルが変更されても、保存されたチェックポイントは学習時に使用されたレシピを保持します。

別のロボットでベースチェックポイントをファインチューニング

lerobot/g05_base は、これまで見たことのないロボットでもファインチューニングできます。ロボットの名前は --policy.embodiment で指定します。例えば、データセットの robot_type を使用できます。この名前はプロンプトの Embodiment: 部分のテキストとして使用されます。このフラグは必須です。指定しない場合、チェックポイントは自身のエンボディメントとスロットテーブルを保持したままになります。 関節は、データセットの関節名に基づいてベースレイアウトに配置されます。left_ プレフィックスの関節は左腕に、それ以外は右腕に配置されます。名前に gripper を含む関節は、その腕のグリップスロットに割り当てられ、残りはその腕の9つの制御スロットに順に配置されます。したがって、グripper付きの5関節アームは右腕のスロット10-14と右グリップを埋め、7自由度のアームは10-16とグリップを埋めます。 --policy.state_slots と --policy.action_slots を設定することで、関節を明示的に配置できます。解決されたスロットは、ファインチューニングされたチェックポイントとともに保存されます。

以下の例では、front カメラとwrist カメラで記録された単一アームのロボットでファインチューニングを行います。ベースチェックポイントの画像スロットは、ヘッドビュー、左アームのリスト、右アームのリストです。単一アームは右側に配置されるため、そのリストカメラは右リストのスロットを使用し、左リストのスロットは空のままになります。リスト値のフラグには、引用符付きの JSON を指定します。

lerobot-train \
  --dataset.repo_id=${HF_USER}/my_robot_dataset_annotated \
  --policy.path=lerobot/g05_base \
  --policy.embodiment=my_robot \
  --policy.camera_order='["observation.images.front", null, "observation.images.wrist"]' \
  --policy.n_obs_steps=1 \
  --policy.use_language_recipe=true \
  --policy.device=cuda \
  --policy.repo_id=${HF_USER}/g05_my_robot_finetuned \
  --output_dir=outputs/train/g05_my_robot \
  --job_name=g05_my_robot \
  --batch_size=16 \
  --steps=10000

--policy.n_obs_steps=1 は、アップストリームのファインチューニングと同様に、カメラごとに1フレームを供給します。ベースチェックポイントの6ステップの履歴は、サンプルあたりの画像数を6倍にします。

Normalization は、データセット自身の統計量を使用します(ベースチェックポイントでは z-score、q01/q99 の場合は --policy.normalization_mapping='{"VISUAL": "IDENTITY", "STATE": "QUANTILES", "ACTION": "QUANTILES"}' を渡します)。グリップは絶対値のまま(ベースチェックポイントでは relative_exclude_joints=["gripper"])であり、アームの関節はデルタとして学習されます。BBox のターゲットは、observation.images.front(最初の非空のカメラスロット)にアノテーションされた、グラウンディングされた vqa の回答から取得されます。

SO-101のレシピは、8e-5の学習率と1,000ステップのウォームアップでAdamWを使用します。パッケージ化されたLIBEROとRoboTwinの設定は、公開されている1e-5のレシピを使用し、ウォームアップステップ数はそれぞれ1,000ステップと500ステップです。すべてのプロファイルは、G0.5のパラメータグループと学習率の乗数を保持します。異なる最適化レシピで学習するには、これらをオーバーライドしてください。

--policy.optimizer_lr=2e-5 \
--policy.optimizer_backbone_lr_multiplier=0.5 \
--policy.optimizer_vision_lr_multiplier=0.1

標準的なLeRobotチェックポイントで保存された実行を再開します:

lerobot-train \
  --config_path=outputs/train/g05_so101/checkpoints/last/pretrained_model/train_config.json \
  --resume=true

主要な設定パラメータ

パラメータ説明
policy.embodimentプロンプトに記載されたロボットの名称;リリース済みスロットテーブルを選択
policy.state_slots, policy.action_slots各生の状態/アクション値の明示的なポリシーレイアウトスロット
policy.camera_orderチェックポイントごとの画像スロットのDatasetカメラ;nullは空のままにします
policy.action_headチェックポイントのflowまたはactioncodecアクションパスを使用します
policy.runtime_systemSystem 1の直接推論と行動、またはSystem 2の統合推論と行動を選択します
policy.runtime_cot_fieldsSystem 2 の思考連鎖: ["subtask"] または ["bbox", "subtask"]
policy.dtypebfloat16(CUDAでの混合精度がリリースされた)またはfloat32
policy.chunk_size各チャンクで予測されるアクションの数
policy.n_action_steps再計画の前に実行されるアクションの数
policy.use_language_recipeG0.5の組み込み言語監督レシピを有効にする
policy.recipe_pathpolicy.recipe に一度だけ読み込まれるレシピ YAML(保存はされない)
policy.optimizer_backbone_lr_multiplier言語バックボーン用の学習率乗数
policy.optimizer_vision_lr_multiplierビジョンタワーの学習率乗数

アクションヘッド、次元、ホライズン、プロセッサモード、正規化はチェックポイントから取得されます。互換性のないオーバーライドは読み込み時に拒否されます。

評価

LIBEROシミュレータがインストールされた状態で、LIBEROのチェックポイントを、そのカメラ名と相対制御を用いて評価します:

lerobot-eval \
  --policy.path=lerobot/g05_libero \
  --policy.device=cuda \
  --env.type=libero \
  --env.task=libero_10 \
  --env.control_mode=relative \
  --env.observation_height=512 \
  --env.observation_width=512 \
  '--env.camera_name_mapping={"agentview_image": "image", "robot0_eye_in_hand_image": "wrist_image"}' \
  --eval.batch_size=1 \
  --eval.n_episodes=5 \
  --seed=0 \
  --output_dir=outputs/g05-libero-lerobot-eval

参考文献

ライセンス

src/lerobot/policies/g05 以下の G0.5 統合コードは、Galaxea の実装に基づいて適応されたものであり、チェックポイントの重みと同様に、LeRobot の Apache-2.0 ではなく G0.5 Community License に従います。 チェックポイントのダウンロードまたは使用前に、そのライセンスを確認し、同意してください。

ファインチューニングはG0.5の派生作品です。再配布する場合は、派生元のチェックポイントのLICENSEファイルとNOTICEファイルを含めてください。LeRobotはこれらをコピーしませんが、生成されたモデルカードにはライセンスが記載されています。

Update on GitHub