W zeszłym tygodniu czytelnik zapytał, dlaczego jego plik GGUF wywala się w vLLM na maszynie bez GPU, podczas gdy ten sam plik działa bez zarzutu w Ollamie. Krótka odpowiedź, zanim cokolwiek innego: tak, vLLM uruchamia GGUF — przez oficjalną wtyczkę, tylko na GPU. Wtyczka nazywa się vllm-gguf-plugin, składnia to repo:quant_type, a w momencie, gdy próbujesz na CPU, wyszedłeś poza tabelę wspieranego sprzętu. Wszystko poniżej pochodzi z dokumentacji vLLM i historii repozytorium vllm-project/vllm (ponad 92 tys. gwiazdek od lutego 2023) — z dokumentów, nie z mojego stanowiska testowego.
Jak serwować model GGUF w vLLM?
Dwa kroki: zainstaluj wtyczkę, potem skieruj vLLM na model. Wsparcie GGUF nie mieszka już w rdzeniu vLLM — dokumentacja odnotowuje, że „zmigrował do vllm-gguf-plugin”, więc samo pip install vllm nie wystarczy:
uv pip install vllm-gguf-plugin
# Bezpośrednio z Hugging Face, w formacie repo_id:quant_type:
vllm serve unsloth/Qwen3-0.6B-GGUF:Q4_K_M
--tokenizer Qwen/Qwen3-0.6B
# Albo już pobrany plik lokalny:
vllm serve ./Qwen3-0.6B-Q4_K_M.gguf
--tokenizer Qwen/Qwen3-0.6B Flaga --tokenizer to nie ozdoba. Oficjalna dokumentacja zaleca tokenizer z modelu bazowego, bo konwersja tokenizera z GGUF jest „czasochłonna i niestabilna, szczególnie przy modelach z dużym słownikiem”. Jej pominięcie to zamiana flagi z jednej linii na długi, kapryśny start.
Dwie GPU, jeden model: dodaj --tensor-parallel-size 2, żeby rozdzielić ten sam GGUF na obie karty — tensor parallelism działa z GGUF tak samo jak z każdym innym formatem.
Dlaczego vLLM odrzuca GGUF na CPU?
To jest część, która zaskakuje. Reputacja GGUF to najpierw CPU — to format, na którym llama.cpp zbudowało swoją nazwę, działając na laptopach i Raspberry Pi. Wewnątrz vLLM sytuacja się odwraca. Oficjalna tabela zgodności sprzętowej oznacza GGUF:
| Sprzęt | GGUF w vLLM |
|---|---|
| NVIDIA Volta / Turing / Ampere / Ada / Hopper | obsługiwany |
| GPU AMD | obsługiwany |
| GPU Intel | nieobsługiwany |
| CPU x86 | nieobsługiwany |
| CPU Arm | nieobsługiwany |
Źródło: dokumentacja kwantyzacji vLLM. Powód jest architektoniczny: ścieżka GGUF w vLLM dekwantyzuje bloki do kerneli GPU zbudowanych pod serwowanie partiami. Za nimi nie stoi kernel CPU — bo vLLM to silnik serwowania, nie zabawka na laptopa. Bez GPU na maszynie żadna flaga nie pomoże — użyj llama.cpp.
Co się psuje: uczciwa lista ograniczeń
Ta sama strona dokumentacji niesie ostrzeżenie warte dosłownego cytatu: „wsparcie GGUF w vLLM jest wysoce eksperymentalne i słabo zoptymalizowane”. Konkretnie:
- Pokrycie kwantyzacji jest węższe niż w llama.cpp. K-quantly, które wszyscy pobierają (Q4_K_M i spółka), działają; egzotyczne schematy nie zawsze. llama.cpp pozostaje referencyjną implementacją formatu.
- Wsparcie architektur nadąża z opóźnieniem. Nowe rodziny modeli lądują najpierw w llama.cpp; wtyczka nadchodzi później.
- Brak leniwego ładowania przez mmap. llama.cpp mapuje plik do pamięci; vLLM ładuje go jak każdy inny checkpoint.
- To przede wszystkim funkcja śladu pamięciowego. Dokumentacja przedstawia GGUF jako sposób na zejście z zużyciem VRAM, nie jako zakład o przepustowość.
Nic z tego nie jest ukryte. Wszystko stoi w pierwszym akapicie oficjalnej strony GGUF — więcej niż daje większość funkcji eksperymentalnych.
vLLM czy llama.cpp do GGUF: kto wygrywa?
Różne narzędzia czytające ten sam plik:
| vLLM + GGUF | llama.cpp | |
|---|---|---|
| Inferencja na CPU | nie | tak, pierwsza klasa |
| Użytkownicy równocześnie | continuous batching, stworzone do tego | ograniczone |
| Pokrycie quantów | podzbiór, eksperymentalne | punkt odniesienia |
| Instalacja | vLLM + wtyczka | jedna binarka |
| Idealne dla | jedna GPU, wielu użytkowników | jeden użytkownik, dowolny sprzęt |
Jeśli serwujesz model zespołowi z jednej GPU, vLLM + GGUF pozwala ponownie użyć tych samych plików Q4_K_M, którymi dzieli się cały świat local-LLM — z większym wyborem w naszym przewodniku po kwantyzacji GGUF. Po pełne porównanie silników zobacz llama.cpp vs Ollama i jak uruchamiać modele GGUF lokalnie.
Reguła w jednej linii: ten sam plik, przeciwne instynkty — llama.cpp traktuje GGUF jako format nadrzędny, vLLM jako jedną z opcji.
FAQ
Czy vLLM uruchomi modele GGUF?
Tak. Zainstaluj vllm-gguf-plugin i serwuj składnią repo:quant_type — ale tylko na GPU. Ścieżka CPU w vLLM nie obsługuje GGUF.
Czy vLLM uruchomi GGUF na CPU?
Nie. Oficjalna tabela zgodności sprzętowej oznacza GGUF jako nieobsługiwany na CPU x86 i Arm — llama.cpp albo Ollama pozostają drogą CPU.
Serwować GGUF przez vLLM czy llama.cpp?
vLLM, gdy jedna GPU ma obsługiwać wielu użytkowników naraz; llama.cpp, gdy maszyna nie ma GPU albo chcesz najszerszego pokrycia kwantyzacji.
— mrsaynothing
— mrsaynothing
Notatki z pogranicza AI, Linuksa i self-hostingu.
Otrzymaj następną instrukcję mailem
Jeden mail na wpis. Napraw i idź dalej.
co to jest?128k kontekstu na desktopie to kłamstwo. Cache KV zjadł go w całości.
Podobają się teksty? Tak buduję zawodowo. zatrudnij mnie