AdrianLlopart commited on
Commit
2f3887f
·
verified ·
1 Parent(s): 5e3aa94

docs: HF model card for OpenRAL/rskill-robometer_4b-any-general-nf4 v0.1.0

Browse files
Files changed (1) hide show
  1. README.md +42 -41
README.md CHANGED
@@ -1,26 +1,31 @@
1
  ---
2
- tags:
3
- - OpenRAL
4
- - rskill
5
- - reward
6
- - reward-model
7
- - robot-learning
8
- - progress-estimation
9
- - success-detection
10
- - qwen3-vl
11
- - nf4
12
- - bitsandbytes
13
- license: apache-2.0
14
  language:
15
- - en
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  base_model:
17
- - Qwen/Qwen3-VL-4B-Instruct
 
 
18
  ---
19
 
20
- # rskill-robometer-4b-nf4
21
 
22
  > **OpenRAL rSkill** — Robometer-4B (Qwen3-VL-4B robotic **reward foundation
23
- > model**) packaged as an NF4 bitsandbytes `reward` rSkill (ADR-0057). Given a
24
  > rollout's RGB frames plus the task instruction, it emits **per-frame
25
  > normalized progress (0–1)** and **per-frame success probability**, queried on
26
  > demand by the Reasoner. **No actuators. Advisory-only.** Apache-2.0.
@@ -45,12 +50,13 @@ bowl is grasped and placed:
45
  > **[`media/progress.mp4`](media/progress.mp4)** (20 frames, downloadable).
46
  >
47
  > Runs the lerobot 0.6.0 in-tree `RobometerRewardModel` (plain `transformers`,
48
- > no `robometer` git package, no `transformers==4.57.1` pin) — ADR-0057 (amended).
 
49
 
50
  ## Quick Start
51
 
52
  ```bash
53
- ral skill install hf://OpenRAL/rskill-robometer-4b-nf4
54
  ```
55
 
56
  ```python
@@ -94,11 +100,10 @@ failing rollout triggers replanning instead of running to a timeout.
94
  Robometer-4B finetunes `Qwen/Qwen3-VL-4B-Instruct` (`model_type: qwen3_vl`)
95
  with three prediction heads — `progress_head`, `success_head`, `preference_head`
96
  — on top of a frame-pooled attention readout (`frame_pool_attn`). The on-disk
97
- HF `config.json` advertises `architectures: ["RFM"]`, but the actual model
98
- class is `RBM` (in the upstream `robometer` package). **It has no `auto_map` and
99
- ships no Hub-side modeling code, so vanilla `transformers.AutoModel` cannot load
100
- it** — the sidecar loads it via the pinned `robometer` package
101
- (`robometer.utils.save.load_model_from_hf`).
102
 
103
  ## Runtime
104
 
@@ -106,13 +111,11 @@ The `kind: reward` runtime is implemented as a read-only Reasoner tool
106
  (`QueryTaskProgressTool`), **not** an `ExecuteSkill` (a reward monitor produces
107
  scalars, not actions):
108
 
109
- - **Sidecar**: an out-of-process ZMQ REQ/REP + msgpack server boots the NF4
110
- model in its own isolated venv, maintains a rolling time-indexed frame buffer
111
- (`frame_window_s`), and answers windowed progress/success queries. It loads
112
- via `robometer.utils.save.load_model_from_hf` with **`transformers` pinned to
113
- `4.57.1`** (5.x changes the processor `__call__` kwargs and drops `input_ids`)
114
- and the `robometer` package pinned to commit `a669dffc`.
115
- - **Frame source**: abstracted for **sim and real**. The sidecar consumes the
116
  same `sensor_msgs/Image` camera topic the co-active VLA uses — fed by the
117
  GStreamer perception tee on real hardware, or by the sim HAL camera publisher
118
  in `deploy-sim` (which has no GStreamer). In `deploy-sim` only camera-rendering
@@ -132,19 +135,18 @@ raw, unnormalized regression values instead. Default sampling is 3 fps.
132
 
133
  ### Validated live
134
 
135
- End-to-end on an **NVIDIA RTX 4070 Laptop (8 GB)** (ADR-0057 Phases 0/2/3):
136
 
137
  - **NF4 quantization**: 236 `Linear` modules → `Linear4bit`; **8.91 GB bf16 →
138
  3.33 GB resident**, **3.56 GB peak** including an 8-frame forward — **4.44 GB
139
  headroom** for a co-resident small NF4 VLA.
140
- - **Working sidecar**: streaming a real rollout video ("Put green stick in
141
- brown bowl") through the ZMQ sidecar, **progress ramped 0.21 → 0.88** and
142
  **success spiked to 0.90 exactly at task completion**, then eased — exactly
143
  the Reasoner signal intended.
144
 
145
  Run with `PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True`. The model loads via
146
- the `robometer` package (not `AutoModel`); the sidecar venv pins
147
- `transformers==4.57.1`.
148
 
149
  ## Benchmark Numbers
150
 
@@ -177,16 +179,16 @@ The model emits no action chunks and has no proprioception contract.
177
 
178
  | Field | Value |
179
  |---|---|
180
- | `name` | `OpenRAL/rskill-robometer-4b-nf4` |
181
  | `version` | `0.1.0` |
182
  | `license` | `apache-2.0` |
183
  | `role` / `kind` | `s2` / `reward` |
184
  | `runtime` | `pytorch` |
185
  | `quantization.dtype` / `scheme` | `int4` / `nf4` |
186
- | `weights_uri` | `hf://OpenRAL/rskill-robometer-4b-nf4` (pre-quantized NF4, meta-loadable; built from the SHA-pinned upstream `source_repo`) |
187
  | `min_vram_gb.bf16` | 9.0 GB |
