LoRA ve QLoRA nasıl çalışır? Rank (r) ve alpha nasıl seçilir?

Cevap

LoRA (Low-Rank Adaptation), büyük bir modelin ağırlıklarını dondurup her hedef ağırlık matrisine küçük, eğitilebilir düşük ranklı bir güncelleme ekleyen bir PEFT (parameter-efficient fine-tuning) yöntemidir.

Matematik

Orijinal ağırlık W ∈ R^(d×k) dondurulur. Güncelleme iki küçük matrisin çarpımı olarak yazılır:

W' = W + ΔW = W + (alpha / r) · B·A
A ∈ R^(r×k),  B ∈ R^(d×r),  r << min(d, k)
  • A rastgele, B sıfırla başlatılır. Böylece eğitim başında ΔW = 0 olur ve model orijinal davranışla başlar.
  • Örnek: d = k = 4096, r = 16 için tam matris 16,7M parametre, LoRA ise 2 × 4096 × 16 ≈ 131K parametre (yaklaşık %0.8).
  • Hipotez: Fine-tuning sırasındaki ağırlık değişimi düşük "intrinsic rank"a sahiptir.
  • Eğitim sonrası BA orijinal ağırlığa birleştirilebilir (merge). Böylece inference'ta ek gecikme olmaz. Ya da farklı görevler için farklı adapter'lar tek bir base model üzerinde dinamik olarak değiştirilebilir.

QLoRA

QLoRA (Dettmers ve ark., 2023), base modeli 4-bit NF4 formatında dondurur, LoRA adapter'larını BF16'da eğitir. Ek olarak quantization sabitlerini de quantize eden double quantization ve bellek taşmalarını CPU'ya aktaran paged optimizer kullanır. Sonuç: 65B'lik bir model tek bir 48 GB GPU'da fine-tune edilebilmiştir. Kalite kaybı genelde azdır, ama eğitim dequantization yüzünden biraz daha yavaştır.

Hiperparametreler

ParametreTipik değerNot
r8–64Basit görevde düşük yeterli. Çok düşükse kapasite yetmez, çok yüksekse bellek artar ve küçük veride overfit riski
alphaGenelde r veya 2rGüncellemenin ölçeği, alpha/r oranı efektif LR gibi davranır
target_modulesTüm lineer katmanlar (q, k, v, o, gate, up, down)Sadece q, v'ye uygulamak genelde daha zayıf
learning rate1e-4 – 2e-4Tam fine-tuning'den daha yüksek
dropout0–0.1
from peft import LoraConfig, get_peft_model
cfg = LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05, task_type="CAUSAL_LM",
                 target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
                                 "gate_proj", "up_proj", "down_proj"])
model = get_peft_model(base_model, cfg)
model.print_trainable_parameters()

Diğer PEFT yöntemleri: prefix tuning, prompt tuning, adapter katmanları, DoRA (ağırlığı büyüklük ve yön olarak ayırır).

  1. RAG'de chunking stratejisi, hybrid search ve reranker neden önemlidir? Retrieval kalitesi düşükse ne yaparsınız?OrtaLLM & Üretken YZYapay Zeka
  2. Şirket içi dokümanlar (Confluence, PDF, wiki) üzerinde soru cevaplayan bir RAG sistemi tasarlayın.ZorLLM & Üretken YZYapay Zeka
  3. Hangi prompt engineering tekniklerini kullanırsınız? Few-shot ve chain-of-thought ne zaman işe yarar?KolayLLM & Üretken YZYapay Zeka
  4. LLM'lerde temperature, top-k ve top-p (nucleus) sampling parametreleri ne işe yarar?KolayLLM & Üretken YZYapay Zeka
  5. Production'daki bir LLM uygulamasında maliyeti ve gecikmeyi (latency) nasıl düşürürsünüz?OrtaLLM & Üretken YZYapay Zeka
  6. Prompt injection nedir? LLM tabanlı bir uygulamayı ve agent'ı buna karşı nasıl korursunuz?ZorLLM & Üretken YZYapay Zeka

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle