Instructions to use AmberHyunKIM/smolvla_libero10_task6_dagger with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use AmberHyunKIM/smolvla_libero10_task6_dagger with LeRobot:
# See https://github.com/huggingface/lerobot?tab=readme-ov-file#installation for more details git clone https://github.com/huggingface/lerobot.git cd lerobot pip install -e .[smolvla]
# Launch finetuning on your dataset python lerobot/scripts/train.py \ --policy.path=AmberHyunKIM/smolvla_libero10_task6_dagger \ --dataset.repo_id=lerobot/svla_so101_pickplace \ --batch_size=64 \ --steps=20000 \ --output_dir=outputs/train/my_smolvla \ --job_name=my_smolvla_training \ --policy.device=cuda \ --wandb.enable=true
# Run the policy using the record function python -m lerobot.record \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ # <- Use your port --robot.id=my_blue_follower_arm \ # <- Use your robot id --robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30}}" \ # <- Use your cameras --dataset.single_task="Grasp a lego block and put it in the bin." \ # <- Use the same task description you used in your dataset recording --dataset.repo_id=HF_USER/dataset_name \ # <- This will be the dataset name on HF Hub --dataset.episode_time_s=50 \ --dataset.num_episodes=10 \ --policy.path=AmberHyunKIM/smolvla_libero10_task6_dagger - Notebooks
- Google Colab
- Kaggle
SmolVLA distilled with DAgger from MolmoAct2 (LIBERO-10 task 6)
Measured success: 58.0 % on LIBERO-10 task 6 ("put the white mug on the plate and put the chocolate pudding to the right of the plate"), 50 episodes, seed 1000.
Student SmolVLA (0.45B) trained with DAgger (Ross et al., 2011) using MolmoAct2 (5B) as the expert.
Method
Adds the correction step that plain distillation is missing.
- Collected teacher rollouts (36 successful episodes)
- Ran the distilled student in the environment and saved every episode it visited, including failures (30 episodes, 12 of them failures)
- Asked the teacher to label those student-visited states
- Dataset Aggregation: merged teacher trajectories with the corrected student states
- Retrained from
lerobot/smolvla_baseon the union
| Training data | 66 episodes / 19,691 frames (2.3x the distilled run) |
| Steps | 20,000, batch 8 |
| Wall clock | 39 min train, plus ~50 min collection and labelling |
The failures matter: teacher success trajectories never contain the states where the student actually goes wrong, so a student trained only on them never learns recovery.
Result: +2 pp over plain distillation. Aggregating 2.3x more data, targeted exactly at the student's failure modes, moved 56 % to 58 %.
Evaluation
lerobot-eval, libero_10 task 6, seed 1000, 50 episodes, n_action_steps=10.
| Model | Success |
|---|---|
SmolVLA baseline (lerobot/smolvla_libero) |
48.0 % |
| Distilled | 56.0 % |
| DAgger | 58.0 % |
| Full-VLM training | 58.0 % |
| MolmoAct2 5B (teacher) | 88.0 % |
| X-VLA 0.9B (off-the-shelf, not distilled) | 92 % |
MolmoAct2 was previously listed here as 100 %. That number came from a 2-episode sample (2/2) inside a suite-wide run, not from this 50-episode protocol. Re-measured under the same condition as the other rows: 88.0 % (44/50).
Honest summary: this did not work
These checkpoints are negative results, published so the attempt is documented.
- Three different levers were pulled and all plateaued at 58 %
- changing the data source (teacher rollouts): +8 pp
- growing the data 2.3x via DAgger: +2 pp
- growing trainable parameters ~68x (VLM unfrozen): +0 pp
- An off-the-shelf X-VLA (0.9B) scores 92 % on the same task with no distillation at all
- The remaining explanation is architectural. SmolVLA is thinned three ways (half the VLM layers, 64 visual tokens per frame, 0.75x expert width), and none of that is reachable by training
If you want performance on this benchmark, use X-VLA or MolmoAct2 instead. These checkpoints are useful for studying what distillation does and does not fix.
Caveats
- Single task, 50 episodes. 48 / 56 / 58 % differ by a few successful rollouts and are not statistically separable. Treat the ordering as a direction, not a result.
- Teacher ran in bf16 + AMP (14.2 GB VRAM); students in fp32 (2.3 GB).
- Only the teacher's final 7-D action was transferred. No output distribution, no intermediate features, no chain-of-thought. This is the shallowest form of distillation and likely a reason the gains were small.
Reproduce
Scripts, raw measurements and the full write-up:
vla_collect.py, collect_teacher.py, collect_student.py, relabel_student.py,
merge_datasets.py in the experiment repository.
export MUJOCO_GL=egl PYOPENGL_PLATFORM=egl
lerobot-eval \
--policy.path=AmberHyunKIM/smolvla_libero10_task6_dagger \
--policy.device=cuda --policy.n_action_steps=10 \
--rename_map='{{"observation.images.image":"observation.images.camera1","observation.images.image2":"observation.images.camera2"}}' \
--env.type=libero --env.task=libero_10 --env.task_ids='[6]' --env.episode_length=600 \
--eval.batch_size=1 --eval.n_episodes=50 --seed=1000
- Downloads last month
- 25
Model tree for AmberHyunKIM/smolvla_libero10_task6_dagger
Base model
HuggingFaceTB/SmolLM2-360M