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, 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!

SmolVLA architecture.
Ş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

  1. LeRobot'u Yükleme Kılavuzumuz’u takip ederek yükleyin.

  2. 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:

🔗 SVLA SO100 PickPlace

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, Google Colab ü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ği camera1, camera2 ve camera3 adları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

Comparison of SmolVLA across task variations.
Ş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_NAME

Kendi 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.

Update on GitHub