Instructions to use GGOSinon/det10-reason-08b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use GGOSinon/det10-reason-08b with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-0.8B") model = PeftModel.from_pretrained(base_model, "GGOSinon/det10-reason-08b") - Notebooks
- Google Colab
- Kaggle
RoboLab det10 β reasoning-then-action policy (0.8B LoRA)
LoRA adapter turning Qwen/Qwen3.5-0.8B into a manipulation policy for
RoboLab / Isaac Sim. Trained by behaviour
cloning on GGOSinon/robolab-det10 with rationales from GGOSinon/robolab-det10-reasoning.
The target states a one-sentence intention before the action. Trained as the paired twin of GGOSinon/det10-direct-08b on identical rows, so the two isolate the effect of reasoning.
Loading
from transformers import AutoModelForImageTextToText, AutoProcessor
from peft import PeftModel
base = "Qwen/Qwen3.5-0.8B"
model = AutoModelForImageTextToText.from_pretrained(base, dtype="bfloat16", device_map="cuda")
model = PeftModel.from_pretrained(model, "GGOSinon/det10-reason-08b")
proc = AutoProcessor.from_pretrained(base)
Or serve it:
vllm serve Qwen/Qwen3.5-0.8B --enable-lora --max-lora-rank 32 \
--lora-modules policy=GGOSinon/det10-reason-08b --limit-mm-per-prompt '{"image": 2}'
Prompt format β this matters
The policy was trained on one exact layout. A mismatch does not raise an
error; the model returns prose or a different schema and it looks like a broken
policy. Two images, 392x221, over-shoulder first then wrist, and
enable_thinking=False.
Instruction: {task instruction}
State: {"tcp_xyz": [x, y, z], "tcp_quat": [w, x, y, z], "jaw_m": 0.08}
Think about what to do next, then return the end-effector displacement in mm relative to the current pose, the end orientation and the jaw state (open/close). Reply as JSON with keys "reasoning", "d_mm", "quat", "jaw".
Expected reply:
{"reasoning":"My open fingertips are above the red fruit; I will ease down onto it.","d_mm":[12.3,-4.5,-8.1],"quat":[0.0,1.0,0.0,0.0],"jaw":"open"}
d_mm is the end-effector displacement in millimetres relative to the
current pose -- not an absolute waypoint. An earlier version of this data used
absolute coordinates and the model learned to echo the input state, scoring
exactly the hold-still baseline while looking healthy by loss.
Measured behaviour
| metric | this adapter | its twin |
|---|---|---|
| held-out position error, greedy | 46.0 mm | 36.3 mm |
| best-of-64 sampled (T=1.0) | 3.7 mm | 5.9 mm |
| jaw accuracy | 97.0% | 97.0% |
| hold-still baseline | 61.9 mm | 61.9 mm |
Closed-loop success on a 4-task RoboLab subset was 0/48 at 12 envs/task with greedy decoding. These policies reach the right vicinity and time grasps correctly but place the gripper ~36-46 mm from the expert, against the few millimetres a grasp needs.
The useful finding is the gap between the two rows. Greedy decoding is 24-40 mm off while the nearest of 64 samples is 3.7-5.9 mm off, so the expert action is inside the policy's sampled support and the failure is mode selection, not missing knowledge. The untrained base model cannot produce a valid action at all (it echoes the input state schema), so that coverage is something the fine-tuning built. This is the regime where RL with an action-distance reward has gradient to work with.
Limitations
- Trained only on successful scripted demonstrations from 88 RoboLab tasks; no real-robot data.
- Per-task depth is uneven -- 32 tasks have 10 episodes, 6 have one.
- Step 0 of every training episode is near-stationary (median 0.36 mm), so the policy emits a sub-millimetre first command. If your controller rejects small commands as no-ops, that is an absorbing state -- disable the guard or span more than one chunk.
- Downloads last month
- 19