Jak utrzymywać lokalnego Qwena: awarie zamienione w testy
Osiem usterek z domowego eksperymentu z Qwenem i RTX 3090. Pokazujemy kontrole, aktualizacje, przełączenie na poprzednią wersję, testy i szkolenie operatora.
Syntalith
Lokalny model wymaga opieki nad całym systemem: klientem, serwerem, pamięcią, narzędziami i repozytorium testowym. W naszym eksperymencie na RTX 3090 każda usterka wskazała inną kontrolę. Zebraliśmy je tutaj, aby następna osoba mogła odtworzyć działający profil i szybko rozpoznać źródło problemu.
To przykłady z eksperymentu po godzinach na domowym komputerze. Nie opisują incydentów produkcyjnych ani historii klienta.
Osiem usterek z jednego eksperymentu
| Nr | Objaw | Źródło | Skutek | Kontrola |
|---|---|---|---|---|
| 1 | zapis narzędzia kończył się około 8k tokenów | stałe max_tokens: 8192 wyłączało ponowienie adaptacyjne Qwen Code | edycje pozostawały niepełne | test zapisu dłuższego niż 8k i brak stałego limitu w profilu |
| 2 | klient otrzymywał 401 | użyto klucza llama.cpp pod adresem vLLM | żądanie nie docierało do modelu | osobne nazwy sekretów i test adresu API |
| 3 | interfejs zatrzymywał się przed kontrolą | action_stagnation uznawał różne udane edycje za pętlę | kod wyjścia 1 mimo postępu | warunek pętli oparty na rzeczywistym braku postępu |
| 4 | Claude Code kończył się HTTP 400 | wysłał 131 265 tokenów do profilu 131 072 | 121,64 min bez ukończenia | test skracania historii i przepełnienia dla każdego klienta |
| 5 | test Pythona zmieniał zakres diffu | wykonanie modyfikowało śledzone __pycache__ | mylący zakres zmian | pamięć podręczna poza repozytorium i kontrola git status |
| 6 | diagnostyka używała złego silnika | skrypt nie obsługiwał pola env i wracał do starego przełącznika | wynik nie nadawał się do porównania | jawne zmienne środowiskowe i sprawdzenie modelu oraz kontekstu |
| 7 | druga tura odrzucała edycję przed odczytem | wznowienie resetowało stan odczytu narzędzia | dodatkowy odczyt i koszt | test wznowienia oraz ponowny odczyt przed edycją |
| 8 | aktualizacja wymagała czegoś więcej niż pip install | profil używał zewnętrznie zmodyfikowanego vLLM | ryzyko zgodności i łańcucha dostaw | zamrożony obraz, skrót, źródło poprawki, test i poprzednia wersja |
Usterki dotyczyły różnych warstw. Pierwsza należała do konfiguracji klienta, druga i szósta do skryptów uruchamiających, trzecia do programu testującego, czwarta do zarządzania kontekstem, piąta do repozytorium testowego, a ósma do procesu aktualizacji. Sam opis jakości odpowiedzi nie wykryłby żadnej z nich.
Od objawu do powtarzalnego testu
Każdy wpis powinien podawać objaw, sposób odtworzenia, oczekiwane zachowanie, zapis kontroli, właściciela i decyzję o zmianie wersji:
id: QWEN-OPS-004
objaw: żądanie przekracza kontekst serwera i zwraca HTTP 400
odtworzenie: wznów długą sesję do progu kontroli wstępnej
oczekiwany_wynik: klient skraca historię albo odmawia wysłania zbyt dużego żądania
artefakty: strumień zdarzeń, długość żądania, błąd serwera, wersja profilu
właściciel: platforma-agenta
zmiana_wersji: przełącz klienta lub profil; nie zwiększaj limitu bez testu
Test uruchamiaj na warstwie, która zawiodła. Błędny klucz wymaga wywołania /health, /v1/models, odpowiedzi 401 dla złego sekretu i właściwego identyfikatora modelu dla dobrego. Usterka limitu 8k wymaga długiego zapisu narzędziem, ponieważ krótki test podstawowy przejdzie.
Bramka przed aktualizacją
Przed zmianą modelu, obrazu vLLM, Qwen Code albo sterownika przeprowadź trzy poziomy kontroli.
Pięć minut na start i protokół
- adres API zaczyna odpowiadać;
- raportuje oczekiwany model i kontekst;
- zły sekret jest odrzucany;
- strumień odpowiedzi kończy się poprawnie;
- mały JSON i wywołanie narzędzia spełniają swoje schematy.
Około trzydziestu minut na klienta i test
- zapis dłuższy niż 8k nie jest ucinany;
- wznowiona sesja potrafi ponownie czytać i edytować;
- klient nie wysyła kontekstu większego niż limit serwera;
- wykrywanie pętli wymaga dowodu braku postępu;
git statusnie pokazuje pamięci podręcznej ani obcych plików.
Jedno zadanie procesu do pomiaru jakości i kosztu
Użyj tego samego zwykłego polecenia, świeżej kopii repozytorium, ukrytych kontroli, przeglądu zmian, czasu i metryk systemowych. W zachowanym profilu zadanie obsługi błędów json.Marshal w Go trwało 8:22. W tym jednym przebiegu Codex przyznał zmianie 100/100 według kryteriów Syntalith: poprawność (40 pkt), testy regresji (20), zgodność (15), zakres i utrzymywalność (10), weryfikacja (10) oraz dokumentacja (5). Wersja prowadzona przez klienta Codex wprowadziła niedeterministyczne zachowanie awaryjne i nie przeszła oceny.
Nowy numer wersji nie jest kryterium akceptacji. Nowy profil powinien przejść krytyczne kontrole i pozostać w uzgodnionym budżecie regresji.
Co zapisać przy przekazaniu
wdrozenie/
profile/
codzienny.yaml
zapasowy.yaml
wykazy/
model.json
obraz-serwera.json
licencje.md
instrukcje/
start-stop-status.md
przekroczenie-kontekstu.md
brak-pamieci-gpu.md
rotacja-klucza.md
poprzednia-wersja.md
testy/
podstawowe/
regresje-klienta/
przypadki-procesu/
awarie/
QWEN-OPS-001.md
...
szkolenie/
laboratorium-operatora.md
kryteria-recenzenta.md
Wykaz powinien zawierać wersję modelu, format i skrót pliku, obraz, commit poprawki, sterownik, moduł odczytujący wywołania narzędzi, ustawienia losowania, kontekst i klienta. Etykieta latest nie pozwala odtworzyć środowiska.
Instrukcja operacyjna podaje komendę, oczekiwany wynik i pierwszy punkt diagnostyki. Osoba przejmująca usługę powinna wykonać start, test i przełączenie na poprzednią wersję bez wiedzy autora konfiguracji.
Monitoring dwóch warstw
Warstwa operacyjna mierzy dostępność adresu API, kolejkę, czas do pierwszego tokena, całkowity czas, długość wejścia i wyjścia, kompresje historii, błędy dostawcy i narzędzi, VRAM, użycie GPU, zakończenia procesu oraz wersję profilu.
Warstwa jakości mierzy wynik ukrytych kontroli, akceptację bez poprawek, kategorię korekty człowieka, naruszenia uprawnień lub cytowania, zakres zmian oraz uzasadnione i błędne odmowy.
Panel GPU nie zauważy pustego imienia w imporcie. Opinia „dobra odpowiedź” nie pokaże, że następna tura zaraz przepełni kontekst. Obie warstwy są potrzebne.
Ćwiczenie przełączenia na poprzednią wersję
Na jednym GPU przełączenie powinno być krótkie i znane operatorowi:
- wstrzymaj przyjmowanie nowych zadań;
- dokończ albo zakończ kolejkę zgodnie z polityką;
- wybierz poprzedni obraz i profil z wykazu;
- sprawdź identyfikator modelu, kontekst i sekret;
- uruchom test startowy oraz jeden krytyczny przypadek;
- przywróć ruch i zachowaj zapisy awarii.
W domowym profilu wersja zapasowa przełączała vLLM na llama.cpp z kontekstem 120k. W firmie dochodzą docelowy czas odtworzenia, test uprawnień i informacja dla użytkowników. Wolniejszy wariant jest użyteczny, gdy zespół zna jego zachowanie.
Szkolenie zespołu
Operator powinien umieć uruchomić profil, rozpoznać zły adres, odczytać metryki, zmienić sekret i przełączyć wersję. Recenzent potrzebuje kryteriów i ukrytych przypadków, aby odróżnić płynną odpowiedź od zaakceptowanego wyniku. Właściciel procesu ustala błędy krytyczne, a osoba od bezpieczeństwa sprawdza dane, sieć, narzędzia i retencję.
Najlepsze ćwiczenie używa kopii środowiska. Jedna osoba celowo wprowadza usterkę z rejestru, druga diagnozuje ją na podstawie logów i instrukcji, a potem wykonuje test naprawczy.
Co przekazuje Syntalith
Przy wdrożeniu przekazujemy uzgodnione profile, wykazy i licencje, kod integracji, testy jakości, panel stanu, alerty, przełączanie wersji, rejestr znanych usterek oraz materiały szkoleniowe. Zespół wykonuje start, test i przełączenie przed akceptacją.
Aplikacje AI zaczynają się od 25 000 zł netto. Kursy AI-Native i utrzymanie wyceniamy po rozmowie o repozytorium, krytyczności, integracjach i czasie reakcji. Bezpłatny skan procesu pomaga zdecydować, czy najpierw potrzebny jest pilot, audyt, szkolenie czy naprawa istniejącego wdrożenia.
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