メインコンテンツまでスキップ

π0 と π0.5 のファインチューニング

π0 と π0.5 は Physical Intelligence の Vision-Language-Action(VLA)ポリシーで、トレーニングのパイプラインは OpenPI に由来します。OpenPI リポジトリにおける openpi-0 と openpi-0.5 に相当し、公式表記は π₀ と π₀.₅、モデル識別子は pi0 と pi05、ベースチェックポイントは pi0_base と pi05_base です。プラットフォームではこの 2 つの識別子でモデルを登録しています。いずれも jax と lerobot の 2 つのトレーニングフレームワークに対応し、LeRobot v2 と v3 のデータセットを利用できます。

対象ロールと前提条件​

対象ロール​

ロールトレーニングタスクを作成可能か説明
管理者可モジュール権限の制限を受けない
プロジェクトマネージャー権限が必要管理者がモジュール権限で「トレーニングタスクを作成」を付与
アノテーター権限が必要同上
レビュアー権限が必要同上
収集者権限が必要同上

トレーニングタスクと指標の表示だけには「トレーニングを表示」が必要です。

前提条件​

項目要件
データセットバージョンLeRobot v2、v3。トレーニングサービスはデータセットの meta/info.json にある codebase_version でバージョンを識別し、トレーニングイメージを選択します
フレームワークjax(OpenPI パイプライン)、lerobot
GPU メモリシングル GPU で LoRA を有効にした場合は約 22.5GB 以上、フルファインチューニングでは約 70GB 以上
依存関係プラットフォームのモデルトレーニングサービスが有効で、トレーニング場所が 1 つ以上設定されていること。jax フレームワークは OpenPI のトレーニングイメージを、lerobot フレームワークはデータセットバージョンに応じた LeRobot トレーニングイメージを使用します
データセット構造ディレクトリ内に meta/info.json、data/、videos/ が含まれること
権限作成には「トレーニングタスクを作成」、表示には「トレーニングを表示」が必要

トレーニングタスクの作成とパラメータ​

手順​

  1. 「モデル」→「トレーニング」に進み、「トレーニングタスクを作成」をクリックします。
  2. トレーニング場所を選択します。ローカル GPU または管理者が有効にしたクラウドトレーニング場所から選べます。
  3. 「選択されたモデル」で pi0 または pi05 を選びます。
  4. 「トレーニングフレームワーク」で jax または lerobot を選択します。フレームワークによって「トレーニングパラメータ」に表示されるパラメータが決まります。
  5. 「トレーニングデータセット」でデータソースを選択します。エクスポート履歴、アップロード済みの LeRobot データセット、ダウンロードリンク、HuggingFace から選べます。
  6. 「トレーニングパラメータ」でパラメータを設定します。意味と既定値は下表のとおりです。
  7. メモを入力します(任意)。
  8. 「トレーニングタスクを作成」をクリックします。

トレーニングパラメータ​

jax フレームワークと lerobot フレームワークは 2 系統のパラメータを使います。jax フレームワークは OpenPI のトレーニングエントリを対象とします。

パラメータ説明既定値取り得る値
batch_sizeグローバルバッチサイズ1整数、1 以上
stepsトレーニングステップ数10000整数、1 以上
save_intervalチェックポイントの保存間隔5000整数、1 以上、かつ steps 以下
learning_rateコサイン減衰スケジュールのピーク学習率2.5e-5浮動小数点数、0 より大きい
fsdp_devicesFSDP デバイス数autoauto または正の整数。可視 GPU 数以下で、その約数であること
ema_decayEMA 減衰係数無効0 < x ≤ 1。LoRA 有効時は無視されます
action_horizon1 回に予測するアクション系列の長さ50整数、1 以上
promptデータセットにタスクテキストがない場合の既定指示空文字列

lerobot フレームワークは先に共通のトレーニングパラメータを適用します。

パラメータ説明既定値取り得る値
batch_sizeバッチサイズ1整数、1 以上
stepsトレーニングステップ数10000整数、1 以上
seed乱数シード1000整数
num_workersDataLoader のプロセス数4整数、1 以上
eval_freq評価間隔1000整数、1 以上、かつ steps 以下
log_freqログ間隔100整数、1 以上、かつ steps 以下
save_freqチェックポイントの保存間隔5000整数、1 以上、かつ steps 以下
save_checkpointチェックポイントを保存するかtruetrue / false

さらに policy. プレフィックス付きのモデルパラメータを追加します。

