LoRA (Low-Rank Adaptation), büyük dil modellerini (LLM) verimli bir şekilde ince ayarlamak için kullanılan popüler bir yöntemdir. Tam fine-tuning yerine modele az sayıda parametre ekleyerek çalışan LoRA, hem bellek hem de zaman açısından büyük tasarruf sağlar. Bu yazıda LoRA ile fine-tuning yaparken dikkat edilmesi gereken pratik ipuçlarını ve adım adım bir kontrol listesini bulacaksınız.
LoRA Nedir ve Neden Kullanılır?
LoRA, orijinal model ağırlıklarını dondurup, her katmana düşük ranklı matrisler ekleyerek çalışır. Bu sayede eğitilebilir parametre sayısı büyük ölçüde azalır. Özellikle büyük modeller (7B, 13B, 70B gibi) için idealdir. LoRA'nın avantajları arasında daha az GPU belleği ihtiyacı, daha hızlı eğitim ve modelin orijinal yeteneklerini koruması sayılabilir. Ayrıca, LoRA ağırlıkları kolayca saklanabilir ve farklı görevler için birden çok LoRA adaptörü arasında geçiş yapılabilir. Fine-tuning yaklaşımları arasında LoRA, özellikle kaynak kısıtlaması olan ekipler için öne çıkar. Daha detaylı bir karşılaştırma için Fine-Tuning vs RAG yazımıza göz atabilirsiniz.
LoRA ile Fine-Tuning İçin Pratik İpuçları
Aşağıda LoRA kullanırken dikkat edilmesi gereken en önemli noktaları sıralıyoruz.
- Rank (r) seçimi: Düşük rank (ör. 8-16) genellikle yeterlidir, ancak veri setinize bağlı olarak 32 veya 64 de denenebilir. Rank arttıkça model kapasitesi artar ama bellek kullanımı da yükselir.
- Alpha (lora_alpha) değeri: Genellikle rank'ın iki katı olarak ayarlanır (ör. r=8, alpha=16). Bu, LoRA ağırlıklarının skala faktörüdür.
- Hedef modüller: Çoğu uygulamada sadece query ve value projeksiyonları yeterlidir. Daha karmaşık görevler için tüm attention katmanları dahil edilebilir.
- Dropout ekleyin: Özellikle küçük veri setlerinde overfitting'i önlemek için LoRA dropout (ör. 0.05-0.1) kullanılmalıdır.
- Optimizer seçimi: AdamW en yaygın kullanılan optimizerdır. Öğrenme oranını tam fine-tuning'e göre daha yüksek (ör. 1e-4) başlatıp, scheduler ile azaltabilirsiniz.
- Veri seti kalitesi: LoRA, veri setinin kalitesine duyarlıdır. 100-1000 örnek arası yeterli olabilir, ancak tutarlı ve temiz veri kullanmak çok önemlidir. Veri artırma teknikleri için Veri Artırma Teknikleri yazımıza bakın.
- Batch size: Mümkün olduğunca büyük batch size kullanmaya çalışın, ancak GPU belleğiniz yetiyorsa. Gradient accumulation ile efektif batch size'ı artırabilirsiniz.
Adım Adım LoRA Fine-Tuning Kontrol Listesi
Bu kontrol listesi, LoRA ile fine-tuning sürecinizi planlamanıza yardımcı olacak.
- 1. Model seçimi: Kullanacağınız temel modeli belirleyin (ör. Llama 2, Mistral, GPT-J). Modelin LoRA desteklediğinden emin olun.
- 2. Ortam hazırlığı: Python, PyTorch, Transformers, PEFT ve bitsandbytes kütüphanelerini kurun. GPU erişiminizi kontrol edin.
- 3. Veri seti hazırlama: Verilerinizi eğitim ve doğrulama olarak ayırın. Her örneği modelin beklediği formata dönüştürün (ör. şablon: "Soru: ...\nCevap: ...").
- 4. Modeli yükleme: Modeli 4-bit veya 8-bit niceleme ile yükleyerek bellek kullanımını azaltın. bitsandbytes ile QLoRA kullanmayı düşünün.
- 5. LoRA konfigürasyonu: PEFT kütüphanesi ile LoraConfig oluşturun. r, alpha, dropout, target_modules parametrelerini ayarlayın.
- 6. Eğitim parametreleri: TrainingArguments ile çıktı dizini, öğrenme oranı, batch size, epoch sayısı, kaydetme adımları gibi parametreleri belirleyin. Deneylerinizi takip etmek için MLflow ile Deney Takibi yazımızdaki önerileri kullanabilirsiniz.
- 7. Eğitimi başlatma: Trainer veya SFTTrainer ile eğitimi başlatın. Eğitim sırasında loss değerini izleyin.
- 8. Modeli kaydetme: Eğitim sonunda LoRA adaptör ağırlıklarını kaydedin. Tam modeli değil, sadece adaptörü saklayın.
- 9. Değerlendirme: Doğrulama setinde modeli test edin. LoRA adaptörünü yükleyip çıktıları kontrol edin.
- 10. Dağıtım: Adaptör ağırlıklarını model reponuzla birlikte dağıtın. Kullanıcılar adaptörü temel modele ekleyerek kullanabilir.
Sık Yapılan Hatalar ve Çözümleri
- Yanlış rank seçimi: Çok düşük rank (r=1-2) modelin öğrenme kapasitesini sınırlayabilir; çok yüksek rank (r=256+) ise belleği şişirebilir. Orta yol: 8-16.
- Öğrenme oranını düşük ayarlama: LoRA ile öğrenme oranı genellikle 1e-4 civarında başlatılmalıdır. Çok düşük oran (1e-5) yakınsamayı yavaşlatır.
- Veri seti formatını uygun hazırlamamak: Her model farklı bir prompt formatı bekler. Tokenizer'ın eos token'ını eklemeyi unutmayın.
- Eğitim süresini kısa tutmak: LoRA ile 1-3 epoch genellikle yeterlidir, ancak veri setinize bağlı olarak daha fazla epoch gerekebilir. Early stopping kullanın.
LoRA, fine-tuning sürecini hem ekonomik hem de erişilebilir kılan güçlü bir tekniktir. Yukarıdaki ipuçları ve kontrol listesi ile ilk LoRA fine-tuning deneyiminizi başarıyla gerçekleştirebilirsiniz. Daha ileri düzey konfigürasyonlar için hiperparametre optimizasyonu yöntemlerini de inceleyebilirsiniz: Hiperparametre Optimizasyonu yazımız size yol gösterecektir.
Sık Sorulan Sorular
LoRA fine-tuning için ne kadar veri gerekir?
LoRA genellikle 100-1000 arası kaliteli örnekle iyi sonuç verir. Veri seti ne kadar temiz ve göreve özgü olursa, o kadar az veriyle etkili ince ayar yapılabilir.
LoRA ile tam fine-tuning arasındaki fark nedir?
Tam fine-tuning tüm model ağırlıklarını güncellerken, LoRA sadece eklenen düşük ranklı matrisleri eğitir. LoRA çok daha az bellek ve zaman gerektirir, ayrıca orijinal model ağırlıklarını korur.
LoRA hangi modellerle kullanılabilir?
LoRA, Transformers mimarisine sahip çoğu dil modeliyle (Llama, Mistral, GPT-2, BERT vb.) uyumludur. PEFT kütüphanesi sayesinde birçok model desteklenir.
LoRA adaptörlerini nasıl dağıtabilirim?
Eğitim sonunda elde ettiğiniz .bin veya .safetensors dosyasını temel modelle birlikte yükleyerek kullanabilirsiniz. Hugging Face'e yükleyip pipeline ile kolayca dağıtabilirsiniz.






