Veni AI
Model Eğitimi

Fine-Tuning ve Transfer Learning: Model Eğitimi Rehberi

LLM fine-tuning teknikleri, LoRA, QLoRA, PEFT yöntemleri ve kurumsal AI modellerinin özelleştirilmesi için kapsamlı teknik rehber.

Veni AI Teknik Ekibi11 Ocak 20255 dk okuma
Fine-Tuning ve Transfer Learning: Model Eğitimi Rehberi

Fine-Tuning ve Transfer Learning: Model Eğitimi Rehberi

Fine-tuning, önceden eğitilmiş modelleri spesifik görevler veya domainler için özelleştirme sürecidir. Doğru fine-tuning stratejileri ile kurumsal AI çözümlerinde %40'a kadar performans artışı sağlanabilir.

Transfer Learning Temelleri

Transfer learning, bir görevde öğrenilen bilginin başka bir göreve aktarılmasıdır.

Transfer Learning Avantajları

  1. Veri Verimliliği: Daha az veri ile iyi sonuçlar
  2. Zaman Tasarrufu: Sıfırdan eğitime göre çok daha hızlı
  3. Maliyet Azaltma: Daha az compute kaynağı
  4. Performans: Pre-trained knowledge'dan faydalanma

Pre-training vs Fine-tuning

