LIBERO Evaluation
July 6, 2026 · View on GitHub
Evaluate InternVLA-A1.5 policies on the LIBERO benchmark via a websocket policy server and a LIBERO client that drives the simulator.
Table of Contents
Installation
Step 1: Two Python environments
- Server env (default
lerobot_lab): the policy server env with this repo installed viapip install -e ".[all]". - Client env (default
libero_venv): LIBERO + robosuite + MuJoCo.
Step 2: Clone & install LIBERO
LIBERO Repository: https://github.com/Lifelong-Robot-Learning/LIBERO
git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git <LIBERO_REPO_ROOT>
cd <LIBERO_REPO_ROOT>
pip install -e .
Set the env var so the eval script can find BDDL files / config root:
export LIBERO_HOME=<LIBERO_REPO_ROOT>
Note: LIBERO renders offscreen via robosuite/MuJoCo. Set
MUJOCO_GL=egl(GPU) orMUJOCO_GL=osmesa(CPU) in your client env if rendering fails. The eval script defaults toegl.
Step 3: Verify dataset / stats compatibility
The default STATS_KEY_MODE=panda / ROBOT_TYPE_MODE=panda matches the public lerobot/libero dataset on HuggingFace. If your checkpoint was trained on a custom variant, override these env vars (or add a new schema YAML under src/lerobot/dataset_schemas/configs/).
Running Evaluation
cd <PROJECT_ROOT>/lerobot_lab
export CONDA_ROOT=<MINICONDA_ROOT>
export LIBERO_HOME=<LIBERO_REPO_ROOT>
export CKPT_PATH=<CKPT_PATH>
export STATS_KEY_MODE=suite
export ROBOT_TYPE_MODE=panda
bash evaluation/LIBERO/run_eval_libero_server_client.sh
The script auto-detects free GPUs (≥ GPU_MEM_FREE_THRESHOLD_MB free, default 30 GiB), launches one policy server per GPU, and dispatches the four LIBERO task suites (libero_spatial, libero_object, libero_goal, libero_10) from a shared queue.
Common env-var overrides:
CKPT_PATH(required): checkpoint path for the policy server, you can download our fine-tuned ckpt on https://huggingface.co/InternRobotics/InternVLA-A1.5-Libero.LIBERO_HOME(required): LIBERO repo root.SERVER_ENV/CLIENT_ENV(defaultslerobot_lab/libero_venv): conda envs.CONDA_ROOT(default$HOME/miniconda3).GPU_IDS(e.g.0,2,5): skip auto-detection and use these GPUs.GPU_MEM_FREE_THRESHOLD_MB(default30000): free-memory threshold for auto-detection.BASE_PORT(default5734): first port; per-worker ports areBASE_PORT + worker_idx.NUM_TRIALS_PER_TASK(default50),MAX_TASKS(default-1),SEED(default7),NUM_STEPS_WAIT(default10),REPLAN_STEPS(default8).STATS_KEY_MODE/ROBOT_TYPE_MODE(defaultpanda): usesuiteto bind stats / robot_type to the LIBERO suite name (for multi-subset stats.json checkpoints).VLM_MODEL_PATH(InternVLA-A1.5 only): override the VLM path baked into the checkpoint.WAN_MODEL_PATH/WAN_VAE_PATH: only used when overridingACTION_LOSS_ONLY_FLAG=--no-action_loss_only. The default--action_loss_onlyskips WAN weight loading, which matches the public InternVLA-A1.5 release.INFERENCE_BACKEND(defaultstandard):optimizedrequires--action_loss_only.EVAL_LOG_DIR: destination log dir (defaultoutputs/sim_eval/libero/<timestamp>_all).