CoolFace
Modelpublic

pythonsong/smolvla-armnetbench-8task

sourceHugging Faceapache-2.0updated 2d agoView on Hugging Face
0likes13downloads
Model Card

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, accelerate DDP (--multi_gpu --num_processes=4, bf16)
  • —Full fine-tune: freeze_vision_encoder=false, train_expert_only=false
  • —batch_size=64 per GPU × 4 = 256 effective
  • —steps=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

python
from lerobot.policies.smolvla.modeling_smolvla import SmolVLAPolicy

policy = SmolVLAPolicy.from_pretrained("<repo_id>")

Trained with LeRobot.