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
Na jednej domowej karcie RTX 3090 porównaliśmy dwa sposoby serwowania Qwen3.8-27B. W dopasowanej naprawie kodu Go profil ze zmodyfikowanym vLLM zakończył pracę w 502,14 s i otrzymał 100/100. Profil llama.cpp potrzebował 1468,76 s i otrzymał 98/100. Oba wyniki pochodzą z jednego przebiegu.
To porównanie całych konfiguracji. Zmieniły się jednocześnie silnik, format wag, pamięć KV i limit kontekstu, więc tabela wybiera profil operacyjny w tym eksperymencie. Nie izoluje jakości kwantyzacji ani przewagi samego silnika.
Pełne dane są w zestawieniu pomiarów i w metrykach zadania 150k. Eksperyment trwał po godzinach na domowym PC, z jedną kartą i jednym aktywnym uruchomieniem modelu.
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 |
Wdrożenie powinno obejmować wybrany profil, wersję wag i obrazu, test po restarcie oraz sprawdzony wariant powrotu. Audyt procesu AI pomaga dobrać test do rzeczywistej pracy, a bezpłatny skan procesu pozwala ustalić, czy wąskim gardłem jest model, serwer czy sam przebieg zadania.
Bezpłatny skan procesów
Zacznij od bezpłatnego skanu procesów.
- 30 minut z inżynierem, który może prowadzić Twoje wdrożenie.
- Przegląd procesów, które kosztują Cię najwięcej czasu i pieniędzy.
- Pisemne podsumowanie: co zautomatyzować, w jakiej kolejności, z widełkami kosztów.
W 30 minut wybieramy proces do oceny, a w ciągu 2 dni roboczych dostajesz rekomendację, także gdy lepsza będzie prostsza droga.
0 zł
30 minut · pisemne podsumowanie w 2 dni robocze
Terminy zobaczysz w swojej strefie czasowej.
Wolisz napisać? Opisz proces