Instructions to use makermods/smolvla_2cam_200ep_blue_cube_orange_tray with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use makermods/smolvla_2cam_200ep_blue_cube_orange_tray 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=makermods/smolvla_2cam_200ep_blue_cube_orange_tray \ --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=makermods/smolvla_2cam_200ep_blue_cube_orange_tray - Notebooks
- Google Colab
- Kaggle
smolvla_2cam_200ep_blue_cube_orange_tray
SmolVLA fine-tuned from lerobot/smolvla_base
on makermods/2cam_200ep_blue_cube_orange_tray
— an SO-101 (6-DoF) pick-and-place: "pick up blue cube and place in orange tray".
The two-camera arm of a controlled A/B against
makermods/smolvla_3cam_200ep_blue_cube_orange_tray.
Same 200 episodes, same 38,975 frames, identical hyperparameters and seed; the only
difference is the top camera, removed from the dataset. Any behavioural difference is
attributable to camera count alone.
Cameras
| key | resolution |
|---|---|
observation.images.front |
480x640 |
observation.images.wrist |
480x640 |
No --rename_map is needed at inference — feed front/wrist directly. Training used a
base pre-declared with these names rather than the stock camera1/2/3 placeholders, so every
checkpoint carries real mount names and an empty rename map. (This matters: lerobot-eval,
lerobot-rollout and the async policy server all override a checkpoint's saved rename map
with their own, which defaults to empty, so a checkpoint left on placeholder keys fails there.)
Training
| steps | 20,000 (batch 64 → 32.8 epochs over 38,975 frames) |
| optimizer | AdamW, lr 1e-4, betas (0.9, 0.95), wd 1e-10, grad clip 10 |
| schedule | cosine, 1,000 warmup → 2.5e-6 at step 20,000 |
| final loss | 0.059 (grad norm 0.95) |
| trainable | 100M of 450M — frozen vision encoder, action expert only |
| hardware | RTX 4090, bf16 AMP, 14.4 GB, 2h56m (vs 4.5 h and 19.9 GB for the 3-cam arm) |
checkpoints/<step>/ holds every 1,000-step checkpoint, git-tagged by step, loadable with
--policy.pretrained_revision=<step>.
- Downloads last month
- 9