LeRobot documentation
SmolVLA
SmolVLA
SmolVLA adalah model fondasi ringan dari Hugging Face untuk robotika. Dirancang agar mudah dihaluskan pada dataset LeRobot, model ini membantu mempercepat pengembangan Anda!
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
Install LeRobot dengan mengikuti Panduan Instalasi kami.
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:
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
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_idadalah repo Hub tempat model hasil fine-tuning di-push.--rename_mapmemetakan nama kamera dataset ke namacamera1,camera2, dancamera3yang diharapkan olehsmolvla_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
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_NAMEGanti --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.