fix(manifest): explicit embodiment_tags ["any"] (ADR-0071)
Browse filesEmpty embodiment_tags is no longer valid in the OpenRAL loader; embodiment-agnostic skills declare the explicit "any" wildcard.
- SKILL.md +2 -0
- rskill.yaml +90 -0
SKILL.md
CHANGED
|
@@ -9,6 +9,7 @@ metadata:
|
|
| 9 |
manifest: ./rskill.yaml
|
| 10 |
role: s2
|
| 11 |
kind: reward
|
|
|
|
| 12 |
actions: [monitor]
|
| 13 |
objects: [task progress, task success]
|
| 14 |
scenes: [tabletop, kitchen, indoor, manipulation]
|
|
@@ -41,6 +42,7 @@ An OpenRAL **task-progress / reward monitor** (`role: s2`, `kind: reward`). Robo
|
|
| 41 |
- **Verbs:** monitor
|
| 42 |
- **Objects:** task progress · task success
|
| 43 |
- **Scenes:** tabletop · kitchen · indoor · manipulation
|
|
|
|
| 44 |
|
| 45 |
## Why this is discovery-only
|
| 46 |
|
|
|
|
| 9 |
manifest: ./rskill.yaml
|
| 10 |
role: s2
|
| 11 |
kind: reward
|
| 12 |
+
embodiment_tags: [any]
|
| 13 |
actions: [monitor]
|
| 14 |
objects: [task progress, task success]
|
| 15 |
scenes: [tabletop, kitchen, indoor, manipulation]
|
|
|
|
| 42 |
- **Verbs:** monitor
|
| 43 |
- **Objects:** task progress · task success
|
| 44 |
- **Scenes:** tabletop · kitchen · indoor · manipulation
|
| 45 |
+
- **Embodiments:** any
|
| 46 |
|
| 47 |
## Why this is discovery-only
|
| 48 |
|
rskill.yaml
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
schema_version: "0.1"
|
| 2 |
+
name: "OpenRAL/rskill-robometer-4b-nf4"
|
| 3 |
+
version: "0.1.0"
|
| 4 |
+
license: "apache-2.0"
|
| 5 |
+
role: "s2"
|
| 6 |
+
kind: "reward"
|
| 7 |
+
|
| 8 |
+
# Embodiment-agnostic: a reward monitor scores any rollout video + task
|
| 9 |
+
# instruction and is exempt from the rSkill<->robot embodiment gate.
|
| 10 |
+
embodiment_tags: ["any"] # explicit embodiment-agnostic wildcard (ADR-0071)
|
| 11 |
+
|
| 12 |
+
# Consumes the same RGB camera stream the co-active VLA uses. No actuators.
|
| 13 |
+
sensors_required:
|
| 14 |
+
- modality: "rgb"
|
| 15 |
+
min_width: 224
|
| 16 |
+
min_height: 224
|
| 17 |
+
|
| 18 |
+
actuators_required: []
|
| 19 |
+
|
| 20 |
+
runtime: "pytorch"
|
| 21 |
+
|
| 22 |
+
# NF4 bitsandbytes quantization (empirically validated, ADR-0057 Phase 2):
|
| 23 |
+
# 236 Linear modules -> Linear4bit, 8.91 GB bf16 -> 3.33 GB resident,
|
| 24 |
+
# 3.56 GB peak incl. an 8-frame forward (4.44 GB headroom on an 8 GB GPU).
|
| 25 |
+
quantization:
|
| 26 |
+
dtype: "int4"
|
| 27 |
+
backend: "pytorch"
|
| 28 |
+
extra:
|
| 29 |
+
scheme: "nf4"
|
| 30 |
+
quantizer: "bitsandbytes"
|
| 31 |
+
compute_dtype: "bfloat16"
|
| 32 |
+
min_params_to_quantize: 4000000
|
| 33 |
+
# RBM cannot be loaded by vanilla AutoModel (config advertises
|
| 34 |
+
# architectures:["RFM"] with no auto_map). The sidecar loads via the
|
| 35 |
+
# pinned robometer package: robometer.utils.save.load_model_from_hf.
|
| 36 |
+
loader: "robometer.utils.save.load_model_from_hf"
|
| 37 |
+
# transformers MUST be pinned to 4.57.1 (5.x changes processor kwargs and
|
| 38 |
+
# drops input_ids). robometer package pinned to a669dffc.
|
| 39 |
+
transformers_pin: "4.57.1"
|
| 40 |
+
robometer_pin: "a669dffc241d7d76bec12f36efd4084d914d017c"
|
| 41 |
+
|
| 42 |
+
min_vram_gb:
|
| 43 |
+
fp32: 18.0
|
| 44 |
+
bf16: 9.0
|
| 45 |
+
int4: 3.6
|
| 46 |
+
|
| 47 |
+
# Pre-quantized NF4 checkpoint (ADR-0057): the sidecar loads the packed weights
|
| 48 |
+
# DIRECTLY on the meta device via Params4bit.from_prequantized — no bf16
|
| 49 |
+
# materialization, no requantize (~25 s to ready vs ~110 s + a 19 GB CPU spike).
|
| 50 |
+
# Bit-identical to the bf16+quantize path. Built by
|
| 51 |
+
# tools/build_robometer_nf4_checkpoint.py from the SHA-pinned upstream below.
|
| 52 |
+
weights_uri: "hf://OpenRAL/rskill-robometer-4b-nf4"
|
| 53 |
+
|
| 54 |
+
chunk_size: 1
|
| 55 |
+
latency_budget:
|
| 56 |
+
# S2-cadence monitor over a frame window; not a per-control-step signal.
|
| 57 |
+
per_chunk_ms: 3000.0
|
| 58 |
+
|
| 59 |
+
source_repo: "hf://robometer/Robometer-4B@beef63bc914c5c189329d49c6d712d96d632aa34"
|
| 60 |
+
|
| 61 |
+
# Reward / progress-monitor contract (ADR-0057). Discrete mode yields
|
| 62 |
+
# per-frame normalized progress in [0,1] + per-frame success probability.
|
| 63 |
+
reward:
|
| 64 |
+
progress_range: [0.0, 1.0]
|
| 65 |
+
success_threshold: 0.5
|
| 66 |
+
preference: false
|
| 67 |
+
frame_window_s: 8.0
|
| 68 |
+
target_fps: 3.0
|
| 69 |
+
num_bins: 100
|
| 70 |
+
instruction_required: true
|
| 71 |
+
|
| 72 |
+
description: >
|
| 73 |
+
Robometer-4B (Qwen3-VL-4B robotic reward foundation model, arXiv 2603.02115)
|
| 74 |
+
as an NF4 reward rSkill. Runs parallel to a VLA: given rollout frames + the
|
| 75 |
+
task instruction it emits per-frame normalized progress (0-1) and success
|
| 76 |
+
probability, queried on demand by the Reasoner. Advisory-only — never gates
|
| 77 |
+
motors. Embodiment-agnostic. Apache-2.0. ADR-0057.
|
| 78 |
+
|
| 79 |
+
actions:
|
| 80 |
+
- "monitor"
|
| 81 |
+
|
| 82 |
+
objects:
|
| 83 |
+
- "task progress"
|
| 84 |
+
- "task success"
|
| 85 |
+
|
| 86 |
+
scenes:
|
| 87 |
+
- "tabletop"
|
| 88 |
+
- "kitchen"
|
| 89 |
+
- "indoor"
|
| 90 |
+
- "manipulation"
|