Notatki z warsztatu
Zagadnienia, na które trafiłem przy budowaniu aplikacji z modelami językowymi. Każde z liczbą, którą da się sprawdzić.
- Test, który nie przytakuje kodowi: niezależna wyrocznia i polska liczba mnoga
Oczekiwane wartości w testach biorę spoza testowanego kodu. Dwa przykłady: sumy parametrów modeli i odmiana „1 warstwa, 2 warstwy, 5 warstw”.
- Jak naprawdę wykorzystać GPU do inferencji LLM
Czego nauczyły mnie pomiary na RTX 3060, A6000 i L40S: od zarządzania modelami i cache po spekulację i kwantyzację.
- LFM3: małe modele AI do zadań na telefonie i laptopie
Sprawdzam możliwości rodziny LFM3, doświadczenia z lokalną inferencją i pierwsze wyniki dostrajania rozpoznawania polskiej mowy.
- Meldunek agenta nie jest dowodem: bramka odbioru dla robotników AI
Jak przyjmuję pracę agentów kodujących: kontrakt przy starcie, test powtórzony w czystym drzewie, dowód z JUnit i kryteria spisane przed pomiarem.
- Jak policzyć parametry modelu 2,4 bln, nie pobierając ani jednej wagi
Nagłówek safetensors plus dwa żądania HTTP Range na plik dają dokładną liczbę parametrów checkpointu 4,8 TB za cenę kilku megabajtów.
- Niewidka: jak ukrywam dane osobowe w dokumentach bez GPU
Zbudowałem lokalne narzędzie do pseudonimizacji polskich dokumentów, łącząc reguły, mały model NER i kontrolę bezpieczeństwa.
- YOLO przy wózku widłowym: dlaczego nowszy model nie zawsze jest lepszy
Testuję wykrywanie pieszych na Raspberry Pi z akceleratorem Hailo i sprawdzam, co naprawdę ogranicza skuteczność systemu.
- Lokalny agent w przeglądarce: pierwsze sito na błędy
Sprawdziłem, czy lokalny model potrafi samodzielnie znaleźć błędy w nieznanej aplikacji i gdzie kończą się jego możliwości.
- LLM w kieszeni: od Termuxa do NPU w telefonie
Jak uruchamiałem lokalne modele językowe na Androidzie i dlaczego dopiero NPU pozwoliło zbudować użytecznego agenta Messengera.
- Generator testów z dokumentacji: najważniejsze jest pokrycie, nie prompt
Budowałem lokalny generator przypadków testowych i sprawdzałem, co daje lepsze pokrycie wymagań: skryptowy pipeline czy agent AI.
- Detekcja treści AI: dlaczego dobry model nie wystarczy
Budowałem lokalny detektor treści AI i przekonałem się, jak bardzo wynik zależy od danych testowych, kalibracji i sposobu zadawania pytań.
- Czy mały model potrafi wywoływać funkcje z polskiego głosu?
Sprawdzam, czy błędy w wywołaniach funkcji z polskich poleceń głosowych wynikają ze słabego słuchu, czy z niezrozumienia języka.
- Agent RL nauczył się zwiedzać poziom, ale go nie przeszedł
Przyspieszyłem symulację i nagrodziłem odkrywanie nowych miejsc, lecz do ukończenia poziomu to nie wystarczyło.
- Kwantyzacja bez złudzeń: czego nie pokazuje trafność
Sprawdziłem, dlaczego sam procent poprawnych odpowiedzi nie wystarcza do oceny wpływu kwantyzacji na model językowy.
- Kwantyzacja KV cache: mieści się w pamięci, liczy 230 razy wolniej
W llama.cpp część typów KV cache nie ma jądra flash attention na GPU i cicho schodzi na CPU. Pomiar pamięci tego nie pokaże, pomiar tempa tak.
- Bramka jakości, w której LLM nie wydaje werdyktów
Przy testowaniu wydań analizy wideo model proponował sprawdzenia, ale o zablokowaniu wersji decydował kod.
- Jedna konfiguracja na pięciu urządzeniach: git, age i podpisane commity
Synchronizacja konfiguracji narzędzi AI między komputerami i telefonem bez własnego serwera, z sekretami w age i bramką podpisów przy pobieraniu.
- bfloat16 na CPU: połowa pamięci, czterokrotnie dłużej
Na procesorze bez sprzętowego bf16 przejście z float32 na bfloat16 dało 4,3 raza wolniejsze wnioskowanie przy identycznych wynikach.