188
  | `min_vram_gb.int4` | 3.6 GB |
189
- | `reward.frame_window_s` / `target_fps` | 40.0 s / 3.0 fps (ADR-0074 amendment — scores the whole attempt start→now, not an 8 s trailing slice) |
190
  | `reward.progress_range` / `success_threshold` | `[0,1]` / 0.5 |
191
  | `latency_budget.per_chunk_ms` | 3000 ms |
192
  | `actions` | `monitor` |
@@ -196,6 +198,5 @@ The model emits no action chunks and has no proprioception contract.
196
  The rSkill package metadata and README are OpenRAL project files under
197
  Apache-2.0. The wrapped Robometer-4B weights are released under **Apache-2.0**,
198
  permitting commercial use. No `OPENRAL_ALLOW_NONCOMMERCIAL=1` flag is needed.
199
- The upstream `robometer` code (loaded by the sidecar) is governed by its own
200
- repository license; it is executed in an isolated, pinned sidecar venv and is
201
- **not** an OpenRAL-trusted org (see `_vendor/PROVENANCE.md`).
 
1
  ---
 
 
 
 
 
 
 
 
 
 
 
 
2
  language:
3
+ - en
4
+ license: apache-2.0
5
+ pipeline_tag: robotics
6
+ tags:
7
+ - OpenRAL
8
+ - rskill
9
+ - nf4
10
+ - 4-bit
11
+ - any
12
+ - reward
13
+ - reward-model
14
+ - robot-learning
15
+ - progress-estimation
16
+ - success-detection
17
+ - qwen3-vl
18
+ - bitsandbytes
19
  base_model:
20
+ - robometer/Robometer-4B
21
+ base_model_relation: quantized
22
+ inference: false
23
  ---
24
 
25
+ # rskill-robometer_4b-any-general-nf4
26
 
27
  > **OpenRAL rSkill** — Robometer-4B (Qwen3-VL-4B robotic **reward foundation
28
+ > model**) packaged as an NF4 bitsandbytes `reward` rSkill. Given a
29
  > rollout's RGB frames plus the task instruction, it emits **per-frame
30
  > normalized progress (0–1)** and **per-frame success probability**, queried on
31
  > demand by the Reasoner. **No actuators. Advisory-only.** Apache-2.0.
 
50
  > **[`media/progress.mp4`](media/progress.mp4)** (20 frames, downloadable).
51
  >
52
  > Runs the lerobot 0.6.0 in-tree `RobometerRewardModel` (plain `transformers`,
53
+ > no `robometer` git package, no `transformers==4.57.1` pin) — a lighter
54
+ > native-integration path than the original vendored-loader recipe (amended).
55
 
56
  ## Quick Start
