| # rSkill manifest β openral packaging format V1 (CLAUDE.md Β§6.4) | |
| # Wraps: RLinf/RLinf-OpenVLAOFT-PPO-ManiSkill3-25ood | |
| # Base: Haozhan72/Openvla-oft-SFT-libero-goal-trajall (+ ManiSkill LoRA SFT + PPO) | |
| # | |
| # An OpenVLA-OFT bridge policy RL-tuned (PPO) on the ManiSkill3 | |
| # PutOnPlateInScene25 task with a WidowX 250 S. Its honest evaluation home is | |
| # the SimplerEnv WidowX put-on-plate tasks OpenRAL already wires (same | |
| # embodiment / EE-delta control / bridge_orig normalization) β NOT the Panda | |
| # PickCube scenes (the task-data gate would correctly block that pairing; see | |
| # the OpenVLA / OpenVLA-OFT policy family notes for the WidowX-vs-Panda rationale). | |
| # | |
| # IO contract (from the checkpoint's config.json + RLinf eval, 2026-06-19): | |
| # input: one 224x224 RGB (the SimplerEnv 3rd-view, surfaced as camera1); | |
| # prompt "In: What action should the robot take to {instr}?\nOut: "; | |
| # no proprio (use_proprio=False). | |
| # output: 256-bin discrete action tokens -> [-1,1] -> de-normalized with the | |
| # embedded unnorm_key=bridge_orig (BOUNDS_Q99): 6 EE deltas rescaled, | |
| # gripper (mask False) passthrough. Action chunk 8 x 7-D. | |
| # The in-tree `openvla` adapter loads this via transformers | |
| # AutoModelForVision2Seq + trust_remote_code (gated by | |
| # OPENRAL_ALLOW_REMOTE_CODE=1), NF4 for the 8 GB host. | |
| # ββ Identity βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| schema_version: "0.1" | |
| name: "OpenRAL/rskill-openvla_oft-widowx-simpler_env-nf4" | |
| version: "0.1.0" | |
| license: "mit" | |
| role: "s1" | |
| kind: "vla" # learnable Vision-Language-Action policy | |
| # Task-data gate: declare only the SimplerEnv WidowX task locally verified with | |
| # success > 0. The sibling Bridge tasks remain plausible checkpoint targets, but | |
| # they are not declared until reproduced locally. | |
| evaluated_tasks: | |
| - "simpler_env/widowx_carrot_on_plate" | |
| benchmarks: | |
| simpler_env_widowx: 0.4 | |
| # ββ Policy identity ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| model_family: "openvla" | |
| # ββ Compatibility contract βββββββββββββββββββββββββββββββββββββββββββββββββ | |
| embodiment_tags: | |
| - "widowx" | |
| sensors_required: | |
| - modality: "rgb" | |
| vla_feature_key: "observation.images.camera1" | |
| min_width: 224 | |
| min_height: 224 | |
| actuators_required: | |
| - kind: "joint_position" | |
| control_mode_semantics: | |
| mode: "absolute" | |
| # ββ Runtime / weights ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| runtime: "pytorch" | |
| quantization: | |
| dtype: "int4" | |
| backend: "pytorch" | |
| min_vram_gb: | |
| # OpenVLA-7B documented footprints (paper Table 2): bf16 16.8 GB, int4 7.0 GB | |
| # (int4 matches bf16 task accuracy). int4 + expandable_segments fits an 8 GB card. | |
| bf16: 16.8 | |
| int4: 7.0 | |
| weights_uri: "hf://RLinf/RLinf-OpenVLAOFT-PPO-ManiSkill3-25ood@3697bf84eaa7a7c6072e07b9451ca4c780cf7bed" | |
| source_repo: "hf://RLinf/RLinf-OpenVLAOFT-PPO-ManiSkill3-25ood" | |
| # No `processors` block: OpenVLA is not a lerobot modern-processor family. Its | |
| # PrismaticProcessor ships in the repo (custom code) and normalization stats are | |
| # embedded in config.json (selected by unnorm_key), so there is nothing to point at. | |
| # ββ State / action contracts βββββββββββββββββββββββββββββββββββββββββββββββ | |
| state_contract: | |
| # SimplerEnv WidowX (bridge_orig) wire schema: 8 scalar state keys. The RLinf | |
| # OpenVLA-OFT checkpoint does not consume proprio, but the backend surfaces it | |
| # and the dim keeps the simpler_widowx layout invariant happy. | |
| layout: "simpler_widowx" | |
| dim: 8 | |
| action_contract: | |
| # 6 cartesian EE deltas + 1 binary gripper (NOT 7 joint | |
| # positions) β matches the de-normalized predict_action output. | |
| dim: 7 | |
| representation: "delta_ee_6d_plus_gripper" | |
| # ββ Execution semantics ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # OpenVLA-OFT emits an 8-step action chunk per forward; replay the full chunk | |
| # open-loop (RLinf's chunk_step executes all 8 before re-inferring). | |
| chunk_size: 8 | |
| n_action_steps: 8 | |
| latency_budget: | |
| per_chunk_ms: 2000.0 | |
| # RLinf PPO eval path. These are adapter-owned knobs intentionally kept in the | |
| # manifest instead of scene YAML so the rollout trace records exactly how the | |
| # checkpoint was driven. | |
| policy_extras: | |
| openvla_generation_method: "generate_action_verl" | |
| openvla_do_sample: true | |
| openvla_temperature: 0.6 | |
| openvla_padding_max_length: 30 | |
| openvla_action_scale: 2.0 | |
| openvla_binarize_gripper: true | |
| openvla_gripper_threshold: 0.5 | |
| openvla_torch_seed: 0 | |
| # ββ Provenance βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| paper_url: "https://huggingface.co/RLinf/RLinf-OpenVLAOFT-PPO-ManiSkill3-25ood" | |
| description: > | |
| OpenVLA-OFT (RLinf, PPO on ManiSkill3 PutOnPlateInScene25) WidowX bridge | |
| policy, evaluated on SimplerEnv WidowX carrot-on-plate. Loaded | |
| in-process via transformers custom-code (trust_remote_code), NF4 for 8 GB | |
| hosts. MIT license. | |
| # Action vocabulary for the reasoner LLM tool palette. | |
| actions: | |
| - "pick" | |
| - "place" | |
| objects: | |
| - "object" | |
| scenes: | |
| - "tabletop" | |