Przejdź do głównej zawartości

4 posty z tagiem "Wydajność"

Optymalizacja czasu odpowiedzi, przepustowości i zużycia zasobów.

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.

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.

Django w enterprise po DEP 20: koniec LTS, roczny cykl wydań i co to zmienia w planowaniu migracji

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

Django Software Foundation przyjęła DEP 20: od stycznia 2028 framework przechodzi na jedno wydanie funkcjonalne rocznie, z numeracją kalendarzową (Django 2028, Django 2029), a etykieta „LTS" zostaje wycofana — bo każde wydanie dostaje ten sam, trzyletni okres wsparcia. Dla zespołów utrzymujących systemy produkcyjne to najważniejsza zmiana w planowaniu budżetu utrzymania od lat: znika przepaść między wersjami LTS, przez którą migracje robiło się skokowo, po dwa lata zmian naraz. Poniżej co dokładnie się zmienia, jak wygląda tabela przejściowa i dlaczego akurat teraz warto przejrzeć swój plan aktualizacji.

Batching: jedno zapytanie zamiast pięciuset — WHERE id IN, DataLoader, addBatch i COPY

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

Kod, który w pętli odpytuje bazę pięćset razy, nie jest wolny dlatego, że baza jest wolna. Każde z tych zapytań kosztuje na serwerze dziesiątki mikrosekund, a cała reszta to czekanie na sieć — i to czekanie skaluje się liniowo z liczbą iteracji. Na lokalnym Postgresie problem jest niewidoczny, na produkcji w innej strefie dostępności ten sam kod to timeout. Poniżej cztery poziomy batchowania, od WHERE id IN (...) po COPY, z pułapkami, które w każdym z nich wywracają sprawę.