LeRobot documentation

π₀-FAST (Pi0-FAST)

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

π₀-FAST (Pi0-FAST)

π₀-FASTは、汎用ロボット制御のためのVision-Language-Actionモデルであり、自己回帰的な次のトークン予測を用いて連続的なロボットアクションをモデル化します。

モデル概要

π₀-FASTは、Vision-Language Modelsの力を、FAST(Frequency-space Action Sequence Tokenization)と呼ばれる新しいアクションのトークン化手法と組み合わせます。これにより、標準的なバインニングベースの離散化では不可能な、高度な器用さを要求するタスクでの自己回帰型VLAの学習が可能になり、π₀などの拡散ベースのアプローチと比較して、学習速度が最大で5倍速になります。

An overview of Pi0-FAST

なぜFASTなのか?

ロボットのアクションのトークン化における標準的なアプローチは、次元ごと・タイムステップごとの単純なバインニング(区切り)スキームを使用します。単純な動作であれば問題ありませんが、精密さと高周波数制御を必要とする複雑で器用なスキルでは、この手法は急速に機能しなくなります。

FASTは、信号処理技術を用いてアクションシーケンスを圧縮することでこの問題を解決します。その結果、言語トークンと同様に自己回帰的に予測可能な、密なアクショントークンのシーケンスが得られます。

FASTトークナイゼーションの仕組み

FASTトークナイザーは、以下の手順を通じてアクションシーケンスを圧縮します:

  1. Normalize: ホライズンがH、アクション次元がDの、形状(H, D)の連続アクションチャンクを取得します。サポートされている正規化手法のいずれか(外れ値への対応にはQuantilesが推奨されます)を使用して正規化します。

  2. 離散コサイン変換 (DCT): scipy を介して、各アクション次元に対して個別に DCT を適用します。DCT は、画像や音声コーデック (JPEG、MP3) でよく使用される圧縮アルゴリズムです。

  3. Quantization: 各アクション次元について、無視できる係数を丸めて除去し、スパースな周波数行列を生成します。

  4. Flatten: 低周波成分を先頭に配置して、行列を1次元ベクトルにフラット化します。

  5. Byte Pair Encoding (BPE): BPEトークナイザーを学習し、DCT係数を高密度なアクショントークンに圧縮します。従来のトークナイズ手法と比較して、通常10倍の圧縮率を実現します。

このアプローチにより、これらのFASTトークンを予測するように学習させることで、既存のVLMをVLAに変換できます。

インストール要件

  1. LeRobotのインストールは、インストールガイドに従って行ってください。

  2. …を実行して、π₀-FASTの依存関係をインストールします。

    pip install -e ".[pi]"

カスタムFASTトークナイザーの学習

FASTトークナイザーには2つのオプションがあります:

  1. 事前学習済みトークナイザーを使用する: lerobot/fast-action-tokenizer トークナイザーは、100万本以上の実際のロボットのアクションシーケンスで学習されており、汎用トークナイザーとして機能します。

  2. 独自のトークナイザーを学習する: 特定のデータセットでの最大限のパフォーマンスを実現するために、ご自身のデータでトークナイザーをファインチューニングできます。

独自のTokenizerの学習

lerobot-train-tokenizer \
    --repo_id "user/my-lerobot-dataset" \
    --action_horizon 10 \
    --encoded_dims "0:6" \
    --vocab_size 1024 \
    --scale 10.0 \
    --normalization_mode QUANTILES \
    --output_dir "./my_fast_tokenizer" \
    --push_to_hub true \
    --hub_repo_id "username/my-action-tokenizer"

主なトークナイザーのパラメータ

パラメータ説明デフォルト
--repo_idLeRobot データセットのリポジトリ ID必須
--action_horizon各チャンク内の将来アクションの数10
--encoded_dimsエンコードするカンマ区切りの次元範囲(例: "0:6,7:23")"0:6,7:23"
--vocab_sizeBPE語彙サイズ1024
--scale量子化のためのDCTスケーリング係数10.0
--normalization_mode正規化モード(MEAN_STD、MIN_MAX、QUANTILES、QUANTILE10、IDENTITY)QUANTILES
--sample_fractionエピソードごとにサンプリングするチャンクの割合0.1

使用方法

LeRobotでπ₀-FASTを使用するには、ポリシータイプを以下のように指定します:

policy.type=pi0_fast

トレーニング

π₀-FASTの学習には、LeRobotの学習スクリプトを使用できます:

lerobot-train \
    --dataset.repo_id=your_dataset \
    --policy.type=pi0_fast \
    --output_dir=./outputs/pi0fast_training \
    --job_name=pi0fast_training \
    --policy.pretrained_path=lerobot/pi0fast-base \
    --policy.dtype=bfloat16 \
    --policy.gradient_checkpointing=true \
    --policy.chunk_size=10 \
    --policy.n_action_steps=10 \
    --policy.max_action_tokens=256 \
    --steps=100000 \
    --batch_size=4 \
    --policy.device=cuda

