Pi0およびPi0.5モデルフ ァインチューニング:Physical Intelligence オープンソースロボット学習プラットフォーム
Pi0およびPi0.5は、Physical Intelligenceチームが開発した業界最先端のVision-Language-Action(VLA)モデルシリーズです。これらのモデルは大規模なロボットデータで事前学習されており、ファインチューニングによって特定のロボットタスクやアプリケーションシナリオに迅速に適応できます。
本ガイドは、Physical Intelligence公式のOpenPIフレームワークに基づいて、事前学習済みのPi0/Pi0.5モデルをカスタムデータセットで効率的にファインチューニングする方法を詳しく説明します。
モデルシリーズ概要
OpenPIリポジトリは現在3種類のモデルを提供しています:
モデルタイプ | 説明 | 特徴 | 使用ケース |
---|---|---|---|
π₀ (Pi0) | フローベースのVision-Language-Actionモデル | フロー生成、高品質な行動予測 | 複雑な操作タスク、高精度要求 |
π₀-FAST | FASTアクショントークナイザーベースの自己回帰VLA | 自己回帰生成、高速推論 | リアルタイム制御、低レイテンシ要求 |
π₀.₅ (Pi0.5) | π₀のアップグレード版、より良いオープンワールド汎化能力 | 知識分離学習、汎化能力向上 | 多様な環境、クロスドメイン アプリケーション |
注意:すべてのモデルは10,000+時間のロボットデータで事前学習されており、ファインチューニング用のベースモデルチェックポイントを提供しています。
前提条件と環境セットアップ
システム要件
最小構成:
- Python 3.11+(uvパッケージマネージャーの使用を推奨)
- GPU: 学習にはNVIDIA GPU(A100/H100推奨)
- メモリ: 32GB+システムRAM
- ストレージ: 100GB+利用可能ディスク容量
推奨構成:
- ハードウェア: NVIDIA A100/H100またはマルチGPU設定
- ストレージ: NVMe SSDドライブ
- ネットワーク: モデルとデータダウンロード用の安定したネットワーク接続
環境インストールと設定
uvパッケージマネー ジャーの使用(推奨)
# OpenPI公式リポジトリをクローン
git clone https://github.com/Physical-Intelligence/openpi.git
cd openpi
# uvを使用して依存関係をインストール(自動的に仮想環境を作成)
uv sync
# インストール確認
uv run python -c "from openpi.policies import policy_config; print('OpenPI環境設定完了!')"
従来のpipインストール
# リポジトリをクローン
git clone https://github.com/Physical-Intelligence/openpi.git
cd openpi
# 仮想環境を作成
python -m venv venv
source venv/bin/activate # Linux/macOS
# または venv\Scripts\activate # Windows
# 依存関係をインストール
pip install -e .
# インスト ール確認
python -c "from openpi.policies import policy_config; print('OpenPI環境設定完了!')"
データセット準備
AI-Oプラットフォームデータエクスポートの使用
AI-Oデータプラットフォームは完全なデータエクスポート機能を提供し、注釈データをOpenPIがサポートするLeRobot形式にワンクリックでエクスポートできます:
エクスポート手順:
- エクスポート形式選択: AI-OプラットフォームでLeRobotまたはHDF5形式エクスポートを選択
- データフィルタリング: プロジェクト、時間、品質レベルなどの次元で必要なデータをフィルタリング
- バッチエクスポート: 大規模データセットのバッチエクスポート処理をサポート
- 形式変換: エクスポートされたデータをOpenPIが必要とするLeRobot形式に変換
データ形式要件
OpenPIは複数のデータ形式をサポートし、データセットには以下が含まれている必要があります:
- 観測データ: 画像、状態情報など
- 行動データ: ロボット実行行動シーケンス
- 言語指示: タスク記述(オプション、言語条件付きタスク用)
データセット設定
OpenPIは設定ファイルを使用してデータセットと学習パラメータを定義します。以下が必要です:
- データセット設定作成: 設定ファイルでデータパス、形式などを定義
- データ前処理: 正規化統計を計算
- データ検証: データ形式の正確性を確認
# データセット正規化統計を計算(必要なステップ)
uv run scripts/compute_norm_stats.py <config_name>
# 例:カスタム設定の統計を計算
uv run scripts/compute_norm_stats.py my_custom_config
サポートされるデータ形式
OpenPIは複数のロボットデータ形式をサポートしています:
- HuggingFaceデータセット
- LeRobot形式データ
- HDF5形式データ
- AI-Oプラットフォームからエクスポートされたデータ(形式変換によりサポート)
モデル学習実践
AI-Oプラットフォームでの学習(推奨)
AI-Oデータプラットフォームは完全なモデル学習機能を提供し、OpenPIなど複数のロボット学習モデルの学習をサポートします:
プラットフォーム学習の利点:
- ノーコード学習: ビジュアルインターフェースで学習プロセス全体を完了、プログラミング経験不要
- 柔軟な計算リソース: プライベートクラウドとパブリッククラウドの計算リソースをサポート、オンデマンド割り当て
- リアルタイム監視: 学習メトリクス、モデル出力、システムログのリアルタイム監視を提供
- 自動管理: チェックポイント管理、中断からの再開、パラメータ調整などの機能をサポート
学習プロセス
-
データ準備: エクスポート済みデータセットを選択または外部データをアップロード
-
モデル設定: Pi0/Pi0.5モデルを選択し学習パラメータを設定
-
学習監視: 学習進捗とモデル性能をリアルタイム表示
-
モデルエクスポート: 学習完了後にモデルチェックポイントを取得
ローカルJAX版学習
ローカル環境で学習が必要な場合、OpenPIは主にJAXを使用して学習し、最適な性能と安定性を提供します:
# JAXメモリ割り当てを設定(推奨)
export XLA_PYTHON_CLIENT_MEM_FRACTION=0.9
# 基本学習コマンド
uv run scripts/train.py <config_name> --exp_name <実験名>
# 例:Pi0モデルを学習
uv run scripts/train.py pi0_aloha_sim --exp_name my_pi0_experiment
# マルチGPU学習(FSPDを使用)
uv run scripts/train.py <config_name> --exp_name <実験名> --fsdp-devices <GPU数>
# 例:4つのGPUを使用して学習
uv run scripts/train.py pi0_aloha_sim --exp_name my_experiment --fsdp-devices 4
PyTorch版学習
OpenPIはPyTorch学習もサポートしていますが、まず環境設定が必要です:
PyTorch環境設定
# PyTorchサポートをインストール(transformersファイルの置換が必要)
cp -r src/openpi/models_pytorch/transformers_replace/* .venv/lib/python3.11/site-packages/transformers/
# 警告:これはtransformersライブラリを永続的に変更し、他のプロジェクトに影響する可能性があります
PyTorch学習コマンド
# シングルGPU学習
uv run scripts/train_pytorch.py <config_name> --exp_name <実験名>
# マルチGPU学習(シングルノード)
uv run torchrun --standalone --nnodes=1 --nproc_per_node=<GPU数> \
scripts/train_pytorch.py <config_name> --exp_name <実験名>
# 例:2つのGPUを使用して学習
uv run torchrun --standalone --nnodes=1 --nproc_per_node=2 \
scripts/train_pytorch.py pi0_aloha_sim --exp_name pytorch_experiment
モデル推論とデプロイ
AI-Oプラットフォームでの推論デプロイ(推奨)
AI-Oデータプラットフォームは完全なモデル推論サービスを提供し、クラウド検証からエッジデプロイまでの全シナリオAI推論能力をサポートします:
プラットフォーム推論の利点:
- ワンクリックデプロイ: 学習完了したモデルをワンクリックで本番グレード推論サービスとしてデプロイ
- 複数のテスト方法: シミュレーション推論、MCAPファイルテスト、オフラインエッジデプロイをサポート
- リアルタイム監視: サービス状態、リソース使用量、性能メトリクスのリアルタイム監視を提供
- インテリジェント適応: 異なるモデルの入出力要件を自動認識・適応
推論サービス機能
-
サービス状態監視: 推論サービスの実行状態と設定情報を表示
-
シミュレーション推論テスト: ランダムデータを使用してモデル機能を迅速に検証
-
MCAPファイルテスト: 実際のロボットデータを使用して推論効果を検証
-
オフラインエッジデプロイ: 推論サービスをロボットのローカルGPUにデプロイ
デプロイ方法比較
推論方法 | 使用ケース | 説明 |
---|---|---|
シミュレーション推論テスト | 迅速検証 | ランダムデータまたはカスタム入力を使用してモデル推論機能と性能を迅速に検証 |
MCAPファイルテスト | 実データ検証 | 記録されたロボットデモンストレーションデータを使用して実際のシナリオでのモデル推論効果を検証 |
オフラインエッジデプロイ | 本番環境アプリケーション | 推論サービスをロボットのローカルGPUにデプロイして低レイテンシのリアルタイム制御を実現 |
ローカルポリシーサーバーデプロイ
ローカル環境でデプロイが必要な場合、OpenPIはモデル推論デプロイ用のポリシーサーバーを提供します:
# ポリシーサーバー開始(JAX版)
uv run scripts/serve_policy.py policy:checkpoint \
--policy.config=<設定名> \
--policy.dir=<チェックポイントパス>
# 例:Pi0.5モデルをデプロイ
uv run scripts/serve_policy.py policy:checkpoint \
--policy.config=pi05_droid \
--policy.dir=/path/to/trained/checkpoint
# PyTorch版デプロイ
uv run scripts/serve_policy.py policy:checkpoint \
--policy.config=pi05_droid \
--policy.dir=/path/to/converted/pytorch/checkpoint
Python API使用
from openpi.training import config as _config
from openpi.policies import policy_config
# 設定を読み込み
config = _config.get_config("pi05_droid")
checkpoint_dir = "/path/to/trained/checkpoint"
# 学習済みポリシーを作成
policy = policy_config.create_trained_policy(config, checkpoint_dir)
# 推論実行
action_chunk = policy.infer(example)["actions"]
利用可能な設定
OpenPIは異なるロボットプラットフォームとタスクに適した複数の事前定義設定を提供します:
設定名 | 説明 | 使用ケース |
---|---|---|
pi0_aloha_sim | Pi0モデル、ALOHAシミュレーション環境 | ALOHAロボットシミュレーション学習 |
pi05_droid | Pi0.5モデル、DROIDデータセット | 実ロボットデータ学習 |
debug | デバッグ設定、小データセット | 迅速テストとデバッグ |
カスタム設定
特定のデータセットと学習要件に適応するためのカスタム設定ファイルを作成できます:
# src/openpi/training/config.pyに新しい設定を追加
@config_flags.DEFINE_config_file("config")
def get_config(config_name: str):
# 既存設定をベースに変更
config = get_base_config()
# カスタムデータセットパス
config.dataset.path = "/path/to/your/dataset"
# 学習パラメータ調整
config.training.learning_rate = 1e-4
config.training.batch_size = 8
return config
JAX vs PyTorch版比較
精度設定
JAX版:
- 推論: ほとんどの重みと計算でbfloat16を使用、安定性のために一部の計算でfloat32を使用
- 学習: デフォルトで混合精度、重みと勾配でfloat32、活性化と計算でbfloat16を使用
PyTorch版:
- 推論: JAX版と一致、主にbfloat16を使用
- 学習: 完全bfloat16(デフォルト)または完全float32をサポート、
pytorch_training_precision
で設定
性能比較
- 推論速度: torch.compile使用時、PyTorchはJAXと同等の性能
- メモリ使用量: JAX版は通常より効率的
- 安定性: JAX版はより成熟で安定
モデル変換
JAXとPyTorch間でモデル変換が必要な場合:
# JAXモデルをPyTorchに変換
uv run examples/convert_jax_model_to_pytorch.py \
--checkpoint_dir /path/to/jax/checkpoint \
--config_name <設定名> \
--output_path /path/to/pytorch/checkpoint
一般的な問題解決
メモリと性能最適化
-
GPU メモリ不足:
# JAXメモリ割り当て比率を設定
export XLA_PYTHON_CLIENT_MEM_FRACTION=0.9
# FSPDを使用してメモリ使用量を削減
uv run scripts/train.py <config> --exp_name <name> --fsdp-devices <n> -
学習速度最適化:
- SSDストレージを使用してデータロード速度を向上
- バッチサイズと勾配累積を適切に増加
- EMA(指数移動平均)の無効化を検討してメモリを節約
データ関連問題
-
正規化統計エラー:
# 正規化統計を再計算
uv run scripts/compute_norm_stats.py <config_name> -
データセットダウンロード失敗:
- ネットワーク接続を確認
- HuggingFaceデータセットの場合、ログインを確認:
huggingface-cli login
環境設定問題
-
依存関係競合:
# 仮想環境をクリアして再インストール
rm -rf .venv
uv sync -
CUDAエラー:
- NVIDIAドライバーが正しくインストールされていることを確認
- Dockerの場合、nvidia-container-toolkitがインストールされていることを確認
- 競合を避けるためにシステムレベルのCUDAライブラリの削除が必要な場合があります
学習監視と評価
学習ログ
OpenPI学習プロセスは詳細なログを自動記録します:
- 損失曲線: 学習損失変化傾向
- 学習率スケジューリング: 学習率変化状況
- リソース使用量: GPUメモリと計算利用率
- 学習メトリクス: 各種評価指標
チェックポイント管理
# 学習チェックポイントは実験ディレクトリに保存
ls experiments/<exp_name>/checkpoints/
# 学習再開(最新チェックポイントから継続)
uv run scripts/train.py <config> --exp_name <name> --resume
# 特定チェックポイントから再開
uv run scripts/train.py <config> --exp_name <name> --resume --checkpoint_path <path>
モデル評価
学習済みモデルを使用した推論評価:
from openpi.policies import policy_config
from openpi.training import config as _config
# 設定とモデルを読み込み
config = _config.get_config("pi05_droid")
policy = policy_config.create_trained_policy(config, checkpoint_dir)
# 推論実行
result = policy.infer(observation_data)
actions = result["actions"]
AI-Oプラットフォーム統合評価
AI-OプラットフォームはOpenPIモデルの統合サポートを提供します:
- 視覚化比較: 実データとモデル出力の視覚的比較
- 関節レベル解析: 各関節の予測精度解析
- タスク成功率統計: 実際のデプロイ後のタスク完了統計
評価指標
定量的指標
- 行動精度: 予測行動と実際の行動間の誤差統計
- 軌道一貫性: 生成軌道の滑らかさと合理性
- 収束解析: 学習プロセス中の損失関数の収束
定性評価
- 実ロボット検証: 実ロボットでのモデル性能テスト
- 汎化能力: 未見シナリオでの適応性
- ロバスト性テスト: ノイズと干渉下での安定性
AI-Oプラットフォーム完全ワークフロー
エンドツーエンドロボット学習プロセス
AI-OデータプラットフォームはOpenPIモデル用の完全なエンドツーエンドソリューションを提供し、データ収集からモデルデプロイまでの全パイプラインをサポートします:
プラットフォーム統合の利点
純粋なOpenPI開発と比較した利点:
- 技術的障壁の低減: 深層学習とプログラミング経験不要、視覚的インターフェースで操作
- 開発効率向上: データからモデルまでの全プロセス自動化、開発サイクルを大幅短縮
- データ品質保証: 専門的なデータ注釈と品質管理プロセス
- デプロイプロセス簡素化: 本番環境へのワンクリックデプロイ、複数のデプロイ方法をサポート
- 継続最適化サポート: モデル性能監視と継続改善メカニズムを提供
使用推奨
推奨使用ケース:
- 初心者または非技術ユーザー: AI-Oプラットフォームの視覚的インターフェースで完全なプロセス操作
- 迅速プロトタイプ検証: アイデアとコンセプトを迅速に検証する必要があるR&Dチーム
- 本番環境デプロイ: 安定で信頼性の高い本番グレードデプロイソリューション
- 大規模データ処理: 大量のロボットデータを処理する必要があるプロジェクト
ローカル開発シナリオ:
- 深いカスタマイズニーズ: モデルアーキテクチャや学習アルゴリズムを変更する必要がある上級ユーザー
- 研究実験: アルゴリズム研究と実験比較を行う必要がある学術ユーザー
- オフライン環境: ネットワーク制限またはセキュリティ要件の高い環境
関連リソース
よくある質問
Q: JAXとPyTorch版のどちらを選ぶべきですか?
A:
- JAX版: 本番環境に推奨、より安定で成熟
- PyTorch版: PyTorchエコシステム統合が必要なシナリオに適合
Q: OpenPIでPi0.5モデルを使用するには?
A: Pi0.5モデルはOpenPIで完全にサポートされています。設定pi05_droid
または類似のPi0.5設定を使用してください。
Q: メモリ不足問題の対処法は?
A:
# JAXメモリ割り当てを設定
export XLA_PYTHON_CLIENT_MEM_FRACTION=0.9
# FSDP分散学習を使用
uv run scripts/train.py <config> --exp_name <name> --fsdp-devices <n>
Q: 学習データに必要な形式は?
A: OpenPIはHuggingFaceデータセット形式を含む複数のデータ形式をサポートします。AI-Oプラットフォームからエクスポートされたデータは形式変換が必要です。
Q: 学習進捗の監視方法は?
A: OpenPIは学習ログとチェックポイントをexperiments/<exp_name>/
ディレクトリに自動保存し、ログファイルで学習進捗を監視できます。
Q: モデルファインチューニングにかかる時間は?
A: 学習時間は以下に依存します:
- データセットサイズ
- ハードウェア構成(GPU数と種類)
- モデル複雑度
- 学習設定パラメータ
通常、単一A100で数時間から数日かかります。
Q: 学習済みモデルをAI-Oプラットフォームに統合するには?
A: AI-OプラットフォームはOpenPIモデルの統合サポートを提供し、モデル登録、デプロイ、監視機能を含みます。具体的な統合方法については技術サポートチームにお問い合わせください。
本ガイドを通じて、OpenPIフレームワークを使用してPi0/Pi0.5モデルの学習とデプロイを成功させることができるはずです。ご質問がある場合は、公式ドキュメントを参照するか、技術サポートをお求めください。