8000 ASPIRE on LIBERO (Object, Spatial, Goal, Long, LIBERO-90) by ruiling-smartbear · Pull Request #100 · Infini-AI-Lab/hermit · GitHub
[go: up one dir, main page]

Skip to content

ASPIRE on LIBERO (Object, Spatial, Goal, Long, LIBERO-90) - #100

Draft
ruiling-smartbear wants to merge 8 commits into
Infini-AI-Lab:mainfrom
ruiling-smartbear:aspire-libero
Draft

ruiling-smartbear wants to merge 8 commits into
Infini-AI-Lab:mainfrom
ruiling-smartbear:aspire-libero

Conversation

@ruiling-smartbear
@ruiling-smartbear ruiling-smartbear commented Nov 11, 2026 •
Copy link
Copy Markdown
Contributor

Change

Adds LIBERO as a second benchmark for the ASPIRE method, beside Robosuite.

  • examples/aspire_libero/: LIBERO's five suites (libero_object, libero_spatial, libero_goal, libero_10, libero_90; 130 tasks) as tasks of ASPIRE's harness (cap-harness --benchmark libero-pro), with run.yaml (the four ten-task suites), run_90.yaml, smoke.yaml, and a launch.sh that starts the Robosuite example's launcher on this folder.
  • examples/aspire_robosuite/ (no core code changes): the engine, simulator service, judge and task functions take the benchmark from the task row ("benchmark": "libero-pro") and with it ASPIRE's settings for it: .venv-libero, --init-mode seeded on every run, LIBERO_CONFIG_PATH, and docs/libero-pro.md in the actor's workspace without its "Task examples" section (it names ASPIRE's worked programs per task). A row without the field is Robosuite's, as before. prepare.py takes --preset aspire|smoke; its row and split writing is shared with LIBERO's.
  • The task sandbox of both examples is shown ASPIRE's docs as launch.sh stages them outside the checkout (utils/agent/stage_docs.py, agent.params.aspire_docs), not the checkout's own pages; a benchmark page without its cut is refused. LIBERO's demonstration datasets and ASPIRE's docs/ are hidden from the simulator's sandbox.
  • smoke_luna.yaml: the smoke with GPT-5.6-Luna on the machine's ChatGPT login; the launcher asks for FIREWORKS_API_KEY only for a Fireworks config.
  • Seeds are ASPIRE's LIBERO defaults: development 51-65, unseen-check 66-80, held-out 1-50, verifier 51-55.

Validation

  • python -m pytest tests/methods/aspire -q on Linux with bubblewrap: 36 passed. CI (tests.yml) passes on the head.
  • On a Linux host with ASPIRE at the pinned commit and scripts/bootstrap_libero.sh: a read-only probe program run through sim.Engine(benchmark="libero-pro") in its sandbox on libero_90:33, libero_object:0 and libero_10:9, seeds 51 and 60: programs complete, init_mode is seeded, the task language is read. The registry reports 10 / 10 / 10 / 10 / 90 tasks for the five suites.
  • On the same host, with ASPIRE's SAM3, PyRoki, cuRobo and Contact-GraspNet services and GPU rendering in 8000 the simulator's sandbox, ASPIRE's own programs through sim.Engine: examples/libero/close_microwave.py on libero_90:33, seeds 1-3: 3/3 task_success; examples/libero/object_swap_seed1.py on libero_object:0, seeds 1-3 and 51-53: 6/6.
  • The smoke on that host with the same services (ASPIRE_CONFIG=smoke_luna.yaml ./launch.sh, 44 minutes, 9.0M tokens): the run completes (two steps, actor, judge, evolver, final tag). Both tasks score 0/3 at the judge on seeds 1-3 and the library is unchanged. The sessions ran only seeds 51-53 and 66; their sandbox records show enforcement on, the network isolated, and no path of the other task, the judge's runs, the simulator service or ASPIRE's examples; the judged programs call only the public API. The learner was given the finished task's record, trajectory and files.
  • Not run yet: any training run. The budgets in run.yaml and run_90.yaml are scaled from Robosuite's by task count, not measured.

Review

  • Tests and documentation cover the affected behavior, where applicable. Tests: tests/methods/aspire/test_aspire.py; docs: examples/aspire_libero/README.md, examples/README.md, docs/methods/aspire.md, CHANGELOG.md.
  • Commands, defaults, and public interfaces are consistent.
  • Shared logs and examples contain no credentials or private data.
  • Documentation-only: not applicable.
  • Sandbox checklist: the change starts no new kind of process; the simulator runs through the Robosuite example's existing confine (hermit.sandbox). The smoke's sandbox/rollout-<n>.json and sandbox/learner-<n>.json are as described in Validation.
  • Independent review (post-PR audit): a separate agent reviewed 50754c4 against the general, sandbox, test and reproduction checklists. It found no way for a session to run held-out seeds or choose its init mode, no path to the judge, the task rows, ASPIRE's examples or another session's output from the task sandbox, and no regression for Robosuite rows. Its findings, fixed in d529101: the simulator's sandbox showed the checkout's uncut docs/ (now hidden, tested); the sweep's --init-mode and the hidden datasets had no test; docs/methods/aspire.md listed LIBERO-Pro as not ported; a second launch rewrote the staged docs under a running one. Unchanged from main: a generated program runs in cap-harness's process and could write its own outcome (the Robosuite README's stated limit). d529101 itself has not been reviewed again.

examples/aspire_libero/ adds LIBERO's Object, Spatial, Goal, Long (libero_10)
and LIBERO-90 suites as tasks of ASPIRE's harness (cap-harness --benchmark
libero-pro): 130 task rows, run.yaml (the four ten-task suites), run_90.yaml,
smoke.yaml and a launcher that starts the Robosuite example's on this folder.

The Robosuite example's engine now takes the benchmark from the task row: the
venv that holds cap-harness, the init mode (LIBERO: seeded, so a seed is a
scene of its own), the simulator's environment and the benchmark's docs page
(LIBERO's without the section that names ASPIRE's worked programs per task).
A row without the field is Robosuite's, as before. prepare.py's seeds are
presets (--preset aspire|smoke) and its row and split writing is shared.
…out's pages

The LIBERO configs granted $ASPIRE_ROOT/docs/libero-pro.md to the task sandbox, whose
"Task examples" section names ASPIRE's worked programs per task; only the workspace
copy was cut. launch.sh now stages the docs outside the checkout (stage_docs.py) and
the Codex configs of both examples grant those (agent.params.aspire_docs). A benchmark
page without its cut is refused rather than copied whole. LIBERO's demonstration
datasets are hidden from the simulator's sandbox.
smoke_luna.yaml is smoke.yaml with GPT-5.6-Luna acting and coordinating on the Codex
ChatGPT login. The launcher asks for FIREWORKS_API_KEY only when the config's models
are Fireworks'.

This branch has not been deployed

No deployments
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.

1 participant

0