LeRobot documentation

LIBERO-plus

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.7.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LIBERO-plus

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_plus.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-plus, LIBERO üzerine inşa edilmiş, Vision-Language-Action (VLA) modelleri için bir sağlamlık kriteri (robustness benchmark) olarak tasarlanmıştır. Orijinal LIBERO görev setine yedi bağımsız bozma boyutu uygulayarak politikaları sistematik olarak zorlar ve standart kriterlerin gözden kaçırdığı başarısızlık modlarını ortaya çıkarır.

An overview of the LIBERO-plus benchmark perturbation dimensions

Pertürbasyon boyutları

LIBERO-plus, her orijinal LIBERO görevini bu eksenler boyunca değiştirerek ~10 000 görev varyantı oluşturur:

BoyutDeğişiklikler
Nesneler düzeniHedef konum, karıştırıcı nesnelerin varlığı
Kamera bakış açılarıKamera konumu, yönelimi, görüş alanı
Robot başlangıç durumlarıManipülatör başlangıç pozisyonu
Dil talimatlarıLLM tarafından yeniden yazılmış görev açıklaması (parafraz / eş anlamlı)
Işık koşullarıYoğunluk, yön, renk, gölge
Arka plan dokularıSahne yüzeyi ve nesne görünümü
Sensör gürültüsüFotometrik bozulmalar ve görüntü bozulması

Kullanılabilir görev paketleri

LIBERO-plus, Spatial, Object, Goal ve Long setlerindeki 40 orijinal görevi değiştirir. Bu dört sette kayıtlı her görev, orijinal görevlerden biri yerine değiştirilmiş bir varyanttır. Fork, LIBERO-90'daki 90 değiştirilmemiş görevi de korur.

SuiteCLI adıOrijinal görevlerKayıtlı görevlerMaksimum adımAçıklama
LIBERO-Spatiallibero_spatial102,402280Uzamsal ilişkiler hakkında akıl yürütme gerektiren görevler
LIBERO-Objectlibero_object102,518280Farklı nesneleri manipüle etmeye odaklanan görevler
LIBERO-Goallibero_goal102,591300Hedefleri değişen hedef koşullu görevler
LIBERO-90libero_909090400Rahatsız edilmemiş kısa ufuklu LIBERO görevleri
LIBERO-Longlibero_10102,519520LIBERO-100 koleksiyonundan uzun vadeli görevler

Bu sayılar, görev kayıt defterinin (upstream) kaynağından gelir. Bozulmuş dört test seti toplamda 10.030 görev varyantı içerir; LIBERO-90 bu toplamda yer almaz. Sayılar ve görev dizinleri, yüklü olan fork revizyonuna bağlıdır.

Installing LIBERO-plus **replaces** vanilla LIBERO — it uninstalls `hf-libero` so that `import libero` resolves to the LIBERO-plus fork. You cannot have both installed at the same time. To switch back to vanilla LIBERO, uninstall the fork and reinstall with `pip install -e ".[libero]"`.

Kurulum

Sistem bağımlılıkları (yalnızca Linux)

sudo apt install libexpat1 libfontconfig1-dev libmagickwand-dev

Python paketi

pip install -e ".[libero]" "robosuite==1.4.1" bddl easydict mujoco wand scikit-image gym
git clone https://github.com/sylvestf/LIBERO-plus.git
cd LIBERO-plus && pip install --no-deps -e .
pip uninstall -y hf-libero  # so `import libero` resolves to the fork

LIBERO-plus, pyproject extra olarak değil, GitHub fork'undan kurulur — fork, pip'in işleyemeyeceği bir namespace paketi olarak dağıtıldığından, klonlanıp PYTHONPATH'e eklenmelidir. Kanonik kurulum için docker/Dockerfile.sim'deki libero_plus_native aşamasına bakın. MuJoCo gereklidir, bu nedenle yalnızca Linux desteklenir.

Set the MuJoCo rendering backend before running evaluation:
export MUJOCO_GL=egl   # headless / HPC / cloud

LIBERO-plus varlıklarını indirin

LIBERO-plus, genişletilmiş varlık paketini ayrı olarak sunar. assets.zip dosyasını Hugging Face veri setinden indirin ve LIBERO-plus paket dizinine çıkarın:

# After installing the package, find where it was installed:
python -c "import libero; print(libero.__file__)"
# Then extract assets.zip into <package_root>/libero/assets/

Değerlendirme

Varsayılan yerel değerlendirme

upstream evaluation guide'de önerildiği gibi, her varyant için bir episode kullanarak, dört bozulmuş suite üzerinde kayıtlı her varyantı değerlendirin:

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

