LeRobot 文件

Meta-World

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Meta-World

Meta-World 是一個用於連續控制機器人操作中多任務與元強化學習(Meta Reinforcement Learning)的開源模擬基準測試。它整合了 50 種使用日常物品和通用桌面 Sawyer 機械手臂的多元操作任務,提供了一個標準化的遊樂場,用以測試演算法是否能學習多種不同任務並快速推廣至新任務。

MetaWorld MT10 demo

可用任務

Meta-World 提供了按難度分組的 50 個任務。在 LeRobot 中,您可以針對單一任務、難度分組或完整的 MT50 套件進行評估。

群組 CLI 名稱 任務 (Tasks) 說明
簡單 (Easy) easy 28 具備簡單動態與單步驟目標的任務
中等 medium 11 需要多步驟推理的任務
困難 (Hard) hard 6 具有複雜接觸與精確操作的任務
非常困難 (Very Hard) very_hard 5 該套件中最具挑戰性的任務
MT50 (全部) 以逗號分隔的列表 50 全部 50 個任務 — 最具挑戰性的多任務環境

您也可以直接傳入單一任務名稱(例如:assembly-v3, dial-turn-v3)。

我們在 HF Hub 上提供了適用於 LeRobot 的 Meta-World MT50 資料集: lerobot/metaworld_mt50。此資料集已針對 MT50 評估進行格式化,該評估使用所有 50 個任務,並具有固定的物體/目標位置以及用於一致性的一熱編碼(one-hot)任務向量。

安裝

在遵循 LeRobot 安裝說明後

pip install -e ".[metaworld]"
如果您在執行 Meta-World 環境時遇到 `AssertionError: ['human', 'rgb_array', 'depth_array']`,這是因為 Meta-World 與您的 Gymnasium 版本不匹配。請透過以下方式修正:
pip install "gymnasium==1.1.0"

評估

預設評估(推薦)

針對中等難度(medium)分組進行評估(在涵蓋範圍與運算成本之間取得良好的平衡)

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=metaworld \
  --env.task=medium \
  --eval.batch_size=1 \
  --eval.n_episodes=10

單任務評估

針對特定任務進行評估

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=metaworld \
  --env.task=assembly-v3 \
  --eval.batch_size=1 \
  --eval.n_episodes=10

多任務評估

跨多個任務或難度群組進行評估

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=metaworld \
  --env.task=assembly-v3,dial-turn-v3,handle-press-side-v3 \
  --eval.batch_size=1 \
  --eval.n_episodes=10
  • --env.task 接受明確的任務列表(以逗號分隔)或難度群組(例如:easy, medium, hard, very_hard)。
  • --eval.batch_size 控制平行運行的環境數量。
  • --eval.n_episodes 設定每個任務要執行的回合數。

策略輸入與輸出

觀測值 (Observations)

  • observation.image — 單一相機視角(corner2),480x480 HWC uint8
  • observation.state — 4 維本體感覺狀態(末端執行器位置 + 夾爪)

動作 (Actions)

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

推薦評估回合數

為了基準測試的可重現性,請使用每個任務 10 個回合。對於完整的 MT50 套件,這總共會產生 500 個回合。如果您在乎泛化能力,請在完整的 MT50 上進行測試 — 它是有意設計為具有挑戰性的,比起幾個狹隘的任務,更能體現出模型的優缺點。

訓練

訓練指令範例

在部分 Meta-World 任務子集上訓練 SmolVLA 策略

lerobot-train \
  --policy.type=smolvla \
  --policy.repo_id=${HF_USER}/metaworld-test \
  --policy.load_vlm_weights=true \
  --dataset.repo_id=lerobot/metaworld_mt50 \
  --env.type=metaworld \
  --env.task=assembly-v3,dial-turn-v3,handle-press-side-v3 \
  --output_dir=./outputs/ \
  --steps=100000 \
  --batch_size=4 \
  --eval.batch_size=1 \
  --eval.n_episodes=1 \
  --eval_freq=1000

實用建議

  • 使用一熱編碼(one-hot)任務條件化進行多任務訓練(MT10/MT50 約定),以便策略具備明確的任務上下文。
  • 在編寫後處理或日誌記錄時,請檢查資料集的任務描述以及 info["is_success"] 鍵,以確保您的成功指標與基準測試一致。
  • 根據您的運算預算調整 batch_sizestepseval_freq
在 GitHub 上更新

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