Skip to content

fix(eval): enforce official LIBERO and LIBERO-Plus protocols - #116

Open
primorLee wants to merge 1 commit into
Robbyant:mainfrom
primorLee:fix/libero-evaluation-protocol
Open

fix(eval): enforce official LIBERO and LIBERO-Plus protocols#116
primorLee wants to merge 1 commit into
Robbyant:mainfrom
primorLee:fix/libero-evaluation-protocol

Conversation

@primorLee

Copy link
Copy Markdown

Problem

The existing client launcher always uses --task-range 0 10 --test-num 50. That is the original LIBERO protocol (10 tasks x 50 trials), but under LIBERO-Plus those indices are perturbation variants rather than the ten original tasks. The command therefore repeats only the first ten Plus variants 50 times each and can make a 500-rollout subset look like a full LIBERO-Plus score.

This also explains why a valid original-LIBERO checkpoint reproduction and the reported Plus result can diverge without establishing a checkpoint regression: they were not evaluating the same protocol.

What changed

  • make the protocol explicit with --protocol original|plus
  • preserve original LIBERO behavior and compatibility:
    • 10 tasks x 50 trials by default
    • existing positional run(...) arguments
    • existing per-task result and video paths
  • enforce the official LIBERO-Plus protocol:
    • every perturbation variant exactly once by default
    • exact official suite sizes (2402/2518/2591/2519)
    • exact alignment with the pinned official task_classification.json
    • BDDL :language instruction from the environment instead of metadata-bearing variant filenames
    • category/difficulty numerators and denominators
  • distinguish diagnostics from reportable scores:
    • completed shards have an observed rate, but score.value remains null
    • interrupted full runs remain non-reportable until every planned variant completes
  • add reproducible result lifecycle controls:
    • run fingerprint over protocol, selection, declared checkpoint, client/protocol code, benchmark order/metadata, and package versions
    • immutable manifest and atomic incremental task/summary writes
    • validated resume that rejects corrupt or mismatched same-run results
    • collision-free Plus run directories
    • required user-declared --checkpoint-id NAME@REVISION for Plus, since the inference server is a separate process
  • add a dedicated launch_client_plus.sh; both launchers forward extra CLI arguments
  • document the two protocols and non-comparable denominators

Validation

  • 24 passed protocol/lifecycle tests
  • Ruff check and format pass
  • Python compilation and diff whitespace checks pass
  • live metadata check against LIBERO-Plus commit 4976dc30028e805ff8094b55501d532c48fec182

I did not run a real MuJoCo/checkpoint rollout in this change, so this PR makes no model-success-rate claim. It fixes the evaluation contract needed before rerunning the checkpoint.

References:

Fixes #115

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Low success rate (19.4%) when evaluating official LIBERO checkpoint on LIBERO-Plus

1 participant