
Physical IntelligenceのフローマッチングVLAであるPi0.5を、自分のロボットデータでファインチューニングします。openpiとlerobot pi05の実際のコマンド、データセット形式の落とし穴、VRAMとレイテンシの制限について解説します。
Pi0.5は、ポリシーがこれまで見たことのない部屋で機能する必要がある場合に選択するモデルです。また、ここにある5つの学習可能なポリシーのうち、手動でファインチューニングするには最も扱いにくいものです。アップストリームのリポジトリはJAXが優先され、LeRobotポートは0.6.0でデプロイメントをlerobot-recordから外し、ベースインストールがトレーニングには小さすぎるものになりました。また、完全なファインチューニングは4090には収まりません。以下に、フローマッチングが推論時にかかるコスト、2つのコマンドルート、そして結果が使用可能かどうかを決定する485 msという数値を示します。
知っておくべきこと
- •フローマッチングVLA:3B PaliGemma VLMと、連続アクションチャンクをデコードする300Mアクションエキスパート。ファインチューニングにはopenpiとLeRobot pi05の2つのルートがあり、LIBERO平均で0.65ポイントの差があります。
- •完全なファインチューニングには70 GB以上のVRAMが必要です。openpiでは、JAXパスのみでLoRAが22.5 GBと記載されています。
- •データセットは、meta/stats.jsonにq01およびq99の分位数を含むLeRobotDataset v3.0である必要があります。そうでない場合、最初のバッチでエラーが発生します。
- •まずlerobotのバージョンを確認してください。0.6.0でベースパッケージが軽量化され、デプロイメントがlerobot-recordから移動しました。
- •ここでは、アクションステップあたり485 msで実行され、50エピソードを必要とし、1回の実行あたり約4から12 USDのコストがかかります。
Pi0.5とは何か
Physical Intelligenceは2024年10月にpi0を発表しました。これは、事前学習済みのVLMに基づくフローマッチングビジョン・言語・アクションモデルで、30億パラメータのPaliGemmaと、ゼロから初期化された3億アクションエキスパートを合わせた合計33億パラメータです。この論文では、7つのロボット構成と68のタスクにわたる10,000時間以上のロボットデータでの事前学習が報告されています。詳細はpi0の記事をご覧ください。
Pi0.5 (arXiv 2504.16054, 2025年4月22日) はその骨格を維持しつつ、トレーニングのデータセットを変更しました。具体的には、ウェブデータ、物体検出、ロボットを指導する人間からの口頭指示、サブタスクラベル、多くの家庭にあるロボットからのクロスエンボディメントデータです。その結果、トレーニングセットに含まれていなかった家でキッチンを掃除するロボットが誕生しました。openpiのREADMEには、タイトルにはない詳細が追加されています。リリースされたpi0.5は知識絶縁 (arXiv 2505.23705) を用いてトレーニングされました。
| プロパティ | pi0 | pi0.5 |
|---|---|---|
| VLMバックボーンバリアント | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| アクションエキスパートバリアント | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon デフォルト | 50 | 50 |
| max_token_len | 48 | 200 |
| 離散状態入力 | false | true、プロンプト内で状態がビンに離散化される |
| ベースチェックポイント | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
openpiのREADMEには明記されています。このリポジトリは、pi0.5のトレーニングと推論の両方において、フローマッチングヘッドのみをサポートしています。論文では2つのステージが記述されており、コードには2番目のステージのみが含まれています。事前学習では、FASTトークナイザーを通じてすべてのアクションが離散トークンとして表現され、デプロイ時には、モデルが各アクションチャンクの前に高レベルのサブタスクを推論します。これらのどちらもリポジトリには含まれていません。lerobot/pi05_baseカードには同じリストが記載されており、RLが追加されていますが、pi0.5の論文では強化学習のステージはまったく記述されていません。LeRobotポートはそのスコープを継承しており、ここにあるものを含む、その上のすべてのホスト型トレーナーも同様です。ライセンスも分かれています。pi05のドキュメントページではApache 2.0と記載されており、lerobot/pi05_baseカードにはlicense: gemmaのタグが付いています。
フローマッチングがトレーニングと推論について変更すること
SO-100で訓練できるポリシーは、アクションを直接回帰させるか(ACT)、またはトークン化して自己回帰的にデコードします(pi0-FAST)。フローマッチングはどちらでもありません。ノイズをクリーンなアクションチャンクに輸送するベクトル場を学習し、それを統合します。pi0の論文では、ステップサイズ0.1で10の統合ステップを使用しています。LeRobotのpi05設定も同じnum_inference_steps: int = 10を継承しています。
- トレーニング:損失はノイズ付きアクションチャンクを回帰させます。調整するトークナイザーも、関節角度の離散化もありません。
- 推論:1つのチャンクは、アクションエキスパートを10回順方向パスするコストがかかります。これは構造的なものであり、チューニングの問題ではありません。
- 出力:内部でパディングされた32次元の連続アクションで、ロボットが持つ次元で損失が計算されます。6-DoFアームとグリッパーは7を使用します。
# openpi/src/openpi/models/pi0_config.py - the defaults every pi05 config inherits
@dataclasses.dataclass(frozen=True)
class Pi0Config(_model.BaseModelConfig):
dtype: str = "bfloat16"
paligemma_variant: _gemma.Variant = "gemma_2b"
action_expert_variant: _gemma.Variant = "gemma_300m"
action_dim: int = 32
action_horizon: int = 50
max_token_len: int = None # 200 if pi05 else 48
pi05: bool = False # flips discrete_state_input to TruePaliGemmaバックボーンと、その前面にあるゲート
PaliGemma (arXiv 2407.07726) は、Gemma-2B 言語モデル上の SigLIP-So400m ビジョンエンコーダーで、約 3B パラメータです。Pi0.5 はそのトークナイザーを継承しており、そのトークナイザーはゲート付きリポジトリにあります。これは、最初の訓練ステップの前に、最初の実行が失敗する最も一般的な方法です。
LeRobot pi05 のドキュメントには明確に記載されています。pi0.5 はゲート付きの google/paligemma-3b-pt-224 トークナイザーを使用するため、Hub でそのライセンスを承認し、最初に hf auth login を実行してください。アクセスは手動で付与され、即座ではありません。これをスキップして有料のクラウド実行を開始すると、トークナイザーをダウンロードできないポッドに対して料金を支払うことになります。
始める前に:データセット形式、エピソード、ハードウェア
LeRobotのPi0.5はLeRobotデータセットをv3.0レイアウトで読み込みます。これは2025年10月にlerobot 0.4.0で導入されました。ParquetおよびMP4ファイルごとに多数のエピソードを格納し、1ファイルにつき1つのエピソードではなく、ファイル名ではなくmeta/episodes/に境界が定義されています。記録するには、デスクトップクライアントを使用するか、最初のデータセットを記録するの手順に従ってください。
| モード | 必要なGPUメモリ | GPUの例 |
|---|---|---|
| 推論 | more than 8 GB | RTX 4090 |
| ファインチューニング、LoRA | more than 22.5 GB | RTX 4090 |
| ファインチューニング、フル | more than 70 GB | A100 80 GB or H100 |
Pi0.5とSmolVLAはLeRobot v3.0を必要とします。GR00T N1.7とGR00T N1.5はv2.0またはv2.1を必要とし、v3.0データセットではクラッシュします。変換なしに一つの記録セッションで両方を供給することはできず、エラーメッセージには「"wrong dataset version"」とは表示されません。データセットが拒否されました: v3が必要ですを参照してください。
# v2.1 -> v3.0, run against a dataset already on the Hub
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=<HF_USER/DATASET_ID>
# aggregates episode-0000.parquet, episode-0001.parquet, ... -> file-0000.parquet
# aggregates episode-0000.mp4, episode-0001.mp4, ... -> file-0000.mp4
# rewrites meta/episodes/* with per-episode lengths, tasks and offsetsこのプラットフォームはPi0.5に最低50エピソードを要求します。これはGR00TおよびACTと同じ最低要件です。事前学習が大部分の作業を行うため、200のずさんなエピソードよりも50のクリーンなエピソードの方が優れています。初めてですか?データ収集ガイドから始めてください。

