Przejdź do głównej zawartości

10 postów z tagiem "Lokalne LLM"

Uruchamianie modeli językowych lokalnie — na własnym sprzęcie, bez chmury.

Wyświetl wszystkie tagi

Reranker czy sędzia-LLM na prawdziwych danych: lepsza kolejność przegrała z kolejką na GPU

· 13 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

We wpisie o rozdziale 4 „Generative AI Design Patterns" reranker bge oddzielił pytania spoza domeny od pozostałych na sztucznym korpusie. Ostrzegłem wtedy, że ten rozdział zniknie, gdy w bazie pojawią się fragmenty z tematów sąsiednich. Teraz powtórzyłem pomiar na prawdziwej bazie wiedzy w firmie, na stacji z RTX 5090, i rozdział zniknął. Sędzia-LLM nadal układał fragmenty lepiej niż wyspecjalizowany reranker (MRR 0,87–0,95 wobec 0,84), ale ten sam pomysł w dwóch implementacjach dał dwa różne wyniki. Gdy karta równolegle przetwarzała długie konteksty, sędzia potrzebował 9–14 s, a reranker 0,12 s. Próg odmowy na ocenie rerankera wyglądał na odporny, dopóki liczyłem go na 21 pytaniach z etykietą źródła. Na wszystkich 37 pytaniach z odpowiedzią nie oddziela pytań spoza bazy żaden model. Ten błąd złapałem dopiero przy weryfikacji tego wpisu.

Generative AI Design Patterns #4: Chain of Thought, Tree of Thoughts, Adapter Tuning i Evol-Instruct, czyli który brak naprawia które narzędzie

· 19 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Rozdział 5 „Generative AI Design Patterns" opisuje cztery sposoby rozszerzania tego, co model potrafi: Chain of Thought, Tree of Thoughts, Adapter Tuning i Evol-Instruct. Każdy naprawia inny brak, a najczęstszy błąd to dostrajanie modelu, gdy brakuje mu faktu. Autorzy sami datują Chain of Thought i radzą co pół roku sprawdzać, czy jest jeszcze potrzebny. Sprawdziłem to na 20 nowych zadaniach i czterech lokalnych modelach, w tym na Qwen3.8-27B na RTX 5090. Wynik zgadza się z tą częścią tezy autorów, którą da się sprawdzić lokalnie. Dopisek „rozwiąż krok po kroku" podniósł wyniki modeli bez trybu myślenia lub z wyłączonym myśleniem z 1 do 9, z 4 do 16 i z 6 do 19 na 20, a Qwen3.8 z włączonym myśleniem osiągnął bez dopisku te same 19. U większych modeli błędy, które zostały, to głównie poprawnie rozpisane kroki ze źle policzonymi datami.

Qwen3.8-27B w NVFP4 i INT4 oraz Bielik 11B na RTX 5090: natywne FP4 przegrało z INT4

· 10 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Karta z rodziny Blackwell obsługuje FP4 sprzętowo, więc kwantyzacja NVFP4 powinna być na niej najszybsza. U mnie nie była. Qwen3.8-27B w kwantyzacji INT4 od Red Hata generował na RTX 5090 o 19–28% więcej tokenów na sekundę niż ten sam model w NVFP4 od NVIDII. Do tego zostawił ponad dwa razy więcej pamięci na KV cache. Bielik 11B w FP8 był szybszy od obu, ale ma ponad dwa razy mniej parametrów, więc ta różnica niewiele mówi. Ten wpis pokazuje liczby, warunki pomiaru i to, czego z nich nie da się wyczytać. W pomiarze TTFT znalazłem też błąd, który sam zrobiłem.

Generative AI Design Patterns #3: HyDE, reranking, Trustworthy Generation i Deep Search, czyli podobieństwo to nie trafność

· 35 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Rozdział 4 „Generative AI Design Patterns" dokłada do RAG-a cztery wzorce: przepisywanie zapytania (w tym HyDE), przetwarzanie pobranych fragmentów z rerankingiem, sygnalizowanie wiarygodności odpowiedzi i iteracyjne wyszukiwanie. Sprawdziłem wszystkie cztery na fikcyjnej polskiej instrukcji serwisowej i lokalnych modelach. Najmocniej potwierdziło się zastrzeżenie, które autorzy sami stawiają przy HyDE: w domenie, której model nie zna, hipotetyczna odpowiedź jest zmyślona, a wyszukiwanie po niej trafiło właściwy fragment w 10 przypadkach na 20 zamiast w 17. Reranking poprawił kolejność, ale lepszy okazał się wolny sędzia-LLM niż wyspecjalizowany reranker. Pętla Deep Search z promptem z książki w trzech pytaniach na pięć kończyła pracę po pierwszym kroku z odpowiedzią niepełną, bo jej ewaluator uznawał „brakuje informacji" za odpowiedź kompletną.

Generative AI Design Patterns #2: Basic RAG, Semantic Indexing i Indexing at Scale, czyli co psuje się przed modelem

