LeRobot 文件

LIBERO

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

LIBERO

LIBERO 是一個專為研究終身機器人學習(lifelong robot learning)而設計的基準測試 — 其核心理念是機器人需要隨著時間的推移與使用者共同學習並適應,而不僅僅是預訓練一次。它提供了一套標準化的操作任務,重點在於知識遷移(knowledge transfer):評估機器人將已習得的知識應用於新情境的能力。透過對 LIBERO 進行評估,不同的演算法可以得到公平的比較,研究人員也能在此基礎上進行開發。

An overview of the LIBERO benchmark

可用任務

LIBERO 包含 五個任務套件,涵蓋 130 個任務,範圍從簡單的物體操作到複雜的多步驟場景。

套件 (Suite) CLI 名稱 任務 (Tasks) 說明
LIBERO-Spatial libero_spatial 10 需要推理空間關係的任務
LIBERO-Object libero_object 10 以操作不同物體為核心的任務
LIBERO-Goal libero_goal 10 具備不同目標的目標導向任務
LIBERO-90 libero_90 90 來自 LIBERO-100 集合的短視界任務
LIBERO-Long libero_10 10 來自 LIBERO-100 集合的長視界任務

安裝

在依照 LeRobot 安裝說明進行操作後:

pip install -e ".[libero]"
LIBERO 需要 Linux 環境(`sys_platform == 'linux'`)。LeRobot 使用 MuJoCo 進行模擬 — 請在訓練或評估前設定渲染後端。
export MUJOCO_GL=egl  # for headless servers (HPC, cloud)

評估

預設評估(推薦)

跨四個標準套件進行評估(每個任務 10 次執行 episodes)

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero \
  --env.task=libero_spatial,libero_object,libero_goal,libero_10 \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --env.max_parallel_tasks=1

單一套件評估

在一個 LIBERO 套件上進行評估

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero \
  --env.task=libero_object \
  --eval.batch_size=2 \
  --eval.n_episodes=3
  • --env.task 選擇套件(libero_objectlibero_spatial 等)。
  • --env.task_ids 限制為特定的任務索引([0][1,2,3] 等)。若要執行套件中的所有任務,請省略此參數。
  • --eval.batch_size 控制並行執行的環境數量。
  • --eval.n_episodes 設定每個任務要執行的 episodes 數量。

多套件評估

透過傳入逗號分隔的列表,同時對多個套件進行策略基準測試。

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero \
  --env.task=libero_object,libero_spatial \
  --eval.batch_size=1 \
  --eval.n_episodes=2

控制模式

LIBERO 支援兩種控制模式 — relative(預設)和 absolute。不同的 VLA 檢查點(checkpoints)是使用不同的動作參數化進行訓練的,因此請確保模式與您的策略相符。

--env.control_mode=relative   # or "absolute"

策略輸入與輸出

觀測值 (Observations)

  • observation.state — 8 維本體感覺特徵(末端執行器位置、軸角方位、夾爪位置 qpos)
  • observation.images.image — 主攝影機視角(agentview_image),HWC uint8
  • observation.images.image2 — 手腕攝影機視角(robot0_eye_in_hand_image),HWC uint8
LeRobot 強制要求視覺特徵使用 .images.* 前綴。請確保您的策略配置 input_features 使用相同的命名鍵,並且您的資料集元數據鍵遵循此慣例。如果您的資料包含不同的鍵,則必須重新命名觀察值以符合策略預期的格式,因為命名鍵是編碼在標準化統計層內部的。

動作 (Actions)

  • 連續控制在 Box(-1, 1, shape=(7,)) 中 — 6D 末端執行器增量 + 1D 夾爪

推薦評估 episodes

為了進行可重現的基準測試,請在所有四個標準套件(Spatial、Object、Goal、Long)中使用每個任務 10 個 episodes。這總共提供 400 個 episodes,符合已發表結果所使用的協議。

訓練

Dataset

我們提供了一個完全相容於 LeRobot 的預處理 LIBERO 資料集:

供參考,這是由 Physical Intelligence 發布的原始資料集:

訓練指令範例

lerobot-train \
  --policy.type=smolvla \
  --policy.repo_id=${HF_USER}/libero-test \
  --policy.load_vlm_weights=true \
  --dataset.repo_id=HuggingFaceVLA/libero \
  --env.type=libero \
  --env.task=libero_10 \
  --output_dir=./outputs/ \
  --steps=100000 \
  --batch_size=4 \
  --eval.batch_size=1 \
  --eval.n_episodes=1 \
  --eval_freq=1000

重現已發表結果

我們在 LIBERO 基準測試上重現了 Pi0.5 的結果。我們採用 Physical Intelligence 的 LIBERO 基礎模型(pi05_libero),並使用 HuggingFace LIBERO 資料集,在 8 張 H100 GPU 上以 bfloat16 格式額外微調 6000 個步驟,batch size 設定為 256。

微調後的模型:lerobot/pi05_libero_finetuned

評估指令

lerobot-eval \
  --output_dir=./eval_logs/ \
  --env.type=libero \
  --env.task=libero_spatial,libero_object,libero_goal,libero_10 \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --policy.path=pi05_libero_finetuned \
  --policy.n_action_steps=10 \
  --env.max_parallel_tasks=1

我們設定 n_action_steps=10,與原始的 OpenPI 實作相符。

結果

模型 LIBERO Spatial (空間) LIBERO Object (物件) LIBERO Goal (目標) LIBERO 10 平均
Pi0.5 (LeRobot) 97.0 99.0 98.0 96.0 97.5

這些結果與 Physical Intelligence 報告的原始結果一致。

模型 LIBERO Spatial (空間) LIBERO Object (物件) LIBERO Goal (目標) LIBERO 10 平均
Pi0.5 (OpenPI) 98.8 98.2 98.0 92.4 96.85
在 GitHub 上更新

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