robo-jev 2B — v0.12

A fast, single-pass 2B System 1 for robots' physical judgment.

Physical judgment on robo-jev's benchmark of held-out situations: robo-jev v0.12 (2B) 0.44, TypeSafe Jev 0.28, Liquid d1 0.17, Microsoft-Decision-1 0.04, Together Tev1 4B 0.03, OpenAI GPT-6 Luna Decisions −0.02, untrained Qwen3.5-2B −0.15, Upstage Solar Decide −0.15

robo-jev reads a short text of what a robot senses and answers the questions that matter in the moment — will the glass tip if I brake now? does the person reach my path first? did the part seat? — with a probability for every answer.

This repository holds the merged weights: Qwen3.5-2B with the robo-jev v0.12 LoRA adapter merged in, saved in bfloat16 as a text-only Qwen3_5ForCausalLM (the base's vision tower is not part of robo-jev and is left out). The adapter alone is at Steerix-org/robo-jev-2b-lora.

Benchmark

Model Physical judgment ↑ General reading (BoolQ + MultiNLI) ↑
robo-jev v0.12 · 2B 0.44 0.75
TypeSafe Jev 0.28 0.91
Liquid d1 0.17 0.93
Microsoft-Decision-1 0.04 0.92
Together Tev1 4B 0.03 0.90
OpenAI GPT-6 Luna Decisions −0.02 ¹ 0.86
Upstage Solar Decide −0.15 0.86
Qwen3.5-2B, untrained −0.15 0.74

Physical judgment is skill against always answering 50 % (0 = a coin flip, 1 = perfect) on robo-jev's physical-judgment benchmark: 1,100 held-out situations — wordings, value ranges and combinations of phenomena the model never saw in training. The decision models were asked through the OpenRouter Decisions API. ¹ It declined about a fifth of the physical-judgment requests; its score covers the rest.

Why it matters

  • Fast. One forward pass per question — no sampling, no reasoning tokens. On one L4 GPU a short request answers in about 50 ms, a dozen questions in about 0.1 s.
  • Small. 2B parameters: it runs beside a robot's planner on a single small GPU.
  • Reads the numbers. It follows numeric rules stated in the request — thresholds, ranges, multi-constraint choices among up to 20 options: 77 % right on a held-out numeric-rule test, against 39 % for the untrained base.
  • Follows stated rules. Priority rules, next-in-sequence picks, step sizes and long near-miss lists written into the request: 79 % right on a held-out rules test, against 28 % for the untrained base.
  • Agrees with a large reference model on real bench requests. On requests recorded from robo-jev.dev benchmark runs, it makes the same decision as a large open reference model 68 % of the time (the same model labelled part of its training data), against 52 % for v0.11 and 48 % for the untrained base.
  • Acts when the plan says act. On fresh robojev-style requests whose planner recommends an action, it never falls back to a do-nothing option (0 of 60), against 20 % for v0.11.
  • Drop-in. The Decisions API's request shape — a state text and up to 12 questions — and a probability for every answer.

Quick usage

robo_jev_decide.py in this repo builds robo-jev's prompt and reads its answer; it needs only transformers.

pip install torch "transformers>=5.17" 
hf download Steerix-org/robo-jev-2b robo_jev_decide.py --local-dir .
python robo_jev_decide.py --model Steerix-org/robo-jev-2b --request request.json      # prints the answers as JSON
from robo_jev_decide import load

model = load("Steerix-org/robo-jev-2b")   # GPU if available, bfloat16

state = """You are a delivery robot (wheeled base) in a busy café, carrying a tray to table 7.
- Your speed: 1.1 m/s, driving straight down the aisle between tables.
- On the tray: one tall glass of iced latte, open top, about three-quarters full (camera estimate).
- An adult customer stepped into the aisle 1.6 m ahead of you, 0.4 s ago (lidar).
- The customer is facing the counter and has not looked at you.
- Your braking: gentle 1.0 m/s^2, moderate 1.8 m/s^2, hard 3.0 m/s^2; reaction time 0.2 s; body radius 0.32 m.
- Two chairs are pushed out at the next table (not in your path). Music is playing.
- Planner recommendation: stop_moderate."""

questions = {
    "action": {"type": "choice", "instructions": "What should the robot do now?", "criteria": {
        "continue": "Keep going at the current speed (1.1 m/s).",
        "slow_half": "Slow to about half speed (0.55 m/s) and keep going.",
        "stop_gentle": "Stop with gentle braking (about 1.0 m/s^2).",
        "stop_moderate": "Stop with moderate braking (about 1.8 m/s^2).",
        "stop_hard": "Stop with hard braking (about 3.0 m/s^2)."}},
    "contact_if_continue": {"type": "noul",
        "instructions": "If the robot keeps its current speed, will it touch the customer within the next 3 seconds?"},
    "spill_if_hard": {"type": "noul", "instructions": "If the robot brakes hard (3.0 m/s^2) now, will the latte spill?"},
    "risk_gentle": {"type": "score",
        "instructions": "How likely is it that the robot touches the customer if it stops with gentle braking?",
        "criteria": ["0 = it certainly will not touch the customer", "1 = it certainly will touch the customer"]},
}

answers = model.decide(state, questions)   # {"action": {"type": "choice", "choice": …, "probabilities": {…}}, …}

The answers for this example (the merged weights, bfloat16, one GPU, orders="single"; rounded to three decimals here):

{
 "action": {"type": "choice", "choice": "stop_moderate", "probabilities": {"continue": 0.001, "slow_half": 0.001, "stop_gentle": 0.065, "stop_moderate": 0.82, "stop_hard": 0.113}},
 "contact_if_continue": {"type": "noul", "noul": 0.828},
 "spill_if_hard": {"type": "noul", "noul": 0.514},
 "risk_gentle": {"type": "score", "score": 0.677, "probabilities": {"0.0": 0.086, "0.1": 0.036, "0.2": 0.033, "0.3": 0.04, "0.4": 0.046, "0.5": 0.049, "0.6": 0.072, "0.7": 0.079, "0.8": 0.162, "0.9": 0.135, "1.0": 0.262}}
}

Limits: choice questions with 2–255 options (most accurate on shorter lists); 1–12 questions per request; state text ≤ 16,000 characters. With the robo-jev package: RoboJev.from_pretrained("Steerix-org/robo-jev-2b").decide(state, questions).

Research preview, tuned on simulated physical judgment; less reliable outside simulation, and not a safety system. It often follows the planner's recommendation even when that recommendation is wrong.

Links

Downloads last month
159
Safetensors
Model size
2B params
Tensor type
BF16
·
Video Preview
loading

Model tree for Steerix-org/robo-jev-2b

Finetuned
Qwen/Qwen3.5-2B
Finetuned
(624)
this model