Tüm yazılar
Matematik4 Haziran 2025

LoRA: Büyük Modeli Tek GPU'da Fine-Tune Etmek

2021'de Microsoft'tan gelen, milyarlarca parametreli modeli %1'den az parametre ile özelleştiren matris ayrıştırma fikri.

Matematik Karavanı 7 dk okuma 5 soru
USB adaptör — LoRA'nın modele takılma metaforu

Fine-tuning maliyeti

Llama 3 70B modeli açık kaynak. Şirketin kendi alanına özelleştirmek istiyorsun: hukuk, tıp, müşteri hizmetleri. Geleneksel full fine-tuning:

  • 70B parametre × 4 byte = 280 GB sadece ağırlık.
  • AdamW optimizer state: +560 GB.
  • Gradyanlar: +280 GB.
  • Aktivasyonlar: +100 GB.
  • Toplam: ~1.2 TB GPU belleği. En az 15 H100 GPU.

Maliyet: bir sefer fine-tuning ~$50,000. Pek çok organizasyon için imkansız.

LoRA — fikir

2021'de Microsoft'tan Edward Hu ve ark. LoRA (Low-Rank Adaptation) önerdiler. Tez:

"Fine-tuning sırasında ağırlık güncellemeleri düşük rank'tir. Tüm ağırlık matrisini değil, düşük rank güncellemesini öğret."

Matematik: orijinal ağırlık WRd×kW \in \mathbb{R}^{d \times k}. Fine-tune sonrası: W+ΔWW + \Delta W. LoRA hipotezi:

ΔW=BA\Delta W = B A

burada ARr×kA \in \mathbb{R}^{r \times k} ve BRd×rB \in \mathbb{R}^{d \times r}, rmin(d,k)r \ll \min(d, k) (tipik r=8r = 8 ya da 1616).

Yani: tam ΔW\Delta W matrisini öğrenmek yerine, iki küçük matrisin çarpımı olarak öğren. Bunlar adapter denir.

Parametre tasarrufu

70B Llama modelinin self-attention katmanlarındaki Q ve V projeksiyonlarına LoRA uygulayalım. d=k=8192d = k = 8192.

  • Tam fine-tune: 8192×819267M8192 \times 8192 \approx 67M parametre/katman.
  • LoRA r=8r=8: 8×8192+8192×8=131K8 \times 8192 + 8192 \times 8 = 131K parametre/katman.

