Views
No views yet
scripts/eval/.| folder | embodiment | tasks | images | state | actions | unnorm_key |
|---|---|---|---|---|---|---|
single/ | 28-DoF Shadow right hand | 12 | 2 | (28,) | (28,) | dexbench_rlds/single |
bimanual/ | 56-DoF Shadow pair | 7 | 3 | (56,) | (56,) | dexbench_rlds/bimanual |
eval_policy.py --policy openvla truncates to 28/56
accordingly and applies no observation preset.1# single-hand
2hf download dexverse/openvla-oft-dexverse --include 'single/*' --local-dir ./openvla-ckpt
3# bimanual
4hf download dexverse/openvla-oft-dexverse --include 'bimanual/*' --local-dir ./openvla-ckptCKPT_DIR for serve_openvla.sh is then ./openvla-ckpt/single (or bimanual).unnorm_key must contain dexbenchsys.argv at import time (prismatic/vla/constants.py::detect_robot_platform).
It scans the joined argv for dexbench, libero, aloha, bridge in that
order and silently falls back to LIBERO's 7-dim constants when nothing
matches. The only argv token carrying that keyword is --unnorm_key.dexbench_rlds/single / dexbench_rlds/bimanual exactly —
these are also the only keys present in dataset_statistics.json. dexbench is
the benchmark's former name; renaming it here requires a matching change in
openvla-oft. serve_openvla.sh refuses to start when the key lacks the keyword.single/
├── model-0000{1,2,3,4}-of-00004.safetensors # merged 7B VLA backbone, ~15 GB
├── model.safetensors.index.json
├── action_head--3000_checkpoint.pt # L1-regression action head, 1.0 GB
├── proprio_projector--3000_checkpoint.pt # proprio encoder, 68 MB
├── dataset_statistics.json # action/proprio denorm stats
├── lora_adapter/ # provenance only, see below
├── config.json, configuration_prismatic.py, modeling_prismatic.py,
│ processing_prismatic.py, preprocessor_config.json, processor_config.json
└── tokenizer.json, tokenizer.model, tokenizer_config.json, ...deploy.py loads. lora_adapter/ is kept for provenance and is not needed to
serve the model.1OPENVLA_OFT_ROOT=/path/to/openvla-oft \
2PYTHON_BIN=/path/to/envs/openvla-oft/bin/python \
3CKPT_DIR=$PWD/openvla-ckpt/single \
4UNNORM_KEY=dexbench_rlds/single \
5 bash scripts/eval/serve_openvla.sh # add EMBODIMENT=bimanual for the pair
6
7# in the DexVerse / Isaac Lab environment
8python scripts/eval/eval_policy.py --policy openvla --enable_cameras --headless \
9 --unnorm_key dexbench_rlds/single --task Dexverse-GraspCup-v0 --num_episodes 20EMBODIMENT=bimanual switches --num_images_in_input from 2 to 3. The server
was trained with --use_l1_regression True --use_proprio True --center_crop True
and LoRA rank 32; serve_openvla.sh passes all of these.eval_policy.py:1POST /act (json_numpy body)
2{"full_image": uint8 (256,256,3),
3 "wrist_image": uint8 (256,256,3), # left_wrist_image + right_wrist_image when bimanual
4 "state": float32 (28,), # (56,) when bimanual
5 "instruction": str,
6 "unnorm_key": "dexbench_rlds/single"} # -> list of 8 actions, already denormalizedscripts/eval/baseline_tasks.py; they are the RLDS language_instruction
values verbatim.openvla/openvla-7b for 3000 steps on
demonstrations recorded through the DexVerse VR teleoperation pipeline,
converted to RLDS. Backgrounds and table textures were held fixed during data
generation (create_demo_files_sequential.py --disable-bg-randomize); evaluate
with the matching setting (the harness default) or expect a visual domain gap.openvla/openvla-7b base model. The DexVerse code is
BSD-3-Clause.