llama.cpp czy vLLM dla Qwen3.8-27B na RTX 3090?
W jednym zadaniu Qwen Code wygrał pełny profil ze zmodyfikowanym vLLM. llama.cpp pozostał prostszym wariantem zapasowym. Oto zakres dowodów i koszt tej decyzji.
Syntalith
Naprawa tego samego błędu w Go zajęła lokalnemu Qwen3.8-27B 502,14 s na zmodyfikowanym vLLM i 1468,76 s na llama.cpp. Oceny wyniosły odpowiednio 100/100 i 98/100. Próby wykonaliśmy na jednej domowej RTX 3090.
Różnił się cały profil: silnik, format wag, pamięć KV i limit kontekstu. Z tych wyników można wybrać konfigurację do dalszych prób, ale nie da się wyliczyć przewagi samego vLLM nad llama.cpp. Każdy wariant uruchomiliśmy raz, z jednym aktywnym żądaniem modelu.
Dane są dostępne w zestawieniu pomiarów i metrykach zadania 150k. Poniżej opisujemy różnice, które mają znaczenie przy utrzymaniu takiego serwera.
Co właściwie porównujemy
llama.cpp jest silnikiem uruchamiającym model. W tym profilu korzystał z pliku GGUF Unsloth Dynamic V3 Q4_K_M. GGUF przechowuje wagi i ich ustawienia w jednym pliku, a llama.cpp może pracować na różnych procesorach i kartach oraz przenosić część obliczeń między CPU i GPU. Taka ścieżka upraszcza przenoszenie i odtwarzanie usługi.
vLLM jest serwerem uruchamiającym model. Przyjmuje żądania, zarządza pamięcią dla kontekstu i wystawia interfejsy używane przez klientów, w tym interfejs zgodny z OpenAI. W naszym pomiarze działał z zewnętrznie zmodyfikowanym, zamrożonym stosem oraz szybkim wariantem wag W4A16 AutoRound. Ten wariant korzysta z innego pliku niż GGUF.
W4A16 oznacza w przybliżeniu wagi zapisane z dokładnością 4 bitów i aktywacje liczone w 16 bitach. Pamięć KV przechowuje pośrednie wartości uwagi dla tokenów już obecnych w kontekście. Jej format i rozmiar wpływają na to, ile tekstu mieści się w VRAM. Limit kontekstu określa maksymalną liczbę tokenów obsługiwanych przez konkretny profil; deklaracja modelu opisuje osobny poziom możliwości.
Wynik zadania programistycznego
Zadanie dotyczyło dwóch ścieżek Go, które ignorowały błędy json.Marshal. Agent miał zachować poprawne formaty odpowiedzi, dodać przewidywalne zachowanie błędne, testy regresji, kompilację i dokumentację.
| Pełny profil | Kontekst | Czas | Ocena Codex | Kompresje |
|---|---|---|---|---|
llama.cpp, Dynamic V3 Q4_K_M | 120 000 | 1468,76 s | 98/100 | 1 |
| zmodyfikowany vLLM, szybki W4A16 AutoRound | 150 000 | 502,14 s | 100/100 | 0 |
Kompresja oznacza skrócenie historii rozmowy przez klienta prowadzącego sesję agenta, gdy zabraknie miejsca w oknie kontekstu. W tej tabeli 0 oznacza brak takiego zdarzenia, a 1 jedno zdarzenie zapisane w przebiegu.
Ocenę wystawił OpenAI Codex według arkusza kryteriów Syntalith: poprawność obsługi błędów (40 pkt), testy regresji (20), zgodność API (15), zakres zmian (10), weryfikacja testami i kompilacją (10) oraz dokumentacja (5). Maksymalny wynik oznacza brak odjęć podczas tego przebiegu. Ten wynik nie jest audytem niezależnego laboratorium ani gwarancją powtarzalności.
W profilu vLLM telemetria zapisała maksymalnie 22 539 MiB użytej pamięci VRAM. Karta ma 24 GB, więc margines był ograniczony. W obu konfiguracjach mierzono pracę agenta, narzędzia i testy, czyli pełny przebieg zamiast pojedynczego kroku dekodowania.
Co mówią testy długiego kontekstu
Osobny test umieszczał trzy znane fakty na początku, w środku i na końcu syntetycznego rekordu, po czym prosił o zwrot trzech wartości w JSON. Wszystkie trzy sprawdzone fakty wróciły dla wejść o długości 50 059, 115 074 i 230 085 tokenów.
| Profil długości | Tokeny wejściowe | Generowanie | Czas | Maks. VRAM |
|---|---|---|---|---|
| 60k | 50 059 | 49,24 tok./s | 59,3 s | 22 287 MiB |
| 120k | 115 074 | 40,46 tok./s | 172,6 s | 22 649 MiB |
| 250k | 230 085 | 28,05 tok./s | 563,4 s | 23 623 MiB |
Tok./s to liczba wygenerowanych tokenów na sekundę. Czas obejmuje cały pomiar, a maksymalny VRAM pokazuje najwyższy zaobserwowany poziom zajętej pamięci karty. Każdą długość uruchomiono raz. Plik z wynikami nie przypisuje tych trzech wierszy osobno do llama.cpp albo vLLM, dlatego nie używamy ich jako bezpośredniego rankingu silników. Test sprawdza odczyt trzech wstawionych faktów i nie opisuje jakości rozumienia dowolnego dokumentu.
Kiedy wybrać llama.cpp
Ten wariant pasuje do pilota na jednej karcie, stanowiska osobistego i usługi, którą musi dać się szybko przenieść. Jeden plik GGUF jest łatwy do zarchiwizowania. Szeroki zakres sprzętu i możliwość przenoszenia części obliczeń na CPU tworzą dodatkową drogę odzyskania usługi. Mniejsza liczba prywatnych poprawek ogranicza koszt aktualizacji.
Zapasowy profil z eksperymentu używał llama.cpp, Dynamic V3 Q4_K_M i limitu 120k. Po zmianie silnika trzeba ponownie sprawdzić model, limit kontekstu i krótką odpowiedź, ponieważ sesja 150k nie pasuje automatycznie do serwera 120k.
Kiedy wybrać vLLM
Wybrany profil vLLM ma sens, gdy długie zadania są częste, margines czasu powtarza się na ustalonym zestawie testów, a zespół potrafi utrzymać obraz, wagi i zgodność interfejsu. Serwer tworzy też dobrą podstawę do późniejszych pomiarów kolejki i wielu żądań.
Kosztem jest złożoność. Zamrożony stos z zewnętrzną poprawką wymaga własnej ewidencji wersji, testu po aktualizacji sterownika i sprawdzonego powrotu do działającego profilu. Jedna karta i jedna aktywna sesja w tym eksperymencie nie dostarczają danych o przepustowości dla zespołu.
Decyzja oparta na dowodach
| Potrzeba | Pierwszy kandydat |
|---|---|
| szybki pilotaż na jednej karcie | llama.cpp z GGUF |
| prosty wariant zapasowy | llama.cpp |
| długie zadania, które przechodzą ustalony test | zmierzony profil vLLM |
| kilku użytkowników | osobny test kolejki i współbieżności |
| mały koszt utrzymania | profil bez prywatnej poprawki |
Syntalith konfiguruje hosting prywatnych LLM na własnym sprzęcie lub wynajętych GPU. Dobierzemy silnik, sprawdzimy obciążenie i przekażemy wersje wag, obrazy serwera oraz procedurę odtworzenia. Wycenę opieramy na zadaniu i oczekiwanej dostępności.
Syntalith ma status OpenAI Select Partner w OpenAI Partner Network.
Pomagamy szybciej odpowiadać klientom i znajdować informacje w firmowych dokumentach. Dobieramy i wdrażamy narzędzia AI, a Twój zespół uczymy z nich korzystać.
Jak wdrożyć ChatGPT i OpenAI w firmieOceńmy prywatne AI w warunkach Twojej firmy
Pomagamy firmom i osobom prywatnym dobrać sprzęt, uruchomić model i sprawdzić go na własnych zadaniach. Możesz zacząć od komputera, który już masz, albo od rozmowy przed zakupem. Pierwsza rozmowa jest bezpłatna, a wycenę przygotowujemy po ocenie zadania i sprzętu.
Prywatne modele LLM i fine-tuning