LeRobot documentation

LIBERO

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LIBERO

The commands below run the simulator locally. To keep its dependencies away from your policy's, serve it instead with `lerobot-env-server --config_path=docker/sim/configs/libero.yaml --sim.task=--docker=true`, where `` is the command's `--env.task`, and add `--env.server.endpoint=tcp/127.0.0.1:7448` to the command. A server runs the task it was started with (see [Simulation: local or served](./simulation)).

LIBERO, ömür boyu robot öğrenmesini incelemek için tasarlanmış bir ölçüm setidir; bu kavram, robotların yalnızca bir kez önceden eğitilmekle kalmayıp zaman içinde kullanıcılarıyla birlikte öğrenmeye ve uyum sağlamaya devam etmesi gerektiği fikrini ifade eder. LIBERO, bilgi aktarımına odaklanan standartlaştırılmış bir manipülasyon görevi seti sunar: bir robotun daha önce öğrendiklerini yeni durumlara ne ölçüde uygulayabildiği. LIBERO üzerinde değerlendirme yaparak farklı algoritmalar adil bir şekilde karşılaştırılabilir ve araştırmacılar birbirlerinin çalışmalarının üzerine inşa edebilir.

An overview of the LIBERO benchmark

Mevcut görevler

LIBERO, basit nesne manipülasyonlarından karmaşık çok adımlı senaryolara kadar uzanan 130 görevi kapsayan beş görev seti içerir:

SuiteCLI adıGörevlerAçıklama
LIBERO-Spatiallibero_spatial10Uzamsal ilişkiler hakkında akıl yürütme gerektiren görevler
LIBERO-Objectlibero_object10Farklı nesneleri manipüle etmeye odaklanan görevler
LIBERO-Goallibero_goal10Hedefleri değişen hedef koşullu görevler
LIBERO-90libero_9090LIBERO-100 koleksiyonundan kısa ufuklu görevler
LIBERO-Longlibero_1010LIBERO-100 koleksiyonundan uzun vadeli görevler

Kurulum

LeRobot kurulum talimatlarını izledikten sonra:

pip install -e ".[libero]"
LIBERO requires Linux (`sys_platform == 'linux'`). LeRobot uses MuJoCo for simulation — set the rendering backend before training or evaluation:
export MUJOCO_GL=egl  # for headless servers (HPC, cloud)

Değerlendirme

Varsayılan yerel değerlendirme

Dört standart test setinde değerlendirin (görev başına 10 bölüm):

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

Tekli paket değerlendirmesi

Bir LIBERO süitinde değerlendirme yapın:

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero \
  --env.task=libero_object \
  --eval.batch_size=2 \
  --eval.n_episodes=3
  • --env.task, test setini seçer (libero_object, libero_spatial vb.).
  • --env.task_ids, belirli görev indekslerine ([0], [1,2,3] vb.) kısıtlar. Tüm görevleri çalıştırmak için bu parametreyi atlayın.
  • --eval.batch_size, paralel olarak çalışan ortam sayısını kontrol eder.
  • --eval.n_episodes, her görev için kaç bölümün çalıştırılacağını belirler.

Çoklu süit değerlendirmesi

Virgülle ayrılmış bir liste geçirerek bir politikayı birden fazla test setinde aynı anda ölçün:

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

Kontrol modu

LIBERO iki kontrol modunu destekler: relative (varsayılan) ve absolute. Farklı VLA checkpoint'leri farklı eylem parametrelendirmeleriyle eğitildiğinden, modun politikanızla eşleştiğinden emin olun:

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

Performansı sıfırla

Varsayılan olarak LeRobot, LIBERO’nun sert sıfırlama davranışını korur. Sabit başlangıç durumları etkinleştirildiğinde, her bölümde simülatör modelini ve render’ı yeniden oluşturmayı atlamak için yumuşak sıfırlamaları seçebilirsiniz:

--env.init_states=true --env.hard_reset=false

Soft sıfırlamalar daha hızlıdır ancak ortamın oturma adımlarından sonra hard sıfırlamalarla bit-bite aynı değildir; bu nedenle kamera gözlemleri ve politika sonuçları hafifçe farklılık gösterebilir. Benchmark sonuçlarını yeniden üretirken hard sıfırlamaları kullanın.

Politika girdileri ve çıktıları

Gözlemler:

  • observation.state — 8 boyutlu proprioseptif özellikler (eef konumu, eksen-açı yönelimi, gripper qpos)
  • observation.images.image — ana kamera görünümü (agentview_image), HWC uint8
  • observation.images.image2 — bilek kamera görünümü (robot0_eye_in_hand_image), HWC uint8
LeRobot enforces the `.images.*` prefix for visual features. Ensure your policy config `input_features` use the same naming keys, and that your dataset metadata keys follow this convention. If your data contains different keys, you must rename the observations to match what the policy expects, since naming keys are encoded inside the normalization statistics layer.

