smolvla_phi_cubcyl_lang_3cam

SmolVLA fine-tuned from lerobot/smolvla_base by Ξ¦ (Physical Hardware Intelligence), Northeastern University Silicon Valley.

This is the 4k-step run. Its sibling is Parv-09/smolvla_phi_cubcyl_lang_3cam_20k. Same data, same seed, different training length β€” see the comparison below.

Best checkpoint in this repo: 001500 (eval_loss 0.1494).

🚨 Read before running a rollout

1. You must pass one of the six instructions, verbatim. This model is language-conditioned: the instruction selects the behaviour. LeLab's task field defaults to an EMPTY string and does not auto-fill, so a blank task is off-distribution for everything the model learned.

pick up the red cube and place it in the cardboard box
pick up the red cube and place it in the white bin
pick up the white cube and place it in the cardboard box
pick up the white cube and place it in the white bin
pick up the yellow cylinder and place it in the cardboard box
pick up the yellow cylinder and place it in the white bin

2. Camera order is baked in. smolvla_base was pretrained on camera1/2/3, and make_policy does not re-derive feature names when a pretrained path is set. Training used an explicit rename, stored in policy_preprocessor.json and applied automatically:

dataset key policy key
observation.images.wrist observation.images.camera1
observation.images.front observation.images.camera2
observation.images.top observation.images.camera3

Physically reassigning cameras silently feeds the model the wrong views.

Held-out loss

eval_split=0.1 holds out 12 episodes, 2 per instruction, leaving 108 train / 60,281 frames.

| step | 500 | 1000 | 1500 | 2000 | 2500 | 3000 | 3500 | 4000 | |---|---|---|---|---|---|---|---|---|| | eval_loss | 0.1651 | 0.1542 | 0.1494 | 0.1525 | 0.1564 | 0.1537 | 0.1589 | 0.1565 |

The 4k vs 20k comparison

4k run 20k run
epochs 4.25 21.23
best checkpoint 001500 002500
best eval_loss 0.1494 0.1659
final eval_loss 0.1565 0.3444
wall clock (H200) 37m 2h32m

The 20k run follows the documented SmolVLA recipe and overfits monotonically from its first measurement: held-out loss rises 0.1659 β†’ 0.3444 while train loss falls 14x (0.324 β†’ 0.023). That recipe assumes ~50 episodes of one task; this dataset saturates in about 2 epochs. The 4k run anneals properly over its own length and wins.

⚠️ Note the two runs are not the same LR schedule. Both configs record warmup 1000 / decay 20000, but LeRobot auto-rescales whenever steps < num_decay_steps, so the 4k run actually ran ~200 warmup with full decay by step 4000. The 4k run is not a prefix of the 20k run.

Training

Base lerobot/smolvla_base, 450M
Trainable 99.9M of 450M (train_expert_only, freeze_vision_encoder)
Dataset BrutalCaesar/phi_so101_cubes_cylinder_lang_v1 β€” 120 eps, 66,873 frames, 30 fps, 6 instructions
batch / steps 64 / 4000
lr / betas / wd / grad clip 1e-4 / [0.9, 0.95] / 1e-10 / 10.0
chunk_size / n_action_steps 50 / 50
denoising steps (inference) 10
image resize 512x512 padded Β· VLM layers 16
seed 1000

Use with LeLab

Import the bare repo id and every checkpoint appears in the dropdown:

Parv-09/smolvla_phi_cubcyl_lang_3cam

Or pin one directly:

Parv-09/smolvla_phi_cubcyl_lang_3cam@checkpoints/001500

Caveats

  • No scored rollouts yet. These are held-out losses, not success rates.
  • Not comparable to Ξ¦'s ACT numbers: ACT's eval_loss is pure L1 with the CVAE latent zeroed; this is a flow-matching regression loss on a different split.
  • The eval set is 12 episodes, so differences under ~0.005 are inside the noise. The curve here is non-monotonic, which is why 1500-2000 should be treated as a basin, not a sharp optimum.
  • Inference latency on Apple Silicon is unmeasured.

Links

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading