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는 LIBERO를 기반으로 구축된 Vision-Language-Action(VLA) 모델용 견고성 벤치마크입니다. 원래의 LIBERO 작업 세트에 7개의 독립적인 교란 차원을 적용하여 정책을 체계적으로 스트레스 테스트함으로써, 표준 벤치마크에서 놓치는 실패 모드를 드러냅니다.

An overview of the LIBERO-plus benchmark perturbation dimensions

교란 차원

LIBERO-plus는 다음 축을 따라 각 원본 LIBERO 작업을 변형하여 약 10,000개의 작업 변형을 생성합니다:

차원변경 사항
Objects 레이아웃대상 위치, 혼동 유발 객체의 존재
카메라 시점카메라 위치, 방향, 시야각
로봇 초기 상태조작기 시작 자세
언어 지침LLM이 다시 작성한 작업 설명(패러프레이즈/동의어)
조명 조건강도, 방향, 색상, 그림자
배경 텍스처장면 표면 및 객체 외관
센서 노이즈광도 왜곡 및 이미지 열화

사용 가능한 작업 스위트

LIBERO-plus는 Spatial, Object, Goal, Long 스위트의 40개 원본 작업을 변형합니다. 이 네 스위트에 등록된 각 작업은 원본 작업이 아닌 변형된 변형체입니다. 포크는 또한 LIBERO-90의 90개 미변형 작업을 유지합니다.

SuiteCLI 이름원래 작업등록된 작업최대 스텝설명
LIBERO-Spatiallibero_spatial102,402280공간적 관계에 대한 추론이 필요한 작업
LIBERO-Objectlibero_object102,518280Tasks centered on manipulating different objects
LIBERO-Goallibero_goal102,591300목표가 변경되는 목표 조건부 작업
LIBERO-90libero_909090400교란되지 않은 단기 LIBERO 작업
LIBERO-Longlibero_10102,519520LIBERO-100 컬렉션의 장기 지평 작업

이 카운트는 업스트림 task registry에서 가져온 것입니다. 4개의 변형 스위트에는 총 10,030개의 task variants가 포함되어 있으며, LIBERO-90은 해당 총계에 포함되지 않습니다. 카운트와 task indices는 설치된 fork revision에 따라 달라집니다.

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

설치

시스템 종속성 (Linux 전용)

sudo apt install libexpat1 libfontconfig1-dev libmagickwand-dev

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는 pyproject extra가 아닌 GitHub fork에서 설치됩니다. fork는 pip가 처리할 수 없는 namespace package로 제공되므로, 클론을 받아 PYTHONPATH에 추가해야 합니다. 공식 설치 방법은 docker/Dockerfile.sim의 libero_plus_native 스테이지를 참고하세요. MuJoCo가 필요하므로 Linux만 지원됩니다.

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

LIBERO-plus 자산 다운로드

LIBERO-plus는 확장된 에셋 팩을 별도로 제공합니다. Hugging Face 데이터셋에서 assets.zip을 다운로드한 후 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/

평가

기본 로컬 평가

upstream evaluation guide의 권장 사항에 따라 변형당 1에피소드를 사용하여 4개의 교란된 스위트에서 모든 등록된 변형을 평가합니다:

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

이 명령은 위의 레지스트리에 대해 10,030개의 에피소드를 실행합니다. --eval.n_episodes=10을 사용하면 동일한 명령이 400개가 아닌 100,300개의 에피소드를 실행합니다.

스모크 테스트

전체 평가를 시작하기 전에, 등록된 변형(variant) 하나와 에피소드 하나를 사용하여 설정을 확인하세요:

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

이것은 설정 확인이며, 대표적 견고성 평가가 아닙니다.

단일 스위트 평가

하나의 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는 스위트(libero_spatial, libero_object 등)를 선택합니다.
  • --env.task_ids는 네 가지 변형된 스위트 내의 변형을 식별하는 등록된 작업 인덱스([0], [1,2,3] 등)로 범위를 제한합니다. 모든 등록된 작업을 실행하려면 생략하십시오. 여러 스위트를 평가할 경우, 동일한 인덱스 목록이 각 스위트에 독립적으로 적용됩니다.
  • --eval.batch_size는 병렬로 실행되는 환경의 수를 제어합니다.
  • --eval.n_episodes는 등록된 각 태스크당 실행할 에피소드 수를 설정합니다. 이 값을 늘리면 선택된 변형에 대한 평가가 반복되지만, 추가적인 개별 변형을 선택하는 것은 아닙니다.

