Przejdź do treści
Wróć do bloga
Eksperyment na domowym PCJedna RTX 3090, jeden lokalny agent

Qwen3.8-27B na RTX 3090: wyniki, metryki i ograniczenia

Zapis jednego domowego eksperymentu z Qwen3.8-27B: profil serwera, czasy, tokeny, energia, VRAM, testy kodu i wykryte błędy wraz z ograniczeniami.

Zmierzyliśmy lokalnego Qwena na zadaniach kodowych i długim kontekście. Wynik obejmuje także błędy, profil serwera i sposób oceny.

Autor

Syntalith

Opublikowano Zaktualizowano 4 min czytania

Uruchomiliśmy Qwen3.8-27B na domowym komputerze z jedną kartą NVIDIA GeForce RTX 3090 i 24 GB VRAM. W głównym przebiegu Qwen Code naprawił dwa miejsca w kodzie Go, które ignorowały błędy json.Marshal. Polecenie wymagało zachowania poprawnych odpowiedzi, bezpiecznego zachowania dla błędu serializacji, testów regresji, dokumentacji i ograniczenia zmian do wskazanego zakresu.

Przebieg trwał 502,14 s, obejmował 52 wywołania narzędzi, wygenerował 28 916 tokenów, zużył około 33,88 Wh i osiągnął 22 539 MiB VRAM. Po zakończeniu pracy Codex ocenił zmianę na 100/100 według arkusza kryteriów Syntalith. Ocena pochodzi od modelu Codex; nie wystawił jej niezależny audytor ani laboratorium.

To zapis konkretnej konfiguracji i jednego wykonania. Serwer obsługiwał jedno aktywne żądanie modelu naraz. Dane do pobrania: zestawienie prób, metryki zadania Go oraz test długiego kontekstu.

Profil sprzętowy i serwer

ElementUżyta konfiguracja
GPUNVIDIA GeForce RTX 3090, 24 GB GDDR6X
ModelQwen3.8-27B, gęsty, natywny kontekst 262 144 tokenów
Wagi głównego przebieguszybki wariant W4A16 AutoRound
Serwerzamrożony, zewnętrznie zmodyfikowany stos vLLM
KlientQwen Code 0.21.13, poziom medium
Limit kontekstu150 000 tokenów
Pamięć kontekstuFP8 KV
DekodowanieMTP-3
Jednoczesne żądania modelu1

To opis całego profilu. W eksperymencie zachowaliśmy też llama.cpp z wagami Unsloth Dynamic V3 Q4_K_M GGUF i limitem 120k. Profile różniły się wagami, pamięcią kontekstu, serwerem, dekodowaniem i limitem, więc czasów nie przypisujemy jednemu silnikowi ani samej kwantyzacji.

Długi kontekst

Test umieszczał jeden dokładny fakt na początku, jeden w środku i jeden na końcu syntetycznego rekordu. Model miał zwrócić wszystkie trzy fakty jako JSON. W każdym przebiegu zwrócił 3 z 3 sprawdzanych wartości.

ProfilTokeny wejściowePrzetwarzanie wejściaGenerowanieCzas całkowitySzczyt VRAM
60k50 059890,7 tokena/s49,24 tokena/s59,3 s22 287 MiB
120k115 074681,6 tokena/s40,46 tokena/s172,6 s22 649 MiB
250k230 085412,4 tokena/s28,05 tokena/s563,4 s23 623 MiB

Przetwarzanie wejścia to tempo pracy serwera przed generowaniem odpowiedzi. Tempo generowania dotyczy nowych tokenów odpowiedzi. Czas całkowity obejmuje cały przebieg, więc użytkownik odczuwa także wczytanie kontekstu. Test sprawdza odtworzenie trzech wstawionych faktów. Nie mierzy rozumienia całego dokumentu ani powtarzalności wyniku.

Naprawa Go i ocena 100/100

W arkuszu kryteriów znalazły się: poprawność obsługi błędów (40 pkt), testy regresji (20), zgodność dotychczasowego API (15), zakres zmiany (10), weryfikacja testami i kompilacją (10) oraz dokumentacja (5). Dwa zestawy testów uruchomione ponownie, go build ./... i kontrola formatowania przeszły.

100/100 oznacza, że Codex nie odjął punktów względem tych kryteriów w tym przebiegu. Nie jest to prawdopodobieństwo sukcesu i nie opisuje wszystkich projektów Go. Dla porównania, ten sam lokalny model z limitem 120k przez llama.cpp trwał 1468,76 s, zużył szacunkowo 100,36 Wh i otrzymał 98/100. To porównanie całych profili.

