Wednesday, May 1, 2024

2024-01-05 LLM

Wstęp

Poniżej znajduje się podsumowanie mojego obecnego rozumienia dużych modeli językowych (LLM, Large Language Model) potocznie nazywanych sztuczną inteligencją (SI) lub AI (artificial intelligence).

O dużych modelach językowych

Czym są i jak działają LLM

Tworzenie AI zaczynamy od dużego zbioru danych, np. wikipedia, będącego zbiorem danych treningowych (training dataset).

System rozłoży dane wejściowe na tokeny, tzn. niepodzielne cząstki (głoski, litery, wyrazy, fonemy czy cokolwiek tam mu będzie pasować). Na potrzeby uproszczenia opisu poniżej zakładam, że token odpowiada słowu. W rzeczywistości słowo skłąda sie zazwyczaj z dwóch lub więcej tokenów.
Szukamy połączenia (korelacji) między danymi. Przykładowo między słowami i ich umiejscowieniem w zdaniu dzięki czemu potrafimy przewidzieć, że przykładowo po wyrazie "kurka" najczęściej występuje "wodna" ale może też wystąpić "grzyb". Określamy też jak prawdopodobne jest wystąpienie każdego z wyrazów i wyznaczamy prawdopodobieństwo dla wszystkich.

Rzeczywisty system jest bardziej skomplikowany. Dane wejściowe zamieniamy na dane numeryczne. Matematycznie są to jakieś pozycje w przestrzeni tokenów, a podobne tokeny znajdują się w niej niedaleko siebie. Przestrzeń nie jest płaska, ani nawet trójwymiarowa - wymiarów jest dużo więcej.
Pozycje w przestrzeni określamy z jakąś dokładnością. Dla uproszczenia zakłóżmy dwa wymiary i współrzędne (x, y). Słowo "niebieski" może mieć pozycję (100.51, 35.33) a "turkusowy" pozycję (101.02, 34.51), ponieważ te słowa mają zbliżone znaczenie.
Pozycje określamy ze skończoną dokładnością, np. (100.5, 35.3) i (101.0, 34.5) lub (100, 35) i (101, 35). Warto zauważyć, że przy małej dokładności słowa mogą dostać tę samą pozycję. W rzeczywistości wymiarów mamy więcej niż dwa i nawet przy niskiej precyzji modele osiągają stosunkowo dobre wyniki.
W powyższy sposób możemy przewidzieć jakie słowo nastąpi po innym.
Tokeny zbieramy w grupy i powtarzamy z szerszą perspektywą. Dzięki temu możemy rozróżnić "zamek do drzwi" i "zamek u spodni". Tokeny są takie same, lecz ich znaczenie jest zupełnie inne. Token "zamek" powinien posiadać przynajmniej dwa różne położenia w zależności od kontekstu. Jeśli dobrze zrozumiałem LLM to wielowarstwowe przetwarzanie stanowi częściowe obejście tego problemu. Być może dało by się to rozwiązać poprzez przypisanie jednemu tokenowi zestawu pozycji, tzn. zestawu wektorów. Z drugiej strony przetwarzanie na wielu warstwach jest zbliżonym działaniem.
Na koniec system przewiduje jaki token nastąpi po innym tokenie na wejściu oraz po zestawie tokenów.

Praca z problemami wcześniej nie spotykanymi

Chcemy aby AI potrafiło pracować z danymi, które nie są takie same jak zbiór danych treningowych.

  • Rzeczywisty model chcieli byśmy "douczyć" w czasie rzeczywistym poprzez podanie skomplikowanego zestawu danych wejściowych, np. stron internetowych. Niestety to jest proces powolny i trzeba szukać alternatywnego rozwiązania.
  • Jeśli ilość tokenów na wejściu jest zbyt duża - model ma problem aby określić dobrze kolejne tokeny. Jest to związane z brakiem dobrych dużych danych wejściowych do szkolenia modelu jak i skomplikowanym procesem przetwarzania (i oszczędnościami w obliczeniach).
  • Aby zweryfikować czy nasz model radzi sobie dobrze z nieznanymi wcześniej danymi zwykle zbiór danych wejściowych dzielimy na dane treningowe i inne, np. walidacyjne.
  • Temperature. Jest to współczynnik który pozwala na wybór niekoniecznie dokładnych korelacji między tokenami (ich odzwierciedleniem w przestrzeniach wielowymiarowych). Wartość 0% (0.00) oznacza dokładny wynik, wartość 20% (0.20) oznacza potencjalnie nieszablonowe rozwiązania (kreatywność).

