Add Osmo Arena Experiment output downloader#933
Conversation
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Greptile SummaryThis PR adds
Confidence Score: 4/5Safe to merge; the new script is additive and isolated, with no effect on existing paths. The core download logic is straightforward and well-tested. Two non-blocking issues are worth addressing before wider use: the validation guards in osmo/scripts/download_experiment_output.py — specifically the assert-based guards and the missing cleanup on download failure. Important Files Changed
Reviews (1): Last reviewed commit: "Add Arena Experiment output downloader" | Re-trigger Greptile |
🤖 Isaac Lab-Arena Review BotSummaryAdds a small standalone script ( Findings🟡 🔵 Test CoverageGood. Pure unit tests (no VerdictMinor fixes needed (both optional — neither blocks merge). |
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
OSMO's Swift downloader can silently omit prefix contents when the remote workflow URI ends with a slash. Signed-off-by: Clemens Volk <cvolk@nvidia.com>
## Summary
Run every Arena Run independently on OSMO and publish one Experiment
report.
## Detailed description
- Create one independently scheduled OSMO group per Run. A Pi0 Run gets
its own policy-server task in the same group.
- Keep the timestamped `--output_base_dir` behavior used by existing
local commands. OSMO instead passes `--experiment_output_directory` so
each Experiment Runner writes to the exact directory owned by its task.
- After every Run succeeds, the CPU-only `build-experiment-output` task
collects the Run directories, generates `index.html`, and publishes one
complete Experiment output. If any Run fails, the workflow fails and no
combined report is published; retries and partial reports remain out of
scope.
## Run it on OSMO
This submits the nine Runs in the OpenPI Experiment. The Experiment
Runner uses the default
`nvcr.io/nvstaging/isaac-amr/isaaclab_arena:latest` image.
```bash
/isaac-sim/python.sh -m osmo.submit_arena_experiment \
--experiment_cfg isaaclab_arena_environments/experiment_configs/droid_pnp_srl_openpi_experiment.yaml \
--policy_server pi0 \
osmo.workflow_name=arena-parallel-test \
osmo.pool=isaac-dev-l40-03 \
osmo.platform=ovx-l40 \
osmo.memory=120Gi \
experiment_runner.image=nvcr.io/nvstaging/isaac-amr/isaaclab_arena:osmo_parallel
```
## Experiment report
Download the report with the script that is being introduced in #933:
` python3 -m osmo.scripts.download_experiment_output
arena-parallel-test`
---------
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Inventory remote outputs through OSMO file listings, repair objects omitted by directory downloads, and verify the final file set. Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Summary
Reliably download Arena Experiment outputs
Detailed description
index.html./eval/<workflow-id>by default, allow local and remote base overrides, validate workflow IDs, and reject non-empty destinations to avoid mixing output sets.