Instructions to use GGOSinon/det10-direct-08b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use GGOSinon/det10-direct-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-direct-08b") - Notebooks
- Google Colab
- Kaggle
RoboLab det10 β direct 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.
The target is the action alone. Trained as the paired twin of GGOSinon/det10-reason-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-direct-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-direct-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}
Return the end-effector displacement in mm relative to the current pose, the end orientation and the jaw state (open/close), as JSON.
Expected reply:
{"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 | 36.3 mm | 46.0 mm |
| best-of-64 sampled (T=1.0) | 5.9 mm | 3.7 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 1/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
- 14