LeRobot 文件
π₀ (Pi0)
並獲得增強的文件體驗
開始使用
π₀ (Pi0)
π₀ 是一款來自 Physical Intelligence 的機器人通用視覺-語言-動作模型 (Vision-Language-Action model)。其 LeRobot 實作改編自該團隊開源的 OpenPI 儲存庫。
模型概覽
π₀ 是由 Physical Intelligence 開發的首個通用機器人基礎模型,代表了機器人領域的一大突破。與傳統專為重複性動作編程的狹義機器人程式不同,π₀ 被設計為一種通用策略,能夠理解視覺輸入、解讀自然語言指令,並跨多種任務控制各式不同的機器人。
物理智慧的願景
正如 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 的頻率輸出馬達指令,實現即時靈巧操作。
安裝需求
請遵循我們的安裝指南來安裝 LeRobot。
透過執行以下指令安裝 Pi0 相依套件:
pip install -e ".[pi]"
訓練資料與能力
π₀ 是在迄今規模最大的機器人互動資料集上進行訓練的,結合了三個關鍵數據來源:
- 網路規模預訓練:來自網路的視覺-語言數據,用於語義理解。
- Open X-Embodiment 資料集:開源的機器人操作資料集。
- 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:您想要進行微調的基礎 π₀ 模型,選項包括:- lerobot/pi0_base
- lerobot/pi0_libero (專門在 Libero 資料集上進行訓練)
訓練參數說明
| 參數 | 預設 | 說明 |
|---|---|---|
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 上更新