LeRobot 文件

π₀ (Pi0)

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

π₀ (Pi0)

π₀ 是一款來自 Physical Intelligence 的機器人通用視覺-語言-動作模型 (Vision-Language-Action model)。其 LeRobot 實作改編自該團隊開源的 OpenPI 儲存庫。

模型概覽

π₀ 是由 Physical Intelligence 開發的首個通用機器人基礎模型,代表了機器人領域的一大突破。與傳統專為重複性動作編程的狹義機器人程式不同,π₀ 被設計為一種通用策略,能夠理解視覺輸入、解讀自然語言指令,並跨多種任務控制各式不同的機器人。

An overview of Pi0

物理智慧的願景

正如 Physical Intelligence 所描述,雖然 AI 在數位領域(從西洋棋對弈到藥物探索)已取得卓越成就,但在物理世界中,人類智慧仍大幅領先於 AI。套用莫拉維克悖論 (Moravec’s paradox) 的話來說:贏得一場西洋棋比賽對 AI 而言是個「簡單」的問題,但摺衣服或清理桌面則需要解決人類史上最具挑戰性的工程難題。π₀ 代表了開發人工物理智慧的第一步,讓使用者能像操作大型語言模型一樣,簡單地要求機器人執行任何任務。

架構與方法

π₀ 結合了數項關鍵創新:

  • 流匹配 (Flow Matching):使用一種新穎的方法,透過流匹配(擴散模型的一種變體)為預訓練的視覺語言模型 (VLM) 增強連續動作輸出。
  • 跨實體訓練 (Cross-Embodiment Training):使用來自 8 種不同機器人平台的數據進行訓練,包括 UR5e、雙臂 UR5e、Franka、雙臂 Trossen、雙臂 ARX、移動式 Trossen 以及移動式 Fibocom。
  • 網路規模預訓練 (Internet-Scale Pre-training):從預訓練的 3B 參數視覺語言模型中繼承語義知識。
  • 高頻控制 (High-Frequency Control):以高達 50 Hz 的頻率輸出馬達指令,實現即時靈巧操作。

安裝需求

  1. 請遵循我們的安裝指南來安裝 LeRobot。

  2. 透過執行以下指令安裝 Pi0 相依套件:

    pip install -e ".[pi]"

訓練資料與能力

π₀ 是在迄今規模最大的機器人互動資料集上進行訓練的,結合了三個關鍵數據來源:

  1. 網路規模預訓練:來自網路的視覺-語言數據,用於語義理解。
  2. Open X-Embodiment 資料集:開源的機器人操作資料集。
  3. Physical Intelligence 資料集:涵蓋 8 種不同機器人的龐大且多樣化的靈巧任務資料集。

使用方式

若要在 LeRobot 中使用 π₀,請將策略類型指定為:

policy.type=pi0

訓練

若要訓練 π₀,您可以使用標準的 LeRobot 訓練腳本並搭配適當的配置:

lerobot-train \
    --dataset.repo_id=your_dataset \
    --policy.type=pi0 \
    --output_dir=./outputs/pi0_training \
    --job_name=pi0_training \
    --policy.pretrained_path=lerobot/pi0_base \
    --policy.repo_id=your_repo_id \
    --policy.compile_model=true \
    --policy.gradient_checkpointing=true \
    --policy.dtype=bfloat16 \
    --policy.freeze_vision_encoder=false \
    --policy.train_expert_only=false \
    --steps=3000 \
    --policy.device=cuda \
    --batch_size=32

訓練關鍵參數

  • --policy.compile_model=true:啟用模型編譯以加快訓練速度。
  • --policy.gradient_checkpointing=true:顯著減少訓練過程中的記憶體使用量。
  • --policy.dtype=bfloat16:使用混合精度訓練以提高效率。
  • --batch_size=32:訓練的批次大小,請根據您的 GPU 記憶體進行調整。
  • --policy.pretrained_path=lerobot/pi0_base:您想要進行微調的基礎 π₀ 模型,選項包括:

訓練參數說明

參數 預設 說明
freeze_vision_encoder (凍結視覺編碼器) false 請勿凍結視覺編碼器 (Do not freeze the vision encoder)
train_expert_only false 請勿凍結 VLM,訓練所有參數

💡 提示:將 train_expert_only=true 設定為真,會凍結 VLM 並僅訓練動作專家 (action expert) 與投影層,從而允許在較低的記憶體使用量下進行微調。

相對動作 (Relative Actions)

預設情況下,π₀ 預測的是絕對動作。您可以啟用相對動作,讓模型預測相對於當前機器人狀態的偏移量。這可以改善某些配置下的訓練穩定性。

若要使用相對動作,請先透過 CLI 在相對空間中重新計算您的資料集統計資料:

lerobot-edit-dataset \
    --repo_id your_dataset \
    --operation.type recompute_stats \
    --operation.relative_action true \
    --operation.chunk_size 50 \
    --operation.relative_exclude_joints "['gripper']" \
    --push_to_hub true

或者在 Python 中執行相同操作:

from lerobot.datasets.lerobot_dataset import LeRobotDataset
from lerobot.datasets.dataset_tools import recompute_stats

dataset = LeRobotDataset("your_dataset")
recompute_stats(dataset, relative_action=True, chunk_size=50, relative_exclude_joints=["gripper"])
dataset.push_to_hub()

chunk_size 應與您策略的 chunk_size 相符(π₀ 預設為 50)。relative_exclude_joints 列出了應保持在絕對空間中的關節名稱(例如夾爪指令)。使用 --push_to_hub true 將更新後的統計資料上傳至 Hub。

接著在啟用相對動作的情況下進行訓練:

lerobot-train \
    --dataset.repo_id=your_dataset \
    --policy.type=pi0 \
    --policy.use_relative_actions=true \
    --policy.relative_exclude_joints='["gripper"]' \
    ...

授權

此模型採用 Apache 2.0 授權條款,與原始 OpenPI 儲存庫一致。

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.