LeRobot documentation

LIBERO-plus

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 adalah benchmark ketangguhan untuk model Vision-Language-Action (VLA) yang dibangun di atas LIBERO. Benchmark ini secara sistematis menguji kebijakan (policies) dengan menerapkan tujuh dimensi perturbasi independen pada set tugas LIBERO asli, sehingga mengungkap mode kegagalan yang terlewat oleh benchmark standar.

An overview of the LIBERO-plus benchmark perturbation dimensions

Dimensi perturbasi

LIBERO-plus membuat ~10 000 varian tugas dengan mengganggu setiap tugas LIBERO asli di sepanjang sumbu-sumbu berikut:

DimensiApa yang berubah
Tata letak objekPosisi target, keberadaan objek pengganggu
Sudut pandang kameraPosisi, orientasi, dan bidang pandang kamera
Kondisi awal robotPose awal manipulator
Instruksi bahasaDeskripsi tugas yang ditulis ulang oleh LLM (parafrase / sinonim)
Kondisi pencahayaanIntensitas, arah, warna, bayangan
Tekstur latar belakangPermukaan adegan dan penampakan objek
Derau sensorDistorsi fotometrik dan degradasi gambar

Kumpulan tugas yang tersedia

LIBERO-plus mengganggu 40 tugas asli dalam suite Spatial, Object, Goal, dan Long. Setiap tugas yang terdaftar dalam keempat suite ini adalah varian yang terganggu, bukan salah satu dari tugas aslinya. Fork ini juga mempertahankan 90 tugas yang tidak terganggu dalam LIBERO-90.

SuiteNama CLITugas asliTugas terdaftarLangkah maksimumDeskripsi
LIBERO-Spatiallibero_spatial102,402280Tugas yang memerlukan penalaran tentang relasi spasial
LIBERO-Objectlibero_object102,518280Tugas yang berfokus pada manipulasi berbagai objek
LIBERO-Goallibero_goal102,591300Tugas dengan kondisi tujuan yang memiliki target berubah
LIBERO-90libero_909090400Tugas LIBERO jangka pendek yang tidak terganggu
LIBERO-Longlibero_10102,519520Tugas jangka panjang dari koleksi LIBERO-100

Jumlah ini berasal dari task registry upstream. Keempat suite yang terganggu berisi total 10.030 varian task; LIBERO-90 tidak termasuk dalam jumlah tersebut. Jumlah dan indeks task bergantung pada revisi fork yang terinstal.

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]"`.

Instalasi

Dependensi sistem (hanya Linux)

sudo apt install libexpat1 libfontconfig1-dev libmagickwand-dev

Paket Python

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 diinstal dari fork GitHub-nya, bukan dari extra pyproject — fork ini dikirim sebagai namespace package yang tidak dapat ditangani oleh pip, sehingga harus dikloning dan ditambahkan ke PYTHONPATH. Lihat tahap libero_plus_native di docker/Dockerfile.sim untuk instalasi yang resmi. MuJoCo diperlukan, sehingga hanya Linux yang didukung.

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

Unduh aset LIBERO-plus

LIBERO-plus menyertakan paket aset yang diperluasnya secara terpisah. Unduh assets.zip dari dataset Hugging Face dan ekstrak ke direktori paket LIBERO-plus:

# 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/

Evaluasi

Evaluasi lokal bawaan

Evaluasi setiap varian yang terdaftar di keempat suite yang telah diperturbasi, menggunakan satu episode per varian seperti yang direkomendasikan oleh panduan evaluasi upstream:

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

Ini menjalankan 10.030 episode untuk registry di atas. Dengan --eval.n_episodes=10, perintah yang sama menjalankan 100.300 episode, bukan 400.

Uji asap

Sebelum meluncurkan evaluasi penuh, periksa pengaturan Anda dengan satu varian terdaftar dan satu episode:

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

Ini adalah pemeriksaan konfigurasi, bukan evaluasi ketangguhan yang representatif.

Evaluasi satu suite

