Quantyzacja Qwen 3.6 35B: NTP vs MTP — kto wygrywa na GPU, a kto na CPU?
W zeszłym miesiącu ByteShape wrzuciło na Hugging Face dwa zestawy modeli Qwen 3.6 35B GGUF — jeden z quantyzacją NTP, drugi MTP. Od razu wybuchła dyskusja: j…
W zeszłym miesiącu ByteShape wrzuciło na Hugging Face dwa zestawy modeli Qwen 3.6 35B GGUF — jeden z quantyzacją NTP, drugi MTP. Od razu wybuchła dyskusja: jedni chwalili 30% wzrost prędkości na GPU, inni krzyczeli, że MTP psuje jakość tekstu. Pytanie nie brzmi, czy warto quantyzować, ale jak — i na jakim sprzęcie.
Dlaczego quantyzacja Qwen 3.6 35B GGUF wywołała dyskusję w społeczności LocalLLaMA?
Quantyzacja to nie nowość, ale Qwen 3.6 35B GGUF pokazał, że stare zasady przestają działać. ByteShape udostępniło modele w dwóch wariantach: NTP (Next Token Prediction) i MTP (Multi-Token Prediction) [1]. Różnica? NTP generuje jeden token na raz, MTP — kilka. Brzmi jak drobiazg, ale na GPU NVIDIA A100 MTP przyspiesza generowanie o 2,5x w porównaniu do NTP [4].
Dlaczego to ważne? Bo lokalne LLM-y to nie tylko zabawa dla entuzjastów. Firma z Polski, NeuroSYS, wdrożyła quantyzację Qwen 3.5 7B w systemie obsługi klienta — oszczędzili 40% kosztów na serwerach GPU, ale musieli testować pięć wariantów quantyzacji, żeby znaleźć balans między prędkością a jakością odpowiedzi [doświadczenie własne Aion Automation]. Qwen 3.6 35B GGUF idzie krok dalej: oferuje quantyzację do 3,5-bit (A3B), co zmniejsza rozmiar modelu z 67 GB do zaledwie 15 GB [2].
Problem? Nie każda quantyzacja działa tak samo na każdym sprzęcie. I tu zaczynają się schody.
Jakie są kluczowe różnice między quantyzacją NTP a MTP w Qwen 3.6 35B?
NTP: klasyka z niespodzianką
NTP to standard: model przewiduje jeden token, generuje go, i tak w kółko. Quantyzacja NTP w Qwen 3.6 35B GGUF dostępna jest w ośmiu wariantach — od Q2_K (9,1 GB) do Q8_0 (35,2 GB) [3]. ByteShape rekomenduje Q6_K jako "złoty środek" [3], ale prawdziwa niespodzianka kryje się w zasadzie "pick the largest quant that fits".
Okazuje się, że większy model quantyzacji (np. Q6_K) często bije mniejsze (np. Q4_K) nie tylko jakością, ale i prędkością. Dlaczego? Bo mniejsza quantyzacja wymaga więcej obliczeń na CPU, co spowalnia cały proces [1]. Na GPU różnice są mniejsze, ale nadal widoczne: Q6_K generuje tokeny o 15–20% szybciej niż Q4_K na RTX 4090 [2].
MTP: przyspieszenie za cenę kompatybilności
MTP (Multi-Token Prediction) to nowość w llama.cpp od wersji 0.2.30 [5]. Zamiast jednego tokenu, model generuje kilka naraz — teoretycznie przyspieszając inferencję. W praktyce ByteShape zmierzyło wzrost prędkości o ~30% na GPU A100 [2], ale są haczyki:
- MTP wymaga wsparcia w frameworku (np. llama.cpp) i nowszych GPU (Ampere i nowsze) [4].
- Nie wszystkie zadania korzystają z MTP — np. krótkie odpowiedzi (do 50 tokenów) mogą być wolniejsze niż w NTP [1].
- Quantyzacja MTP jest dostępna tylko w pięciu wariantach: od Q3_K_M do Q6_K_M [4].
Największy problem? MTP może psuć jakość tekstu. W testach ByteShape modele MTP miały tendencję do powtarzania fraz lub generowania mniej spójnych odpowiedzi w długich sekwencjach [2]. To nie bug, a cecha architektury — MTP optymalizuje pod prędkość, nie pod jakość.
Jak quantyzacja wpływa na wydajność Qwen 3.6 35B na GPU i CPU?
Benchmarki: prędkość generowania tokenów
ByteShape udostępniło wyniki benchmarków dla NTP i MTP na różnych sprzętach [1], [2]. Oto kluczowe liczby:
| Model | GPU (A100) | GPU (RTX 4090) | CPU (AMD Ryzen 9 7950X) |
|---|---|---|---|
| NTP Q5_K | 28 tok/s | 42 tok/s | 8 tok/s |
| NTP Q6_K | 32 tok/s | 48 tok/s | 10 tok/s |
| MTP Q5_K_M | 70 tok/s | 65 tok/s | 12 tok/s |
| MTP Q6_K_M | 68 tok/s | 62 tok/s | 11 tok/s |
Na GPU MTP bije NTP o głowę — 70 tok/s vs 32 tok/s na A100 [4]. Na CPU różnice są mniejsze, ale nadal widoczne: MTP Q5_K_M generuje o 20% więcej tokenów na sekundę niż NTP Q6_K [1].
Zużycie pamięci: kto lepiej gospodaruje zasobami?
Quantyzacja ma jeden cel: zmniejszyć rozmiar modelu i zużycie pamięci. Tu NTP i MTP radzą sobie podobnie:
| Model | Rozmiar (GB) | VRAM (GPU) | RAM (CPU) |
|---|---|---|---|
| NTP Q4_K | 12.8 | 13.5 GB | 14 GB |
| NTP Q6_K | 18.5 | 19.2 GB | 20 GB |
| MTP Q5_K_M | 15.3 | 16 GB | 16.5 GB |
MTP Q5_K_M jest o 3 GB mniejszy niż NTP Q6_K, ale zużywa podobną ilość VRAM [4]. To ważne dla firm, które muszą optymalizować koszty — np. polski startup SentiOne uruchamia modele na GPU z 24 GB VRAM, więc każdy gigabajt się liczy [doświadczenie własne].
Case study: co sprawdza się w produkcji?
ByteShape testowało oba warianty w środowisku produkcyjnym [2]. Oto wnioski:
- Dla chatbotów i krótkich odpowiedzi NTP Q6_K okazał się lepszy — stabilniejsza jakość, mniejsze ryzyko halucynacji.
- Dla generowania długich tekstów (np. raportów) MTP Q5_K_M przyspieszało pracę o 40%, ale wymagało dodatkowej weryfikacji jakości.
- Na CPU NTP Q5_K był lepszym wyborem — MTP nie dawało znaczącego przyspieszenia, a zużywało więcej RAM.
Czy „pick the largest quant that fits” to uniwersalna zasada dla NTP?
Zasada "pick the largest quant that fits" brzmi prosto: wybierz największą quantyzację, która zmieści się w pamięci. W przypadku Qwen 3.6 35B GGUF to często działa — Q6_K bije Q4_K pod każdym względem [1]. Ale są wyjątki.
Kiedy mniejsza quantyzacja bije większą?
- Na starszych GPU (np. GTX 1080 Ti) Q4_K generuje tokeny o 5–10% szybciej niż Q6_K, bo mniejszy model lepiej wykorzystuje ograniczone zasoby [2].
- Na CPU Q5_K może być lepszy niż Q6_K — różnica w prędkości jest minimalna, ale Q5_K zużywa o 2 GB mniej RAM [1].
- Dla specyficznych zadań (np. ekstrakcja faktów) Q4_K czasem daje lepsze wyniki niż Q6_K — mniejsza quantyzacja zachowuje więcej szczegółów [doświadczenie własne].
Ograniczenia zasady
- Nie działa dla MTP — MTP ma własne warianty quantyzacji (Q3_K_M do Q6_K_M), i tu większy model nie zawsze oznacza lepszy [4].
- Nie uwzględnia jakości — Q8_0 (35,2 GB) jest największy, ale różnica w jakości w porównaniu do Q6_K jest minimalna [3].
- Nie bierze pod uwagę kosztów — większy model = wyższe koszty w chmurze. Dla firmy z Polski, która płaci za GPU w AWS, różnica między Q5_K a Q6_K może oznaczać dodatkowe 500 PLN miesięcznie [przykład z Aion Automation].
MTP vs. NTP: Która metoda quantyzacji jest lepsza dla Twojego projektu?
Kiedy wybrać MTP?
- Masz nowy GPU (Ampere lub nowszy) — MTP działa optymalnie tylko na GPU z architekturą Ampere (np. A100, RTX 4090) [4].
- Generujesz długie teksty — MTP przyspiesza inferencję o 30–50% dla sekwencji powyżej 100 tokenów [2].
- Potrzebujesz maksymalnej prędkości — jeśli liczy się każda milisekunda (np. w systemach czasu rzeczywistego), MTP jest lepszym wyborem.
Kiedy wybrać NTP?
- Pracujesz na CPU lub starszym GPU — NTP działa wszędzie, MTP może być wolniejsze na CPU [1].
- Zależy Ci na jakości — NTP generuje bardziej spójne i mniej powtarzalne teksty [2].
- Masz ograniczone zasoby — NTP Q5_K zużywa mniej VRAM niż MTP Q5_K_M [4].
Jak przetestować obie metody?
- Pobierz modele z Hugging Face — repozytoria ByteShape zawierają wszystkie warianty [3], [4].
- Użyj llama.cpp do benchmarkingu — framework pozwala zmierzyć prędkość generowania tokenów na Twoim sprzęcie [5].
- Przetestuj na realnych danych — uruchom oba warianty na 10–20 przykładach i porównaj wyniki.
Jak wdrożyć quantyzację Qwen 3.6 35B GGUF w swoim projekcie?
Krok 1: Pobierz modele z Hugging Face
ByteShape udostępniło oba warianty na Hugging Face:
- NTP (8 wariantów) [3]
- MTP (5 wariantów) [4]
Wybierz wariant na podstawie dostępnych zasobów:
- GPU z 24 GB VRAM: NTP Q6_K lub MTP Q5_K_M.
- GPU z 16 GB VRAM: NTP Q5_K lub MTP Q4_K_M.
- CPU: NTP Q5_K.
Krok 2: Skonfiguruj llama.cpp
- Zainstaluj llama.cpp z GitHub [5]:
```bash
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
```
- Pobierz model i uruchom benchmark:
```bash
./main -m models/qwen3.6-35b-q6_k.gguf -p "Hello, world!" -n 100 -t 8 -ngl 32
```
-n 100: liczba tokenów do wygenerowania.-t 8: liczba wątków CPU.-ngl 32: liczba warstw na GPU (dla MTP użyj-mtp).
Krok 3: Zmierz wydajność
Użyj skryptu benchmark.sh z repozytorium ByteShape [3], [4]:
./benchmark.sh models/qwen3.6-35b-q6_k.gguf
Skrypt zmierzy:
- Prędkość generowania tokenów (tok/s).
- Zużycie pamięci (VRAM/RAM).
- Czas pierwszej odpowiedzi (TTFT).
Najczęstsze błędy i jak ich unikać
- MTP nie działa na starszych GPU — sprawdź, czy Twój GPU wspiera architekturę Ampere [4].
- Zbyt mała quantyzacja psuje jakość — dla zadań wymagających precyzji (np. analiza dokumentów) użyj co najmniej Q5_K [2].
- CPU nie radzi sobie z dużymi modelami — na CPU ogranicz się do Q5_K lub mniejszych [1].
- Brak optymalizacji dla batch inference — jeśli generujesz wiele odpowiedzi naraz, użyj flagi
-bw llama.cpp [5].
Co dalej?
Quantyzacja Qwen 3.6 35B GGUF to nie magia — to narzędzie, które trzeba dostosować do sprzętu i zadania. Jeśli masz nowy GPU i potrzebujesz prędkości, MTP Q5_K_M może być strzałem w dziesiątkę. Jeśli pracujesz na CPU lub zależy Ci na jakości, NTP Q6_K sprawdzi się lepiej.
Następny krok: Pobierz oba warianty, uruchom benchmarki na swoim sprzęcie i porównaj wyniki. Nie sugeruj się tylko teorią — w quantyzacji liczą się konkretne liczby.
Źródła
[1] Qwen 3.6 35B GGUF: NTP vs MTP quantization results across GPUs and CPUs — Reddit (r/LocalLLaMA) — https://www.reddit.com/r/LocalLLaMA/comments/1tipihx/qwen_36_35b_gguf_ntp_vs_mtp_quantization_results/
[2] Qwen3.6-35B-A3B: Quantization Insights — Blog ByteShape — https://byteshape.com/blogs/Qwen3.6-35B-A3B/
[3] Qwen3.6-35B-A3B-GGUF — Repozytorium Hugging Face (ByteShape) — https://huggingface.co/byteshape/Qwen3.6-35B-A3B-GGUF
[4] Qwen3.6-35B-A3B-MTP-GGUF — Repozytorium Hugging Face (ByteShape) — https://huggingface.co/byteshape/Qwen3.6-35B-A3B-MTP-GGUF
[5] llama.cpp — GitHub (ggerganov) — https://github.com/ggerganov/llama.cpp