Wyzwania, problemy i zagrożenia związane z LLM

AI jest obarczona szeregiem problemów i zagrożeń. Często nie można ich uniknąć ale staramy się przynajmniej zminimalizować prawdopodobieństwo niepożądanych efektów.
  • Czasem model ma tzw. halucynacje, tzn. wykrył powiązanie między jakimiś miejscami w danych wejściowych a bzdurą, np. ktoś często popełnia literówkę w wikipedii to model przyjmie to za poprawną wartość. Może to być też powiązanie między teoretycznie niepowiązanymi danymi wejściowymi. W zasadzie to nie kontrolujemy tego, co model powiąże ani w jaki sposób. Jedynie nadajemy kierunek tworzeniu tych powiązań. W ten sposób szkolimy model ale nie kontrolujemy go podobnie jak uczymy dziecko (ale dziecko i tak może wyrosnąć na psychopatę).
  • Bezgraniczne zdawanie się na modele stanowi niebezpieczny trend. Inwestorzy często nie znają kontekstu swojej inwestycji, w który inwestują pieniądze. Inwestorzy oczekują jedynie zysków a firmy kierują się zyskiem jako słownym wyznacznikiem swoich działań. Przepisy oraz moralność są naginane do granic ryzyka (oraz konsekwencji ich złamania i wykrycia). Takie podejście powoduje skłonności do nadmiernego ryzyka.
  • Powierzając AI wykonanie jakiegoś zadania całościowo powinniśmy pamiętać o jego ułomnościach i ograniczeniach.
    • Model nie ma emocji i polega jedynie na matrycy prawdopodobieństwa wygenerowanej z danych wejściowych.
    • Model jest cyniczny i ślepo wykonuje polecenia.
    • Model jest skażony wszelkimi nieprawidłowościami w danych wejściowych i ma tendencje do halucynacji.
    • Model nie jest kreatywny a zwiększając "temperaturę" zwiększamy możliwość halucynacji.
  • Obecnie powierzamy modelom wykonianie jakiegoś zadania. Następnie dajemy mu kontrolę nad narzędziami do wykonania zadania.
    • Wejściowe zadanie zazwyczaj podamy nieprecyzyjnie - nie jesteśmy w stanie przewidzieć wielu komplikacji przed ich wystąpieniem. Degeneracja pierwsza.
    • Akcje przewidziane przez AI są wydane na powstawie nieprecyzyjnych danych obraczonych cynizmem i halucynacjami. Degeneracja druga.
    • Akcje wykonane przez AI przy użyciu narzędzi nie są kontrolowane. Mogą one prowadzić do kolejnych zwyrodnień. Degeneracja trzecia.
    • Efekt końcowy jest efektem danych wejściowych i funkcji na nich wykonanej razem z degeneracją na każdym poziomie, tzn. wynik końcowy zawiera iloczyn degeneracji.
  • Im większej kreatywności oczekujemy, tym większe degeneracje i halucynacje. To troszkę jak z schizofrenią. Im większe degeneracje, tym większy błąd wyniku na wyjściu.
  • Aby kontrolować potencjalnie niepoprawne (niebezpieczne) wyniki nakłada sie kolejne warstwy AI walidujące wyniki tej pierwszej warstwy. Kreatywne AI jest w stanie (celowo bądź przypadkowo) wygenerować wyniki, które nie zostaną zaklasyfikowane przez warstwę kontroli jako nieprawidłowe (tym bardziej jeśli jest ona zimna i cyniczna, tzn. posiada niską temperaturę).

Podsumowanie

Kierując się kapitalizmem firmy powierzają zadania nieprzewidywalnym schzofrenicznym modelom językowym zwiększając ich kreatywność (i poziom schizofreni) przez zwiększenie temperatury. AI ma coraz potężniejsze narzędzia pozbawione kontroli nad ich wykorzystaniem.
I to jest obecny trend na rynku (czyżby do pierwszej większej wtopy zainicjowanej przez AI?).

2024-01-05 Manor lords, grounded