· 32 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Rozdział 3 „Generative AI Design Patterns" buduje RAG w trzech krokach: wyszukiwanie po słowach, wyszukiwanie po znaczeniu i metadane, które pozwalają bazie przetrwać wzrost. Sprawdziłem wszystkie trzy na polskiej instrukcji serwisowej i lokalnych modelach. Dwie tezy książki potwierdziły się w formie mocniejszej, niż je zapisano: surowe BM25 w języku fleksyjnym trafia na pierwszej pozycji 2 z 10 zapytań, a usunięcie starych biuletynów z bazy zmieniło poprawną odpowiedź na błędną. Trzecia teza okazała się zależna od modelu. bge-m3 bez BM25 rozróżnił 24 z 24 kodów części różniących się jednym znakiem, gdy kod był zapisany tak jak w katalogu, a naiwna hybryda wypadła od niego gorzej.

Generative AI Design Patterns #1b: Style Transfer, Reverse Neutralization i Content Optimization, czyli styl bez gwarancji

· 25 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Pozostałe trzy wzorce z rozdziału 2 „Generative AI Design Patterns" kontrolują styl tam, gdzie nie da się go zapisać gramatyką: Style Transfer uczy stylu na przykładach, Reverse Neutralization wytwarza przykłady, gdy ich nie ma, a Content Optimization w ogóle rezygnuje z opisu stylu i dostraja model pod ocenę ewaluatora. Wszystkie trzy dają prawdopodobieństwo, nie gwarancję, a w dwóch z nich o jakości decyduje sprawdzian, którego łatwo nie docenić. Sprawdziłem oba sprawdziany na lokalnych modelach. Sędzia-LLM zapytany „które ogłoszenie jest lepsze" wybierał dłuższą wersję w 15 na 16 porównań, także wtedy, gdy miała błędny fakt, a przy równej długości trafność nie miała dla niego znaczenia. Neutralizacja z Reverse Neutralization zmieniła sens w 10 z 12 wyjść, a automatyczna kontrola faktów oznaczyła jedno.

Generative AI Design Patterns #1a: Logits Masking i Grammar, czyli gwarancja formy, nie treści

· 23 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Pierwsze dwa wzorce z „Generative AI Design Patterns" — Logits Masking i Grammar — odpowiadają na najczęstszy problem z modelem w produkcji: nie trzyma formatu. Oba działają tak samo: zerują prawdopodobieństwo tokenów, które łamią regułę, więc gwarantują kształt odpowiedzi. Autorzy uczciwie dodają, że kształt to nie treść, i radzą zostawić modelowi furtkę Unknown. Sprawdziłem to na dwóch lokalnych modelach na CPU. Furtka jest potrzebna, ale nie działa tak, jak się zakłada: w moim teście faktura w złotówkach ze schematem bez PLN wychodziła u Qwena 30B jako USD w 10 na 10 prób, także wtedy, gdy model miał do dyspozycji UNKNOWN i instrukcję, kiedy go użyć.

Claude Code za darmo: OpenRouter + NVIDIA Nemotron zamiast API Anthropica

· 7 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Claude Code da się uruchomić za darmo, przeciwko realnemu modelowi klasy 30B z obsługą narzędzi, bez pisania linijki kodu proxy. OpenRouter wystawia endpoint kompatybilny z Anthropic Messages API pod https://openrouter.ai/api, a w jego katalogu są darmowe modele NVIDIA Nemotron, które wprost wspierają wywołania narzędzi. Wystarczą trzy zmienne środowiskowe. W tym wpisie: jak to skonfigurować bezpiecznie (klucz API nigdy nie ląduje tam, gdzie nie powinien), jak wybrać między dwoma wariantami Nemotrona i jak zrobić z tego jeden skrót powłokowy, który działa dokładnie jak claude --resume.

Jakość lokalnych LLM: siedem modeli, dwa trudne pytania i wzorzec „brzmi jak ekspert, zmyśla konkrety”

· 13 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Prędkość i jakość lokalnych modeli językowych nie korelują ze sobą w żaden użyteczny sposób. Najszybszy z siedmiu testowanych modeli — 25 tokenów na sekundę — wypadł merytorycznie najgorzej. Najlepszy jakościowo generował 7 tokenów na sekundę. A wspólny mianownik prawie wszystkich odpowiedzi to jeden powtarzalny wzorzec: poprawna struktura i trafny kierunek, przy zmyślonych konkretach — nazwach funkcji API, składni komend, definicjach statystycznych. To jest różnica między „brzmi jak ekspert” a „można wkleić i uruchomić”.

Lokalne LLM na ThinkPadzie: model 30B na samym CPU szybszy niż 24B na GPU

· 12 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Na laptopie z iGPU i jednokanałowym RAM-em intuicja „większy model = wolniejszy, GPU = szybsze niż CPU" rozpada się całkowicie. Model Qwen3-Coder o 30 miliardach parametrów, uruchomiony na samym procesorze, generuje 12–17 tokenów na sekundę. Mistral Small o 24 miliardach parametrów, w całości załadowany na GPU, generuje 0,62 tokena na sekundę — dwadzieścia razy wolniej, przy mniejszym pliku. Różnicy nie robi ani backend, ani kwantyzacja, ani zasilanie z kabla. Robi ją architektura: mixture-of-experts kontra dense.