Jak uruchomić Qwen3.8-27B na RTX 3090
Praktyczny schemat uruchomienia lokalnego Qwen3.8-27B: właściwy profil, kontrola API, pamięć GPU, wariant zapasowy i test po restarcie.
Syntalith
Ten przewodnik opisuje uruchamianie profilu Qwen3.8-27B, który sprawdziliśmy na domowej RTX 3090 z 24 GB VRAM. Używaliśmy Qwen Code 0.21.13, jednego aktywnego żądania, kontekstu 150 000 tokenów, wag W4A16 AutoRound, pamięci KV FP8, MTP-3 i zmodyfikowanego vLLM. Wariant zapasowy działał na llama.cpp z wagami Unsloth Dynamic V3 Q4_K_M i limitem 120 000 tokenów.
Poniższe polecenia pokazują kolejność kontroli. Ścieżki, nazwy usług, adresy i sekrety trzeba zastąpić wartościami z własnego środowiska. Samo /health potwierdza działanie procesu; przed startem agenta sprawdzamy też model, limit i odpowiedź na krótkie pytanie.
Dane konfiguracji są w zestawieniu eksperymentu i metrykach zadania 150k. Test obejmował jedną kartę i jedno żądanie naraz.
Najpierw opisz profil
Limit kontekstu określa liczbę tokenów, które przyjmuje dany serwer. Token jest fragmentem tekstu używanym przez model. Karta modelu Qwen podaje natywny limit 262 144 tokenów, a serwer w zachowanym profilu zgłaszał limit 150 000. Te liczby opisują różne poziomy konfiguracji.
W4A16 to przybliżenie czterobitowych wag i szesnastobitowych aktywacji. Wagi zajmują wtedy mniej pamięci niż pełna precyzja. Pamięć KV przechowuje wartości pośrednie dla tokenów obecnych w kontekście, a jej format wpływa na dostępne miejsce. MTP to Multi-Token Prediction, mechanizm proponowania kolejnych tokenów. Publiczny zapis podaje dla tego profilu oznaczenie MTP-3; źródło nie rozstrzyga, jak dokładnie zaimplementowano tę liczbę w stosie.
Start serwera i kontrola gotowości
Poniższy szkielet pokazuje bezpieczną kolejność. Zatrzymanie drugiego silnika zwalnia VRAM, profil Compose uruchamia właściwy kontener, a pętla czeka na odpowiedź HTTP. Nazwa usługi i port wymagają dopasowania do własnego pliku Compose.
#!/usr/bin/env bash
set -euo pipefail
systemctl --user stop qwen.service
docker compose --profile single up -d --remove-orphans
while true; do
if curl -fsS http://127.0.0.1:18020/health >/dev/null; then
echo "Ready: Qwen3.8-27B, context 150000"
break
fi
if [[ -n "$(docker compose --profile single ps --status exited -q single)" ]]; then
echo "Server exited before health check passed" >&2
exit 1
fi
sleep 1
done
/health jest sondą procesu. Pętla sprawdza również zakończenie kontenera, aby błąd startu nie wyglądał jak długie oczekiwanie klienta.
Sprawdź, co odpowiada pod adresem API
Serwer może działać, a mimo to wskazywać inny model albo limit. Klient powinien odczytać /v1/models, porównać identyfikator modelu i oczekiwane max_model_len, a następnie wykonać krótką generację.
KEY_FILE="/path/to/secret/api-key"
if [[ ! -s "$KEY_FILE" ]]; then
echo "Missing API key" >&2
exit 1
fi
read -r QWEN_API_KEY < "$KEY_FILE"
curl -fsS \
-H "Authorization: Bearer $QWEN_API_KEY" \
http://127.0.0.1:18020/v1/models \
| grep -Eq '"max_model_len":[[:space:]]*150000'
Sekret powinien pochodzić z magazynu lub pliku z prawami dostępu; repozytorium nie jest jego miejscem. Wspólna usługa potrzebuje także wersji obrazu, wersji wag i rejestru profilu przypisanego do żądania.
Uruchom klienta z tym samym limitem
Klient agenta prowadzi sesję, wysyła polecenia i udostępnia narzędzia. W pomiarze klientem był Qwen Code 0.21.13, z poziomem rozumowania medium. Skrypt uruchamiający powinien jawnie wskazać model i osobny katalog konfiguracji:
export QWEN_VLLM_API_KEY="$QWEN_API_KEY"
export QWEN_HOME="/path/to/qwen/profile"
export QWEN_STREAM_IDLE_TIMEOUT_MS=0
export QWEN_STREAM_MAX_LIFETIME_MS=0
exec qwen --auth-type openai --model qwen3.8-27b "$@"
Nazwa zmiennej, adres i model muszą odpowiadać konfiguracji serwera. Warto zachować limit 150 000 po obu stronach i unikać stałego limitu odpowiedzi, który ucina długie zapisy narzędzi. Konkretne ustawienia klienta wymagają testu z używaną wersją Qwen Code.
Obserwuj kartę podczas pracy
nvidia-smi pokazuje stan sprzętu. O poprawności odpowiedzi przekonuje dopiero osobny test; na początek wystarczy obserwować zużycie pamięci i obciążenie GPU:
nvidia-smi \
--query-gpu=memory.used,utilization.gpu,temperature.gpu \
--format=csv,noheader
W zadaniu Go wybrany profil vLLM osiągnął maksymalnie 22 539 MiB VRAM. Przy karcie 24 GB zostaje niewielki margines, dlatego jedna aktywna sesja jest rozsądnym punktem startowym. Ten pomiar nie opisuje bezpiecznej współbieżności dla kilku osób.
Przełączenie na wariant zapasowy
Profil zapasowy ma własne wagi, limit i silnik. Po zatrzymaniu vLLM uruchom llama.cpp, a potem wykonaj te same kontrole modelu, limitu i krótkiej odpowiedzi:
docker compose --profile single down
exec /path/to/qwen-context 120k medium
Wariant 120k nie przyjmuje automatycznie sesji przygotowanej dla 150k. Przełączenie przywraca możliwość pracy, a czas odpowiedzi i liczba tokenów dostępnych w historii mogą się zmienić.
Test po każdym starcie
| Kontrola | Co potwierdza |
|---|---|
/health | proces odpowiada przez HTTP |
/v1/models | właściwy model i limit 150 000 |
| krótka odpowiedź JSON | klient odczytuje poprawny format |
| proste narzędzie tylko do odczytu | działają wywołania narzędzi |
nvidia-smi | brak nieoczekiwanego procesu i zapas VRAM |
| zadanie regresyjne | profil radzi sobie z rzeczywistą zmianą |
W pomiarze zadanie regresyjne naprawiało dwa miejsca w Go, które ignorowały błędy json.Marshal. Testy skupione i kompilacja przeszły, a Codex ocenił rezultat na 100/100 według arkusza kryteriów Syntalith: 40 punktów za poprawność obsługi błędów, 20 za testy regresji, 15 za zgodność API, 10 za zakres, 10 za weryfikację i 5 za dokumentację. Ta ocena dotyczy jednego przebiegu i konkretnego zadania.
Granica między eksperymentem a wdrożeniem
Domowy profil pokazał, że taki stos da się uruchomić na jednej karcie. Wdrożenie dla firmy wymaga wersjonowanego obrazu i wag, kontroli sekretów, prywatnego adresu API, historii metryk, kolejki, testu po restarcie i sprawdzonego powrotu do działającej wersji. Trzeba też zmierzyć rzeczywisty proces klienta.
Syntalith uruchamia prywatne modele od pierwszej instalacji po serwer dla zespołu. Możemy sprawdzić posiadany komputer, dobrać konfigurację, wykonać testy i nauczyć Cię obsługi. Jeśli sprzętu jeszcze nie masz, pomożemy porównać zakup z wynajmem GPU.
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