EXL2 (ExLlamaV2): Variable Bitrate Quantization — Hangi Layer Hangi Bit?
EXL2 — ExLlamaV2'nin native format'ı. Her layer için **farklı bit-width** seçebilir, hassas layer'lara fazla bit ayırır. Calibration ile her layer'ın 'sensitivity'sini ölç, bütçe içinde optimal dağılım. RTX 4090 önündeki tüketici için en hızlı LLM inference (vLLM yerine ExLlamaV2 batch=1'de 1.5-2x).
Şükrü Yusuf KAYA
28 dakikalık okuma
İleri1. EXL2'nin Fikri#
GPTQ/AWQ: tüm layer'lar aynı bit-width (örn. 4-bit).
EXL2: layer başına bit-width farklı — hassas layer'lara fazla bit, az hassas olanlara az bit.
"hedef ortalama 4.0 bit/weight" ↓ calibration ile her layer'ın sensitivity ölç ↓ SQNR (signal-to-quantization-noise ratio) minimize edecek allocation: - q_proj: 5.5 bit (hassas) - down_proj: 3.5 bit (toleranslı) - lm_head: 6.0 bit (kritik)
Sonuç: Aynı disk size'da daha iyi kalite veya aynı kalite ile daha küçük model.
bash
# === ExLlamaV2 ile EXL2 dönüşüm ===# clone exllamav2git clone https://github.com/turboderp/exllamav2cd exllamav2 # Convert HF → EXL2python convert.py \ -i /path/to/llama-3.1-8b-merged \ -o /path/to/llama-3.1-8b-exl2-4.5bpw \ -cf /path/to/calibration_data.parquet \ -hb 4.5 \ # target avg bits per weight -ml 4096 \ # max measurement length -nr 5 # number of measurement rows # Test inferencepython examples/inference.py \ -m /path/to/llama-3.1-8b-exl2-4.5bpw \ -p "Türkiye'nin başkenti nedir?"EXL2 dönüşüm + inference
2. RTX 4090 Inference Throughput#
| Format | Batch=1 tok/s | Batch=4 tok/s | Notlar |
|---|---|---|---|
| bf16 (Transformers) | 35 | 85 | baseline |
| bf16 (vLLM) | 95 | 180 | scheduling overhead az |
| GGUF Q4_K_M (llama.cpp) | 75 | n/a (mostly single-user) | CPU-friendly |
| GPTQ int4 (vLLM) | 165 | 320 | shared kernel |
| AWQ int4 (vLLM) | 175 | 340 | en yaygın production |
| EXL2 4.5bpw (ExLlamaV2) | 245 | 140 | batch=1 en hızlı |
Pattern: EXL2 batch=1 (single user)'da en hızlı çünkü kernel'ları RTX 40x0/Ada'ya optimize. Multi-batch production'da vLLM/AWQ daha verimli.
Cookbook'un kuralı:
- Tek user lokal chat → ExLlamaV2 + EXL2
- Multi-user / production API → vLLM + AWQ
- CPU/edge → llama.cpp + GGUF Q4_K_M
✅ Teslim
- Llama 3.1 8B'yi EXL2 4.5bpw'a dönüştür. 2) ExLlamaV2 ile single-user tok/s ölç. 3) Sonraki ders: 10.6 — FP8 Training (H100 native, RTX 4090'da prematur).
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
Part 0 — Engineering Foundations
Fine-Tuning Cookbook'a Hoş Geldin: Sistematik, Stage Taksonomisi ve Reproducibility Kontratı
Öğrenmeye BaşlaPart 0 — Engineering Foundations
Reproducibility Stack: Seeds, cuDNN Flags ve Deterministic CUDA — 'Sende Niye Çalışıyor Bende Çalışmıyor' Sorununu Bitir
Öğrenmeye BaşlaPart 0 — Engineering Foundations