Instructions to use chomeed/robometer-4b-lora-square-d0-seg with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use chomeed/robometer-4b-lora-square-d0-seg with Transformers:
# Load model directly from transformers import AutoProcessor, RBM processor = AutoProcessor.from_pretrained("chomeed/robometer-4b-lora-square-d0-seg") model = RBM.from_pretrained("chomeed/robometer-4b-lora-square-d0-seg", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Robometer-4B LoRA β MimicGen square_d0
LoRA fine-tune of robometer/Robometer-4B on
MimicGen square_d0 (nut assembly). Emits, per frame, a progress value in [0,1] and a
success probability.
Task: Pick up the square nut and place it on the peg.
Results β against the zero-shot base
Both models on the same held-out set,
chomeed/mimicgen_square_d0_test_seg_rfm
(n=40: 20 successful, 20 failure). Metrics are cutoff-independent, so the training-target definition
does not leak into the score.
| metric | base Robometer-4B |
this LoRA | |
|---|---|---|---|
ranking_acc β P(success final > failure final) |
0.877 | 0.988 | +13% |
kendall β progress monotonicity vs frame index |
0.567 | 0.774 | +36% |
success_auprc |
0.895 | 0.990 | +11% |
succ_fail_gap β mean final progress, success β failure |
+0.302 | +0.415 | +37% |
pos_acc β successes scored > 0.5 |
0.90 | 0.95 | |
neg_acc β failures scored β€ 0.5 |
0.55 | 0.85 | +55% |
Every metric improves. Ranking, monotonicity and calibration all move together β unlike the
threading counterpart
(..-lora-threading-d0-seg),
where only calibration improved and ranking stayed flat.
Read this as a zero-shot-base comparison, not a finetune-vs-finetune one. A large gain over an un-adapted base is expected; it does not say this recipe beats an alternative finetune. n=40 also means small differences would be noise β these gaps are large enough to be real, but the test set is not big enough to rank close variants.
Both models were cast to bfloat16 for evaluation: the base ships mixed dtype (483 bf16 / 249 fp32 params) and its LayerNorms reject the activations otherwise. Both get identical treatment.
Training
- LoRA r=32, Ξ±=64, dropout=0.05 on all attention + MLP projections
- 1000 steps, batch 8, lr 2e-5, cosine, warmup 0.1, weight decay 0.01; 50m36s on one B200
- loss 0.42 β 0.13; success cutoff 0.95
Data
chomeed/mimicgen_square_d0_train_seg_rfm
β 160 trajectories, 80 successful / 80 failure, balanced by construction.
Failures come from
..._40k_failure_seg:
tail cut at the outcome, approach kept, with the cut point depending on how far the attempt got
(lifted_then_failed β closest approach to the seated pose; failed_grasp β the moment the grasp
failed; never_reached_nut β uncut). Successes are drawn half from
..._40k_success
and half from the expert demos
..._224x224, unsegmented.
Successes are unsegmented because they already end at their outcome, so both classes start at frame 0 and end at the outcome β the framing does not leak the label.
Usage
out = compute_batch_outputs(model, tokenizer, inputs, sample_type="progress",
is_discrete_mode=True, num_bins=10) # MUST be True
progress = np.array(out["progress_pred"][0]) # (T,) in [0,1], monotone
is_discrete_mode=True is required: this model trains with progress_loss_type=discrete, and
decoding with False returns raw per-bin logits (TΓbins values, range ~[-3,5]) instead of
progress. It does not raise β it silently yields plausible but meaningless numbers.
Caveat
save_best could not rank checkpoints (its configured metric names do not match the ones logged for
this dataset), so the published weights are the final step-1000 checkpoint, not a selected best.
- Downloads last month
- 11
Model tree for chomeed/robometer-4b-lora-square-d0-seg
Base model
Qwen/Qwen3-VL-4B-Instruct