Eylemler:

  • Box(-1, 1, shape=(7,)) içinde sürekli kontrol — 6B uç efektor delta + 1B kavrama

Önerilen değerlendirme bölümleri

Yeniden üretilebilir kıyaslamalar için, dört standart süit (Spatial, Object, Goal, Long) boyunca görev başına 10 bölüm kullanın. Bu, toplamda 400 bölüm verir ve yayımlanan sonuçlar için kullanılan protokol ile eşleşir. Başarı oranları değerlendirme tohumları arasında birkaç yüzde farklılık gösterebilir, bu nedenle 3 tohum üzerinde ortalama almanızı öneririz.

lerobot-eval, her başarı oranının yanında %95 Wilson aralığını (pc_success_ci95) raporlar. 10 epizotta bir görevin 9/10 puan alması durumunda aralık yaklaşık %60 ile %98 arasındadır; 400 epizotluk bir test setinin toplamında %80 başarı oranı için aralık yaklaşık %76 ile %84 arasındadır. Bir görevde aralıkları örtüşen iki politika, o çalışmada o görevde farklılaştıklarına dair kanıtlanmamış demektir. Aralık, hangi epizotların seçildiğini kapsar; politikanın eğitim tohumunu kapsamaz ve bunu ölçmek için birden fazla eğitim çalışması gerekir.

To compare two policies on the same episodes, use the same `--seed`, keep `--env.init_states=true`, and run each task in a single batch (`--eval.batch_size` equal to episodes per task).

Eğitim

Veri seti

İki ön işlenmiş LIBERO veri seti LeRobot ile tam olarak uyumludur. Aynı şemaya sahip aynı gösterimleri içerirler ve kamera karelerinin nasıl saklandığı konusunda farklılık gösterirler:

lerobot/liberoHuggingFaceVLA/libero
epizotlar / kareler / görevler1,693 / 273,465 / 401,693 / 273,465 / 40
kameralar2× 256×256×32× 256×256×3
durum / eylem boyutları8 / 78 / 7
veri seti biçimiv3.0v3.0
kamera kodlamaMP4 videoparquet içinde PNG
indirme boyutu1,9 GB69,9 GB
ek bağımlılıkvideo arka ucu (torchcodec veya pyav)none

lerobot/libero öneririz: 37 kat daha küçük indirme ve eşdeğer yükleme hızı (işçi başına ~330 örnek/sn). Video yeniden kodlaması hafif kayıplıdır; video çözme arka ucunu kuramıyorsanız görüntü tabanlı varyantı kullanın.

Referans olarak, Physical Intelligence tarafından yayımlanan orijinal veri seti:

Pin `--dataset.revision=` when reporting results — Hub datasets can be re-uploaded, and success rates are only comparable against the same data revision.

Örnek eğitim komutu

Önerilen veri setinde SmolVLA'yı eğitin:

lerobot-train \
  --policy.type=smolvla \
  --policy.load_vlm_weights=true \
  --policy.push_to_hub=false \
  --dataset.repo_id=lerobot/libero \
  --dataset.video_backend=torchcodec \
  --output_dir=./outputs/libero_smolvla \
  --steps=100000 \
  --batch_size=64

Sonucu Hub'da paylaşmak için --policy.push_to_hub=false ifadesini --policy.repo_id=${HF_USER}/libero-smolvla ile değiştirin. Kaydedilen checkpoint'leri, Değerlendirme bölümünde gösterildiği gibi lerobot-eval ile değerlendirin.

Yayınlanan sonuçların yeniden üretilmesi

Pi0.5 sonuçlarını LIBERO benchmark'unda yeniden üretiyoruz. Physical Intelligence LIBERO temel modelini (pi05_libero) alıyoruz ve HuggingFace LIBERO veri setini kullanarak 8 H100 GPU üzerinde, 256 batch boyutuyla bfloat16'da ek olarak 6k adım boyunca ince ayar yapıyoruz.

İnce ayarlanmış model: lerobot/pi05_libero_finetuned

Değerlendirme komutu

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=lerobot/pi05_libero_finetuned \
  --policy.n_action_steps=10 \
  --env.max_parallel_tasks=1

Orijinal OpenPI uygulamasıyla uyumlu olacak şekilde n_action_steps=10 olarak ayarladık.

Sonuçlar

ModelLIBERO UzamsalLIBERO NesneLIBERO HedefLIBERO 10Ortalama
Pi0.5 (LeRobot)97.099.098.096.097.5

Bu sonuçlar, Physical Intelligence tarafından bildirilen orijinal sonuçlar ile tutarlıdır:

ModelLIBERO UzamsalLIBERO NesneLIBERO HedefLIBERO 10Ortalama
Pi0.5 (OpenPI)98.898.298.092.496.85
Update on GitHub