57
 
58
  ```bash
59
+ ral skill install hf://OpenRAL/rskill-robometer_4b-any-general-nf4
60
  ```
61
 
62
  ```python
 
100
  Robometer-4B finetunes `Qwen/Qwen3-VL-4B-Instruct` (`model_type: qwen3_vl`)
101
  with three prediction heads — `progress_head`, `success_head`, `preference_head`
102
  — on top of a frame-pooled attention readout (`frame_pool_attn`). The on-disk
103
+ HF `config.json` advertises `architectures: ["RFM"]`; OpenRAL loads it through
104
+ lerobot's in-tree `lerobot.rewards.robometer.RobometerRewardModel` and the
105
+ pre-quantized OpenRAL NF4 checkpoint, without executing the old upstream
106
+ `robometer` runtime package.
 
107
 
108
  ## Runtime
109
 
 
111
  (`QueryTaskProgressTool`), **not** an `ExecuteSkill` (a reward monitor produces
112
  scalars, not actions):
113
 
114
+ - **Reward monitor node**: `openral_perception_ros.reward_monitor_node` boots the
115
+ NF4 model in-process, maintains a rolling time-indexed frame buffer
116
+ (`frame_window_s`), and answers windowed progress/success queries. It loads via
117
+ lerobot's in-tree `RobometerRewardModel` with plain `transformers`.
118
+ - **Frame source**: abstracted for **sim and real**. The reward monitor consumes the
 
 
119
  same `sensor_msgs/Image` camera topic the co-active VLA uses — fed by the
120
  GStreamer perception tee on real hardware, or by the sim HAL camera publisher
121
  in `deploy-sim` (which has no GStreamer). In `deploy-sim` only camera-rendering
 
135
 
136
  ### Validated live
137
 
138
+ End-to-end on an **NVIDIA RTX 4070 Laptop (8 GB)**:
139
 
140
  - **NF4 quantization**: 236 `Linear` modules → `Linear4bit`; **8.91 GB bf16 →
141
  3.33 GB resident**, **3.56 GB peak** including an 8-frame forward — **4.44 GB
142
  headroom** for a co-resident small NF4 VLA.
143
+ - **Working monitor**: streaming a real rollout video ("Put green stick in
144
+ brown bowl") through the reward monitor, **progress ramped 0.21 → 0.88** and
145
  **success spiked to 0.90 exactly at task completion**, then eased — exactly
146
  the Reasoner signal intended.
147
 
148
  Run with `PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True`. The model loads via
149
+ lerobot's in-tree Robometer module with plain `transformers`.
 
150
 
151
  ## Benchmark Numbers
152
 
 
179
 
180
  | Field | Value |
181
  |---|---|
182
+ | `name` | `OpenRAL/rskill-robometer_4b-any-general-nf4` |
183
  | `version` | `0.1.0` |
184
  | `license` | `apache-2.0` |
185
  | `role` / `kind` | `s2` / `reward` |
186
  | `runtime` | `pytorch` |
187
  | `quantization.dtype` / `scheme` | `int4` / `nf4` |
188
+ | `weights_uri` | `hf://OpenRAL/rskill-robometer_4b-any-general-nf4` (pre-quantized NF4, meta-loadable; built from the SHA-pinned upstream `source_repo`) |
189
  | `min_vram_gb.bf16` | 9.0 GB |
190
  | `min_vram_gb.int4` | 3.6 GB |
191
+ | `reward.frame_window_s` / `target_fps` | 40.0 s / 3.0 fps (a later reward-window amendment — scores the whole attempt start→now, not an 8 s trailing slice) |
192
  | `reward.progress_range` / `success_threshold` | `[0,1]` / 0.5 |
193
  | `latency_budget.per_chunk_ms` | 3000 ms |
194
  | `actions` | `monitor` |
 
198
  The rSkill package metadata and README are OpenRAL project files under
199
  Apache-2.0. The wrapped Robometer-4B weights are released under **Apache-2.0**,
200
  permitting commercial use. No `OPENRAL_ALLOW_NONCOMMERCIAL=1` flag is needed.
201
+ The reward model now loads through lerobot's in-tree Robometer module with plain
202
+ `transformers`; no pinned upstream `robometer` runtime package is executed.