LeRobot documentation
LIBERO-plus
LIBERO-plus
LIBERO-plus là một benchmark đánh giá độ bền vững cho các mô hình Vision-Language-Action (VLA) được xây dựng dựa trên LIBERO. Nó kiểm tra áp lực có hệ thống các chính sách bằng cách áp dụng bảy chiều nhiễu độc lập lên bộ tác vụ LIBERO gốc, phơi bày các chế độ thất bại mà các benchmark tiêu chuẩn bỏ sót.
- Bài báo: Phân tích độ bền chi tiết của các mô hình Thị giác-Ngôn ngữ-Hành động
- GitHub: sylvestf/LIBERO-plus
- Bộ dữ liệu: lerobot/libero_plus

Các chiều nhiễu
LIBERO-plus tạo ra ~10 000 biến thể tác vụ bằng cách nhiễu loạn mỗi tác vụ LIBERO gốc dọc theo các trục sau:
| Kích thước | Những thay đổi |
|---|---|
| Bố cục các đối tượng | Vị trí mục tiêu, sự hiện diện của các vật thể gây nhiễu |
| Góc nhìn của camera | Vị trí, hướng, trường nhìn của camera |
| Trạng thái ban đầu của robot | Tư thế bắt đầu của cơ cấu chấp hành |
| Hướng dẫn ngôn ngữ | Mô tả nhiệm vụ được viết lại bởi LLM (diễn đạt lại / từ đồng nghĩa) |
| Điều kiện ánh sáng | Cường độ, hướng, màu sắc, bóng đổ |
| Kết cấu nền | Bề mặt cảnh và ngoại quan của đối tượng |
| Nhiễu cảm biến | Biến dạng quang trắc và suy giảm hình ảnh |
Các bộ nhiệm vụ có sẵn
LIBERO-plus gây nhiễu cho 40 tác vụ gốc trong các bộ Spatial, Object, Goal và Long. Mỗi tác vụ được đăng ký trong bốn bộ này là một biến thể gây nhiễu, thay vì một trong các tác vụ gốc. Bản fork cũng giữ lại 90 tác vụ không gây nhiễu trong LIBERO-90.
| Bộ | Tên CLI | Các tác vụ ban đầu | Các tác vụ đã đăng ký | Số bước tối đa | Mô tả |
|---|---|---|---|---|---|
| LIBERO-Spatial | libero_spatial | 10 | 2,402 | 280 | Các tác vụ đòi hỏi suy luận về các quan hệ không gian |
| LIBERO-Object | libero_object | 10 | 2,518 | 280 | Các tác vụ tập trung vào việc thao tác với các đối tượng khác nhau |
| LIBERO-Goal | libero_goal | 10 | 2,591 | 300 | Các tác vụ có điều kiện theo mục tiêu với các mục tiêu thay đổi |
| LIBERO-90 | libero_90 | 90 | 90 | 400 | Các tác vụ LIBERO tầm ngắn không bị nhiễu |
| LIBERO-Long | libero_10 | 10 | 2,519 | 520 | Các tác vụ dài hạn từ bộ sưu tập LIBERO-100 |
Các số lượng này đến từ đăng ký tác vụ nguồn gốc. Bốn bộ bài toán bị nhiễu chứa tổng cộng 10.030 biến thể tác vụ; LIBERO-90 không được tính vào tổng số đó. Số lượng và chỉ số tác vụ phụ thuộc vào phiên bản fork đã cài đặt.
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]"`.
Cài đặt
Phụ thuộc hệ thống (chỉ dành cho Linux)
sudo apt install libexpat1 libfontconfig1-dev libmagickwand-devGói 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 forkLIBERO-plus được cài đặt từ bản fork trên GitHub thay vì từ một extra của pyproject — bản fork được phát hành dưới dạng namespace package mà pip không thể xử lý, do đó phải clone và thêm vào PYTHONPATH. Xem docker/Dockerfile.benchmark.libero_plus để biết cách cài đặt chuẩn. MuJoCo là bắt buộc, vì vậy chỉ hỗ trợ Linux.
Set the MuJoCo rendering backend before running evaluation:export MUJOCO_GL=egl # headless / HPC / cloud
Tải tài sản LIBERO-plus
LIBERO-plus phát hành gói tài nguyên mở rộng riêng biệt. Tải xuống assets.zip từ dataset Hugging Face và giải nén vào thư mục gói 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/Đánh giá
Đánh giá mặc định (khuyến nghị)
Đánh giá mọi biến thể đã đăng ký trên bốn bộ dữ liệu nhiễu, sử dụng một tập (episode) cho mỗi biến thể như được khuyến nghị trong hướng dẫn đánh giá 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Điều này chạy 10.030 episode cho registry ở trên. Với --eval.n_episodes=10, cùng lệnh đó chạy 100.300 episode, không phải 400.
Kiểm thử nhanh
Trước khi chạy đánh giá đầy đủ, hãy kiểm tra cấu hình của bạn với một biến thể đã đăng ký và một tập:
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Đây là kiểm tra cài đặt, không phải đánh giá độ bền đại diện.
Đánh giá bộ duy nhất
Đánh giá trên một bộ 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.taskchọn bộ bài tập (libero_spatial,libero_object, v.v.).--env.task_idsgiới hạn theo các chỉ số tác vụ đã đăng ký ([0],[1,2,3], v.v.), dùng để xác định các biến thể trong bốn bộ bài kiểm tra đã nhiễu. Bỏ qua tham số này để chạy tất cả các tác vụ đã đăng ký. Khi đánh giá nhiều bộ bài kiểm tra, cùng một danh sách chỉ số sẽ được áp dụng độc lập cho từng bộ.--eval.batch_sizekiểm soát số lượng môi trường chạy song song.--eval.n_episodesxác định số lượng episode cần chạy cho mỗi task đã đăng ký. Việc tăng giá trị này sẽ lặp lại quá trình đánh giá các biến thể đã chọn; nó không chọn thêm các biến thể khác biệt.
Đánh giá đa bộ
Đánh giá hiệu năng của một chính sách trên nhiều bộ bài kiểm tra cùng lúc bằng cách truyền vào một danh sách phân tách bằng dấu phẩy:
lerobot-eval \
--policy.path="your-policy-id" \
--env.type=libero_plus \
--env.task=libero_spatial,libero_object \
--eval.batch_size=1 \
--eval.n_episodes=1Chế độ điều khiển
LIBERO-plus hỗ trợ hai chế độ điều khiển — relative (mặc định) và absolute. Các checkpoint VLA khác nhau được huấn luyện với các tham số hóa hành động khác nhau, vì vậy hãy đảm bảo chế độ khớp với chính sách của bạn:
--env.control_mode=relative # or "absolute"Đặt lại hiệu suất
Mặc định, LeRobot giữ nguyên hành vi hard-reset của LIBERO. Khi đã bật các trạng thái ban đầu cố định, bạn có thể chọn dùng soft reset để bỏ qua việc xây dựng lại mô hình mô phỏng và trình render ở mỗi episode:
--env.init_states=true --env.hard_reset=falseSoft resets nhanh hơn nhưng không giống hệt bit với hard resets sau các bước ổn định của môi trường, do đó quan sát từ camera và kết quả chính sách có thể khác nhau đôi chút. Hãy dùng hard resets khi tái tạo kết quả benchmark.
Đầu vào và đầu ra của Policy
Quan sát:
observation.state— 8 chiều đặc trưng cảm nhận bản thân (vị trí eef, hướng axis-angle, qpos của kẹp)observation.images.image— góc nhìn từ camera chính (agentview_image), HWC uint8observation.images.image2— góc nhìn camera cổ tay (robot0_eye_in_hand_image), HWC uint8
Thao tác:
- Điều khiển liên tục trong
Box(-1, 1, shape=(7,))— delta của đầu cuối 6D + kẹp 1D
Tải công việc đánh giá và khả năng tái lập
Tổng số tập đánh giá là số lượng tác vụ đã đăng ký được chọn trên tất cả các bộ bài × --eval.n_episodes. Ví dụ, tất cả các biến thể Spatial với mỗi tập một episode cho ra 2.402 tập; việc chọn --env.task_ids='[0,1,2]' trong Spatial và Object với mỗi tập một episode cho ra sáu tập.
Việc tính toán 400 tập (40 tác vụ gốc × 10 tập) áp dụng cho LIBERO thông thường, không phải cho một đánh giá LIBERO-plus đầy đủ. Đối với LIBERO-plus, hãy bắt đầu với một tập cho mỗi biến thể đã đăng ký. Các tập lặp lại của một biến thể không tương đương với việc lấy mẫu các biến thể khác nhau của một tác vụ gốc.
Đối với một tập con tùy chỉnh, hãy sử dụng phân loại tác vụ của bản fork để xác định các danh mục nhiễu và mức độ khó. Không nên giả định rằng mọi tác vụ gốc đều có mười biến thể riêng biệt trong mọi danh mục nhiễu. Khi báo cáo kết quả, hãy ghi lại phiên bản fork, tên các bộ bài kiểm tra đã chọn và chỉ số tác vụ, số tập (episodes) cho mỗi biến thể, hạt ngẫu nhiên (seed) và các cài đặt đặt lại (reset). Để so sánh với các kết quả đã công bố, hãy tuân theo giao thức lấy mẫu và tổng hợp của bộ chuẩn (benchmark) thay vì coi một tập con tùy ý là tương đương.
Huấn luyện
Bộ dữ liệu
Bộ dữ liệu huấn luyện định dạng LeRobot cho LIBERO-plus có sẵn tại:
Lệnh huấn luyện mẫu
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=1000Mối quan hệ với LIBERO
LIBERO-plus là một phần mở rộng thay thế trực tiếp của LIBERO:
- Giao diện Python gym tương tự (
LiberoEnv,LiberoProcessorStep) - Cùng tên camera và định dạng quan sát/hành động
- Cùng tên bộ nhiệm vụ
- Được cài đặt dưới cùng tên gói Python
libero(kho GitHub khác)
Để sử dụng bộ chuẩn LIBERO gốc, hãy xem LIBERO và sử dụng --env.type=libero.