1. Czym jest kwantyzacja wag modelu?
Wagi współczesnych modeli językowych (np. Llama 3.1, Qwen 2.5, Mistral) podczas trenowania zapisywane są w liczbach zmiennoprzecinkowych o precyzji 16-bitowej (FP16 lub BF16). Oznacza to, że każdy pojedynczy parametr modelu zajmuje w pamięci 2 bajty.
Dla modelu o wielkości 7 miliardów parametrów (7B) wymaga to co najmniej **14–16 GB pamięci VRAM** tylko na załadowanie wag, bez bufora kontekstu. **Kwantyzacja** to matematyczny proces zaokrąglania wag z 16 bitów do liczb całkowitych 8-, 5-, 4-, a nawet 2-bitowych. Dzięki temu ten sam model 7B może zmieścić się w zaledwie **4.5 GB RAM-u**, zachowując niemal 99% swojej pierwotnej inteligencji.
Dla modelu o wielkości 7 miliardów parametrów (7B) wymaga to co najmniej **14–16 GB pamięci VRAM** tylko na załadowanie wag, bez bufora kontekstu. **Kwantyzacja** to matematyczny proces zaokrąglania wag z 16 bitów do liczb całkowitych 8-, 5-, 4-, a nawet 2-bitowych. Dzięki temu ten sam model 7B może zmieścić się w zaledwie **4.5 GB RAM-u**, zachowując niemal 99% swojej pierwotnej inteligencji.
2. Narodziny formatu GGUF i ekosystem llama.cpp
Format **GGUF** (GPT-Generated Unified Format) został stworzony przez Georga Gerganova (twórcę projektu `llama.cpp`) jako następca przestarzałych formatów GGML i GGJT. GGUF jest formatem binarnym typu single-file, który przechowuje zarówno wagi modelu, jak i pełne metadane: architekturę sieci, tokenizator, parametry RoPE i słownik.
Kluczową zaletą formatu GGUF jest możliwość pracy w architekturze **CPU + GPU Offloading** – jeśli Twoja karta ma za mało VRAM-u, brakujące warstwy modelu są automatycznie przetwarzane przez pamięć RAM komputera lub serwera VPS.
Kluczową zaletą formatu GGUF jest możliwość pracy w architekturze **CPU + GPU Offloading** – jeśli Twoja karta ma za mało VRAM-u, brakujące warstwy modelu są automatycznie przetwarzane przez pamięć RAM komputera lub serwera VPS.
3. Rozszyfrowanie oznaczeń w nazwach plików (Q4_K_M, Q5_K_M, Q8_0)
Przeglądając modele na Hugging Face, z pewnością zauważyłeś tajemnicze kody na końcu plików GGUF. Oto co dokładnie oznaczają:
• **Q8_0 (8-bit)**: Praktycznie zero straty jakości (poniżej 0.1% perplexity), ale wymaga dwukrotnie więcej pamięci niż 4-bit.
• **Q5_K_M (5-bit Medium K-Quants)**: Złoty środek dla wymagających użytkowników – minimalna utrata precyzji przy redukcji pamięci o ok. 65%.
• **Q4_K_M (4-bit Medium K-Quants)**: **Absolutny standard branżowy**. Najpopularniejszy format używany domyślnie w Ollama. Oferuje optymalny stosunek rozmiaru do logiki modelu.
• **Q4_K_S (4-bit Small)**: Nieco bardziej agresywna kompresja kosztem drobnego spadku płynności gramatycznej.
• **Q3_K_M / Q2_K (3-bit i 2-bit)**: Stosowane wyłącznie awaryjnie, gdy model o wielkości 70B próbujesz wcisnąć na słabą maszynę.
• **Q8_0 (8-bit)**: Praktycznie zero straty jakości (poniżej 0.1% perplexity), ale wymaga dwukrotnie więcej pamięci niż 4-bit.
• **Q5_K_M (5-bit Medium K-Quants)**: Złoty środek dla wymagających użytkowników – minimalna utrata precyzji przy redukcji pamięci o ok. 65%.
• **Q4_K_M (4-bit Medium K-Quants)**: **Absolutny standard branżowy**. Najpopularniejszy format używany domyślnie w Ollama. Oferuje optymalny stosunek rozmiaru do logiki modelu.
• **Q4_K_S (4-bit Small)**: Nieco bardziej agresywna kompresja kosztem drobnego spadku płynności gramatycznej.
• **Q3_K_M / Q2_K (3-bit i 2-bit)**: Stosowane wyłącznie awaryjnie, gdy model o wielkości 70B próbujesz wcisnąć na słabą maszynę.
4. Wpływ na jakość (Perplexity vs Oszczędność RAM)
W testach telemetrycznych różnica w miarze Perplexity (współczynnik niepewności modelu) między surowym FP16 a wariantem Q4_K_M wynosi zaledwie od 0.05 do 0.15 punktu. Oznacza to, że w typowych zadaniach: streszczaniu tekstu, pisaniu kodu w Pythonie, tłumaczeniach i ekstrakcji JSON człowiek nie jest w stanie odróżnić odpowiedzi modelu skwantyzowanego od oryginalnego.
5. Jaki wariant wybrać pod swój sprzęt?
• **VPS z 8GB RAM (np. Hostinger KVM 2 / Hetzner)**: Wybierz model **Llama 3.1 8B Q4_K_M** lub **Qwen 2.5 7B Q4_K_M** (zajmie ok. 4.8 GB RAM).
• **Chmura GPU z RTX 4090 24GB (np. RunPod)**: Możesz bez problemu uruchomić model **32B w kwantyzacji Q4_K_M** lub **14B w pełnym Q8_0** z kontekstem 32k tokenów i prędkością ponad 50 tokenów/s.
• **Chmura GPU z RTX 4090 24GB (np. RunPod)**: Możesz bez problemu uruchomić model **32B w kwantyzacji Q4_K_M** lub **14B w pełnym Q8_0** z kontekstem 32k tokenów i prędkością ponad 50 tokenów/s.
Często zadawane pytania (FAQ)
Czy format GGUF działa z biblioteką Ollama?
Tak, Ollama natywnie wykorzystuje format GGUF jako silnik bazowy. Każdy model pobierany przez polecenie 'ollama run' to w rzeczywistości skwantyzowany plik GGUF.
Czym różni się GGUF od Safetensors?
Safetensors przechowuje surowe wagi FP16/BF16 przeznaczone dla biblioteki PyTorch i Hugging Face Transformers na potężnych kartach GPU. GGUF to format zoptymalizowany pod szybką inferencję na CPU/GPU z wbudowaną kompresją kwantyzacji.