1Pre-training: 2- Büyük, genel veri seti (TB'ler) 3- Genel dil/görev anlayışı öğrenme 4- Aylar süren eğitim 5- Milyonlarca dolar maliyet 6 7Fine-tuning: 8- Küçük, domain-specific veri seti (MB-GB) 9- Spesifik görev adaptasyonu 10- Saatler-günler süren eğitim 11- Binlerce dolar maliyet

Full Fine-Tuning

Tüm model parametrelerinin güncellenmesi.

Avantajlar

  • Maksimum adaptasyon kapasitesi
  • En yüksek potansiyel performans

Dezavantajlar

  • Yüksek bellek gereksinimi
  • Catastrophic forgetting riski
  • Her görev için ayrı model kopyası

Donanım Gereksinimleri

Model BoyutuGPU Bellek (FP32)GPU Bellek (FP16)
7B28 GB14 GB
13B52 GB26 GB
70B280 GB140 GB

Parameter-Efficient Fine-Tuning (PEFT)

Sadece parametrelerin küçük bir kısmını güncelleyerek fine-tuning.

PEFT Avantajları

  • Bellek Verimliliği: %90+ azalma
  • Hız: Daha hızlı eğitim
  • Modülerlik: Tek base model, çoklu adapter'lar
  • Catastrophic Forgetting: Minimize edilmiş risk

LoRA (Low-Rank Adaptation)

En popüler PEFT yöntemi.

LoRA Teorisi

Weight matrix'i düşük rank'lı matrislerle yaklaşık olarak güncelleme:

1W' = W + ΔW = W + BA 2 3Burada: 4- W: Orijinal ağırlık matrisi (d × k) 5- B: Düşük rank matris (d × r) 6- A: Düşük rank matris (r × k) 7- r: Rank (tipik: 8-64)

Parametre Tasarrufu

1Orijinal: d × k parametre 2LoRA: r × (d + k) parametre 3 4Örnek (d=4096, k=4096, r=16): 5Orijinal: 16.7M parametre 6LoRA: 131K parametre 7Tasarruf: ~127x

LoRA Konfigürasyonu

1from peft import LoraConfig, get_peft_model 2 3config = LoraConfig( 4 r=16, # Rank 5 lora_alpha=32, # Scaling factor 6 target_modules=[ # Hangi layer'lara uygulanacak 7 "q_proj", 8 "k_proj", 9 "v_proj", 10 "o_proj" 11 ], 12 lora_dropout=0.05, 13 bias="none", 14 task_type="CAUSAL_LM" 15) 16 17model = get_peft_model(base_model, config)

LoRA Hiperparametreleri

Rank (r):

  • Düşük (4-8): Basit görevler, az veri
  • Orta (16-32): Genel kullanım
  • Yüksek (64-128): Karmaşık adaptasyon

Alpha:

  • Genellikle alpha = 2 × r

Target Modules:

  • Attention layers: q_proj, k_proj, v_proj, o_proj
  • MLP layers: gate_proj, up_proj, down_proj

QLoRA (Quantized LoRA)

LoRA + 4-bit quantization kombinasyonu.

QLoRA Özellikleri

  1. 4-bit NormalFloat (NF4): Özel quantization format
  2. Double Quantization: Quantization constant'larının da quantize edilmesi
  3. Paged Optimizers: GPU bellek overflow yönetimi

QLoRA Bellek Karşılaştırması

Yöntem7B Model70B Model
Full FT (FP32)28 GB280 GB
Full FT (FP16)14 GB140 GB
LoRA (FP16)12 GB120 GB
QLoRA (4-bit)6 GB48 GB

QLoRA Implementasyonu

1from transformers import BitsAndBytesConfig 2import torch 3 4bnb_config = BitsAndBytesConfig( 5 load_in_4bit=True, 6 bnb_4bit_use_double_quant=True, 7 bnb_4bit_quant_type="nf4", 8 bnb_4bit_compute_dtype=torch.bfloat16 9) 10 11model = AutoModelForCausalLM.from_pretrained( 12 "meta-llama/Llama-2-7b-hf", 13 quantization_config=bnb_config, 14 device_map="auto" 15)

Diğer PEFT Yöntemleri

Prefix Tuning

Giriş embedding'lerine öğrenilebilir prefix ekler:

Input: [PREFIX_1, PREFIX_2, ..., PREFIX_N, token_1, token_2, ...]

Prompt Tuning

Soft prompt'lar öğrenme:

[SOFT_PROMPT] + "Actual input text"

Adapter Layers

Transformer layer'ları arasına küçük ağlar ekleme:

Attention → Adapter → LayerNorm → FFN → Adapter → LayerNorm

(IA)³ - Infused Adapter

Activation'ları öğrenilen vektörlerle çarpma:

output = activation × learned_vector

Veri Hazırlığı

Veri Formatları

Instruction Format:

1{ 2 "instruction": "Bu metni özetle", 3 "input": "Uzun metin...", 4 "output": "Özet..." 5}

Chat Format:

1{ 2 "messages": [ 3 {"role": "system", "content": "Sen yardımcı bir asistansın"}, 4 {"role": "user", "content": "Soru..."}, 5 {"role": "assistant", "content": "Yanıt..."} 6 ] 7}

Veri Kalitesi

İyi Veri Özellikleri:

  • Çeşitlilik (diverse examples)
  • Tutarlılık (consistent format)
  • Doğruluk (accurate labels)
  • Yeterli miktar (genellikle 1K-100K örnek)

Data Augmentation

1# Paraphrasing 2augmented_data = paraphrase(original_data) 3 4# Back-translation 5translated = translate(text, "en") 6back_translated = translate(translated, "tr") 7 8# Synonym replacement 9augmented = replace_synonyms(text)

Eğitim Stratejileri

Hyperparameter Seçimi

1training_args = TrainingArguments( 2 learning_rate=2e-4, # LoRA için tipik 3 num_train_epochs=3, 4 per_device_train_batch_size=4, 5 gradient_accumulation_steps=4, 6 warmup_ratio=0.03, 7 lr_scheduler_type="cosine", 8 fp16=True, 9 logging_steps=10, 10 save_strategy="epoch", 11 evaluation_strategy="epoch" 12)

Learning Rate

  • Full fine-tuning: 1e-5 - 5e-5
  • LoRA: 1e-4 - 3e-4
  • QLoRA: 2e-4 - 5e-4

Regularization

1# Weight decay 2weight_decay=0.01 3 4# Dropout 5lora_dropout=0.05 6 7# Gradient clipping 8max_grad_norm=1.0

Evaluation ve Validation

Metrikler

Perplexity:

PPL = exp(average cross-entropy loss) Düşük = daha iyi

BLEU/ROUGE: Metin üretimi kalitesi

Task-specific: Accuracy, F1, custom metrics

Overfitting Tespiti

1Train loss ↓ + Validation loss ↑ = Overfitting 2 3Çözümler: 4- Early stopping 5- Daha fazla dropout 6- Veri augmentation 7- Daha az epoch

Deployment

Model Birleştirme

LoRA adapter'ını base model'e merge etme:

merged_model = model.merge_and_unload() merged_model.save_pretrained("merged_model")

Multi-Adapter Serving

Tek base model ile çoklu adapter'lar:

1from peft import PeftModel 2 3base_model = AutoModelForCausalLM.from_pretrained("base") 4model_a = PeftModel.from_pretrained(base_model, "adapter_a") 5model_b = PeftModel.from_pretrained(base_model, "adapter_b")

Kurumsal Fine-Tuning Pipeline

1┌─────────────┐ ┌─────────────┐ ┌─────────────┐ 2│ Data │────▶│ Training │────▶│ Evaluation │ 3│ Preparation │ │ (LoRA/QLoRA)│ │ & Testing │ 4└─────────────┘ └─────────────┘ └──────┬──────┘ 56 ┌─────────────┐ ┌──────▼──────┐ 7 │ Production │◀────│ Model │ 8 │ Deployment │ │ Registry │ 9 └─────────────┘ └─────────────┘

Yaygın Sorunlar ve Çözümleri

1. Out of Memory

Çözüm: QLoRA, gradient checkpointing, batch size azaltma

2. Catastrophic Forgetting

Çözüm: Düşük learning rate, replay buffer, elastic weight consolidation

3. Overfitting

Çözüm: Daha fazla veri, regularization, early stopping

4. Poor Generalization

Çözüm: Veri çeşitliliği artırma, instruction diversity

Sonuç

Fine-tuning, pre-trained modellerin kurumsal ihtiyaçlara uyarlanmasının en etkili yoludur. LoRA ve QLoRA gibi PEFT yöntemleri ile sınırlı kaynaklarla bile güçlü özelleştirmeler yapılabilir.

Veni AI olarak, kurumsal fine-tuning projelerinde danışmanlık ve implementasyon hizmeti sunuyoruz. İhtiyaçlarınız için bizimle iletişime geçin.

İlgili Makaleler