Quantization
Niceleme — Model Sıkıştırma
Modelin ağırlıklarını daha düşük hassasiyetle (FP16 → INT8 → INT4) saklama tekniği. Boyut + bellek + maliyet düşer, az miktarda doğruluk kaybı olur.
Bir model eğitildiğinde ağırlıklar genelde FP32 (32-bit floating-point) olarak saklanır. Quantization, bu sayıları daha az bit ile temsil eder: FP16, INT8, INT4. Her ağırlık 32 bit yerine 4 bit alır = 8× daha az bellek.
Yöntem türleri: - PTQ (Post-Training Quantization): eğitim bittikten sonra ağırlıkları küçült. Hızlı ama biraz doğruluk kaybı. - QAT (Quantization-Aware Training): eğitim sırasında modelin düşük hassasiyete uyum sağlamasını öğret. Daha iyi doğruluk, daha pahalı eğitim. - GPTQ, AWQ, GGUF: pratikte kullanılan algoritmalar/formatlar.
Sonuç: 70B Llama bir tüketici GPU'sunda (24 GB VRAM) çalışabilir hale gelir. Ya da telefonda 7B model çalıştırabilirsin. Ortalama doğruluk kaybı INT8'de %1-2, INT4'te %3-5 — kabul edilebilir.
Bir resmi 24-bit renkten 8-bit'e düşürmek gibi. 16M renk yerine 256 renk. Resim hâlâ tanınır, sadece detaylarda hafif bir kayıp var. Quantization da öyle: ağırlıkların hassasiyeti azalır ama model "görüntüsü" çoğunlukla korunur.
Llama-3-70B'i kendi laptop'ında çalıştırmak istiyorsun. FP16'da 140 GB VRAM gerekir — imkansız. Çözüm:
1. llama.cpp ile model GGUF formatına çevir, Q4_K_M
(4-bit) quantize et: dosya 140 GB → 40 GB.
2. M2 Max MacBook'ta 36 GB unified memory ile çalışır.
3. Inference hızı: ~12 token/saniye (insan okumaya yakın).
4. Doğruluk kaybı: %3-4, çoğu görev için fark edilmez.
2023'ten önce 70B model evde imkansızdı; bugün quantization sayesinde standart pratik. Hugging Face'de her popüler modelin GGUF/AWQ versiyonu hazır.
- Sınırlı VRAM/GPU bütçesiyle büyük model çalıştırmak
- Edge deployment (telefon, embedded device, browser)
- Inference maliyetini düşürmek (cloud GPU saati pahalı)
- Aynı GPU'da daha fazla concurrent kullanıcı sığdırmak
- Hassas alanlarda (tıbbi tanı, finansal analiz) — küçük doğruluk kaybı maliyetli olabilir
- Eğitim için — quantization inference içindir, training için değil
- Model çok küçükse (~1-3B) — overhead, kazanca değmez
- Edge case'lerde (uzun bağlam, multilingual) — quantize edilmiş modeller bazı görevlerde belirgin düşer
Doğruluk kaybını ölçmek zor
Genel benchmark'lar (MMLU, HumanEval) az düşüş gösterir ama senin spesifik kullanım senaryon farklı düşebilir. Mutlaka kendi eval setinde test et.
Tüm katmanları aynı quantize etmemek
Mixed precision: bazı katmanlar (attention output) FP16, diğerleri INT4. AWQ, GPTQ bunu otomatik yapar. Naive 'her şeyi INT4'le' kötü sonuç verir.
Format/araç uyumsuzluğu
GGUF (llama.cpp), GPTQ (Hugging Face), AWQ, EXL2 — farklı framework'ler farklı format kullanır. Üretim ortamına geçmeden önce hangi servis hangi formatı destekliyor kontrol et.