Instructions to use pythonsong/smolvla-armnetbench-8task with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use pythonsong/smolvla-armnetbench-8task 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=pythonsong/smolvla-armnetbench-8task \ --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=pythonsong/smolvla-armnetbench-8task - Notebooks
- Google Colab
- Kaggle
SmolVLA fine-tuned on ArmnetBench v0.1 (8 single-arm SO-101 tasks)
Fine-tuned from lerobot/smolvla_base on the
human-teleoperated reference demonstrations of
armnet/armnetbench_v01_lerobot_so101
(revision v1.0).
Data
Only the 400 policy_type == "teleoperated" episodes were used (50 per task × 8 tasks,
120,735 frames, 20 fps) — the other ~2,099 episodes in that dataset are policy rollouts
(ACT/Diffusion/SmolVLA/Ï€0/Ï€0.5/GR00T-N1.7/MolmoAct2), including failures and suboptimal
trajectories, and were excluded to avoid training on incorrect/noisy actions.
Tasks: block_stack, cable_clip, cable_unclip, eye_drops_to_basket,
eye_drops_to_shelf, ring_insert, tool_insert, tool_removal.
Cameras: front (576×1024), top (576×1024), wrist (720×1280), renamed to
observation.images.camera{1,2,3} respectively to match the smolvla_base checkpoint's
expected input keys — pass the same --rename_map at inference/eval time.
Training
- 4× NVIDIA H200,
accelerateDDP (--multi_gpu --num_processes=4, bf16) - Full fine-tune:
freeze_vision_encoder=false,train_expert_only=false batch_size=64per GPU × 4 = 256 effectivesteps=20000(cosine decay,scheduler_warmup_steps=1000,scheduler_decay_steps=20000)- ~42 epochs over the 400-episode set
- Final train loss: 0.65 → 0.013, grad norm stabilized ~0.2
- Wall-clock: ~4h07m
Usage
from lerobot.policies.smolvla.modeling_smolvla import SmolVLAPolicy
policy = SmolVLAPolicy.from_pretrained("<repo_id>")
Trained with LeRobot.
- Downloads last month
- 18
Model tree for pythonsong/smolvla-armnetbench-8task
Base model
lerobot/smolvla_base