MolmoBot-Pi0 — DROID-toys, absolute joint, r64 LoRA (merged)
Whole-model rank-64 LoRA fine-tune of
MolmoBot-Pi0-DROID on
shrg7/droid-toys, with
absolute joint-position action targets.
The LoRA has already been merged into the base weights. The uploaded
model.safetensors is flat (777 tensors, identical key set to the full-FT
counterpart) and loads directly into a plain PI0Pytorch — no PEFT, no adapter
folding needed at load time.
Checkpoint
- Step 3500,
val_action_loss = 0.0274 - Merged with
scripts/merge_pi0_lora.py(foldslora_B @ lora_A * alpha/r, α/r = 128/64 = 2.0; 333 modules folded) assets/holds the norm stats;metadata.ptthe run metadata- Optimizer state is not included (inference/eval only, no resume)
Training
| Config | molmobot_pi0_lerobot_droid_absjoint |
| Dataset | shrg7/droid-toys (LeRobot v3.0) — 31 episodes / 6,952 frames @15fps |
| Action repr | joint_absolute — targets are future absolute joint positions q[t+1], 8-dim (7 arm + gripper) |
| Action horizon | 16 |
| Cameras | exterior_1_left (exo) + wrist_left, 224×224 resize-with-pad |
| LoRA | r=64, α=128, dropout 0.05, targets q/k/v/o/gate/up/down_proj across the VLM + action expert |
| Trainable | 118,112,256 params (3.26% of 3.62B); vision_tower frozen |
| Batch | 32, 1× NVIDIA L40 |
| LR | 5e-5 constant (300-step warmup; peak_lr == decay_lr, so the cosine is flat) |
| Steps | 3,500 of a planned 8,000 |
Validation curve
| step | val_action_loss |
|---|---|
| 2000 | 0.0331 |
| 2500 | 0.0313 |
| 3000 | 0.0273 |
| 3500 | 0.0274 |
Caveats
This checkpoint is under-trained: the run was cut short by a wall-clock limit at 3,500 of 8,000 steps, with the loss curve still descending steeply.
Do not read the gap against the full-FT checkpoint
(MolmoBot-Pi0-DROID-toys-absjoint-fullft,
val 0.0079) as a LoRA-vs-full-FT result. That run completed its full schedule at
4× the effective batch; the two are not comparable at this point in training.