| name | run-benchmark | ||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| description | Launch a geniesim_benchmark task locally (typically inside the GUI Docker container) against a user-provided inference server, using the `geniesim benchmark run` CLI verb. Trigger: When the user asks to "run geniesim", "本地跑仿真", "启动仿真任务", "run a benchmark", "launch <some>_<config>.yaml", or wants to execute a benchmark task config (anything under `geniesim_benchmark/config/*.yaml`) against a remote inference host (ip:port). | ||||||||||||||||||||||||||||||||||||||||||||||
| license | MPL-2.0 | ||||||||||||||||||||||||||||||||||||||||||||||
| metadata |
|
||||||||||||||||||||||||||||||||||||||||||||||
| prerequisites |
|
||||||||||||||||||||||||||||||||||||||||||||||
| inputs |
|
||||||||||||||||||||||||||||||||||||||||||||||
| outputs |
|
- User wants to run a
geniesim_benchmarktask on their workstation (not the Challenge platform). - User has an inference server already running somewhere reachable and provides its
ip:port. - User references any task config under
source/geniesim_benchmark/src/geniesim_benchmark/config/.
Do not use for:
- Submitting jobs to the Challenge platform →
challenge-submit-job. - Verifying an inference server is healthy → use the
check-inferenceskill. - Adding a new benchmark task →
add-benchmark-task.
- Always collect three required inputs first:
- Task config (basename, full path, or substring — the CLI resolves all three).
- Inference IP.
- Inference port.
- The runtime needs
omni_python/ Isaac Sim on the host. Inside the Genie Sim Docker image (geniesim docker up→geniesim docker into), that's already the case. Outside the container the user needs Isaac Sim installed system-wide. - Working directory: anywhere under the repo root works — the CLI
walks up to find
scripts/and usesfind_specto locate the benchmark package. - Confirm before launching. The task spawns a full simulator and typically holds a GPU; ask before kicking it off if there's any ambiguity.
If the user hasn't named a config, list candidates:
geniesim benchmark categories # show category counts
geniesim benchmark robots # show robot counts
geniesim benchmark list --robot=<R> --category=<C>Then ask via AskUserQuestion:
- Task config: free-text (use the basename — e.g.
g2op_if_pick_block_color). - Inference host as
ip:port.
Before sinking minutes into Isaac Sim startup, sanity-check the server (uses the bundled corobot payload):
geniesim benchmark check-inference --infer-host=<IP>:<PORT>See the check-inference skill to override the payload.
Inside the GUI container (geniesim docker into):
geniesim benchmark run <CONFIG> --infer-host=<IP>:<PORT>Example:
geniesim benchmark run g2op_if_pick_block_color --infer-host=<IP>:<PORT>geniesim benchmark run forwards any unknown --key=value to the
benchmark's ParameterServer. Common ones:
| Flag | Meaning |
|---|---|
--app.headless=true |
No GUI (required on remote / batch hosts) |
--benchmark.num_episode=N |
Override episode count |
--benchmark.seed=N |
RNG / instance-sampling seed |
--benchmark.record=true |
Persist episode logs to output_dir |
--benchmark.policy_class=… |
Use a different policy class |
Full schema: source/geniesim_benchmark/src/geniesim_benchmark/config/params.py.
# Host — start the container (GUI by default; add --headless on remote/batch hosts)
cd /path/to/main
geniesim docker up
# Host — drop into a shell inside the running container
geniesim docker into
# inside container:
geniesim status # verify the stack is healthy
geniesim benchmark check-inference --infer-host=<IP>:<PORT>
geniesim benchmark run <CONFIG> --infer-host=<IP>:<PORT>- If
geniesimisn't on$PATH(the launcher wasn't installed), substitutepython3 -m geniesim_cli benchmark …— same args, same behaviour. <CONFIG>accepts the bare basename (g2op_if_pick_block_color), a full path, or a unique substring.- For batch evaluations, prefer
geniesim benchmark batch --category=… --robot=…over a shell loop — it forwards extras consistently and prints a per-config pass/fail summary. - The new CLI replaces the older ad-hoc
omni_python app/app.py --config …invocation. The new form normalizes interpreter selection, host shorthand, and config resolution.