26-Task Reference Evaluation
July 9, 2026 ยท View on GitHub
This folder provides reference VLM/VLA integration code for RoboMemArena.
The benchmark should be understood as one 1-26 task evaluation setting. A VLM/VLA system is still an adapter-style model stack: the evaluator creates the environment, loads the BDDL task, obtains the current observation and prompt, calls the planner/policy stack, executes the returned actions, and computes CSR/TSR.
For the user-facing full 1-26 task reference runner, use:
evaluation_benchmark/async_vlm26_reference/
The source tree may keep historical helper files internally for compatibility with earlier experiments. Those helper names do not define separate public benchmark modes.
The required Python/runtime environment is based on the official OpenPI environment. For the VLM/Qwen3-VL side, use a newer transformers environment instead of relying on the original OpenPI venv with transformers==4.48.1, which does not provide Qwen3VLForConditionalGeneration.
The model-agnostic adapter interface remains in evaluation_benchmark/scripts/.
For external model integration, see Evaluate Your Model on RoboMemArena.
Weight Interface (HF-ready)
Use interface variables to connect weights (HF or local) instead of hardcoding URLs:
# unified weight source
export WEIGHT_SOURCE=hf # hf or local
# HF repo entry (example)
export HF_REPO_ID=<your_hf_repo_id>
export VLM_HF_SUBDIR=<vlm_subdir>
export VLA_HF_SUBDIR=<vla_subdir>
# local resolved paths used by scripts
export VLM_CKPT=/abs/path/to/vlm_checkpoint
export VLA_CKPT=/abs/path/to/vla_checkpoint
For local-only usage:
export WEIGHT_SOURCE=local
export VLM_CKPT=/abs/path/to/vlm_checkpoint
export VLA_CKPT=/abs/path/to/vla_checkpoint
Files
reference_evaluation/
README.md
legacy reference helper files
These files are kept to preserve compatibility with the original reference implementation. For a single 1-26 task command, prefer evaluation_benchmark/async_vlm26_reference/run_fullvlm26_async_vlm_vla_csr_tsr.sh.
1-26 Reference Runner
OpenPI source interface:
- Default: use the bundled minimal runtime at
third_party/openpi_minimal. - Optional: point
OPENPI_ROOTto your own OpenPI checkout. No code changes are needed.
Required local inputs:
export OPENPI_ROOT=/abs/path/to/openpi # optional; defaults to repo-bundled third_party/openpi_minimal
export OPENPI_INFERENCE_ROOT=/abs/path/to/openpi_inference
export TARGET_LIBERO_PATH=/abs/path/to/LIBERO/libero
export VLM_CKPT=/abs/path/to/vlm_checkpoint
export VLA_CKPT=/abs/path/to/vla_checkpoint
# optional override; default in runner is pi05_robomemarena
export VLA_CONFIG=<your_vla_config_name>
Run the full 1-26 task set:
cd evaluation_benchmark/async_vlm26_reference
export TASKS_JSON='[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]'
bash run_fullvlm26_async_vlm_vla_csr_tsr.sh
Run a subset for debugging:
export TASKS_JSON='[1,2,3]'
bash run_fullvlm26_async_vlm_vla_csr_tsr.sh
Outputs
The runner writes outputs under OUT_ROOT:
${OUT_ROOT}/summary.tsv
${OUT_ROOT}/summary.json
${OUT_ROOT}/aggregate.json
${OUT_ROOT}/prompt_trace.tsv
${OUT_ROOT}/videos/task*/...
${OUT_ROOT}/task*/ep*/sync_vlm_trace.jsonl
Metric names:
CSR: average stage completion rate. In output files this is stored in the legacy-compatiblegoal_success_ratefield.stage_success_rate: strict required-stage completion rate. An episode has TSR=1 only when all required stages are completed.stage_score_pct: partial stage/process completion score.
The evaluator uses stage-based scoring for all tasks. Counting-pour tasks 6, 7,
8, 9, 10, 15, 16, and 22 additionally monitor 30 environment steps after the
second completed pour and reject a third pour. Microwave tasks do not require
the final microwave-close stage.
Set FAIL_ON_EXTRA_POUR=0 only for diagnostic runs; the default is 1.
Set POST_STAGE_STEPS to change the post-stage monitoring window.
Example HF weight repository: https://huggingface.co/huashuolei/PrediMem