YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
RoboPRO eval on GB10 β setup guides
How to evaluate VLA policies on the RoboPRO / RoboTwin benchmark on an NVIDIA GB10 (Grace-Blackwell) SLURM cluster β including running the model and simulator on separate nodes (for models too big to co-locate with the sim).
Architecture
The eval splits into two processes talking over a TCP socket (4-byte big-endian length header + JSON-with-numpy payload):
- Simulator β SAPIEN + the RoboPRO task, runs in-process in the
robotwinenv; produces observations (3-cam RGB + proprio + instruction) and executes the returned actions. - Model β the VLA policy in the
xvlaenv; turns each observation into a 30-step action chunk.
The obsβaction flow is fixed (sim has the obs, model returns the action); either side can be the socket server β choose by env flags:
| pattern | binds/listens | connects | guide |
|---|---|---|---|
| model-as-server (pipeline default) | model | sim | ROBOPRO_EVAL_CROSSNODE_GB10.md |
| sim-as-server | sim | model | ROBOPRO_EVAL_SIM_AS_SERVER.md |
Both work single-node (localhost) or cross-node (set the peer host/bind + a shared port). Use sim-as-server if that's your convention or if your orchestration starts the sim first.
Documents
EVALUATION_PIPELINE.mdβ START HERE to recreate the pipeline. The full end-to-end reference: directory layout, node-local staging, the per-node worker, the work-stealing lease queue (+ resume), every env var, copy-paste run recipes, output/scoring, the orchestrator patterns, and a recreate-elsewhere checklist.ROBOPRO_EVAL_CROSSNODE_GB10.mdβ model-as-server, split across nodes (the default direction). 2-node SLURM run steps; theMODEL_SERVER_BIND(server) /MODEL_SERVER_HOST(client) +--portknobs; how to plug in your model.ROBOPRO_EVAL_SIM_AS_SERVER.mdβ sim-as-server alternative (sim binds, model connects). TheSIM_AS_SERVER/MODEL_AS_CLIENTflags +SIM_SERVER_HOST/SIM_SERVER_PORT. Both modes are additive/flag-gated and validated end-to-end (a full episode completes with success).GB10_EVAL_PIPELINE.mdβ read this for the gotchas. GB10-specific issues + the validated config: SAPIEN 3.0.0b1 (3.0.3 regresses office/kitchen),WORKERS_PER_GPU=1(MPS broken on Blackwell), OptiX denoiser (OIDN is a silent no-op), node-local staging, ffmpeg PATH, the exit-144pkill -ffootgun, etc.
Quick start
- To recreate the whole pipeline, read
EVALUATION_PIPELINE.mdβ it has the layout, the run mechanism, and copy-paste commands. On this GB10 cluster the built setup is group-readable at/shared_work/jack/eval_root(run it in place or copy it). - Read
GB10_EVAL_PIPELINE.mdand set the validated knobs (DXVLA_SAPIEN_B1=1,WORKERS_PER_GPU=1,DXVLA_DENOISER=optix, node-local/tmpstaging). - Pick a connection pattern (table above) and follow that guide's copy-paste SLURM commands.
- Smoke-test one task (
EVAL_TEST_NUM=1) and confirm a_metrics.jsonlline with"success"appears and both sides log "connected" β then scale up.
Plugging in your own model
The model side loads the policy via get_model() (policy/dxvla/deploy_policy.py). Either swap a checkpoint (CKPT_NAME + code dir; see each ckpt's EVAL_INTERFACE.md), or implement get_model() returning an object with
generate_actions(input_ids, image_input, image_mask, domain_id, proprio, ...) -> [B, num_actions, action_dim].
The socket/framing is handled for you; you only provide the policy.