Evaluasi pada satu suite LIBERO-plus:

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 memilih suite (libero_spatial, libero_object, dll.).
  • --env.task_ids membatasi pada indeks tugas yang terdaftar ([0], [1,2,3], dll.), yang mengidentifikasi varian dalam empat suite yang terganggu. Abaikan untuk menjalankan semua tugas yang terdaftar. Saat mengevaluasi beberapa suite, daftar indeks yang sama diterapkan secara independen ke setiap suite.
  • --eval.batch_size mengontrol berapa banyak lingkungan yang berjalan secara paralel.
  • --eval.n_episodes mengatur jumlah episode yang dijalankan untuk setiap tugas yang terdaftar. Meningkatkannya akan mengulang evaluasi dari varian yang dipilih; hal ini tidak memilih varian berbeda tambahan.

Evaluasi multi-suite

Bandingkan kinerja kebijakan di beberapa suite sekaligus dengan meneruskan daftar yang dipisahkan koma:

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

Mode kontrol

LIBERO-plus mendukung dua mode kontrol — relative (default) dan absolute. Berbagai checkpoint VLA dilatih dengan parameterisasi aksi yang berbeda, jadi pastikan mode tersebut sesuai dengan kebijakan Anda:

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

Atur ulang kinerja

Secara default, LeRobot mempertahankan perilaku hard-reset dari LIBERO. Dengan keadaan awal tetap yang diaktifkan, Anda dapat memilih untuk menggunakan soft reset agar tidak perlu membangun ulang model simulator dan renderer di setiap episode:

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

Soft reset lebih cepat tetapi tidak identik secara bit dengan hard reset setelah langkah-langkah penstabilan lingkungan, sehingga pengamatan kamera dan hasil kebijakan mungkin sedikit berbeda. Gunakan hard reset saat mereproduksi hasil benchmark.

Input dan output kebijakan

Observasi:

  • observation.state — fitur proprioseptif 8-dimensi (posisi eef, orientasi axis-angle, qpos gripper)
  • observation.images.image — tampilan kamera utama (agentview_image), HWC uint8
  • observation.images.image2 — tampilan kamera pergelangan tangan (robot0_eye_in_hand_image), HWC uint8

Aksi:

  • Kontrol kontinu dalam Box(-1, 1, shape=(7,)) — delta ujung-efektor 6D + gripper 1D

Beban kerja evaluasi dan reproduktibilitas

Jumlah total episode evaluasi adalah jumlah tugas terdaftar yang dipilih di semua suite × --eval.n_episodes. Sebagai contoh, semua varian Spatial dengan satu episode masing-masing menghasilkan 2.402 episode; memilih --env.task_ids='[0,1,2]' di Spatial dan Object dengan satu episode masing-masing menghasilkan enam episode.

Perhitungan 400 episode (40 tugas asli × 10 episode) berlaku untuk LIBERO vanilla, bukan evaluasi LIBERO-plus penuh. Untuk LIBERO-plus, mulailah dengan satu episode per varian yang terdaftar. Episode berulang dari suatu varian tidak setara dengan pengambilan sampel varian yang berbeda dari tugas asli.

Untuk subset kustom, gunakan task classification dari fork untuk mengidentifikasi kategori perturbasi dan tingkat kesulitan. Jangan berasumsi bahwa setiap tugas asli memiliki sepuluh varian yang berbeda di setiap kategori perturbasi. Catat revisi fork, nama suite yang dipilih dan indeks tugas, episode per varian, seed, serta pengaturan reset saat melaporkan hasil. Untuk membandingkan dengan hasil yang telah dipublikasikan, ikuti protokol sampling dan agregasi benchmark, bukan menganggap subset arbitrer sebagai ekuivalen.

Pelatihan

Dataset

Dataset pelatihan dalam format LeRobot untuk LIBERO-plus tersedia di:

Perintah pelatihan contoh

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

Hubungan dengan LIBERO

LIBERO-plus adalah ekstensi drop-in dari LIBERO:

  • Antarmuka gym Python yang sama (LiberoEnv) dan observasi kanonik
  • Nama kamera dan format observasi/aksi yang sama
  • Nama suite tugas yang sama
  • Diinstal di bawah nama paket Python libero yang sama (repo GitHub berbeda)

Untuk menggunakan benchmark LIBERO asli, lihat LIBERO dan gunakan --env.type=libero.

Update on GitHub