LeRobot documentation
π₀ (Pi0)
π₀ (Pi0)
π₀は、Physical Intelligenceによる汎用ロボット制御用のVision-Language-Actionモデルです。LeRobotの実装は、彼らのオープンソースリポジトリであるOpenPIを基に調整されています。
モデル概要
π₀は、Physical Intelligenceが開発した初の汎用ロボット基盤モデルであり、ロボティクスにおける画期的な進歩を代表しています。反復的な動作に特化してプログラムされた従来の狭い専門家のようなロボットプログラムとは異なり、π₀は、視覚的な入力を理解し、自然言語の指示を解釈し、多様なタスクにわたってさまざまなロボットを制御できる汎用ポリシーとして設計されています。
物理的インテリジェンスのビジョン
Physical Intelligence が述べているように、AI はチェスや創薬などデジタル領域で目覚ましい成功を収めていますが、物理世界における人間の知能は依然として AI を大きく上回っています。Moravec のパラドックスを言い換えると、チェスで勝つことは AI にとって「容易な」問題ですが、シャツをたたむことやテーブルを片付けることは、これまで考案された最も困難な工学問題の一部を解決することを必要とします。π₀ は、大規模言語モデルと同様に、ユーザーがロボットに任意のタスクを依頼できる人工物理知能の開発に向けた第一歩を代表しています。
アーキテクチャとアプローチ
π₀は、いくつかの重要な革新を組み合わせています:
- Flow Matching: フローマッチング(拡散モデルの一種)を用いて、事前学習済みVLMに連続的なアクション出力を追加する新しい手法を使用します
- クロスエンボディメント学習: UR5e、バイマニュアルUR5e、Franka、バイマニュアルTrossen、バイマニュアルARX、モバイルTrossen、モバイルFibocomを含む8つの異なるロボットプラットフォームのデータで学習
- インターネット規模の事前学習: 事前学習済みの3Bパラメータのビジョン・言語モデルから意味的知識を継承
- 高周波数制御: リアルタイムの巧緻性操作のために、最大50 Hzでモーターコマンドを出力します
インストール要件
LeRobotのインストールは、インストールガイドに従って行ってください。
以下のコマンドを実行して、Pi0の依存関係をインストールします:
pip install -e ".[pi]"
トレーニングデータと機能
π₀は、これまでで最大のロボット操作データセットで訓練されており、3つの主要なデータソースを組み合わせています。
- インターネット規模の事前学習: セマンティック理解のためのウェブからのビジョン・言語データ
- Open X-Embodiment Dataset: オープンソースのロボット操作データセット
- Physical Intelligence Dataset: 8種類の異なるロボットにわたる巧緻性タスクの大規模かつ多様なデータセット
使用方法
LeRobotでπ₀を使用するには、ポリシータイプを以下のように指定します:
policy.type=pi0トレーニング
π₀の学習には、適切な設定を指定して標準的なLeRobot学習スクリプトを使用できます。
lerobot-train \
--dataset.repo_id=your_dataset \
--policy.type=pi0 \
--output_dir=./outputs/pi0_training \
--job_name=pi0_training \
--policy.pretrained_path=lerobot/pi0_base \
--policy.repo_id=your_repo_id \
--policy.compile_model=true \
--policy.gradient_checkpointing=true \
--policy.dtype=bfloat16 \
--policy.freeze_vision_encoder=false \
--policy.train_expert_only=false \
--steps=3000 \
--policy.device=cuda \
--batch_size=32主要な学習パラメータ
--policy.compile_model=true: 高速なトレーニングのためにモデルのコンパイルを有効にします--policy.gradient_checkpointing=true: 学習中のメモリ使用量を大幅に削減します--policy.dtype=bfloat16: 効率化のために混合精度学習を使用します--batch_size=32: 学習用のバッチサイズ。GPUのメモリに応じて調整してください--policy.pretrained_path=lerobot/pi0_base: ファインチューニングするベースのπ₀モデル。選択肢は以下の通りです:- lerobot/pi0_base
- lerobot/pi0_libero(Liberoデータセットで特化して学習済み)
--policy.optimizer_fused=true: 高速なオプティマイザーステップのためにfused AdamWを使用します。このフラグは、ランを再開する場合は無視されます
トレーニングパラメータの説明
| パラメータ | デフォルト | 説明 |
|---|---|---|
freeze_vision_encoder | false | ビジョンエンコーダーをフリーズしないでください |
train_expert_only | false | VLMをフリーズせず、すべてのパラメータを学習します |
💡 ヒント: train_expert_only=true を設定すると、VLM が凍結され、アクションエキスパートと射影のみが学習対象となります。これにより、メモリ使用量を削減しながらファインチューニングを実行できます。
相対アクション
デフォルトでは、π₀は絶対的なアクションを予測します。相対アクションを有効にすると、モデルは現在のロボット状態に対するオフセットを予測するようになります。これにより、特定のセットアップにおける学習の安定性が向上する場合があります。
相対アクションを使用するには、まずCLIを通じて相対空間でのデータセットの統計情報を再計算してください。
lerobot-edit-dataset \
--repo_id your_dataset \
--new_repo_id your_dataset \
--operation.type recompute_stats \
--operation.overwrite true \
--operation.relative_action true \
--operation.chunk_size 50 \
--operation.relative_exclude_joints "['gripper']" \
--push_to_hub trueまたは、Pythonでは以下のように記述できます:
from lerobot.datasets import LeRobotDataset, recompute_stats
dataset = LeRobotDataset("your_dataset")
recompute_stats(dataset, relative_action=True, chunk_size=50, relative_exclude_joints=["gripper"])
dataset.push_to_hub()chunk_size は、ポリシーの chunk_size と一致させる必要があります(π₀ のデフォルトは 50 です)。relative_exclude_joints は、絶対空間のままにしておくべき関節の名前を列挙します(例:グリップコマンド)。更新された統計情報を Hub にアップロードするには、--push_to_hub true を使用してください。
次に、相対アクションを有効にして学習します:
lerobot-train \
--dataset.repo_id=your_dataset \
--policy.type=pi0 \
--policy.use_relative_actions=true \
--policy.relative_exclude_joints='["gripper"]' \
...ライセンス
このモデルは、元のOpenPIリポジトリと一貫して、Apache 2.0ライセンスに従っています。
Update on GitHub