主要な学習パラメータ

パラメータ説明デフォルト
--policy.gradient_checkpointing=true学習中のメモリ使用量を大幅に削減しますfalse
--policy.dtype=bfloat16効率化のために混合精度トレーニングを使用しますfloat32
--policy.chunk_size予測するアクションステップ数(アクションホライズン)50
--policy.n_action_steps実行するアクションステップ数50
--policy.max_action_tokensアクションチャンクあたりの最大FASTトークン数256
--policy.action_tokenizer_name使用するFASTトークナイザlerobot/fast-action-tokenizer
--policy.compile_model=true高速なトレーニングのためにtorch.compileを有効にするfalse
--policy.optimizer_fused=truefused AdamWを使用します。再開時には無視されますNone

推論

高速推論のためのKVキャッシュ

π₀-FASTは、LLM推論で広く使用されている最適化手法であるKV-cachingに対応しています。これにより、アテンション機構からのキーとバリューのペアをキャッシュし、自己回帰デコーディング時の冗長な計算を回避します。

# KV-caching is enabled by default
policy.use_kv_cache=true

推論の例

from lerobot.policies.pi0_fast import PI0FastPolicy, PI0FastConfig

# Load the policy
policy = PI0FastPolicy.from_pretrained("your-model-path")

# During inference
actions = policy.predict_action_chunk(batch)

モデルアーキテクチャ

π₀-FASTは、PaliGemmaベースのアーキテクチャを使用しています:

  • Vision Encoder: 画像理解のためのSigLIPビジョンタワー
  • Language Model: 言語指示の処理とアクショントークンの予測に使用される Gemma 2B

モデルは画像、テキストによる指示、ロボットの状態を入力として受け取り、離散的なFASTトークンを出力します。このFASTトークンはデコードされて連続的なアクションに変換されます。

設定オプション

パラメータ説明デフォルト
paligemma_variantVLMバックボーンバリアント(gemma_300m、gemma_2b)gemma_2b
max_state_dim最大状態ベクトル次元(パディング済み)32
max_action_dim最大アクションベクトル次元数(パディング済み)32
temperatureサンプリング温度(貪欲法の場合は0.0)0.0
max_decoding_steps最大デコーディングステップ数256
use_kv_cache高速な推論のためにKVキャッシュを有効にするtrue

π₀との比較

機能π₀π₀-FAST
アクションの表現Flow Matching(Diffusion)自己回帰トークン (FAST)
トレーニング速度1x5倍高速
器用さ高高
推論方法反復的なノイズ除去自己回帰デコーディング
KVキャッシュN/Aサポート

π₀Fastの結果の再現

LeRobotの実装を用いて、LIBEROベンチマークにおけるπ₀Fastの結果を再現します。LeRobotのPiFastベースモデルlerobot/pi0fast-baseを取得し、HuggingFace LIBERO datasetを使用して、8枚のH100 GPU上でバッチサイズ256、bfloat16でさらに40kステップのファインチューニングを行います。

ファインチューニングされたモデルは、こちらで確認できます:

以下のトレーニングコマンドで:

lerobot-train \
  --dataset.repo_id=lerobot/libero \
  --output_dir=outputs/libero_pi0fast \
  --job_name=libero_pi0fast \
  --policy.path=lerobot/pi0fast-base \
  --policy.dtype=bfloat16 \
  --steps=100000 \
  --save_freq=20000 \
  --batch_size=4 \
  --policy.device=cuda \
  --policy.scheduler_warmup_steps=4000 \
  --policy.scheduler_decay_steps=100000 \
  --policy.scheduler_decay_lr=1e-5 \
  --policy.gradient_checkpointing=true \
  --policy.chunk_size=10 \
  --policy.n_action_steps=10 \
  --policy.max_action_tokens=256 \
  --policy.empty_cameras=1

その後、LeRobot の LIBERO 実装を使用して、次のコマンドを実行することで、ファインチューニングされたモデルを評価します。

tasks="libero_object,libero_spatial,libero_goal,libero_10"
lerobot-eval \
  --policy.path=lerobot/pi0fast-libero \
  --policy.max_action_tokens=256 \
  --env.type=libero \
  --policy.gradient_checkpointing=false \
  --env.task=${tasks} \
  --eval.batch_size=1 \
  --eval.n_episodes=1 \
  --rename_map='{"observation.images.image":"observation.images.base_0_rgb","observation.images.image2":"observation.images.left_wrist_0_rgb"}'

注: 元のOpenPI実装と同様に、n_action_steps=10を設定しています。

結果

LIBEROベンチマークで以下の結果が得られました:

モデルLIBERO SpatialLIBERO ObjectLIBERO GoalLIBERO 10平均
π₀-fast70.0100.0100.060.082.5

動画を含む完全な評価出力フォルダは、こちらでご利用いただけます。

ライセンス

このモデルは、元のOpenPIリポジトリと一貫して、Apache 2.0ライセンスに従っています。

参考文献

Update on GitHub