LeRobot documentation
EO-1
EO-1
EO-1は、ロボット制御のためのVision-Language-Actionポリシーです。LeRobotの実装では、EO-1を標準的なLeRobotの学習、評価、プロセッサインターフェースに統合しています。
モデル概要
EO-1は、ビジョン・言語理解のためにQwen2.5-VLバックボーンを使用し、ロボット制御のために連続フローマッチングアクションヘッドを追加しています。このポリシーは、各ロボット制御サンプルをマルチモーダル会話としてフォーマットします。カメラ画像はQwen2.5-VLに渡され、ロボット状態はEO-1状態トークンで、将来のアクションチャンクはEO-1アクショントークンで表されます。
学習中、EO-1はアクショントークンの位置で連続的なアクションチャンクをデノイズすることを学習します。推論時、EO-1はアクションチャンクをサンプリングし、連続的なアクションを返却し、チャンクからn_action_steps分を実行してから、再度サンプリングを行います。
LeRobot統合の範囲
- LeRobotによる標準的な
policy.type=eo1設定 - Qwen2.5-VLの画像とテキストの前処理をポリシープロセッサを通じて行います
- 連続フローマッチングによるアクション予測
- LeRobotのポリシーAPIによるチェックポイントの保存/読み込み
lerobot-trainによる学習とlerobot-evalによる評価
より広範なEO-1プロジェクトには、インターリーブされたビジョン・テキスト・アクション事前学習や、マルチモーダル推論ワークフローも含まれます。このページでは、LeRobotのロボット制御ポリシーのパスに焦点を当てています。
インストール要件
インストールガイドに従ってLeRobotをインストールしてください。
…を実行して、EO-1の依存関係をインストールします。
pip install -e ".[eo1]"LIBEROでの学習または評価を行う場合は、LIBEROの依存関係もインストールしてください:
pip install -e ".[eo1,libero]"
EO-1は、policy.attn_implementation=sdpa を通じて標準の PyTorch スケールド・ドットプロダクト・アテンション バックエンドを使用できます。環境に互換性のある flash_attn インストールがある場合、policy.attn_implementation=flash_attention_2 を指定できます。
データ要件
EO-1は、以下のLeRobotデータセットを前提としています:
- 少なくとも1つの視覚的観測、例えば
observation.images.image observation.stateaction- データセットの
taskフィールドによる言語タスクの指示
データセットで異なる観測名を使用している場合は、rename_map を使用して、学習または評価の設定で期待される名前に合わせてください。
使用方法
LeRobot の設定で EO-1 を使用するには、ポリシータイプを以下のように指定します:
policy.type=eo1変換されたリリースチェックポイントを使用して、EO-1のインターリーブされたビジョン・テキスト・アクション事前学習から開始します:
--policy.path=lerobot/eo1-base
lerobot/eo1-base は、IPEC-COMMUNITY/EO-1-3B のネイティブな LeRobot 変換版です。
公開されている Qwen のビジョン言語モデルの重みと、学習済みの flow-matching アクションヘッドを保持しています。アクションチャンクサイズは 16 であり、アップストリームのチェックポイントと一致しています。元の Qwen バックボーンのみから初期化したい場合は、policy.path を省略し、policy.vlm_base=Qwen/Qwen2.5-VL-3B-Instruct を設定してください。
別のファインチューニング済みのLeRobot形式のEO-1チェックポイントを以下で読み込みます:
policy.path=your-org/your-eo1-checkpoint
テキスト生成とインタラクティブな制御
EO-1は、共有ポリシーテキスト契約を通じてQwenバックボーンを公開します。ランタイムはquery_kindとquery_textを追加し、通常のEO-1入力プロセッサを実行します:
request = {
**observation,
"query_kind": "vqa",
"query_text": "Which object is closest to the gripper?",
}
processed_batch = preprocessor(request)
answer = policy.generate_text(processed_batch)vqa は呼び出し元の質問を保持します。next_subtask は EO-1 のポリシー設定に保存されたレシピを適用します。EO-1 は generate_text(processed_batch) を継承し、supports_text_generation と generate_text をオーバーライドします。別の VLM は読み込まれません。
インタラクティブな言語ランタイムにより、EO-1はサブタスクを生成し、その現在のサブタスクからアクションプロンプトを再構築できます:
# Use the robot, port and cameras your checkpoint was trained with
lerobot-rollout \
--policy.path=your-org/your-eo1-checkpoint \
--policy.device=cuda \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--task="clear the table" \
--interactive=true/start の後、/vqa <question>、/autosteer <goal>、または /subtask <text> を使用します。
トレーニング
トレーニングコマンドの例
lerobot-train \
--dataset.repo_id=your_org/your_dataset \
--policy.path=lerobot/eo1-base \
--policy.dtype=bfloat16 \
--policy.attn_implementation=sdpa \
--policy.gradient_checkpointing=false \
--output_dir=./outputs/eo1_training \
--job_name=eo1_training \
--steps=300000 \
--batch_size=16 \
--policy.device=cuda言語アノテーションで学習
EO1Configには、LeRobotの任意の言語カラムから学習するためのレシピが含まれています。組み込みのジョイントレシピは、選択されたアシスタントの応答とその連続アクションチャンクを同じシーケンス内で教師信号として扱います。
lerobot-train \ --dataset.repo_id=your_org/your_language_annotated_dataset \ --policy.type=eo1 \ --policy.text_loss_weight=0.01 \ --policy.flow_loss_weight=1.0 \ --policy.device=cuda \ --batch_size=1 \ --steps=20000
ターゲットされたアシスタントのターンには次トークン交差エントロピーが適用され、low_level レシピのストリームにはフローアクションの教師信号が適用されます。各行には、どちらかの目的関数、または両方が適用される場合があります。ユーザーのプロンプト、画像、状態トークン、アクショントークン、およびパディングは、テキストの損失から除外されます。policy.recipe=null を設定すると、レシピのレンダリングが無効になり、元のアクションのみの学習パスが使用されます。
アノテーションスキーマとレシピの構造については、Language columns and recipesを参照してください。recipe_pathは明示的な外部YAMLオーバーライドを指す場合があります。LeRobotは共有デフォルトのレシピファイルを提供していません。デフォルトのシステムプロンプトはEO1のレシピの一部であり、カスタムのシステムターンで置き換えることができます。システムターンを含まないレンダリング済み入力(VQAプロンプトを含む)は、システムターンなしのままになります。レンダリング済みメッセージを含まないアクション専用のパスでは、デフォルトのシステムプロンプトが保持されます。EO1PrepareModelMessagesStepは、Qwenのフォーマットとトークン化の前に、レンダリング済みメッセージに画像と状態/アクショントークンを追加します。
主要な学習パラメータ
| パラメータ | デフォルト | 説明 |
|---|---|---|
policy.path | lerobot/eo1-base | EO-1の重みをLeRobotのネイティブ形式に変換してリリースしました |
policy.vlm_base | Qwen/Qwen2.5-VL-3B-Instruct | policy.pathなしで学習する場合にのみ使用されるQwenプロセッサ/バックボーン |
policy.dtype | bfloat16 | Backboneのdtype指定: torchのdtype名、例: bfloat16、float32 |
policy.attn_implementation | None | sdpa などの任意の Qwen アテンションバックエンド |
policy.gradient_checkpointing | false | 学習時のメモリ使用量を削減します |
policy.chunk_size | 16 | チャンクごとに予測される将来アクションの数 |
policy.n_action_steps | 16 | サンプリングされたチャンクから消費されたアクションの数 |
policy.num_denoise_steps | 10 | サンプリング時に使用されるフローマッチングのデノイジングステップ数 |
policy.max_state_dim | 32 | パディング次元の状態 |
policy.max_action_dim | 32 | アクションの埋め込み次元 |
policy.force_fp32_autocast | true | バックボーンが混合精度を使用している場合でも、フローヘッドをfp32のままに保ちます |
policy.supervise_padding_action_dims | true | パディングされたアクション次元が教師信号の対象となるかどうかを制御します |
policy.supervise_padding_actions | true | パディングされた将来のアクション行が教師信号の対象となるかどうかを制御します |
policy.recipe_path | None | レシピ駆動のテキストおよびサンプルごとのアクションの監督を有効にします |
policy.text_loss_weight | 0.01 | 教師ありアシスタントトークンのクロスエントロピーの重み |
policy.flow_loss_weight | 1.0 | 連続フローアクション損失の重み |
policy.tokenizer_max_length | 1000 | 最大ジョイントビジョン・言語・アクションシーケンス長 |
評価
LeRobot形式のチェックポイントが用意できたら、lerobot-evalを通じてEO-1を評価できます。
lerobot-eval \ --policy.path=your-org/your-eo1-checkpoint \ --env.type=libero \ --env.task=libero_object \ --eval.batch_size=1 \ --eval.n_episodes=20
カメラ名がチェックポイントの設定と異なるデータセットや環境では、rename_mapを渡します。
lerobot-eval \
--policy.path=your-org/your-eo1-checkpoint \
--env.type=libero \
--env.task=libero_object \
--rename_map='{"observation.images.image2":"observation.images.wrist_image"}'設定に関する注意事項
画像処理
EO-1はQwen2.5-VLプロセッサを使用します。policy.image_min_pixelsおよびpolicy.image_max_pixelsの設定は、ビジュアルトークンがバックボーンに渡される前の画像リサイズ範囲を制御します。
状態とアクションの次元
ポリシーは、EO-1フローヘッドの前に、状態ベクトルとアクションベクトルをpolicy.max_state_dimおよびpolicy.max_action_dimにパディングします。予測値は、ポリシーによって返される前に、元のアクション次元にクロップされます。
アテンションバックエンド
ポータブルなセットアップにはpolicy.attn_implementation=sdpaを使用してください。flash_attention_2は、flash_attnがインストールされており、お使いの環境と互換性がある場合のみ使用してください。
参考文献
引用
@article{eo1,
title={EO-1: Interleaved Vision-Text-Action Pretraining for General Robot Control},
author={Delin Qu and Haoming Song and Qizhi Chen and Zhaoqing Chen and Xianqiang Gao and Xinyi Ye and Qi Lv and Modi Shi and Guanghui Ren and Cheng Ruan and Maoqing Yao and Haoran Yang and Jiacheng Bao and Bin Zhao and Dong Wang},
journal={arXiv preprint},
year={2025},
url={https://arxiv.org/abs/2508.21112}
}ライセンス
このLeRobot統合は、LeRobotで使用されているApache 2.0 Licenseに従います。公開されているEO-1のチェックポイントおよびデータのライセンスについては、アップストリームのEO-1モデルおよびデータセットのページを確認してください。
Update on GitHub