Büyük dil modelleri (LLM) geniş yeteneklere sahip olsa da özel bir görev veya sektör için ince ayar (fine-tuning) yapılmadığında optimum performansı veremez. Geleneksel fine-tuning, modelin tüm katmanlarını günceller ve yüksek bellek/işlem gücü gerektirir. LoRA (Low-Rank Adaptation) ise bu süreci devrimleştirir: orijinal ağırlıkları dondurup düşük ranklı matrisler ekleyerek çok daha az parametreyle eğitim yapar. Bu yöntem sayesinde 7B parametreli bir modeli tek bir GPU'da dakikalar içinde özelleştirebilirsiniz.
LoRA Nedir ve Neden Kullanmalısınız?
LoRA, 2021'de Microsoft tarafından önerilen bir fine-tuning tekniğidir. Temel fikir: önceden eğitilmiş modelin ağırlıklarına düşük ranklı (low-rank) güncellemeler eklemek. Orijinal ağırlıklar sabit kalır, sadece eklenen matrisler eğitilir. Bu sayede eğitilebilir parametre sayısı %0.1–1 seviyesine iner, bellek kullanımı dramatik düşer ve overfitting riski azalır.
LoRA'nın Avantajları
- Bellek Verimliliği: Tüm modeli yüklemek yerine sadece küçük adaptör katmanlarını eğitirsiniz. Örneğin, 7B parametreli bir modelde yaklaşık 20 GB VRAM yeterlidir.
- Hızlı Eğitim: Aynı donanımda tam fine-tuning'e göre 2-3 kat daha hızlıdır.
- Düşük Veri Gereksinimi: 100-500 arası yüksek kaliteli örnekle bile etkili sonuçlar alabilirsiniz.
- Modülerlik: Farklı görevler için birden fazla LoRA adaptörünü tek bir temel model üzerinde saklayıp ihtiyaca göre değiştirebilirsiniz.
LoRA Fine-Tuning İçin Pratik İpuçları ve Kontrol Listesi
Aşağıdaki adımları uygulayarak kendi LoRA modelinizi eğitebilirsiniz. Her adımda dikkat edilmesi gereken noktaları pratik ipuçları olarak ekledim.
1. Temel Model ve Veri Seti Seçimi
İhtiyacınıza uygun bir temel LLM seçin. LLaMA 2, Mistral, GPT-NeoX gibi açık kaynak modeller LoRA için idealdir. Veri setiniz hedef görevle ilgili, temiz ve formatlı olmalıdır. Örneğin, bir chatbot için 200 adet soru-cevap çifti yeterli olabilir.
- İpucu: Veri setinizi
instruction: responseveyainput: outputformatında hazırlayın. ChatML veya Alpaca formatı yaygındır. - İpucu: Dengesiz dağılım varsa veriyi artırmak için basit augmentasyon yöntemleri (çeviri, parafraz) kullanın.
2. Kurulum ve Kütüphaneler
LoRA uygulamak için en popüler kütüphane Hugging Face PEFT'tir. transformers ve accelerate ile entegre çalışır.
- İpucu:
pip install peft transformers accelerate bitsandbytesile başlayın. Bitsandbytes, 4-bit niceleme ile bellek kullanımını daha da azaltır.
3. LoRA Konfigürasyonu
PEFT ile bir LoRA yapılandırması oluşturun. En kritik parametreler:
| Parametre | Anlamı | Önerilen Değer |
|---|---|---|
r | Rank (matrisin boyutu) | 8 veya 16 (düşük rank yeterlidir) |
lora_alpha | Ölçekleme faktörü | 16 veya 32 |
target_modules | Hangi katmanlara LoRA eklenecek | Genellikle sorgu/değer (q_proj, v_proj) |
dropout | Dropout oranı (overfitting önler) | 0.05 |
- İpucu: Rank (
r) 4-16 arası genelde iyi sonuç verir.target_modulesiçin tüm attention katmanlarını (q, k, v, o) dahil edin.
4. Eğitim Süpervizyonu
Eğitim sırasında modelin çıktılarını ara sıra test edin. Checkpoint kaydedin. Overfitting'i erken fark etmek için küçük bir validasyon seti ayırın.
- İpucu: 3-5 epoch genellikle yeterlidir. Early stopping kullanarak val loss durduğunda eğitimi kesin.
- İpucu: Eğitim kaybını loglayın ve grafikleyin. Ani düşüş varsa veri kalitesini kontrol edin.
5. Adaptörü Kaydetme ve Yükleme
Eğitim sonunda sadece LoRA ağırlıklarını kaydedersiniz. Bu dosya boyutu sadece birkaç MB'dir.
model.save_pretrained('lora-model') # adaptör ağırlıklarıKullanırken temel modeli yükleyip adaptörü peft ile entegre edin.
- İpucu: Adaptörü farklı bir temel modele uygulamak istiyorsanız aynı model mimarisine sahip olmalıdır (örneğin LLaMA'dan Mistral'a geçemezsiniz).
Sık Yapılan Hatalar ve Çözümleri
LoRA fine-tuning yaparken en yaygın hatalardan biri veri setinin formatını modelin beklentisine uygun hale getirmemek. Örneğin, LLaMA 2'nin özel
[INST]tag'ları vardır. Yanlış format modelin saçma çıktılar üretmesine yol açar. Mutlaka modelin tokenizer'ının talimat formatını kontrol edin.
Bir diğer hata: çok yüksek rank seçmek (r=64 gibi). Bu, bellek kullanımını artırır ve avantajı azaltır. Düşük rank (8-16) çoğu görev için yeterlidir.
Ayrıca target_modules eksik bırakıldığında adaptör performansı düşer. Tüm q_proj, k_proj, v_proj, o_proj katmanlarını dahil edin.
Performansı Artırmak İçin İleri Düzey İpuçları
- 8-bit veya 4-bit niceleme: Bitsandbytes ile modeli quantize ederek bellek kullanımını yarıya indirin. Performans kaybı çoğu durumda ihmal edilebilir.
- Veri kalitesine yatırım yapın: 1000 adet zayıf örnek yerine 200 adet elle denetlenmiş, tutarlı örnek kullanın.
- LoRA adaptörlerini birleştirin: İhtiyacınız varsa farklı adaptörleri aynı temel modelde birleştirip (merge) daha güçlü bir model elde edebilirsiniz.
LoRA fine-tuning, büyük dil modellerini özelleştirmenin en verimli yoludur. Yukarıdaki kontrol listesini uygulayarak siz de kendi chatbot, metin sınıflandırıcı veya özel asistanınızı düşük maliyetle geliştirebilirsiniz. Daha fazla bilgi için Self-Consistency Prompting veya Tree-of-Thoughts Prompting yazılarımıza göz atın.
Sık Sorulan Sorular
LoRA fine-tuning için minimum donanım gereksinimi nedir?
En az 12 GB VRAM'e sahip bir GPU (örneğin NVIDIA RTX 3060) ile 7B parametreli bir modeli 4-bit niceleme kullanarak eğitebilirsiniz. Daha büyük modeller için 24 GB VRAM önerilir.
LoRA ile tam fine-tuning arasındaki performans farkı nedir?
Çoğu görevde LoRA, tam fine-tuning'in %90-95 performansına ulaşır. Ancak çok karmaşık veya çok spesifik görevlerde tam fine-tuning daha başarılı olabilir. LoRA genellikle bellek ve zaman tasarrufu sağlar.
LoRA adaptörünü birden fazla modelde kullanabilir miyim?
Hayır, LoRA adaptörleri belirli bir temel model mimarisi için eğitilir. Örneğin LLaMA 2 için eğitilmiş bir adaptör Mistral veya başka bir modelde çalışmaz. Aynı mimari ailesi içinde (LLaMA, Gemma vb.) geçerlidir.
Eğitim verisi olarak minimum kaç örnek gerekir?
100-200 adet yüksek kaliteli örnek genellikle kayda değer iyileşme sağlar. Daha fazla veri (500-1000) daha iyi sonuç verir, ancak LoRA az veriyle öğrenme konusunda tam fine-tuning'e göre daha başarılıdır.
LoRA rank değerini nasıl seçmeliyim?
Rank 4 ile 16 arası çoğu durumda iyi sonuç verir. Daha yüksek rank (32-64) daha fazla parametre anlamına gelir ancak genellikle gereksizdir. Veri setiniz çok büyükse veya görev çok karmaşıksa rank 32'yi deneyebilirsiniz.






