AdrianLlopart's picture
chore: canonical naming migration
e3204d1 verified
Raw
History Blame Contribute Delete
5.75 kB
# 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"