W ostatnich dniach zajmowałem się:

  • Marnowaniem życia grając w manor lords na PC
    • Manor lords to symulacja (sim city) stawiająca na realizm i wysoki poziom trudności. Spędzasz w grze dużo czasu i jedyne co masz to symulacja rzeczywistości. Ani dzieci tym nie nakarmisz, ani dla społeczeństwa nic nie zrobisz. Równie dobrze dla własnej przyjemności możesz się upijać albo ćpać. Na plus grafika, animacje i mnogość parametrów. Na minus interfejs (często nie wiadomo jak co działa - autorzy pewnie zrobią samouczek ale to jak sprzedawanie długopisu który nie działa i samouczek jak używać ołówka zamiast).
  • Marnowaniem życia grając w grounded na xbox i PC
    • Ciekawa gra od studia microsoftu bazowana na filmie "kochanie, zmniejszyłem nasze dzieci". Niestety wysoki poziom trudności i duża ilość pracy aby cokolwiek w grze zbudować sprawiają, że to kolejny zjadacz czasu. Postanowiłem skorzystać z cheatów aby poznać grę i jej fabułę. Duży świat (cały ogród) który zawiera część naziemną oraz podziemną nie ułatwia rozgrywki.
  • Modelami językowymi - zrozumieniem jak działają
    • Przypomnieniem języka python
    • Zrozumieniem jak od sztucznych neuronów, z którymi miałem do czynienia, świat przeszedł do dużych modeli językowych i jak one działają. O tym kolejny post.
  • Jestem w trakcie rekrutacji do dwóch firm... Troszkę niefajnie się czuję z tym, zę do dwóch jednocześnie startuję (tym bardziej, zę w obydwu fajni ludzie i ciekawe tematy) ale działam nieco pod naciskiem żony a rekrutacja ciągnie się strasznie (gdyby nie opóźnienie w pierwszej to bym z drugą nie rozmawiał). Gdybym wiedział że któraś z tych opcji będzie OK to bym drugą już uciął żeby nie marnować ich czasu. Czas to pieniądz.
  • Prywatne:
    • Spokojny dzień w domu
    • Obejrzałem z żoną jakiś film (nie byłem świadom ale żona wykupiła 5 subskrypcji na platformach streamingowych i używa ich od kilku lat)
    • Starszy syn pojechał na hulajnogę a później był na spacerze z koleżanką
    • Byłem z młodszym synem na nauce jazdy na rowerze i jest OK ale ruszanie nadal do opanowania
    • Odinstalowałem path of exile. Grałem w tę grę od wczesnej bety i gra była OK. Teraz gra zawiera masę zawartości i stała się straszliwie skomplikowana i cierpi na tzw. "power creep", tzn. coraz potężniejsze przedmioty sprawiły, że poziom trudności też rośnie i przedmioty kiedyś dobre teraz są coraz częściej bezwartościowe. Nadal mnie fascynują pewne jej aspekty ale chyba czas na (już kolejną) przerwę.
      • Duży poziom złożoności a jednak zachowanie balansu to nie lada wyzwanie.
      • Olbrzymia zawartość i model free-to-play.
      • Większość płatnych rzeczy to te kosmetyczne. Niestety niektóre płatne dodatki wpływają na grę bardzo mocno a część z nich została dodana jako elementy bez których gra w modelu free-to-play staje się co najmniej trudna.
    • Odinstalowałem arcanum. Trzymałem z sentymentu i dla muzyki. Ale nigdy nie uruchomię a nawet gdybym to zrobił to tylko z cheatami bo nie chcę na gry marnować życia.
    • Taki mój osobisty bullshit: Powoli czyszczę komputer ze zbędnych rzeczy. Porządkuję. Muszę oczyścić życie. Zawodowe i prywatne. Nie piję (studenckie czasy za mną), nie palę (po byciu biernym palaczem w dzieciństwie), nie ćpam (i nigdy nie ćpałem). Czas na powrót do sportu (którego brak ze względu na rodzinę). Muszę znajdować czas na własne zainteresowania (nie tylko teraz ale również będąc w pracy). Czas dla rodziny - szczególnie dla starszego syna, który jest tzw. "szklanym dzieckiem", tzn. ofiarą swojego młodszego nadaktywnego brata, który wymaga opieki przez cały czas. Podobno w życiu powinny się liczyć praca, rodzina, zdrowie, przyjaciele i umysł (z tym ostatnim mam problem jak to przetłumaczyć). Odnoszę się do przemówienia Briana Dysona. Dla mnie praca była zawsze ważna - dzięki temu mogę utrzymać rodzinę. Rodzina? Skomplikowane. Jestem wdzięczny dwóm osobom w moim życiu, ponieważ mi pomogły. I mam szereg osób, za które jestem odpowiedzialny. Zdrowie? Mocno ucierpiało i zawsze było na dalszym planie - teraz ponoszę tego konsekwencje (a właściwie od kiedy byłem nastolatkiem... ponownie skomplikowane). Przyjaciele? Nie posiadam (a nieliczni z którymi mam jeszcze jakiś kontakt... kontaktujemy się rzadko i wszyscy mamy masę swoich spraw na głowie). Umysł? Dusza? Nie wiem jak to określić. Ja sam zawsze byłem gdzieś poza listą priorytetów... może czas to zmienić?
    • Muszę wykombinować jak utemperować młodszego syna i umożliwić mu zapanowanie nad emocjami. To, że ja sobie z tym dałem radę (być może nawet przesadnie) nie oznacza wcale, że on też da radę.