パラメータ説明既定値取り得る値
policy.n_obs_steps入力観測ステップ数1整数
policy.chunk_sizeアクション予測長50整数
policy.n_action_steps1 回の呼び出しで実行するアクションステップ数50整数
policy.max_state_dim状態ベクトルのパディング次元32整数
policy.max_action_dimアクションベクトルのパディング次元32整数
policy.num_inference_steps推論時のノイズ除去ステップ数10整数
policy.dtypeモデルのデータ型bfloat16bfloat16、float32
policy.tokenizer_max_lengthトークナイザーの最大長pi0 は 48、pi05 は 200整数
policy.optimizer_lrオプティマイザの学習率2.5e-5浮動小数点数
policy.optimizer_weight_decay重み減衰0.0浮動小数点数
policy.optimizer_grad_clip_norm勾配クリッピングのしきい値1.0浮動小数点数
policy.scheduler_warmup_steps学習率のウォームアップステップ数1000整数
policy.scheduler_decay_steps学習率の減衰ステップ数10000整数
policy.scheduler_decay_lr減衰後の最終学習率0.0浮動小数点数

結果の確認​

トレーニングの監視​

トレーニング詳細ページはフレームワークごとにログを解析し、指標の曲線を描画します。jax フレームワークの指標の定義は次のとおりです。

指標意味判断基準
step完了したトレーニングステップ数設定した steps まで段階的に増加
lossトレーニング損失全体として低下。長時間低下しない場合は学習率とデータを確認
gradient_norm勾配ノルム持続的な増大がない
param_normパラメータノルムトレーニングに伴い緩やかに変化

lerobot フレームワークの指標の定義は次のとおりです。

指標意味判断基準
step完了したトレーニングステップ数設定した steps まで段階的に増加
sample処理済みサンプル数step に伴い増加
episode処理済み episode 数step に伴い増加
epoch学習済みエポック数step に伴い増加
lossトレーニング損失全体として低下
gradient_norm勾配ノルム持続的な増大がない
learning_rate現在の学習率スケジュールに従って変化
update_time_s1 ステップの更新時間安定しており、持続的な増大がない
data_time_sデータ読み込み時間安定

確認チェックリスト​

トレーニングサービスはコンテナの終了コードでタスクの最終状態を判定します。終了コードが 0 の場合は成功、0 以外の場合は失敗として記録されます。

確認項目合格基準
タスク状態トレーニング詳細ページのステータスが「成功」で、コンテナの終了コードが 0
出力ディレクトリjax フレームワークは出力ディレクトリ配下の docker_train/train/ に、lerobot フレームワークは checkpoints/ に書き込みます
チェックポイント「チェックポイント」にチェックポイントが一覧表示され、jax の内容には params/ が、lerobot の内容には pretrained_model/ が含まれます。last が指す項目のタイプは「最終」、それ以外は「ステップ」
指標の曲線「トレーニング指標」が jax の step、loss、gradient_norm を描画し、lerobot はさらに sample、episode、epoch、learning_rate を含みます
ログ「リアルタイムログ」が読み取れ、持続的なエラーがない

「チェックポイント」内のチェックポイントはダウンロード、オブジェクトストレージへの同期、または推論サービスの作成に使用できます。推論側の説明はモデル推論を参照してください。

エラー時の対処​

現象考えられる原因対処責任者
トレーニングがすぐに失敗し、データセットが見つからないと表示されるデータセットに meta/info.json がない、または選択したソースのパスが誤っている正しいエクスポート履歴またはアップロード済みデータセットを選び直すプロジェクトマネージャー
GPU メモリ不足batch_size が大きすぎる、またはシングル GPU でフルファインチューニングを実行しているbatch_size を下げる。シングル GPU では LoRA を有効のままにするアルゴリズムエンジニア
FSDP デバイス数が不正と表示されるfsdp_devices が可視 GPU 数より大きい、または割り切れないfsdp_devices を auto に変更するか、可視 GPU 数の約数に変更するアルゴリズムエンジニア
保存間隔がトレーニングステップ数より大きいと表示されるsave_interval または save_freq が steps より大きい保存間隔を steps 以下に下げるアルゴリズムエンジニア
シングル GPU とマルチ GPU の結果が大きく異なるシングル GPU は既定で LoRA、マルチ GPU は既定で FSDP のため、学習するパラメータ数が異なるフレームワーク、fsdp_devices、batch_size、乱数シードを固定して再比較するアルゴリズムエンジニア
loss が長時間低下しない学習率が適切でない、タスクテキストがない、データの網羅性が不足しているprompt とデータセットを確認する。learning_rate を調整するアルゴリズムエンジニア
トレーニング場所が利用できないプラットフォームでそのトレーニング場所が有効でない、またはその GPU が利用できないトレーニング場所を変更する。管理者に連絡してトレーニングサービスを確認する管理者

関連ページ​

ページ用途
モデルトレーニングトレーニングタスクの作成、監視、割り当て
LeRobot データセットとトレーニングデータエクスポートとトレーニングの概要
LeRobot v2 と v3 のフォーマット差異2 つのデータ形式の違いと移行
データエクスポートLeRobot トレーニングパッケージの生成