LeRobot documentation
SmolVLA
SmolVLA
SmolVLA, Hugging Face'in robotik için hafif temel modelidir. LeRobot veri kümelerinde kolayca ince ayar yapılması için tasarlanmıştır ve geliştirme sürecinizi hızlandırmanıza yardımcı olur!
Şekil 1. SmolVLA girdi olarak (i) birden fazla kamera görünümünü, (ii) robotun mevcut sensör-motor durumunu ve (iii) bir eylem parçası üretirken eylem uzmanını koşullandırmak için bağlamsal özelliklere kodlanan doğal dil talimatını alır.
Ortamınızı Yapılandırın
LeRobot'u Yükleme Kılavuzumuz’u takip ederek yükleyin.
SmolVLA bağımlılıklarını yüklemek için şunu çalıştırın:
pip install -e ".[smolvla]"
Bir veri seti toplayın
SmolVLA bir temel modeldir, bu nedenle kurulumunuzda en iyi performansı elde etmek için kendi verileriniz üzerinde ince ayar yapmanız gerekir. Başlangıç noktası olarak görevinizin ~50 bölümünü kaydetmenizi öneririz. Başlamak için rehberimizi izleyin: Veri Seti Kaydetme
Veri setinizde, tanıttığınız her varyasyon için (örneğin küp alma-koyma görevinde masadaki küpün konumu) yeterli sayıda gösterim olduğundan emin olun.
SmolVLA makalesi'nde kullanılan ve referans olarak aşağıda bağlantısı verilen veri setine göz atmanızı öneririz:
Bu veri setinde, 5 farklı küp konumu üzerinden 50 epizod kaydettik. Her konum için 10 epizodluk pick-and-place etkileşimleri topladık. Her varyasyonu birkaç kez tekrarlayan bu yapı, modelin daha iyi genelleştirmesine yardımcı oldu. 25 epizodluk benzer bir veri seti denedik, ancak bu yeterli olmadı ve kötü bir performansla sonuçlandı. Dolayısıyla, veri kalitesi ve miktarı kesinlikle kritik bir faktördür. Veri setiniz Hub üzerinde kullanılabilir hale geldikten sonra, SmolVLA'yı uygulamanıza uyarlamak için ince ayar (finetuning) scriptimizi kullanmaya hazırsınız demektir.
SmolVLA'yı kendi verilerinizle ince ayarlayın
Önceden eğitilmiş 450M parametreli modelimiz olan smolvla_base modelini kullanın ve kendi verileriniz üzerinde ince ayar yapın.
Modeli 20k adım boyunca eğitmek, tek bir A100 GPU üzerinde yaklaşık 4 saat sürer. Adım sayısını performansa ve kullanım senaryonuza göre ayarlamanız gerekir.
Bir gpu cihazınız yoksa, üzerindeki defterimizi kullanarak eğitim yapabilirsiniz.
Veri setinizi eğitim betiğine --dataset.repo_id kullanarak iletin. Kurulumunuzu test etmek isterseniz, SmolVLA Paper için topladığımız veri setlerinden birini kullandığımız aşağıdaki komutu çalıştırın. Kendi verileriniz üzerinde ince ayar yapmak için bunu kendi veri setinizle değiştirin.
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, ince ayarı yapılan modelin gönderildiği Hub deposudur.--rename_map, veri setinin kamera adlarınısmolvla_base'in beklediğicamera1,camera2vecamera3adlarına eşler. Bu parametre olmadan eğitim, özellik uyumsuzluğu hatasıyla durur. Kendi kamera adlarınızı da aynı şekilde eşleyin (bkz. 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.
İnce ayar bir sanattır. İnce ayar seçeneklerinin tam bir genel bakışını almak için
lerobot-train --help
Şekil 2: Görev varyasyonları arasında SmolVLA karşılaştırması. Soldan sağa:
(1) pick-place küp sayma, (2) pick-place küp sayma, (3) perturbasyonlar altında pick-place
küp sayma ve (4) gerçek dünya SO101 ile lego bloğunun pick-and-place işlemi üzerinde genelleme.
İnce ayarlanmış modeli değerlendirin ve gerçek zamanlı olarak çalıştırın
Bir bölüm kaydederken de HuggingFace Hub'a giriş yapmış olmanız önerilir. İlgili adımları izleyebilirsiniz: Bir veri seti kaydet. Giriş yaptıktan sonra, aşağıdaki işlemi yaparak kurulumunuzda çıkarım (inference) çalıştırabilirsiniz:
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_NAMEKendi port, robot kimliği, kameralar (veri setinizdeki aynı kamera adları ve çözünürlük) ve ince ayarlanmış model ile --robot.port, --robot.id, --robot.cameras ve --policy.path değerlerini değiştirin. Eğitimde kullandığınız aynı --rename_map değerini ve veri seti kaydınızdaki aynı --task açıklamasını geçin.
Yukarıdaki komuta ekleyebileceğiniz isteğe bağlı bayraklar:
- RTC (inference yavaş olduğunda daha akıcı hareket, örn. düşük güçlü donanımlarda):
--inference.type=rtc --inference.rtc.execution_horizon=10 --inference.rtc.max_guidance_weight=10.0 - Kamera akışını görüntüle:
--display_data=true - Otomatik olarak durdur:
--duration=60(saniye cinsinden). Varsayılan olarak politika, Ctrl+C tuşlarına basılana kadar çalışır.
Değerlendirme bölümlerini kaydetmek için, bunların arasında sahneyi sıfırlamak üzere isteğe bağlı bir teleoperatör kullanmak için bunun yerine --strategy.type=episodic kullanın. Tüm stratejiler için Policy Deployment bölümüne bakın.