Tuesday, April 23, 2024

2024-04-23 Prezentacja

Dziś głównie prezentacja na JUG.

Mam gotowy wstęp: opis ogólny wirtualizacji, kubernetesa.

Muszę przygotować system: klaster k8s i z 2 laptopy workery. Kiedyś wiedziałem jak to zainstalować ale teraz dużo się zmieniło. Mam problem jak na swoim komputerze uruchomić węzeł roboczy.

Muszę też się przygotować na rozmowę rekrutacyjną - wstępną póki co.

Podczas mycia naczyń potłukłem miseczkę. A przy okazji rozciąłem sobie palec na długości około 2cm :/



Monday, April 22, 2024

2024-04-22 k8s

Mam troszkę wolnego czasu - jeszcze ponad miesiąc na urlopie (zaległy z zeszłego roku i z tego roku). Na co go wykorzystać? Prezentacja na JUG (a jednocześnie nauka). Temat? Bezpieczeństwo kubernetes i zaawansowane elementy zarządzania bezpieczeństwem kuberentesa.

Ale zanim to zrobię to najpierw przygotowanie:

  • W czym prezentacja? Oczywiście reveal.js bo go uwielbiam. office i powerpoint nadaje sie na prezentację na szybko ale przygotowanie prezentacji, które sprawia przyjemność to reveal.js
  • Jaki OS? Linux. Mam na komputerze różne windowsy (aktywowane oraz nie, długa historia). Linux a dokładnie Pop!OS (ale nie używam wielu jego opcji).
  • Monitor... muszę chyba przerzucić swój monitor do pracy bo FullHD to troszkę mało :(
  • Jaki kubernetes? Jest multum opcji. Jeśli ja mam problem z wyborem to jak inni? Prezentacja musi niestety to wymienić. Zainstaluję lokalnie pełnego kubernetesa ale odpalę go też na innej maszynie aby mieć przynajmniej 2 node'y.
  • Musiałem sobie zgrać klucze aby mieć dostęp do swojego githuba... okazuje sie, że mam 4 i każdy działa.
  • Najpierw w markup będę pisać. Odpalanie niestety jest problematyczne: reveal nie ma dostępu do plików lokalnych - przeglądarki bardzo mocno ograniczają dostęp. A do tego ja mam chyba syndrom bezpiecznika i mam poblokowane wszelkie skrypty - troszkę klikania.

 Równolegle rozmowy rekrutacyjne.

  • Jedna pewnie jakoś w tym tygodniu - czekam na odpowiedź bo fajni ludzie i bym z chęcią z nimi pracował (ale nie pasuje mi częste jeżdżenia na miejsce).
  • Druga ciekawa bo też super ludzie ale niezupełnie moja działka.
  • Trzecia w środę wstępnie.

A najlepsze że jeszcze nie zacząłem szukać. No i prośbę dostałem o wysłanie CV of "stefana"... czego nie zrobiłem jeszcze. Jakoś mi sie nie pali - ostatnie lata to praca ponad miarę, mało urlopu, łapanie zbyt wielu tematów na raz (co się przekłąda na niższą wydajność), często praca z legacy (z gówna bata nie ukręcisz).

 Przyziemnie tematy:

  • Ile był bym w stanie bez pracy się utrzymać? W tym roku mam zwrot podatku (nie wypełniłem PIT-2 i tak oto tracę na inflacji ale mam zwrot... wolałem tak). Do tego oszczędności (nie ma tego wiele ale coś jest). I pensje (co najmniej 4 jeszcze będą). Na jakiś rok starczy pewnie - może nawet 4 jak byśmy zacisnęli pasa. Ale przecież nie o to chodzi aby wydać wszystko - dzieciaki powinny dostać po mieszkaniu od rodziców i już jest git na start. Więc nie czuję presji jakoś i mogę się skupić na robieniu tego co mi sprawia przyjemność.
  • Mycie naczyń... zaległości mam.
  • Dzisiaj muszę syna odebrać wcześniej ze szkoły i z nim coś porobić. Ale przed tym ogarnąć mu pokój troszkę i wynieść część rzeczy.

TODO: 

  • Do prezentacji muszę dorzucić pluginy
  • Muszę ustawić socket.io aby prezentacja mogła otrzymywać pytania i komentarze w trakcie
     

Thursday, March 28, 2024

Ikea fyrtur vs kadrilj electronics

Summary
Fyrtur and Kadrilj are generally compatible and you could exchange blinds material or even parts. If you got one - it can be easily upgraded to the more expensive one.

Price paid
I got some kadrilj which were sold by Ikea second hand (returned items) that someone returned in a bulk. It costed 350 PLN each, width 140cm.
My wife recently bought fyrtur (again from returned items) and paid around 200 PLN, same width.

During summer it is too bright so I wanted to use thicker material but I found some (false) information on the internet that those models cannot be simply swapped.
It might be that there are incompatible versions as IKEA often upgrades their products and design without sharing this to the customers (because devices are not meant to be disassembled).

This time my wife bought a device that is faulty. I am not yet sure whether it is a faulty motor or electronics or something else but it is simply broken. The rule in general with IKEA is that you should not return 2nd hand goods (but it probably depends on many factors).
I started with internet search for the device teardowns and did not found many information. Some of them presented how to disassemble major parts.
Then I compared mechanisms of both devices. To my surprise the motor was exactly the same. So was the shape and size.

Next steps for me:
- exchange motors with the electronics and check if this is motor or electronics which is faulty
- disassemble faulty element (which would be challenging for sure) and find why it is faulty

Wednesday, March 20, 2024

Cannot save / Brak zapisu gry: XBox 360, XBox One, XBox Series

PL (EN bellow)

Problem: Uruchamiając grę XBox 360 (np. Star Wars: The Complete Saga) na nowszej konsoli (np. XBox One lub XBox Series) stan gry nie zapisuje się. Po ponownym uruchomieniu gry wszystko trzeba zaczynać od początku.

Objawy (na przykłądzie gdy Star Wars: The Complete Saga):

  • Po uruchomieniu gry opcja "XBox Live" nie jest dostępna
  • Po rozpoczęciu nowej gry pojawia się komunikat o braku zapisu osiągnięć
  • Może się też pojawiś komunikat o braku profilu gracza lub konta Live
  • Jeśli korzystamy z konta dziecka to dodatkowo możemy ujrzeć mylące komunikaty o braku dostępu do jakichś opcji lub o ograniczeniach konta dziecka
Przyczyna: Microsoft nie dopracował współpracy nowszych konsol ze starszymi systemami.

Rozwiązanie:
  • Po uruchomieniu gry XBox 360 należy jednocześnie włączyć przyciski kontrolera "po lewej" i "po prawej" od środka, tzn. "prostokąty" oraz "hamburger" - spowoduje to wyświetlenie menu XBox 360
  • Zapewne nie mamy pobranego konta "XBox Live" na konsolę więc należy się "zalogować" w wyświetlonym menu
  • Gdy zostaniemy zapytanie o nazwę konta i hasło - musimy się zalogować tą formą uwierzytelniania (możliwe, że trzeba będzie włączyć stosowną opcję uwierzytelniania dla starszych aplikacji na stronie web microsoftu - u mnie nie było to potrzebne)
  • Zostanie pobrany nasz profil gracza - być może zostaniemy zapytanie o miejsce zapisu profilu (u mnie był to "online storage" z limitem 2GB)
  • Zostawiamy komentarz pod tym wpisem abym wiedział że komuś pomogłęm (a inni oraz microsoft wiedzieli jak często ten problem denerwuje użytkowników)