LoRA (Low-Rank Adaptation), büyük dil modellerini (LLM) tamamen yeniden eğitmeden, düşük kaynak tüketimiyle ince ayar yapmanızı sağlayan bir yöntemdir. Standart fine-tuning'de modelin tüm ağırlıkları güncellenirken, LoRA yalnızca sıralı düşük dereceli matrisler ekleyerek parametre sayısını büyük ölçüde azaltır. Bu sayede tek bir GPU üzerinde bile 7B veya 13B parametreli modelleri ince ayar yapmak mümkün hale gelir. Bu yazıda LoRA ile fine-tuning sürecinde dikkat etmeniz gereken pratik ipuçlarını ve bir kontrol listesini bulacaksınız.
LoRA Nedir ve Neden Kullanılır?
LoRA, model ağırlıklarına eklenen düşük dereceli matrisler sayesinde, orijinal ağırlıkları dondurup yalnızca bu matrisleri eğitir. Bu, bellek kullanımını ve eğitim süresini önemli ölçüde azaltır. Özellikle büyük modellerin (GPT-3, LLaMA, Mistral gibi) özel görevler için uyarlanmasında yaygın olarak tercih edilir. LoRA, aynı zamanda fine-tuning ve prompt engineering karşılaştırmasında da öne çıkan bir yöntemdir.
LoRA ile Fine-Tuning: Pratik İpuçları
Aşağıda, LoRA ile başarılı bir ince ayar süreci için adım adım ipuçları ve dikkat edilmesi gereken noktalar yer almaktadır.
1. Doğru Temel Modeli Seçin
LoRA, mevcut bir temel model üzerinde çalışır. Görevinize en uygun modeli seçmek kritiktir. Örneğin, metin üretimi için LLaMA 2, kod için CodeLlama, talimat takibi için Mistral Instruct gibi modeller iyi başlangıç noktalarıdır. Seçtiğiniz modelin boyutu (parametre sayısı) donanımınıza uygun olmalıdır.
2. Veri Setinizi Hazırlayın
Kaliteli ve temiz veri LoRA başarınızı belirler. Veri setiniz, hedef görevle ilgili en az 500-1000 örnek içermelidir. Aşağıdaki noktalara dikkat edin:
- Veriyi modele uygun şablon (template) ile formatlayın. Örneğin, talimat-çıktı formatı için "Soru: ... Cevap: ..." kullanın.
- Gereksiz boşluk, kontrol karakteri veya tekrarları temizleyin.
- Veriyi eğitim ve doğrulama olarak ayırın (%80-20).
3. LoRA Hiperparametrelerini Optimize Edin
LoRA'nın en önemli hiperparametreleri rank (r), alpha (lora_alpha) ve target_modules'dır.
- r (rank): Genellikle 8 ile 64 arasında seçilir. Düşük r daha az parametre ve hızlı eğitim sağlar, ancak ifade gücü azalabilir. Görevin karmaşıklığına göre 16 veya 32 iyi bir başlangıçtır.
- alpha (lora_alpha): LoRA katkısının ölçeğini belirler. Genellikle r'nin 2 katı (örneğin r=16 için alpha=32) önerilir. Yüksek alpha, daha güçlü uyum sağlar ancak aşırı uyuma yol açabilir.
- target_modules: Hangi katmanlara LoRA ekleneceği. Çoğu model için query ve value projeksiyonları (q_proj, v_proj) yeterlidir. Daha fazla esneklik için tüm attention katmanlarına (q_proj, k_proj, v_proj, o_proj) ekleme yapabilirsiniz.
Bu parametreleri bulmak için Grid Search veya Bayesian Optimization gibi yöntemlerden faydalanabilirsiniz.
4. Eğitim Stratejisi ve Önlemler
- Öğrenme oranı (learning rate): LoRA için tipik öğrenme oranları 1e-4 ile 5e-4 arasındadır. Modelin temel ağırlıkları donuk olduğu için daha yüksek öğrenme oranı kullanılabilir.
- Batch size: Mümkün olduğunca büyük seçin (gradient accumulation kullanarak). 4-8 arası iyi bir denge sunar.
- Epoch sayısı: 3-5 epoch genellikle yeterlidir. Daha fazla epoch aşırı uyuma neden olabilir; doğrulama kaybını izleyin.
- Mixed precision (fp16/bf16): Bellek tasarrufu ve hız için kullanın. NVIDIA GPU'larda fp16, Ampere ve sonrası için bf16 önerilir.
5. Modeli Değerlendirin ve Kaydedin
Eğitim sonrası modelin performansını ayrı bir test seti ile değerlendirin. LoRA ağırlıklarını (adapter) kaydedin; bunlar genellikle birkaç MB boyutundadır ve orijinal modelle birleştirilebilir. Fine-tuning API seçeneklerinde LoRA destekli platformları (Hugging Face PEFT gibi) tercih edebilirsiniz.
LoRA ile Fine-Tuning Kontrol Listesi
İşte süreci adım adım takip etmenizi sağlayacak bir kontrol listesi:
- Temel model seçildi mi? (örn. meta-llama/Llama-2-7b-chat-hf)
- Veri seti hazırlandı ve temizlendi mi? (en az 500 örnek, uygun şablon)
- LoRA hiperparametreleri belirlendi mi? (r=16, alpha=32, target_modules=query_value)
- Öğrenme oranı ve batch size ayarlandı mı? (lr=2e-4, batch=4)
- Mixed precision aktif edildi mi? (fp16=True)
- Eğitim başlatıldı ve doğrulama kaybı izleniyor mu?
- Model değerlendirildi mi? (test seti ile)
- LoRA adapterları kaydedildi mi? (huggingface formatında)
Sık Yapılan Hatalar ve Dikkat Edilmesi Gerekenler
- Yanlış target_modules: Tüm modüllere LoRA eklemek bellek kullanımını artırır ve her zaman daha iyi sonuç vermez. Sadece attention katmanlarıyla başlayın.
- Aşırı uyum (overfitting): Çok yüksek rank veya çok fazla epoch kullanıldığında görülür. Early stopping uygulayın.
- Veri şablonu uyumsuzluğu: Modelin eğitim öncesi kullandığı formata uygun şablon seçilmezse performans düşer.
- Donanım yetersizliği: 7B model için en az 16GB GPU belleği gerekir. Daha küçük modeller (3B, 1.5B) deneyin veya gradient checkpointing kullanın.
LoRA, fine-tuning sürecini hem hızlandıran hem de erişilebilir kılan güçlü bir yöntemdir. Yukarıdaki ipuçlarını ve kontrol listesini takip ederek, kendi göreviniz için başarılı bir LLM ince ayar süreci yürütebilirsiniz.
Sık Sorulan Sorular
LoRA ile fine-tuning arasındaki temel fark nedir?
Geleneksel fine-tuning'de modelin tüm ağırlıkları güncellenirken, LoRA yalnızca düşük dereceli matrisler ekleyerek bu matrisleri eğitir. Bu sayede parametre sayısı ve bellek kullanımı büyük ölçüde azalır.
LoRA için ideal rank (r) değeri nedir?
Rank genelde 8 ile 64 arasında seçilir. Basit görevler için r=8-16, karmaşık görevler için r=32-64 önerilir. Başlangıç için r=16 iyi bir dengedir.
LoRA ile eğitim ne kadar sürer?
Model boyutuna, veri seti büyüklüğüne ve donanıma bağlıdır. 7B modelde, 1000 örnekle 1-2 saat içinde (tek GPU ile) tamamlanabilir. Full fine-tuning'e göre çok daha hızlıdır.
LoRA ağırlıklarını nasıl kaydederim?
Hugging Face PEFT kütüphanesi ile model.save_pretrained() fonksiyonunu kullanarak adapter ağırlıklarını kaydedebilirsiniz. Bu dosyalar genellikle birkaç MB boyutundadır.