ルートA: openpiリポジトリでファインチューニングする
リファレンス実装: JAXが最初で、Ubuntu 22.04でのみテスト済み。フラグではなく設定オブジェクトによって駆動されます。PyTorchパスは2025年9月に登場し、LIBEROで検証されました。3つのステップ: データを変換し、設定を定義し、学習して提供します。
- 1クローンとインストール
openpiはuvを使用します。GIT_LFS_SKIP_SMUDGEは、LeRobotがLFSブロブなしで依存関係として機能することを可能にします。
bashgit clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git cd openpi GIT_LFS_SKIP_SMUDGE=1 uv sync GIT_LFS_SKIP_SMUDGE=1 uv pip install -e . - 2データをLeRobotデータセットに変換する
アップストリームはLIBEROとDROID用のコンバーターを提供しており、いずれかを適応させることを想定しています。作業はキーマッピングです。
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3学習設定を追加する
設定はsrc/openpi/training/config.py内のTrainConfigエントリです。これはpi05_droid_finetuneを適応させ、重みローダーはpi05_baseを指しています。
pythonTrainConfig( name="pi05_so100", model=pi0_config.Pi0Config( pi05=True, action_dim=32, # pi05 is trained with 32-dim actions action_horizon=16, ), # Copy LeRobotLiberoDataConfig in the same file and rewrite the key # mapping for your camera names, then reference your copy here. data=LeRobotLiberoDataConfig( repo_id="your_hf_username/my_so100_dataset", base_config=DataConfig(prompt_from_task=True), ), weight_loader=weight_loaders.CheckpointWeightLoader( "gs://openpi-assets/checkpoints/pi05_base/params" ), batch_size=32, num_train_steps=20_000, ) - 4正規化統計を計算する
データセットではなく、設定名に対して実行されます。これをスキップすると、ここでよくある最初の失敗となります。
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5学習
この変数により、JAXはデフォルトの75%ではなくGPUメモリの90%を使用できます。80GBのカードでは、これが実行が成功するかどうかを決定します。
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6提供する
サーバーはポート8000でリッスンし、観測クエリに応答します。ロボットのランタイムがクライアントです。
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
openpiのPyTorch実装は、pi0-FAST、混合精度、FSDP、LoRA、またはEMAウェイトをサポートしていません。そのため、22.5 GBに達するLoRAは、gemma_2b_loraおよびgemma_300m_loraバリアントを介してJAXのみで利用可能です。さらに悪いことに、このセットアップは、インストールされているtransformers 4.53.2にパッチ適用されたファイルをコピーし、READMEには、uvのデフォルトのハードリンクモードを使用すると、uvキャッシュ内のtransformersが永続的に変更され、他のプロジェクトに影響を与える可能性があると警告されています。uv cache clean transformersで元に戻してください。
ルートB: lerobot pi05でファインチューニング
LeRobotポートは、すでに使用しているCLIで同じウェイトをラップします。ACTおよびSmolVLA。以下の内容はすべて、2026年8月3日以降にリリースされたlerobot 0.6.1と、2026年8月23日のpi05ドキュメントに対して確認されました。ここではバージョンが重要です。v3.0データセットは2025年10月に0.4.0で登場し、2026年3月9日の0.5.0ブログではpi0-FASTとリアルタイムチャンキングが紹介され、2026年7月6日の0.6.0ではベースパッケージが軽量化され、デプロイメントがlerobot-rolloutに移行しました。
一つ変わらなかったことがあります。lerobot-trainとlerobot-recordは、2025年8月の0.3.2ですでにエントリーポイントでした。python -m lerobot.scripts.trainを呼び出すチュートリアルは、1年間の変更以前のものであり、他の点についても信頼できない可能性があります。
- 1適切なエクストラでインストールする
0.6.0以降、ベースインストールにはコアML依存関係のみが含まれ、piエクストラにはデータセットやトレーニングコードが追加されないため、ファインチューンにはトレーニングエクストラも必要です。古いワンライナーはインポート時にここで失敗します。
bash# policy dependencies plus the training stack pip install 'lerobot[pi,training]' # from a source checkout pip install -e ".[pi,training]" # driving an SO-100 afterwards needs the robot extras too pip install 'lerobot[core_scripts,feetech]' - 2認証
ブラウザでpaligemma-3b-pt-224ライセンスを承認し、トレーニングを行うマシンにログインします。
bashhf auth login - 3分位数統計を追加する
Pi0.5はSTATEとACTIONを分位数で正規化するため、meta/stats.jsonにはq01とq99が必要です。古いデータセットにはmin、max、mean、stdのみが含まれています。
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4lerobot/pi05_baseからファインチューンする
バッチサイズは、お使いのカードが耐えられる値に設定してください。ドキュメントでは、80GBのLIBEROで64を使用しています。bfloat16を明示的に渡してください。設定のデフォルトはfloat32です。
bashlerobot-train \ --dataset.repo_id=${HF_USER}/my_so100_dataset \ --policy.type=pi05 \ --policy.pretrained_path=lerobot/pi05_base \ --policy.gradient_checkpointing=true \ --policy.dtype=bfloat16 \ --policy.device=cuda \ --policy.push_to_hub=false \ --output_dir=./outputs/pi05_so100 \ --job_name=pi05_so100 \ --batch_size=4 \ --num_workers=8 \ --steps=30000 \ --save_freq=5000 \ --seed=1000 - 5アームで実行する
0.6.xでは、これはlerobot-rolloutです。lerobot-recordはポリシーを拒否し、eval_データセット名を拒否します。Baseはアームを駆動し、sentryはロールアウトを記録します。
bashlerobot-rollout \ --strategy.type=base \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \ --task="Put lego brick into the transparent box" \ --duration=60 # same run, recorded into an eval_ dataset lerobot-rollout \ --strategy.type=sentry \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --dataset.repo_id=${HF_USER}/eval_so100 \ --dataset.single_task="Put lego brick into the transparent box" \ --duration=600
| フラグ | 機能 | 備考 |
|---|---|---|
| --policy.type=pi05 | Pi0.5を選択 | pretrained_pathと併用必須、--policy.pathと併用する場合は省略 |
| --policy.pretrained_path | 重みのみをロード | データセットからの特徴名、保存された設定はリセットされる |
| --policy.path | 重みとチェックポイントのconfig.json | n_action_stepsなどの保存された設定が継承される |
| --policy.n_action_steps | チャンクごとに消費されるステップ数 | 50にフォールバック、chunk_size(デフォルト50)を超えることはない |
| --policy.train_expert_only | VLMをフリーズし、エキスパートをトレーニング | デフォルトはfalse、メモリ消費が少なく、成功率に多少影響 |
| --policy.gradient_checkpointing | アクティベーションを保存する代わりに再計算 | デフォルトはfalse、実行がメモリに収まらない場合の最初の手段 |
| --peft.method_type=LORA | フルウェイトの代わりにLoRAアダプターを使用 | peftエクストラが必要、ドキュメントの例はSmolVLA |
| --policy.rtc_training_max_delay | RTC用のアクションプレフィックス条件付け | メインブランチのみ、0.6.1にはない、chunk_sizeより小さくなければならない |
| --rename_map | データセットの列をポリシーの特徴にマッピング | カメラキーが異なる場合に必要 |
分位数がない場合、最初のバッチでValueError: QUANTILES normalization mode requires q01 and q99 statsが発生します。統計を再計算しても、結果はキャッシュ--dataset.repo_idが読み取る場所ではなく、$HF_LEROBOT_HOME/your_datasetに保存されるため、--dataset.rootをそこに向けてトレーニングするか、Hubにプッシュしてください。または、LIBEROの参照コマンドのように、--policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}'を使用して分位数をスキップすることもできます。
3つのデフォルトセットと、どれがトレーナーに到達するか
openpiのTrainConfigが参照元であり、lerobot-trainが何も指定しない場合に使用するのがLeRobotのPI05Configであり、ここにあるフォームは3つ目の設定を送信します。驚くべきは学習率です。上流のデフォルトはどちらも最大2.5e-5ですが、openpi独自のpi05_libero設定とこのプラットフォームでは5e-5に引き上げられています。
| 設定 | openpi TrainConfig | lerobot pi05とlerobot-train | AY-Robotsが送信 |
|---|---|---|---|
| バッチサイズ | 32 | 8 | 1 |
| ピーク学習率 | 2.5e-5, コサイン減衰 | optimizer_lr 2.5e-5 | 5e-5 |
| トレーニングステップ | 30,000 | 100,000 | 30,000 |
| チェックポイント間隔 | 1,000 steps | 20,000 steps | フォームにはない |
| シード | 42 | 1,000 | フォームにある |
| アクションチャンク | action_horizon 50 | chunk_size 50, n_action_steps 50 | フォームにはない |
| 重みデータ型 | bfloat16 | float32 (--policy.dtypeを渡すまで) | フォームにはない |
| 勾配蓄積 | そのようなノブはなく、代わりにfsdp_devicesを使用 | これまでのすべてのリリースにはない | 16、そしてそれは削除される |
この移植は忠実か?LeRobotチームはLIBEROベースモデルをさらに6kステップでファインチューニングし、openpiの参照数値と4つのスイートで比較しました。平均97.5%対96.85%で、Libero 10では先行し、Spatialでは後塵を拝しました。この経路はツールの選択であり、品質の選択ではありません。
- 10,000時間以上のロボット事前学習が背景にあるため、タスクの50エピソードで十分な場合があります。
- 連続アクション:調整するトークナイザーがなく、関節角度に離散化の制約がありません。
- LeRobotの移植版はLIBERO平均でopenpiの96.85%に対し97.5%を記録しており、より使いやすいCLIに測定可能なコストはかかりません。
- 両側でパラメータ効率の良いパス:openpiのJAX LoRAバリアント、LeRobotのPEFT統合。
- フルファインチューニングには70 GB以上が必要です。22.5 GBのLoRAの数値はopenpiのJAXの数値であり、PEFT下のpi05については公開されていません。
- アクションステップあたり485 msで、ここにある5つの中で最も遅いです。SmolVLAの2倍、ACTの24倍です。
- LeRobot v3.0が必要です。そのため、GR00Tの実行用に記録されたデータセットは変換が必要であり、その逆も同様です。
- 新しいオプションはまずmainに導入されます。トレーニング時のRTCとMEMメモリは0.6.1には含まれていないため、最新のドキュメントはgitからのインストールを意味する場合があります。
485 msという現実、そしてそれが使用できなくなる場所
これはプロジェクトを左右するため、コスト表の前に記載します。Pi0.5でここで測定されたアクションステップあたりのは485 msです。他の4つと比較すると:
| ポリシー | アクションステップあたりの推論 | パラメータ | GPUティア | 最小エピソード数 |
|---|---|---|---|---|
| ACT | 20 ms | ~80 M | RTX 4090 or any 24 GB card | 50 |
| GR00T N1.7 | 152 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| GR00T N1.5 | 165 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| SmolVLA | 245 ms | ~450 M | RTX 4090 or any 24 GB card | 30 |
| Pi0.5 | 485 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |

これら5つのモデル全体の制御ループは、アクションステップあたり20〜485ミリ秒で実行されます。485ミリ秒に加えてパブリックインターネットのラウンドトリップが発生すると、機能するポリシーもためらいがちなものになります。リモート推論は、低速なピックアンドプレースには有効ですが、高速な反応動作には向きません。LANでしか動作しないデモを販売するよりも、この事実を伝える方が良いと考えています。アームがチャンク間で一時停止する場合は、動作中にポリシーがフリーズするから始めてください。
アップストリームには解決策があり、その半分はすでにインストール可能なリリースに含まれています。リアルタイムチャンキングは、アームが現在のチャンクを実行している間に次のチャンクを生成し、新しいチャンクの重複するステップがすでに実行された部分に近づくようにガイドすることで、アームが継ぎ目で停止したり、ぎくしゃくしたりするのを防ぎます。推論時の形式は、Pi0、Pi0.5、SmolVLA向けに0.4.2の変更履歴で提供されており、再学習ではなくロールアウトフラグです。
lerobot-rollout \
--strategy.type=base \
--policy.path=${HF_USER}/my_policy \
--inference.type=rtc \
--inference.rtc.execution_horizon=10 \
--inference.rtc.max_guidance_weight=10.0 \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM1 \
--robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
--task="Put lego brick into the transparent box" \
--duration=60これによってモデルが高速化されるわけではありません。これはギャップを隠すものです。485ミリ秒は依然として費やされますが、クリティカルパスから外れるため、チャンク間でキューが枯渇することはありません。arXiv 2512.05964の学習時バリアントはさらに進んでおり、モデルはクリーンなアクションプレフィックスに条件付けすることを学習するため、推論時には重複部分がガイドされるのではなく、アクションごとのフロータイムステップでハードインペイントされ、ガイダンスの逆伝播がなくなります。学習時には、例ごとにプレフィックス長をサンプリングし、残りのポストフィックスに対してフロー損失を計算します。このフラグは0.6.1ではなくメインブランチのみに存在し、学習する遅延はchunk_size未満である必要があります。
Pi0.5チェックポイントを取得する2つの方法
80 GBのカードをレンタルまたは所有し、上記のスタックのいずれかをインストールし、データセットを変換して実行を監視します。openpiのJAX LoRA、LeRobotのPEFTアダプター、相対アクション、カスタムキーマッピングなど、すべての設定を自由に調整できます。また、すべての失敗も自分で対処します。
- ハードウェア: A100 80 GBまたはH100、またはopenpiのJAX LoRAパス上の24 GBカード。
- セットアップ: 初回実行には午後いっぱいかかります。主にキーマッピングとゲート付きトークナイザーの設定です。
- ホスト型フォームでは利用不可: PEFTアダプター、相対アクション、トレーニング時RTC、MEMメモリ。
lerobot-train \
--dataset.repo_id=${HF_USER}/my_so100_dataset \
--policy.type=pi05 \
--policy.pretrained_path=lerobot/pi05_base \
--policy.rtc_training_max_delay=10 \
--policy.gradient_checkpointing=true \
--policy.dtype=bfloat16 \
--batch_size=4 --steps=30000 --seed=1000「トレーニングフォーム」でモデルとデータセットを選択すると、バックエンドが必要なVRAMに応じてスポット市場でGPUをレンタルし、トレーナーを実行して「チェックポイント」をオブジェクトストレージに書き込みます。Pi0.5はここではクラウド専用です。ガイドは「SO-100」、「SO-101」、「Koch v1.1」、および「LeKiwi」で利用可能です。
| 設定 | プラットフォームがPi0.5に送信するもの |
|---|---|
| ベースチェックポイント | lerobot/pi05_base |
| ポリシータイプ | pi05 |
| バッチサイズ | 1 |
| 学習率 | 5e-5 |
| 最大ステップ数 | 30000 |
| 勾配蓄積 | 16 (ただし、以下の警告を参照) |
| フォーム内の追加設定 | seed, logFreq |
| データセット形式 | LeRobot v3.0 |
| GPUティア | A100 80 GBまたはH100 80 GB |
トレーナーは勾配蓄積値16を送信しますが、lerobot 0.5.1にはそれを受け取るフラグがないため、無視されます。リリースされたlerobotにはこのフラグはなく、メインブランチにのみ--accelerator.gradient_accumulation.stepsとして存在します。ここでの実効バッチサイズは1であり、openpiのpi05_libero設定が使用する256とは異なります。損失曲線を読む前に知っておく価値があります。この設定はGR00T N1.7およびGR00T N1.5の実行には適用されます。
推論も同様に機能します。ポリシーを提供するためにポッドがプロビジョニングされ、ローカルクライアントがそれに通信します。ポッドにはアイドル状態のウォッチドッグがあり、自身を破棄するため、タブを閉じ忘れても知らないうちに課金されることはありません。レイテンシの注意点があり、そのため20 msの「ACT」が高速タスクでしばしば優位に立ちます。
動作しない場合
| 症状 | 最も可能性の高い原因 |
|---|---|
| 実行開始前に拒否される | データセットがv2.1だがPi0.5はv3.0を要求、またはGR00Tの場合はその逆 |
| ImportError、datasetsパッケージが見つからない | トレーニングエクストラなしのlerobot 0.6.x |
| バッチ1でのq01およびq99に関するValueError | meta/stats.jsonに分位数がない; 再計算するかMEAN_STDを使用 |
| ステップ0でCUDAメモリ不足 | 70 GB未満での完全なファインチューニング; チェックポイントを使用するかtrain_expert_onlyを試す |
| 401またはゲート付きリポジトリエラー | PaliGemmaトークナイザーライセンスが承認されていない |
| 損失が低下し、ロボットが何も動作しない | 正規化の不一致、またはポリシーが状態をコピーしている |
| アームがチャンク間で一時停止する | ステップごとのレイテンシと往復時間; チャンクキューが枯渇する |
| ある設定では動作するが、別の設定では失敗する | エピソードが少なすぎる、またはすべてが単一の設定 |
- データセットが拒否されました: v3が必要です
- トレーニング中にメモリ不足
- 損失は減少するが、ポリシーが何も実行しない
- ポリシーが動作中にフリーズする
- ポリシーが1つのセットアップでのみ機能する
- トレーニングジョブがキューで停止したままになる
1回の実行にかかる費用
Pi0.5は80GBカードを必要とするため高価なティアに属し、スポット価格は変動するため、この数値は価格ではなく範囲です。多くのSO-100タスクでは、まずSmolVLAまたはACTを24GBティアでトレーニングし、タスクがそもそも学習可能であることを確認してから、A100の時間を費やしてください。最初のポリシーをトレーニングするで、より安価なループを説明しており、価格設定に現在のティアが記載されています。
| ティア | ポリシー | 一般的な実行時間 | 1時間あたりの価格 | 1回の実行あたりの費用 |
|---|---|---|---|---|
| A100 80 GB or H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 to 6 hours | 1.20 to 2.00 USD | about 4 to 12 USD |
| RTX 4090 or any 24 GB card | SmolVLA, ACT | 2 to 5 hours | 0.30 to 0.60 USD | about 1 to 3 USD |

夜を費やす前に:とは同じ数値を直接比較しています。には85のVLAモデルと332のベンチマーク結果があり、それぞれがそのソースにリンクされており、このファミリーの背景についてはにあります。
スタックを構築せずにPi0.5をトレーニング
フォームでデータセットとハイパーパラメータを選択します。バックエンドはスポット市場で80GBカードをレンタルし、トレーナーを実行してチェックポイントをオブジェクトストレージに書き込みます。SO-100、SO-101、Koch v1.1、LeKiwiのガイドが含まれます。
トレーニングガイドを開くRTX 4090でPi0.5をファインチューニングできますか?▾
完全なファインチューニングはできません。openpiでは70GB以上が必要とされており、そのためにはA100 80GBまたはH100が必要です。22.5GBのLoRAの数値はJAXパスのものであり、PyTorchの実装にはLoRAがありません。LeRobotのPEFT統合は存在しますが、その文書化された例はSmolVLAであり、pi05のVRAM数値は公開されていません。
いくつのエピソードが必要ですか?▾
50です。GR00TやACTと同じ最低値で、SmolVLAだけが30と低いです。ベースチェックポイントは10,000時間以上の事前学習を積んでいるため、ファインチューニングはゼロから学習するのではなく適応します。50のクリーンで多様なエピソードは、1つの設定からの200のエピソードよりも優れています。
--policy.pathと--policy.pretrained_pathの違いは何ですか?▾
--policy.pathは重みとチェックポイントのconfig.jsonをロードするため、n_action_stepsなどの保存された設定が継承され、--policy.typeは省略する必要があります。--policy.pretrained_pathは重みのみをロードします。特徴名はデータセットから取得され、保存された設定はリセットされ、--policy.typeが必要です。そのため、LIBEROコマンドはn_action_steps=10とempty_cameras=1を明示的に渡します。そうしないと、それらは50と0にフォールバックします。
オープンバージョンは論文に記載されている完全なPi0.5を提供しますか?▾
いいえ。どちらもフローマッチングアクションヘッドのみをサポートしています。FASTアクショントークナイザーと高レベルのサブタスク予測を伴う離散トークン事前学習ステージはリリースされておらず、lerobot/pi05_baseカードは、pi0.5論文に強化学習ステージが記述されていないにもかかわらず、そのリストにRLを追加しています。あなたは、長いタスク自体を分解するモデルではなく、あなたが提供する言語文字列に条件付けされた低レベルのポリシーをトレーニングします。
このガイドはどのバージョンを対象としていますか?▾
main上のopenpiとlerobot 0.6.1(2026年8月3日以降のリリース)で、両方とも2026年8月23日に読み込まれました。v3.0データセットは2025年10月に0.4.0と共に登場しました。0.6.0でベースパッケージが軽量化され、lerobot[pi]単独ではトレーニングスタックをインストールしなくなり、デプロイメントはlerobot-rolloutに移行しました。トレーニング時のRTCはmainのみで利用可能で、ここにあるホスト型トレーナーは0.5.1を実行しています。
Sources
- Physical-Intelligence/openpi: open-source models and packages for robotics
- openpi training configs, including pi05_libero and pi05_droid_finetune
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- pi0.5: a Vision-Language-Action Model with Open-World Generalization
- Knowledge Insulating Vision-Language-Action Models: Train Fast, Run Fast, Generalize Better
- PaliGemma: A versatile 3B VLM for transfer
- Training-Time Action Conditioning for Efficient Real-Time Chunking
- LeRobot pi05 documentation on the main branch, including training-time RTC
- LeRobot documentation: parameter efficient fine-tuning with PEFT
- LeRobotDataset v3.0 format documentation
- LeRobot release notes: v0.3.2 through v0.6.1, with the v0.6.0 breaking changes
- LeRobot v0.5.0: Scaling Every Dimension
- lerobot/pi05_base model card
- LeRobot documentation: Real-Time Chunking (RTC)
- openpi Pi0Config: the model defaults pi0 and pi05 inherit
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started