500x daha az parametre. 70B model için: 18M trainable parametre (orijinal modelin %0.026'sı).

Bellek tasarrufu:

  • Orijinal ağırlıklar donmuş — fp16, 140 GB.
  • LoRA ağırlıkları + optimizer state: ~1 GB.
  • Tek GPU'da fine-tune mümkün. 24 GB'lık bir RTX 4090'da bile.

Hesap nasıl çalışır

İleri geçişte:

h=Wx+ΔWx=Wx+BAxh = W x + \Delta W x = W x + B A x

İki ek matriks çarpımı: AxA x ve B(Ax)B (Ax). Çok küçük (boyut rr). Eğitim zamanı ~%30 artar, ama hesap maliyeti bellekten çok daha az kritik.

Çıkarım sırasında

Eğitim bitince W+BAW + BA matriksini birleştirebilirsin:

Wmerged=W+BAW_{\text{merged}} = W + BA

Bu durumda çıkarım hızında hiç fark yok — orijinal model gibi çalışır. Ya da birleştirme yapmadan B,AB, A adapter'ları runtime'da uygula — modüler kullanım.

Bu modülerlik LoRA'nın en güzel yönü: bir base model + onlarca farklı adapter. Hukuk, tıp, sohbet, kod yazma için farklı adapter'lar. Birini değiştir, modelin "kişiliği" değişir.

QLoRA (2023) — Dettmers şovu

Tim Dettmers (Washington Üniversitesi) 2023'te QLoRA'yı yayımladı. Fikir: base model'i INT4 kuantize et, sonra üstüne LoRA ekle.

Sonuç: 65B model tek bir 48 GB GPU'da fine-tune edilebilir. Daha önce 15+ GPU'lık iş, evdeki bir RTX A6000'le. Demokratikleşmenin somut adımı.

Ana teknik kombinasyon:

  1. 4-bit NormalFloat (NF4) kuantizasyon — bilgi teorisi tabanlı optimal kuantizasyon.
  2. Double Quantization — kuantizasyon sabitlerini de kuantize et.
  3. Paged Optimizers — NVIDIA Unified Memory kullanarak OOM'u önle.

Etki

LoRA ve QLoRA 2023-2024'te endüstrinin standardı oldu:

  • Hugging Face PEFT kütüphanesi: En çok kullanılan PEFT (Parameter Efficient Fine-Tuning) kütüphanesi.
  • Civitai (Stable Diffusion): Binlerce LoRA adapter'ı paylaşılıyor. Karakter, stil, kavram için ayrı LoRA'lar.
  • Modern API'ler: OpenAI ve Anthropic'in fine-tuning API'leri LoRA türevi kullanıyor (genellikle).
  • Multi-LoRA serving: Tek base model üstüne canlıda 100+ adapter switch (Apache Megatron, vLLM).

Varyantlar

LoRA ailesi çok zengin:

  • AdaLoRA (2023): Rank'i adaptive belirler — önemli katmanlarda daha yüksek rank.
  • LoRA+ (2024): AA ve BB için farklı öğrenme oranı — biraz daha iyi.
  • DoRA (2024): Weight'i yönlere ayır, sadece magnitude öğren.
  • VeRA (2024): Tek shared LoRA matrisi, sadece skalar parametreler öğren.
  • rsLoRA, X-LoRA, S-LoRA... — düzinelerce.

Sınırlar

LoRA mükemmel değil:

  1. Performans kaybı. Tam fine-tune ile karşılaştırıldığında ~%1-3 daha düşük (görev bağımlı).
  2. Continual learning zayıf. LoRA üzerine LoRA eklemek bazı durumlarda kullanışsız.
  3. Domain shift. Çok farklı bir göreve adapt edilirken yetmez — tam fine-tune gerek olabilir.
  4. Rank seçimi. Çok küçük: eksik temsil. Çok büyük: gereksiz parametre.

Klasik benzetme

Bir ev. Sahibi tüm duvarları boyamak istiyor ama bütçe sınırlı. Tam fine-tune: her duvarı baştan yap, çok pahalı. LoRA: stratejik yerlere küçük renkli dekoratif paneller as. Aynı estetik etki, küçük yatırım.

Daha akıllı olan: panelleri istediğin zaman değiştir. Bugün tropikal, yarın modern. Aynı ev, farklı kişilikler.

Sade ders

LoRA hikâyesinden iki şey:

  1. Düşük rank yapı her yerde. Sinir ağı güncellemeleri tam rank değil, düşük rank. Bu gözlem hem teorik (matrix completion) hem pratik (LoRA) sonuçlar doğurur.
  2. Demokratikleşme açık matematikten gelir. LoRA Microsoft'tan çıktı ama akademik açık. Bugün dünya çapında milyonlarca developer LoRA ile fine-tune yapıyor — bu kolaylık 2021'den önce mümkün değildi.

Bağlam

Tim Dettmers ve QLoRA için: [[tim-dettmers-modern-llmleri-tuketici-gpuda-calistiran-alman-arastirici]]. Quantization için: [[quantization-buyuk-modelleri-cebinize-sigdirma-matematigi]]. Modern fine-tuning için: [[dpo-direct-preference-optimization-rlhf-i-sadelestir]]. Stable Diffusion LoRA için: [[stable-diffusion-uretken-resim]] (varsa).

Etiketler

LoRAfine-tuningPEFTdüşük rankverimli eğitim

Kendinizi Test Edin

Cevaplarınız profilinizde istatistik olarak saklanır.

1. LoRA'nın temel matematiksel fikri nedir?

2. LoRA çıkarım hızını nasıl etkiler?

3. QLoRA ne sağlar?

4. LoRA'nın modülerliği niye değerlidir?

5. LoRA'nın temel zayıflığı nedir?