File size: 5,748 Bytes
78ed463 e3204d1 78ed463 e3204d1 78ed463 e3204d1 78ed463 e3204d1 78ed463 e3204d1 78ed463 e3204d1 78ed463 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | # 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"
|