Views
No views yet
lerobot/smolvla_base on the
danilodjor/SO101-eval2-merged-25prompts
dataset, trained jointly with an auxiliary 3-way "slot" classifier that reads off
SmolVLA's cross-modal prefix representation.lerobot/smolvla_base (vision-language-action, flow-matching action expert).colour, ordinal, relative, negation).total = action_loss + slot_loss_weight * slot_loss
with slot_loss_weight = [0.5].allclose, atol=1e-5). image + instruction + state
│
▼
┌──────────────────────┐
│ SmolVLA VLM trunk │ ← updated by BOTH losses
└──────────────────────┘
│ │
prefix_out suffix_out
│ │
▼ ▼
┌────────────┐ ┌────────────────┐
│ slot head │ │ action expert │ ← updated by action_loss
│ (aux only) │ │ (flow matching)│
└────────────┘ └────────────────┘
3-way CE action chunk
(train only, (kept at
dropped at infer) inference)Linear(hidden → 256) → GELU → Dropout → Linear(256 → 3))
applied to a mean-pooled prefix_out over the valid (image + text + state) tokens.| Component | action_loss | slot_loss |
|---|---|---|
| VLM trunk (shared) | ✅ | ✅ |
| Action expert | ✅ | ❌ |
| Slot head MLP | ❌ | ✅ |
| Hyperparameter | Value |
|---|---|
| Base policy | lerobot/smolvla_base |
| Optimizer | AdamW |
| Learning rate | 1e-4 |
| Weight decay | 0.01 |
| Grad clip | 10.0 |
| Batch size | 64 |
| Steps | 60 000 |
| Slot-loss weight | 0.5 |
| Aux hidden dim | 256 |
| Aux dropout | 0.1 |
| Seed | 1000 |
| Precision | torch.amp.autocast |
| Hardware | [single GPU — e.g. 1× H100] |
| Wall time | [fill in] |
| Weighted sampler | [yes/no] |
meta/episode_target_slots.parquet. Task families
(by task_index):colour 0–2 · ordinal 3–14 · relative 15–18, 25, 26 · negation 19–24.1from lerobot.policies.factory import make_policy
2from lerobot.configs.policies import PreTrainedConfig
3
4cfg = PreTrainedConfig.from_pretrained("danilodjor/<this-repo>")
5policy = make_policy(cfg=cfg, ds_meta=...) # standard lerobot loading
6actions = policy.predict_action_chunk(batch)
7
8For closed-loop rollout on hardware, use the standard lerobot-record CLI.
9
10If you also want to inspect the auxiliary slot predictions, load the aux.pt
11sidecar with the wrapper from
12euler_scripts/smolvla-aux-head/src/aux_head.py.
13
14Files in this repository
15
16- config.json, model.safetensors, processor configs — standard SmolVLA checkpoint.
17- aux.pt (optional) — slot-head weights + optimizer state + training args, for
18reproducibility and analysis only. Not loaded at inference.
19
20Limitations and biases
21
22- Trained on a single tabletop scene with a fixed camera; expect degradation under
23lighting / viewpoint / object shifts.
24- The 3-way slot vocabulary is specific to this dataset's task structure and not
25meaningful outside it.
26- Auxiliary supervision reshapes the shared trunk; the resulting weights are not
27identical to a vanilla SmolVLA fine-tune even though the loading path is.