AY-Robotsのトレーニングマトリックス。5つのポリシーが行、4つのロボットアームが列をなし、各セルは特定のファインチューニングガイドへのリンクとなっています。
Pi0.5フローマッチングVLAトレーニングLeRobotファインチューニング

Pi0.5を自分のロボットデータで学習させる方法

AY-Robots ResearchAugust 23, 202616分読了

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) を用いてトレーニングされました。

プロパティpi0pi0.5
VLMバックボーンバリアントgemma_2b (PaliGemma)gemma_2b (PaliGemma)
アクションエキスパートバリアントgemma_300mgemma_300m
action_dim3232
action_horizon デフォルト5050
max_token_len48200
離散状態入力falsetrue、プロンプト内で状態がビンに離散化される
ベースチェックポイントgs://openpi-assets/checkpoints/pi0_basegs://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を使用します。
python
# 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 True
2026年8月23日、openpiメインブランチのsrc/openpi/models/pi0_config.pyから読み取り。

PaliGemmaバックボーンと、その前面にあるゲート

PaliGemma (arXiv 2407.07726) は、Gemma-2B 言語モデル上の SigLIP-So400m ビジョンエンコーダーで、約 3B パラメータです。Pi0.5 はそのトークナイザーを継承しており、そのトークナイザーはゲート付きリポジトリにあります。これは、最初の訓練ステップの前に、最初の実行が失敗する最も一般的な方法です。

GPU をレンタルする前にゲート付きライセンスを承認してください

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 GBRTX 4090
ファインチューニング、LoRAmore than 22.5 GBRTX 4090
ファインチューニング、フルmore than 70 GBA100 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が必要ですを参照してください。

bash
# 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
LeRobotDataset v3.0のドキュメントより。

このプラットフォームはPi0.5に最低50エピソードを要求します。これはGR00TおよびACTと同じ最低要件です。事前学習が大部分の作業を行うため、200のずさんなエピソードよりも50のクリーンなエピソードの方が優れています。初めてですか?データ収集ガイドから始めてください。

AY-Robotsのポリシーページで、5つの学習可能なポリシーをパラメータ、GPUティア、レイテンシ、最小エピソード数で比較しています。
Pi0.5は、A100およびH100ティアに位置し、アクションステップあたり485ミリ秒、最低50エピソードで動作します。

ルートA: openpiリポジトリでファインチューニングする

リファレンス実装: JAXが最初で、Ubuntu 22.04でのみテスト済み。フラグではなく設定オブジェクトによって駆動されます。PyTorchパスは2025年9月に登場し、LIBEROで検証されました。3つのステップ: データを変換し、設定を定義し、学習して提供します。

  1. 1
    クローンとインストール

    openpiはuvを使用します。GIT_LFS_SKIP_SMUDGEは、LeRobotがLFSブロブなしで依存関係として機能することを可能にします。

    bash
    git 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. 2
    データをLeRobotデータセットに変換する

    アップストリームはLIBEROとDROID用のコンバーターを提供しており、いずれかを適応させることを想定しています。作業はキーマッピングです。

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    学習設定を追加する

    設定はsrc/openpi/training/config.py内のTrainConfigエントリです。これはpi05_droid_finetuneを適応させ、重みローダーはpi05_baseを指しています。

    python
    TrainConfig(
        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. 4
    正規化統計を計算する

    データセットではなく、設定名に対して実行されます。これをスキップすると、ここでよくある最初の失敗となります。

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    学習

    この変数により、JAXはデフォルトの75%ではなくGPUメモリの90%を使用できます。80GBのカードでは、これが実行が成功するかどうかを決定します。

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    提供する

    サーバーはポート8000でリッスンし、観測クエリに応答します。ロボットのランタイムがクライアントです。

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
PyTorchパスはJAXパスではありません

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-trainlerobot-recordは、2025年8月の0.3.2ですでにエントリーポイントでした。python -m lerobot.scripts.trainを呼び出すチュートリアルは、1年間の変更以前のものであり、他の点についても信頼できない可能性があります。

  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. 2
    認証

    ブラウザでpaligemma-3b-pt-224ライセンスを承認し、トレーニングを行うマシンにログインします。

    bash
    hf auth login
  3. 3
    分位数統計を追加する

    Pi0.5はSTATEとACTIONを分位数で正規化するため、meta/stats.jsonにはq01とq99が必要です。古いデータセットにはmin、max、mean、stdのみが含まれています。

    bash
    lerobot-edit-dataset \
        --repo_id your_dataset \
        --new_repo_id your_dataset \
        --operation.type recompute_stats \
        --operation.overwrite true
  4. 4
    lerobot/pi05_baseからファインチューンする

    バッチサイズは、お使いのカードが耐えられる値に設定してください。ドキュメントでは、80GBのLIBEROで64を使用しています。bfloat16を明示的に渡してください。設定のデフォルトはfloat32です。

    bash
    lerobot-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. 5
    アームで実行する

    0.6.xでは、これはlerobot-rolloutです。lerobot-recordはポリシーを拒否し、eval_データセット名を拒否します。Baseはアームを駆動し、sentryはロールアウトを記録します。

    bash
    lerobot-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=pi05Pi0.5を選択pretrained_pathと併用必須、--policy.pathと併用する場合は省略
--policy.pretrained_path重みのみをロードデータセットからの特徴名、保存された設定はリセットされる
--policy.path重みとチェックポイントのconfig.jsonn_action_stepsなどの保存された設定が継承される
--policy.n_action_stepsチャンクごとに消費されるステップ数50にフォールバック、chunk_size(デフォルト50)を超えることはない
--policy.train_expert_onlyVLMをフリーズし、エキスパートをトレーニングデフォルトはfalse、メモリ消費が少なく、成功率に多少影響
--policy.gradient_checkpointingアクティベーションを保存する代わりに再計算デフォルトはfalse、実行がメモリに収まらない場合の最初の手段
--peft.method_type=LORAフルウェイトの代わりにLoRAアダプターを使用peftエクストラが必要、ドキュメントの例はSmolVLA
--policy.rtc_training_max_delayRTC用のアクションプレフィックス条件付けメインブランチのみ、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 TrainConfiglerobot pi05とlerobot-trainAY-Robotsが送信
バッチサイズ3281
ピーク学習率2.5e-5, コサイン減衰optimizer_lr 2.5e-55e-5
トレーニングステップ30,000100,00030,000
チェックポイント間隔1,000 steps20,000 stepsフォームにはない
シード421,000フォームにある
アクションチャンクaction_horizon 50chunk_size 50, n_action_steps 50フォームにはない
重みデータ型bfloat16float32 (--policy.dtypeを渡すまで)フォームにはない
勾配蓄積そのようなノブはなく、代わりにfsdp_devicesを使用これまでのすべてのリリースにはない16、そしてそれは削除される

この移植は忠実か?LeRobotチームはLIBEROベースモデルをさらに6kステップでファインチューニングし、openpiの参照数値と4つのスイートで比較しました。平均97.5%対96.85%で、Libero 10では先行し、Spatialでは後塵を拝しました。この経路はツールの選択であり、品質の選択ではありません。

独自のデータでPi0.5をファインチューニングする
利点
  • 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ティア最小エピソード数
ACT20 ms~80 MRTX 4090 or any 24 GB card50
GR00T N1.7152 ms~3 BA100 80 GB or H100 80 GB50
GR00T N1.5165 ms~3 BA100 80 GB or H100 80 GB50
SmolVLA245 ms~450 MRTX 4090 or any 24 GB card30
Pi0.5485 ms~3 BA100 80 GB or H100 80 GB50
AY-RobotsのGR00T N1.7とPi0.5の比較ページ。パラメータ、GPUティア、レイテンシ、データセット形式を含む。
同じGPUティア、同じエピソード下限、異なるデータセットバージョン、3倍のレイテンシ差。
推論はサーボの隣に配置する必要がある

これら5つのモデル全体の制御ループは、アクションステップあたり20〜485ミリ秒で実行されます。485ミリ秒に加えてパブリックインターネットのラウンドトリップが発生すると、機能するポリシーもためらいがちなものになります。リモート推論は、低速なピックアンドプレースには有効ですが、高速な反応動作には向きません。LANでしか動作しないデモを販売するよりも、この事実を伝える方が良いと考えています。アームがチャンク間で一時停止する場合は、動作中にポリシーがフリーズするから始めてください。

アップストリームには解決策があり、その半分はすでにインストール可能なリリースに含まれています。リアルタイムチャンキングは、アームが現在のチャンクを実行している間に次のチャンクを生成し、新しいチャンクの重複するステップがすでに実行された部分に近づくようにガイドすることで、アームが継ぎ目で停止したり、ぎくしゃくしたりするのを防ぎます。推論時の形式は、Pi0、Pi0.5、SmolVLA向けに0.4.2の変更履歴で提供されており、再学習ではなくロールアウトフラグです。

bash
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
execution_horizonは、新しいチャンクが前のチャンクの何ステップと一致する必要があるかを示します。RTCのドキュメントでは、通常の範囲として8から12が示されています。デフォルトの推論バックエンドは--inference.type=syncです。

これによってモデルが高速化されるわけではありません。これはギャップを隠すものです。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メモリ。
bash
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
ホスト型フォームでは実行されず、pipではインストールできないコマンド: トレーニング時RTCはメインブランチのフラグです。

動作しない場合

症状最も可能性の高い原因
実行開始前に拒否されるデータセットがv2.1だがPi0.5はv3.0を要求、またはGR00Tの場合はその逆
ImportError、datasetsパッケージが見つからないトレーニングエクストラなしのlerobot 0.6.x
バッチ1でのq01およびq99に関するValueErrormeta/stats.jsonに分位数がない; 再計算するかMEAN_STDを使用
ステップ0でCUDAメモリ不足70 GB未満での完全なファインチューニング; チェックポイントを使用するかtrain_expert_onlyを試す
401またはゲート付きリポジトリエラーPaliGemmaトークナイザーライセンスが承認されていない
損失が低下し、ロボットが何も動作しない正規化の不一致、またはポリシーが状態をコピーしている
アームがチャンク間で一時停止するステップごとのレイテンシと往復時間; チャンクキューが枯渇する
ある設定では動作するが、別の設定では失敗するエピソードが少なすぎる、またはすべてが単一の設定

1回の実行にかかる費用

Pi0.5は80GBカードを必要とするため高価なティアに属し、スポット価格は変動するため、この数値は価格ではなく範囲です。多くのSO-100タスクでは、まずSmolVLAまたはACTを24GBティアでトレーニングし、タスクがそもそも学習可能であることを確認してから、A100の時間を費やしてください。最初のポリシーをトレーニングするで、より安価なループを説明しており、価格設定に現在のティアが記載されています。

ティアポリシー一般的な実行時間1時間あたりの価格1回の実行あたりの費用
A100 80 GB or H100Pi0.5, GR00T N1.7, GR00T N1.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD
RTX 4090 or any 24 GB cardSmolVLA, ACT2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
AY-Robotsのコスト表。各ポリシーが必要とするGPU、一般的な実行時間と価格、およびポリシーが有用になるまでに必要なエピソード数を示しています。
製品ページにある同じ2つのティア:Pi0.5は80GBカードをレンタルし、SmolVLAとACTは4090に適合します。

夜を費やす前に:とは同じ数値を直接比較しています。には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を実行しています。

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started