Zadania z codziennego użycia

ZadanieKlientCzasWynik kontroli
eksport CSVQwen Code38,24 s3/3 publiczne i 3/3 ukryte
paginacjaQwen Code264,53 s3/3 publiczne i 3/3 ukryte
import CSVQwen Code93,14 s12/12 publicznych, 4/5 ukrytych; brak odrzucania pustego imienia i roli
import CSVCodex212 s11/11 publicznych, 5/5 ukrytych
import CSVOpenCode89,04 s9/9 publicznych, 5/5 ukrytych

Testy publiczne są znane agentowi. Ukryte sprawdzają także warunki, których polecenie albo widoczny zestaw nie eksponuje. Wynik importu pokazuje, dlaczego zielony publiczny zestaw nie wystarcza do odbioru procesu.

Porażka i naprawa interfejsu ATS

Jednozdaniowe polecenie z pustego katalogu dało panel ATS w 26 min 3 s. Pierwsza wersja wyglądała ambitnie, lecz wirtualizacja tabeli renderowała 8652 wiersze, 251 327 elementów DOM i dokument o wysokości 485 065 px. Przebieg zakończył się przed pełnym sprawdzeniem przeglądarkowym, ponieważ heurystyka klienta uznała postęp za pętlę.

Naprawa zajęła 14 min 24 s, a wizualna kontrola i kolejne poprawki 7 min 58 s. Niezależna kontrola desktopowa zmierzyła 722 węzły DOM, 15 widocznych wierszy, wysokość 900 px i brak poziomego przepełnienia. Na telefonie było 577 węzłów i 10 wierszy. Przegląd zrzutów znalazł jeszcze kolizję nazwy z firmą oraz obcięty znacznik etapu, więc CSS poprawiono w następnej turze.

Naprawiony syntetyczny panel ATS po kontroli przeglądarkowej
Testowy panel ATS w rozdzielczości 1440 × 900. Po naprawie: 722 węzły DOM, 15 wierszy i brak poziomego przepełnienia.

Łączny czas modelu do zaakceptowanego wariantu wyniósł 48:25. Był to syntetyczny interfejs testowy. Nie był produktem klienta.

Ten sam model, różne programy prowadzące

Na tym samym Qwenie uruchomiliśmy Qwen Code, klienta Codex i eksperymentalną ścieżkę Claude Code. Codex jako oceniający przyznał odpowiednio 100/100, 87/100 i 98/100. W każdym przypadku kod generował lokalny Qwen3.8-27B. Zmieniał się klient, sposób pracy z repozytorium i obsługa kontekstu.

Oceniający to program lub model, który po przebiegu stosuje jawne kryteria do wyniku pracy. W tym eksperymencie Codex sprawdzał kod, testy, kompilację, zakres i dokumentację. Wyniki nie są porównaniem Qwena z hostowanymi modelami OpenAI albo Anthropic. Ścieżka Claude Code używała zgodnego interfejsu; Anthropic nie wspiera kierowania Claude Code do modeli innych niż Claude.

Co z tego wynika dla wdrożenia

Jedna RTX 3090 może wystarczyć do pilota, pracy jednego inżyniera albo sekwencyjnej kolejki. Jedno aktywne żądanie modelu nie daje podstaw do obietnicy równoczesnej obsługi wielu osób. Przed wdrożeniem zmierz obciążenie godzin szczytu, długość wejść i odpowiedzi, kolejkę, korekty człowieka oraz zachowanie po restarcie i aktualizacji.

Najbardziej użyteczny zapis testu zawiera polecenie, oczekiwany wynik, ukryte kontrole, wersję modelu, profil serwera i sposób oceny. Dopiero wtedy porównuj lokalny model z mniejszą wersją albo API.

Granice pomiaru

  • Każda konfiguracja została uruchomiona raz.
  • Test długiego kontekstu sprawdza trzy wstawione fakty.
  • Eksperyment obejmował jedną kartę i jedno aktywne żądanie modelu naraz.
  • Stos vLLM był zmodyfikowany przez stronę trzecią i zamrożony.
  • Oceny 100/100, 98/100 i 87/100 wystawił Codex według arkusza kryteriów Syntalith.
  • Porównanie vLLM z llama.cpp obejmowało różne wagi, pamięć kontekstu, silnik i limity.

Pełne dane są w zestawieniu eksperymentu. Jeśli chcesz wykonać taki pomiar na własnym repozytorium, bezpłatny skan procesu pomaga ustalić przypadki testowe i próg jakości.

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