Bu, yukarıdaki kayıt defteri için 10.030 bölüm çalıştırır. --eval.n_episodes=10 ile aynı komut, 400 değil, 100.300 bölüm çalıştırır.

Duman testi

Tam bir değerlendirme başlatmadan önce, kurulumunuzu bir kayıtlı varyant ve bir bölümle kontrol edin:

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero_plus \
  --env.task=libero_spatial \
  --env.task_ids='[0]' \
  --eval.batch_size=1 \
  --eval.n_episodes=1

Bu bir kurulum kontrolüdür, temsil edici bir dayanıklılık değerlendirmesi değildir.

Tekli paket değerlendirmesi

Bir LIBERO-plus süitinde değerlendirin:

lerobot-eval \
  --policy.path="your-policy-id" \
  --env.type=libero_plus \
  --env.task=libero_spatial \
  --eval.batch_size=1 \
  --eval.n_episodes=1
  • --env.task, test setini seçer (libero_spatial, libero_object vb.).
  • --env.task_ids, dört bozulmuş test setindeki varyantları tanımlayan kayıtlı görev indekslerini ([0], [1,2,3] vb.) kısıtlar. Tüm kayıtlı görevleri çalıştırmak için bu parametreyi atlayın. Birden fazla test seti değerlendirildiğinde, aynı indeks listesi her test setine bağımsız olarak uygulanır.
  • --eval.batch_size, paralel olarak çalışan ortam sayısını kontrol eder.
  • --eval.n_episodes, kayıtlı her görev için kaç bölümün çalıştırılacağını belirler. Bu değeri artırmak, seçilen varyantların değerlendirilmesini tekrarlar; ek, farklı varyantlar seçmez.

Ç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_plus \
  --env.task=libero_spatial,libero_object \
  --eval.batch_size=1 \
  --eval.n_episodes=1

Kontrol modu

LIBERO-plus 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

Eylemler:

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

Değerlendirme iş yükü ve tekrarlanabilirlik

Değerlendirme bölümlerinin toplam sayısı tüm paketler boyunca seçilen kayıtlı görevlerin sayısı × --eval.n_episodes'dir. Örneğin, her biri birer bölüm olan tüm Spatial varyantları 2.402 bölüm verir; Spatial ve Object'te --env.task_ids='[0,1,2]' seçilip her biri birer bölüm olarak ayarlandığında altı bölüm elde edilir.

400 bölüm hesabı (40 orijinal görev × 10 bölüm), tam bir LIBERO-plus değerlendirmesi için değil, sade LIBERO için geçerlidir. LIBERO-plus için, kayıtlı her varyant için bir bölümle başlayın. Bir varyantın tekrarlanan bölümleri, orijinal bir görevin farklı varyantlarından örneklemeye eşdeğer değildir.

Özel bir alt küme için, bozma kategorilerini ve zorluk seviyelerini belirlemek üzere fork’un task classification görevini kullanın. Her orijinal görevin her bozma kategorisinde on farklı varyanta sahip olduğunu varsaymayın. Sonuçları raporlarken fork revizyonunu, seçilen suite adlarını ve görev indekslerini, varyant başına bölüm sayısını, seed değerini ve sıfırlama ayarlarını kaydedin. Yayınlanmış sonuçlarla karşılaştırma yaparken, keyfi bir alt kümenin eşdeğer olduğunu varsaymak yerine benchmark’un örneklem alma ve birleştirme protokolünü izleyin.

Eğitim

Veri seti

LIBERO-plus için LeRobot formatında bir eğitim veri seti şu adreste mevcuttur:

Örnek eğitim komutu

lerobot-train \
    --policy.type=smolvla \
    --policy.repo_id=${HF_USER}/smolvla_libero_plus \
    --policy.load_vlm_weights=true \
    --dataset.repo_id=lerobot/libero_plus \
    --env.type=libero_plus \
    --env.task=libero_spatial \
    --output_dir=./outputs/ \
    --steps=100000 \
    --batch_size=4 \
    --eval.batch_size=1 \
    --eval.n_episodes=1 \
    --env_eval_freq=1000

LIBERO ile İlişki

LIBERO-plus, LIBERO'nun doğrudan kullanılabilir bir uzantısıdır:

  • Aynı Python gym arayüzü (LiberoEnv) ve kanonik gözlemler
  • Aynı kamera adları ve gözlem/aksiyon biçimi
  • Aynı görev paketi adları
  • Aynı libero Python paketi adı altında kurulur (farklı bir GitHub deposu)

Orijinal LIBERO benchmark'ını kullanmak için LIBERO'ya bakın ve --env.type=libero kullanın.

Update on GitHub