멀티 스위트 평가

쉼표로 구분된 목록을 전달하여 여러 suite에 대해 정책을 한 번에 벤치마크할 수 있습니다:

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

제어 모드

LIBERO-plus는 두 가지 제어 모드를 지원합니다 — relative(기본값)와 absolute. 서로 다른 VLA 체크포인트는 서로 다른 액션 파라미터화로 학습되므로, 해당 모드와 정책이 일치하는지 확인하세요:

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

성능 재설정

기본적으로 LeRobot은 LIBERO의 하드 리셋 동작을 유지합니다. 고정된 초기 상태가 활성화된 경우, 에피소드마다 시뮬레이터 모델과 렌더러를 다시 구축하는 것을 건너뛰기 위해 소프트 리셋을 선택할 수 있습니다:

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

Soft reset는 더 빠르지만, 환경의 settling 단계 이후에는 hard reset과 bit-identical하지 않으므로 카메라 관측값과 정책 결과가 약간 다를 수 있습니다. 벤치마크 결과를 재현할 때는 hard reset을 사용하세요.

정책 입력 및 출력

관찰 사항:

  • observation.state — 8차원 고유감각 특징(eef 위치, 축-각도 방향, 그리퍼 qpos)
  • observation.images.image — 메인 카메라 뷰 (agentview_image), HWC uint8
  • observation.images.image2 — 손목 카메라 뷰 (robot0_eye_in_hand_image), HWC uint8

작업:

  • Box(-1, 1, shape=(7,))에서의 연속 제어 — 6D 엔드 이펙터 델타 + 1D 그리퍼

평가 워크로드 및 재현 가능성

평가 에피소드의 총 개수는 모든 스위트에 걸쳐 선택된 등록된 작업의 수 × --eval.n_episodes입니다. 예를 들어, 각 에피소드가 하나인 모든 Spatial 변형을 선택하면 2,402개의 에피소드가 생성되며, Spatial과 Object에서 --env.task_ids='[0,1,2]'를 선택하고 각 에피소드를 하나씩 설정하면 6개의 에피소드가 생성됩니다.

400에피소드 계산(40개 원본 태스크 × 10에피소드)은 vanilla LIBERO에 적용되며, 전체 LIBERO-plus 평가에는 해당하지 않습니다. LIBERO-plus의 경우, 등록된 각 변형(variant)당 1에피소드로 시작하는 것이 좋습니다. 특정 변형의 반복 에피소드는 원본 태스크의 서로 다른 변형을 샘플링하는 것과 동등하지 않습니다.

커스텀 서브셋의 경우, 포크의 task classification을 사용하여 교란 카테고리 및 난이도 수준을 식별하세요. 모든 원본 태스크가 모든 교란 카테고리에서 10개의 서로 다른 변형을 가지고 있다고 가정하지 마세요. 결과를 보고할 때 포크 리비전, 선택한 스위트 이름 및 태스크 인덱스, 변형당 에피소드 수, 시드, 리셋 설정을 기록하세요. 공개된 결과와 비교하려면 임의의 서브셋을 동등한 것으로 취급하기보다 벤치마크의 샘플링 및 집계 프로토콜을 따르세요.

학습

데이터셋

LIBERO-plus용 LeRobot 형식 학습 데이터셋은 다음에서 사용할 수 있습니다:

예시 학습 명령

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와의 관계

LIBERO-plus는 LIBERO의 드롭인 확장입니다:

  • 동일한 Python gym 인터페이스(LiberoEnv)와 표준 관측
  • 동일한 카메라 이름 및 관찰/동작 형식
  • 동일한 작업 스위트 이름
  • 다른 GitHub 저장소이지만 동일한 libero Python 패키지 이름으로 설치됩니다

원본 LIBERO 벤치마크를 사용하려면 LIBERO를 참고하고 --env.type=libero를 사용하세요.

Update on GitHub