feat(envs): add LIBERO-plus robustness benchmark#3313
Open
pkooij wants to merge 1 commit intofeat/benchmark-cifrom
Open
feat(envs): add LIBERO-plus robustness benchmark#3313pkooij wants to merge 1 commit intofeat/benchmark-cifrom
pkooij wants to merge 1 commit intofeat/benchmark-cifrom
Conversation
35f18d4 to
566a77b
Compare
3f678a5 to
cdd540d
Compare
- Add import fallback in libero.py for LIBERO-plus nested package structure
(github.com/sylvestf/LIBERO-plus installs under a deeper module path than
the original hf-libero wheel)
- Register LiberoPlusEnv config subclass (inherits LiberoEnv fully; only
the env type name and default suite differ)
- Add libero_plus optional dep group in pyproject.toml pointing to the
LIBERO-plus GitHub repo
- Add docs/source/libero_plus.mdx with install guide, task suite table,
perturbation dimensions, eval commands, and dataset reference
- Add docker/Dockerfile.benchmark.libero_plus for isolated CI image
- Add libero-plus-integration-test CI job to benchmark_tests.yml
Dataset: pepijn223/libero_plus_lerobot is already v3.0 (no conversion needed).
Dataset card is missing and should be added separately on the Hub.
Eval smoke-test (requires Linux + GPU):
lerobot-eval \
--policy.path=pepijn223/smolvla_libero \
--env.type=libero_plus \
--env.task=libero_spatial \
--eval.batch_size=1 --eval.n_episodes=1 \
--eval.use_async_envs=false --policy.device=cuda \
'--env.camera_name_mapping={"agentview_image":"camera1","robot0_eye_in_hand_image":"camera2"}' \
--policy.empty_cameras=1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
cdd540d to
39bb3a3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Title
feat(envs): add LIBERO-plus robustness benchmark
Type / Scope
src/lerobot/envs/,pyproject.toml,docker/,docs/Summary / Motivation
LIBERO-plus is a robustness benchmark for VLA models that extends LIBERO with 7 perturbation dimensions (camera viewpoints, object layouts, robot initial states, language instructions, lighting, background textures, sensor noise), producing ~10 000 task variants across the standard LIBERO suites.
Because LIBERO-plus keeps the same Python gym interface as the original LIBERO, the integration is minimal: a one-line config subclass, an import fallback for the different package nesting, and a new pip extras group.
Related issues
feat/async-vector-env)What changed
src/lerobot/envs/libero.py— wraps the top-level LIBERO imports intry/exceptto handle the extra module nesting level that LIBERO-plus ships withsrc/lerobot/envs/configs.py— addsLiberoPlusEnvconfig (@EnvConfig.register_subclass("libero_plus")), a thin subclass ofLiberoEnvwithtask="libero_spatial"as default; fully inheritscreate_envsandget_env_processorspyproject.toml— addslibero_plusoptional dep group and includes it inalldocs/source/libero_plus.mdx— new benchmark doc: perturbation dimensions, task suites, install instructions, eval commands, camera name mapping, dataset referencedocs/source/_toctree.yml— registers new doc pagedocker/Dockerfile.benchmark.libero_plus— isolated CI image (addslibexpat1 libfontconfig1-dev libmagickwand-devsystem deps required by LIBERO-plus).github/workflows/benchmark_tests.yml— addslibero-plus-integration-testjob (build image + 1-episode smoke eval onaws-g6-4xlarge-plus)No breaking changes.
env.type=liberocontinues to work unchanged.Dataset note
pepijn223/libero_plus_lerobotis already LeRobot v3.0 format — no conversion needed.Dataset card (README) is missing on the Hub and should be added in a follow-up.
Camera keys:
observation.images.front/observation.images.wrist.How was this tested (or how to run locally)
pre-commit run -apasses on all changed fileslerobot-eval \ --policy.path=pepijn223/smolvla_libero \ --env.type=libero_plus \ --env.task=libero_spatial \ --eval.batch_size=1 --eval.n_episodes=1 \ --eval.use_async_envs=false --policy.device=cuda \ '--env.camera_name_mapping={"agentview_image": "camera1", "robot0_eye_in_hand_image": "camera2"}' \ --policy.empty_cameras=1aws-g6-4xlarge-plus.Checklist (required before merge)
pre-commit run -a)pytest) — LIBERO-plus requires Linux, validated via CIdocs/source/libero_plus.mdx)Reviewer notes
libero.pyis the only change touching existing code paths. Thetrybranch runs forhf-libero; theexceptbranch for LIBERO-plus. Transparent to callers.LiberoPlusEnvis intentionally a minimal subclass — no duplicated logic.uv sync --extra libero_plus --no-cache(no--locked) because the GitHub-sourced package is not inuv.lock. Pin a commit SHA in the dep once LIBERO-plus stabilizes.