LeRobot documentation
🤗 PEFT ile parametre verimli ince ayar
🤗 PEFT ile parametre verimli ince ayar
🤗 PEFT (Parameter-Efficient Fine-Tuning), SmolVLA, π₀ gibi önceden eğitilmiş politikalar dahil olmak üzere büyük önceden eğitilmiş modelleri, modelin tüm parametrelerini eğitmeye gerek kalmadan ve benzer performans elde ederek yeni görevlere verimli bir şekilde uyarlamak için kullanılan bir kütüphanedir.
PEFT desteğini etkinleştirmek için lerobot[peft] isteğe bağlı paketini yükleyin.
Uyarlama için mümkün olan tüm yöntemler hakkında bilgi almak için lütfen 🤗 PEFT belgelerine başvurun.
SmolVLA Eğitimi
Bu bölümde, PEFT ile önceden eğitilmiş bir SmolVLA politikasını libero veri setinde nasıl eğiteceğinizi göstereceğiz.
Kısalık adına yalnızca libero_spatial alt kümesinde eğitim yapıyoruz. Parametrik olarak verimli ince ayar yapmak için lerobot/smolvla_base modelini kullanacağız:
lerobot-train \
--policy.path=lerobot/smolvla_base \
--policy.repo_id=your_hub_name/my_libero_smolvla \
--dataset.repo_id=HuggingFaceVLA/libero \
--policy.output_features=null \
--policy.input_features=null \
--policy.optimizer_lr=1e-3 \
--policy.scheduler_decay_lr=1e-4 \
--env.type=libero \
--env.task=libero_spatial \
--steps=100000 \
--batch_size=32 \
--peft.method_type=LORA \
--peft.r=64 \
--peft.lora_alpha=64Hangi PEFT yönteminin kullanılacağını seçmenizi sağlayan --peft.method_type parametresine dikkat edin. Burada muhtemelen bugüne kadar en popüler ince ayar yöntemi olan LoRA (Low-Rank Adapter) kullanıyoruz. Düşük rütbeli adaptasyon, tam ağırlık matrisi yerine karşılaştırmalı olarak düşük rütbeli bir matrisi ince ayarlamamız anlamına gelir. Bu rütbe --peft.r parametresi ile, LoRA ölçekleme faktörü ise --peft.lora_alpha ile (burada scaling = lora_alpha / r) belirtilebilir. Rütbe ne kadar yüksekse, tam ince ayara o kadar yaklaşırsınız.
Daha fazla parametreye sahip, daha karmaşık yöntemler de mevcuttur. Bunlar henüz desteklenmemektedir; belirli bir PEFT yönteminin desteklenmesini istiyorsanız bir sorun (issue) açmaktan çekinmeyin.
Varsayılan olarak PEFT, SmolVLA'daki LM uzmanının q_proj ve v_proj katmanlarını hedefler. Görevlere bağımlı olma olasılıkları en yüksek olduğu için durum ve eylem projeksiyon matrislerini de hedefler. Farklı katmanları hedeflemeniz gerekiyorsa, hedeflenecek katmanları belirtmek için --peft.target_modules kullanabilirsiniz. Desteklenen girdileri görmek için ilgili PEFT yönteminin dokümantasyonuna başvurabilirsiniz (ör. LoRA'nın target_modules dokümantasyonu). Genellikle sonek listesi veya regex desteklenir. Örneğin, q ve v projeksiyonları yerine lm_expert'in MLP'lerini hedeflemek için şunu kullanın:
--peft.target_modules='(model\.vlm_with_expert\.lm_expert\..*\.(down|gate|up)_proj|.*\.(state_proj|action_in_proj|action_out_proj|action_time_mlp_in|action_time_mlp_out))'Bir katmanı yalnızca uyarlamak yerine tamamen ince ayar yapmanız gerekiyorsa, --peft.full_training_modules parametresine katman soneklerinin bir listesini iletebilirsiniz:
--peft.full_training_modules='["state_proj"]'Öğrenme hızı ve planlanan hedef öğrenme hızı, tam ince ayar için kullanılan öğrenme hızına kıyasla genellikle 10 katına ölçeklendirilebilir (ör. normalde 1e-4, LoRA kullanıldığında 1e-3).
PEFT, parçalı çoklu GPU eğitimleriyle (FSDP2 ve HSDP) de çalışır, bkz. çoklu GPU eğitimi.
Diğer politikalar
Aynı --peft.* bayrakları, herhangi bir önceden eğitilmiş politika için geçerlidir. Bazı politikalar (ör. SmolVLA, π₀, π₀.₅, MolmoAct2) yerleşik varsayılan target_modules ile birlikte gelir, bu nedenle --peft.method_type=LORA yeterlidir. Diğerleri ise --peft.target_modules parametresini açıkça iletmenizi ister; örneğin önerilen hedefleri özel kılavuzunda belgelenen LingBot-VA.
--policy.use_peft=true tek başına, varsayılan ayarlarla --peft.method_type=LORA ile eşdeğerdir.