LeRobot documentation

SmolVLA

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SmolVLA

SmolVLA adalah model fondasi ringan dari Hugging Face untuk robotika. Dirancang agar mudah dihaluskan pada dataset LeRobot, model ini membantu mempercepat pengembangan Anda!

SmolVLA architecture.
Gambar 1. SmolVLA menerima sebagai input (i) beberapa tampilan kamera, (ii) keadaan sensorimotor saat ini robot, dan (iii) instruksi bahasa alami, yang dikodekan menjadi fitur kontekstual yang digunakan untuk mengondisikan pakar aksi saat menghasilkan chunk aksi.

Siapkan Lingkungan Anda

  1. Install LeRobot dengan mengikuti Panduan Instalasi kami.

  2. Instal dependensi SmolVLA dengan menjalankan:

    pip install -e ".[smolvla]"

Kumpulkan dataset

SmolVLA adalah model dasar, sehingga fine-tuning pada data Anda sendiri diperlukan untuk kinerja optimal di setup Anda. Kami merekomendasikan merekam sekitar 50 episode tugas Anda sebagai titik awal. Ikuti panduan kami untuk memulai: Merekam Dataset

Dalam dataset Anda, pastikan untuk memiliki cukup demonstrasi untuk setiap variasi (misalnya, posisi kubus di atas meja jika ini adalah tugas pick-place kubus) yang Anda perkenalkan.

Kami merekomendasikan untuk melihat dataset yang ditautkan di bawah ini sebagai referensi yang digunakan dalam makalah SmolVLA:

🔗 SVLA SO100 PickPlace

Dalam dataset ini, kami merekam 50 episode di 5 posisi kubus yang berbeda. Untuk setiap posisi, kami mengumpulkan 10 episode interaksi pick-and-place. Struktur ini, yang mengulang setiap variasi beberapa kali, membantu model melakukan generalisasi dengan lebih baik. Kami mencoba dataset serupa dengan 25 episode, dan jumlahnya tidak cukup sehingga menghasilkan performa yang buruk. Jadi, kualitas dan kuantitas data pasti menjadi kunci. Setelah dataset Anda tersedia di Hub, Anda siap menggunakan skrip finetuning kami untuk menyesuaikan SmolVLA ke aplikasi Anda.

Lakukan finetuning SmolVLA pada data Anda

Gunakan smolvla_base, model 450M kami yang telah dilatih sebelumnya, dan lakukan fine-tuning pada data Anda. Pelatihan model selama 20k langkah akan memakan waktu sekitar ~4 jam pada satu GPU A100. Anda harus menyesuaikan jumlah langkah berdasarkan kinerja dan kasus penggunaan Anda.

Jika Anda tidak memiliki perangkat gpu, Anda dapat melatih menggunakan notebook kami di Google Colab

Lewatkan dataset Anda ke skrip pelatihan menggunakan --dataset.repo_id. Jika Anda ingin menguji instalasi Anda, jalankan perintah di bawah ini di mana kami menggunakan salah satu dataset yang kami kumpulkan untuk SmolVLA Paper. Ganti dengan dataset Anda sendiri untuk melakukan fine-tuning pada data Anda.

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=lerobot/svla_so100_pickplace \
  --policy.repo_id=${HF_USER}/my_smolvla \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --batch_size=64 \
  --steps=20000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --trackio.enable=true
  • --policy.repo_id adalah repo Hub tempat model hasil fine-tuning di-push.
  • --rename_map memetakan nama kamera dataset ke nama camera1, camera2, dan camera3 yang diharapkan oleh smolvla_base. Tanpa parameter ini, pelatihan akan berhenti dengan error ketidakcocokan fitur. Petakan nama kamera Anda sendiri dengan cara yang sama (lihat Rename Map).
You can start with a small batch size and increase it incrementally, if the GPU allows it, as long as loading times remain short.

Fine-tuning adalah sebuah seni. Untuk gambaran lengkap tentang opsi fine-tuning, jalankan

lerobot-train --help

Comparison of SmolVLA across task variations.
Gambar 2: Perbandingan SmolVLA di berbagai variasi tugas. Dari kiri ke kanan: (1) penghitungan pick-place cube, (2) penghitungan pick-place cube, (3) penghitungan pick-place cube di bawah perturbasi, dan (4) generalisasi pada pick-and-place blok lego dengan SO101 dunia nyata.

Evaluasi model yang telah ditala ulang dan jalankan secara real-time

Hal yang sama berlaku saat merekam episode, disarankan agar Anda telah masuk ke HuggingFace Hub. Anda dapat mengikuti langkah-langkah yang sesuai: Rekam dataset. Setelah Anda masuk, Anda dapat menjalankan inferensi di setup Anda dengan melakukan:

lerobot-rollout \
  --strategy.type=base \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_blue_follower_arm \
  --robot.cameras="{ top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}}" \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --task="Grasp a lego block and put it in the bin." \
  --policy.path=${HF_USER}/FINETUNE_MODEL_NAME

Ganti --robot.port, --robot.id, --robot.cameras dan --policy.path dengan port, ID robot, kamera (nama dan resolusi kamera yang sama seperti dalam dataset Anda) serta model yang telah dihaluskan. Sertakan --rename_map yang sama yang Anda gunakan untuk pelatihan, serta deskripsi --task yang sama seperti dalam perekaman dataset Anda.

Flag opsional yang dapat Anda tambahkan ke perintah di atas:

  • RTC (gerakan lebih halus saat inferensi lambat, misalnya pada perangkat berdaya rendah): --inference.type=rtc --inference.rtc.execution_horizon=10 --inference.rtc.max_guidance_weight=10.0
  • Lihat aliran kamera: --display_data=true
  • Hentikan secara otomatis: --duration=60 (dalam detik). Secara default, kebijakan berjalan hingga Anda menekan Ctrl+C.

Untuk merekam episode evaluasi, dengan teleoperator opsional untuk mengatur ulang adegan di antara episode, gunakan --strategy.type=episodic sebagai gantinya. Lihat Policy Deployment untuk semua strategi.

Update on GitHub