Mainstream

Funkcja i stan maszyny.

Kontynuacja przydługiego tekstu, tak jakby był za krótki. Tu nieco uporządkuję. Jakby komuś się zwidziało, że tam odbył się baszing Pani Biotechnolożki jako nieuświadomionej. Zapewniam, że w biotechu siedzą ludzie, którzy ogarniają swoją działkę && rozwiązania programistyczne && sprzętowe && chemię && fizykę. Nie spotkałem jeszcze Pana Chemika nie posługującego się własnym oprogramowaniem, a nieco podłóg w R&D wydeptałem. Jeśli więc istnieją to się dobrze ukryli. Mięso o złożoności będzie gdzieś dalej w tekście. Będzie o ai, hardwerze i wzorkach.

Jednak z powodu złożoności pojawiają się problemiki, których rozwiązaniem multidyscyplinarność nie jest, a tworzenie multidyscyplinarnych grup przestało być rozwiązaniem kiedy zaczęto tworzyć grupy grup i rozdzielać je na osobne departamenty, a nawet przedsiębiorstwa. Problem nie leży w samym podziale tej pracy tylko w nawisie zarządzającym. Przy pewnej złożoności (i tak formującej się w piramidę z powodu agregacji środka wymiany) ten nawis ma większą wagę niż sama struktura. Widzicie to w wielu branżach gdzie doszło do takiej finansalizacji sektora, że ogon zaczął kręcić psem.

Zadaniem części rozrachunkowej przedsiębiorstw w piramidzie jest alokacja zasobów. W momencie kiedy korelator rozrachunkowy pożera więcej zasobów niż przeznacza na zasilanie nie ma żadnego powodu aby brać udział w elemencie zasilanym (ujęcie cybernetyczne). Czyli nie ma powodu do rozwiązywania problemów, ponieważ problem leży już w dystrybucji wyniku z jego rozwiązania. Z oczywistych przyczyn wszystko wysiadło na raz – kadra zarządzająca jest takim samym podatkiem jak każdy inny (tak jak podatkiem na zbrojenia w firmie badawczej jest dział prawny obsługujący wnioski patentowe i zastrzeżenia). Podatki w piramidach się stackują (gdzieś to rozpisywałem w jaki sposób, w innym tekście) i muszą być tym niższe im więcej jest pięter – nie da się rozbudowywać piramidy korelacyjnej bez zmniejszania wydatku na korelację. Czyli – aby cokolwiek połączyć z czymś innym należy to najpierw uprościć. Ująć w jakąś stałą. Rezultat zmienności na rynku widać w marżach – czegokolwiek by nie produkować są one od strony rozliczeniowej tak samo bezskuteczne. Dlatego większość użyteczności może być notowane na tej samej giełdzie. Gdyby były rozbieżności natychmiast wydzielono by giełdę o niższym obciążeniu korelacyjnym działającą w innej częstotliwości. Na przykład zbiory są kilka razy do roku i to one ważą na cenach przez cały kolejny rok, a większość kontraktów w notowaniach ciągłych to przesunięcia magazynowe.

Powstaje kwestia dla jakiej rozdzielczości badań mamy dopasowany poziom edukacyjny. Czy w ogóle istnieje takie kształcenie, które pozwala ogarnąć całą złożoność obsługiwanych aparatów aby je integrować, upraszczać i wpinać w kolejne szczeble piramidy badań?

Odpowiedź jest oczywista – nie istnieje, ponieważ oznaczałaby przekazywanie algorytmów rozwiązywania problemów jakich jeszcze nie rozwiązano. Edukacja w tym zakresie jest skuteczna jedynie wobec osób, które i tak jej nie potrzebują. Są oczywiście w populacji typy, które ogarniają całe spektrum specjalistycznych kwestii (ja nie), ale nie nauczyli się tego w żadnym systemie przekazywania wiedzy tylko zdobyli ją w praktyce rozwiązując te problemy. Nie mamy tych ludzi tak znowu dużo, a ich czas nie dąży do nieskończoności, więc nawet jeśli uczą się o wiele szybciej od przeciętnej (a robią to nieporównywalnie szybciej) to w ciągu oczekiwanej długości sprawności intelektualnej (a ta jest krótka i nie zmienia się wraz z rosnącą oczekiwaną długością wegetacji) mogą wnieść coś nowego do kilku dziedzin (zazwyczaj policzalnych na palcach jednej ręki pracownika tartaku), a następnie (przez czas pozostały) co najwyżej dopracowywać detale swoich osiągnięć z okresu najwyżej aktywności intelektualnej. Taką mamy biologię i tego na tę chwilę nie przeskoczymy.

Weźmy na tapet naszą Panią Biotechnolog. Ktoś z menedżerstwa wpadł na świetny pomysł aby zejść z poziomu statystycznie poprawnego działania środków chemicznych przy określonych zmiennych do poziomu indywidualnych przypadków na cząstkach. Zagadnienie nie jest trywialne i pierwsze symulacje takich interakcji uproszczone do 2d powstały w… 2022 roku. Nadmieniam jakby się komuś wydawało, że to automagicznie da się ot tak wrzucić w maszynkę do liczenia. Jeśli się komuś wydaje że to jest proste to mu się wyłącznie wydaje. Rezultatem tych symulacji było więcej pytań “co tam się właściwie odjaniepawla pomiędzy nukleotydami?” niż przewidywano. Gdzieś to dalej wyjaśnię, o co poszło.

Wymagamy od Pani Biotechnolog aby umiała (z pomocą narzędzi) modelować cząstki i reakcje. Na poziomie chemicznym, w pewnych uproszczeniach statystycznych taka Pani B z całą pewnością uzyskuje rezultaty (ogarnia programowanie) i sobie sama napisze – nie potrzebuje do tego działu IT. Ale jak dział IT jest to zrobi to lepiej (bo zwyczajnie siedzi w tym i będzie się czepiał rezultatów własnej pracy po benczmarkach sprawdzając, które operacje da się zrobić szybciej). Więc programiści jako specjaliści wspierający liczenie są potrzebni. Za to pomysł menedżera, aby to narzędzie sprzedawać nie jest potrzebny (do tego zaraz dojdziemy). Pani B może się skonsultować z Panem Chemikiem gdyby miała wątpliwości czy coś na pewno działa w dany sposób. Od tego ma tam Pana Ch. Wynika to z faktu, że chemia jest nieco po tabelkach i z przyczyn w nich nieujętych pewne rzeczy działają w taki, a nie inny sposób. W razie wątpliwości Pan Chemik idzie do Pana Fiszyka z pytaniem czy wyjaśnienie przyczyn, że czegoś w tabelkach nie ma jest ogarnięte. Zazwyczaj jest ogarnięte i stojący za tym aparat wnioskowania Pan Ch co prawda zna, ale nie stosuje na co dzień, bo mu to w produktywnej robocie gdzie ma uzyskać masowy, powtarzalny wynik we współpracy z Panem Inżynierem nie jest do niczego potrzebny.

Wróćmy teraz do zagadki z Panią B. Przeszła Ona edukację (przyjmijmy, że wybitna Pani B i pilnie się uczyła), która wrzuca do maszynki do mięsa wszystkie dzieciaki jak leci (przyjmijmy niepopsutą maszynkę, porządną edukację w ramach programów, a nawet nieco poza ramy) i tresuje ich sieci neuronowe do problemów już rozwiązanych. Pani B ogarnia wszystkie etapy kształcenia, jakie są w programie dla Pani B. Jej sieć neuronowa została wytresowana tak jak każdego z Was uproszczonymi interpretacjami problemów rozwiązanych od początków epoki przemysłowej (z małymi wyjątkami) gdzieś do końca XIX wieku. Ta cezura przełomu XIX i XX wieku jest dość istotna.

Pani B staje więc przed zagadnieniem opisania stanu maszyny (w Jej przypadku cząstki czegoś tam w nukleotydzie) oraz funkcji interakcji z czymś tam co sobie wymyśli, że jest ciekawe i uzyskiwania kolejnych stanów maszyny w tej funkcji. Proste jak konstrukcja strzelanki. Stan maszyny, delta t, kolejny stan maszyny.

//dygresja

//Gdyby kogoś ciekawiło, dlaczego się ostatnio uwziąłem na ten temat… no to nie ostatnio. Winny nie jest w wieku podlegającym ściganiu, przynajmniej nie był kiedy zaczął. Dzieciakowi pokazałem to co mniej więcej da się pokazać u nieco technicznego dawcy genów i patrzyłem co załapie. Ze szkoły przyniósł kiedyś co go zaciekawiło (dali im popatrzeć przez mikroskopy w stanie edukacyjnym) i zaczął mnie wyciskać. Więc przegoniłem go przez chemię, a jak sobie uzbierał pracując w fabryce (dzieci grają w Minecrafta bo tęsknią za pracą w kopalni) to dołożyłem mu do zakupu zeiss primostar. No i zaczął tę chemię rozgryzać od góry i od dołu, pytać o wszystkie związane z tym duperele, a ja musiałem spędzać czas na tłumaczeniach kwestii podstawowych. Nauczyłem go korzystać z wyszukiwarki, a gpt ostatnimi czasy zwolnił mnie z tłumaczenia rekurencyjnych triviów. Niestety nie ma książek wprowadzających w temat – wszystkie jakie są są już dla uświadomionych, a szkoły nie przeprowadzają skutecznego procesu uświadamianie tego co trzeba, temu komu trzeba, wtedy kiedy go to interesuje. Więc muszę zwracać uwagę na terminy, zależności i coraz głębsze obliczeniowo kwestie techniczne co możemy, a co nam się wydaje.

Przy okazji korpory też ostatnio zaczęły tym dręczyć i nie wiem czy temat modny, czy coś się komuś uwidziało z powodu imprezki2019, i za dużą alokację dostali do przepalenia. Nie wnikam – mieszkam pod kamieniem i mnie to nie ciekawi.

//koniec dygresji

Następnie z wynikami strzelanki Pani B idzie do Pana Ch, wrzucają to na powielacz i w reaktorze uzyskują wynik, który ogólnie nie odbiega od przewidywań więc wrzucają to na komisję do przydzielania funduszy na penetrację rzeczywistości i w rezultacie wrzucają to na jakieś tam (przywołajmy Jego Animalescencję @zwierzak) ściury. Czy inne grzyby, bakcyle czy do czego tam dany klocek pasuje. No i okazuje się, że Wynik ogólnie nie odbiega od oczekiwań (ściur/bakcyl/grzybek) reaguje tak jak się spodziewano, ale w próbkach są dziwne piki wyników. Na przykład jakiś bakcyl się uodpornił na maść na ściury czy zaczął wyprawiać akcje niespotykane (na przykład agregować się w wielokomórkowca i specjalizować, a był absolutnie jednokomórkowy i niezróżnicowany). Więc te przypadki szczególne są interesujące. Ponieważ nie wynikają z funkcji jakie są w strzelance o cząstkach. Dopisujemy do funkcji i komisja daje granty na poszerzenie/zmiany zakresu penetracji rzeczywistości. Po czym okazuje się, że na jakieś inne paskudztwo dany zestaw zaburzeń nukleotydów działa zupełnie inaczej albo wcale. Najczęściej wcale (no i wtedy kwestia akademicka dlaczego) albo co gorsza – zupełnie coś innego się dzieje. Wtedy trzeba się przyjrzeć sprawie uważniej. Dysponujemy na planecie sprzętem o różnej gradacji przyglądania się dokładniej, ale żeby dostać alokację na taki sprzęt to trzeba umieć skonstruować dane wsadowe i szukane. Bo ze względu na rozdzielczość tych urządzeń muszą one skoncentrować tyle energii na kubik, że skupiając się na określonym łańcuchu obejrzymy go raz, a chwilę później będzie tam już bałagan. Im dokładniej się przyglądamy tym bardziej “popiół” nam z tego zostaje. W zastosowaniach delikatnych do macania atomów wszystko jest fajne na poziomie chemii, ale w przypadku bio dźganie nukleotydu szpilką z jonami dość poważnie wpływa na jego konfigurację (stan maszyny).

Tyle że to żaden problem. Po prostu musimy zrobić stan maszyny z funkcją dźgania szpilą z jonem, czy światełkiem, czy też czymś nieco bardziej masywnym (to drogo) o większej rozdzielczości. I z rezultatu wyjąć jakie musiały być stany wejściowe żeby tak się to skończyło jak zmierzyliśmy. Odrobina pracy kodoklepców i jedziemy…

No jednak nie.

Pierwszą przeszkodą jest, że prędkość zliczania takich funkcji metodami jakich na co dzień do prototypowania używa Pani B jest nieco nieprzystająca. Zamach na for loop w pytongu nie należy do rozsądnych kiedy robimy nesting w strukturach danych, a tak wyglądają opisy cząstek. Znowu wynalazek Huttów (DżabaSkript) nie bardzo sobie radzi z sortowaniem arytmetyki. Ale od tego mamy pod ręką nerdów z IT, żeby z pomocą wspierających copiltów (których muszą upilnować) przerzucili funkcje z powolnego języka do prototypowania używanego jako notatnik przez Panią B na coś co śmiga rzędy wielkości szybciej. To pewne utrapienie bo koncepcje jakie miała Pani B mogą nie być tak przekładalne w szybkie algo, ale dział IT jest w tym luksusie, że na pewno znajdzie dependency które to realizuje i gdzieś się po repozytoriach wala. Każdy problem jest wtórny. A jakby nie był to można go sobie napisać posiłkując się wizjami Matematyków, które jeszcze nie zostały zamienione na algo. Są łby od tego, choć jest to rzadkie zwierzę.

Przyjmijmy, że przebrnęliśmy ten etap (co zawęża nam liczbę przedsiębiorstw na planecie dysponującymi takimi alokacjami, ale nie jest ich mało, a do tego są duże). Wrzucamy towar doświadczalnikom i uzyskujemy wynik. Który w przypadku wrzucania nukleotydów przez reaktor w obecności jakiejś cząstki okazuje się na tyle nierozróżnialny od losowego, że wyniki nie spinają się z przewidywaniami (a jeśli to robią to jest to przypadek). Znaczy coś z modelem jest nie tak. Tylko niby co?

Pozostaje się przejść do Pana Chemika, a on wyjaśni, że takich dużych łańcuszków to nie obrabiają statystycznie (czyli klasycznie jak to wyjaśniano w szkole na etapach kształcenia pani B) bo to do niczego sensownego nie prowadzi, ale mają na to Pana od Chemii Fizycznej i on wie jak to ugryźć. Pan od Chemii Fizycznej po rozpoznaniu problemu puka się w głowę, że takich dużych struktur danych to nie gryzą i tłumaczy problemiki z error bar. Czyli jeszcze jesteśmy w świecie klasycznym.

Otóż kiedy zabieramy się za dłubanie atomów w postaci wektorów łączących się w cząstkę, a te w łańcuch to operujemy macierzami wektorów jednostkowych. Każdy obrót układu odniesienia (a że nasze cząstki w stanie maszyny są względem siebie w przestrzeni powyżej trzech sztuk licznie to na płaszczyźnie się nie uspokoją) to rożne tam fiki miki na coś(1-coskąta) i podobne. Znaczy gdzieś w formule będziemy mieli pierwiastkowanie, a później będziemy składali z tego potęgowanie. I tutaj napotkamy barierę precyzji danych, którą za chwilę przeskoczymy sztuczkami. Otóż jeśli w przypadku int64 zrobimy przesunięcie bitowe (pierwiastek kwadratowy) i przesuniemy z powrotem (druga potęga) to gubimy przynajmniej jeden bit [//edit: coś mi się ubzdurało, bo właśnie w buforach dłubałem, oczywiście to jest mnożenie przez podstawę, operacja potęgowania pierwszej ważącej to przesunięcie o tyle pozycji ile jest za pierwszą ważącą, czyli z 0100 :dwie na 1 0000 : o dwie w lewo; kudosy za wychwycenie moich urojeń dla @Koncereyra; uogólnieniem jest przesunięcie o liczbę bitów będącej logarytmem o podstawie systemu liczbowego, w tym wypadku 2, w stronę sqr lub sqrt – to miałem na bezmyśli kiedy to pisałem, ale najwidoczniej już byłem gdzie indziej]. Czy on tam sobie był czy nie był to się nie dowiemy, ponieważ nie ma do takiej operacji carry. Może być, ale trzeba sobie dopisać (ten problemik za chwilę nas walnie w oczy tęgim kafarem). Pierwiastek trzeciego stopnia i jego odwrócenie to już grubsza zabawa (aby zachować spójność można sobie oczywiście napisać transkrypcję na system trójkowy i zrobić tak samo, ale wtedy nasz int64 będzie miał pojemność int32), a tu mamy zabawy w pierwiastki w iloczynach z 2/3 bo tak mówią wzorki, które ktoś tam przyniósł od Pana Chemika Fizycznego. A na dodatek bawimy się nie w int64 tylko float64 gdzie mamy cechę i mantysę. Czyli jak zrobimy tych operacji kilka składanych jedna po drugiej w kolejnych funkcjach na naszym stanie maszyny to dostaniemy dryf danych. Z dryfem danych radzimy sobie w ten sposób, że co jakiś czas odpalamy zliczanie wyników do wektorów jednostkowych (znowu męczymy je pierwiastkiem i odwrotnością bo w tym zazwyczaj Pietia Goras mieszka) i prostujemy świat. Tyle że to prostowanie ucina nam kolejne ważące z końca łańcucha, który już i tak był zmaltretowany operacjami. A niestety nie jest to strzelanka gdzie możemy sobie pozwalać na floor i ceil żeby wszystko wróciło do świata w kratkę, gdyż właśnie chcemy się dowiedzieć w jaką kratkę jest świat.

Czyli badacze to takie moby w grze, które sprawdzają po cieniach w jaskini jakie są własności maszyny (hamiltonianu) na serwerze i jakby go tu zgliczować na swoją korzyść.

Oczywiście Pani B wraca z tym problemem do Panach ChFisz i pyta co z tym robią. Zazwyczaj nic z tym nie robią, ponieważ nie mają zagadnień, które wymagają rozdrabniania się w dużych łańcuchach (dla Chemików duży łańcuch to taki węglowodór na plastik), a za takie potworki jak Pani B przyniosła się nawet nie zabierają. Ale wiedzą, że istnieje rozwiązanie problemu i przyprowadzą Pana Fiszyka, który takiego kodu naklepał bo potrzebował, a akurat nie było takiego dependency, żeby podpiąć.

Pani B trafia do Pana Fiszyka, który przy okazji też uprawia kodoklepstwo bo potrzebuje do swoich działań i omawiają jak to się z tymi pierwiastkami i ich odwrotnościami uporać. Tutaj wracamy do stanu edukacji. Terroryzowano czytelników w szkole pierwiastnikami? [haha! w słowniku nie ma takiego wyrazu! humaniści i słowniki!] No raczej mało kogo, w najlepszym wypadku wspomniano, ale to zwierzę pojawia się na kierunkach STEM dopiero po stosunku maturalnym. Pani B z pewnością miała na jakiś wykładach interdyscyplinarnych wspomniane nie tylko o tym, ale jedynie aby zaznaczyć, że rozwiązanie istnieje i jest od tego wydział. Jest wiele innych zagadnień, którymi nie trapi się ogółu i one się tu właśnie ujawniają. Żeby nie wiem co, to do programu kształcenia biotechu nie wciśniemy fakultetów z wszystkich potrzebnych zagadnień, bo studia by trwały 25 lat i liczebność ludzi ogarniających te specjalizacje nie wystarcza nawet wewnątrz samych wydziałów (jeśli komuś się wydaje że na przykład na Fiszyce jest OTW, to zapewniam, że tylko po łebkach, bo aparat matematyczny wymaga typa, który jest na wydziale dla czubków i OTW jest oddzielnym fakultetem na Fiszyce; a wydawać się może, że to już się przyjęło^^).

Pan Fiszyk kodklepca wskazuje więc Pani B jak sobie poszerzyć stan maszyny, aby carry było realizowane co bardzo spowalnia model, ale będzie działało. Problem z carry jest sprzętowy. Możemy sobie zapisać cokolwiek (z najbardziej absurdalnych przypadków – możemy podzielić przez zero, zrobić carry co to za liczba i odwrócić operację odzyskując liczbę; tylko nie ma to żadnego zastosowania, ale tak samo możemy przenieść układ odniesienia względem zera, minus zera, względem pierwiastka czy complex, więc mamy poszerzony typ danych do operacji, które traciłyby precyzję), ale musimy przewidzieć czym będziemy torturować dane liczby. Ponieważ przewidujemy, że na przykład zrobimy liczbie sqrt, a później pow(2/3) to sobie od razu mnożymy te dwa zwierzaki i przenosimy z boku, a następnie dokonujemy operacji na zwierzęciu wejściowym takim właśnie operatorem. Tracimy wtedy mniej danych. Tyle że jak chcecie poskładać taki operator na grafie nukleotydu to się robi carry większe od stanu maszyny. Sama funkcja licząca to carry w obie strony jest większa od modelu. Na szczęście Pan Fiszyk kodoklepca wie jakie wystąpią utrapienia i będą nękać już za chwilę Panią B, więc “we have you cover!” – mamy podział tego na wątki proca, a nawet centrum komputerowe, które ma dużo procków i zespół nerdów od kodoklepstwa, którzy przełożą to na dość specyficzną architekturę. Trzeba tylko do komisji się wybrać po alokację zasobów. Komisja da. Niezależnie czy stemowa czy korporacyjna. To nie jest wcale takie drogie. Procesorów na planecie nie brakuje. A do tego w tej dziedzinie przez ostatnie dekady był znaczący postęp tego aspektu i liczydeł nie zabraknie.

Ale… i tu się akurat Pan Fiszyk wtrąci… w stanie maszyny nie ujęliście pewnych kwestii, i proponuje zwrócić na nie uwagę. Są to pola magnetyczne i różnice potencjałów elektrycznych. Po potencjałach elektrycznych dla cząstek Pani B wie wszystko bo to przecież chemia i jedynie formalizm się rożni. Więc do stanu maszyny dodaje te zsumowane różnice potencjału przyjmując że duży łańcuch nukleotydów ma jakieś tam bariery, oporności, trochę jest przewodnikiem, trochę izolatorem – Pan Chemik ma to krok po kroku rozgryzione bo to Jego branża. Pani B wraca z tym modelem stanu maszyny do Pana Fiszyka i tu pada propozycja, że mają to ogarnięte z lepszą taksonomią, i Jej to napiszą lepiej. Tylko żeby załatwiła alokację. Załatwia alokację, ale.. Fiszycy się oczywiście raczej tak sobie po łebkach znają na jej dziedzinie specjalistycznej. Czyli na tych dużych łańcuchach nukleotydów. Mogą się poznać, no ale to już chemia i powolne, mało interesujące sprawy. Do tego duże zbiory danych.

Pani B przychodzi więc po odbiór roboty do Pana Fiszyka, dostaje swój model stanu maszyny, funkcję, pozostaje sprawdzić czy to jest to o co Pani B chodziło i czy uwzględnia (po dopracowaniu taksonomii) tego czego Ona tam szuka. Otwiera swój pierwszy stan maszyny z opisem, otwiera to co miało się znaleźć w stanie maszyny, otwiera co dali Fiszycy i zaczyna sprawdzać czy tam będzie odkrywane to czego szuka. Tylko coś tu ewidentnie nie gra – stan maszyny jest malutki. A ona miała uzyskać z tego rozkład szukanych w przestrzeni na potrzeby przewalenia próbek przez dajmy na to silną gammę, albo coś jeszcze bardziej zbrodniczego. Wraca więc do Pana F postawić pytania, które w uproszczeniu wyglądają tak, że “Wasz model wypluwa stan końcowy, że tu i tu są takie zwierzęta (atomy, wiązania, emisja), a teraz do tego stanu chciałaby dodać taką cząstkę no i gdzie się to wprowadza?”. Pan F stara się zrozumieć czego nie zrozumiał z tego czego Pani B nie rozumie. I udziela oczywistej odpowiedzi, że to zagadnienie nie kryje się w stanie maszyny, tylko w funkcji. Pani B drapie się po głowie, że ona chce na końcu mieć stan maszyny co takiego wyjdzie ze stanu wyjściowego, czyli gdzie będą jakie wiązania, i te wszystkie gadżety, o których Pan F wspominał – gdzie czyli jaka jest lokalizacja w przestrzeni. Pan F wtedy rozumie czego nie rozumiał.

Przetłumaczmy to na czytelny dla czytelników zapis. Punkt po punkcie, gdzie w każdym punkcie Pani B połapie się, że w ramach tego konstruktora pytania jakie stawia są kompletną abstrakcją. Na przykład interesuje ją, gdzie w stanie maszyny są zlokalizowane wiązania. Czyli na język F pyta gdzie w danej cząstce są elektrony. Otóż ich nigdzie nie ma, jest rozkład gdzie je może znaleźć jeśli do modelu doda szpilkę z jonem żeby poszukać, ale tak konkretnie to one nie występują w żadnym punkcie przestrzeni tego modelu tylko są funkcją – szukając ich można je znaleźć lub nie znaleźć, to dlatego tam były te paskudne pierwiastki, i się nie dało bez carry (z carry zresztą też się nie da, ale to za chwilę). Do tego można je znaleźć częściowo w różnej konfiguracji, a przykładanie szpilki z jonem oczywiście zmienia szansę ich znalezienia, więc zaburza układ jakiego szukała Pani B. Dalej jest śmieszniej (ale Pani B już w tym momencie wie, bo ma łeb nie od parady, że kolejne pytanie na liście nie przystaje, ale skoro je ma to już dla zasady je zada). Otóż Pani B (dajmy na to że uczepiła się magnezu w biologicznej baterii słonecznej pod majstrowanie któregoś procesu w ciągu ATP) stawia kolejne pytanie o lokalizację ładunków magnetycznych. Wiemy oczywiście, że tego pytania nie zada, bo się już ogarnęła do czego doszło, ale przyjmijmy że ma asystentkę, która tak szybko nie odcedziła pytań o stan maszyny bo jest skupiona na porównaniu rezultatów z oczekiwanymi, a nie że nie ma na czym czapki nosić. No i zadała. Bo coś jej się zwiduje, że na zajęciach lokalizowano skąd się biorą linie pola B, że pomiędzy ładunkami, które wyrównują różnice potencjału E coś takiego ma miejsce i tak dalej – znacie te uproszczenia ze szkoły. Serio Biotech potrafi stawiać takie zagadnienia. Jest to skutek tego, że tresura szkolna wpaja na różnych etapach, że to co jest na tablicy/w książce/na zajęciach to jedno z wyobrażeń uproszczone do opisu szkolnego, a nie opis rzeczywistości. Egzaminy zaś sprawdzają czy student przyswoił, a ten żeby się tym posługiwać z przyczyn neuroplastycznych musi przyjąć na czas ogarniania zagadnienia, że taki jest stan rzeczywistości. No i później już to tak zostaje, bo przecież nikt nie terroryzuje biotechnologów na zajęciach odczynianiem błędnych wyobrażeń z marginalnego zagadnienia, które ich wcale nie będzie interesować zawodowo. No chyba że akurat do tego dojdzie, a doszło. Nie cofniemy się w czasie i nie wyprostujemy programu nauczania, bo by 25 lat nie starczyło na przejście wszystkich fakultetów, jakie może mogą się przydać.

No więc na wszystkie pytania, w skrócie Pan F odpowie, że to nie jest w stanie maszyny tylko w funkcji. Bo to na żywca są funkcje rozkładu rzeczy, które trochę mogą się wydarzyć, a stan maszyny jest mały, ponieważ to od funkcji zależy co zobaczymy. I to wcale nie znaczy że tak jest, tylko że taki jest obraz pod warunkami wejściowymi w funkcji “wydarzeń”. Jakbyś popatrzyli szpilką na coś innego to by wyszło inaczej – szpilka do pomiaru bierze udział w reakcji. Myśmy sobie oczywiście już znaleźli ostrzejszą szpilkę i potrafimy spalić łańcuch gammą albo nawet dowalić z większą rozdzielczością neutronami, no ale alokacja, komisja, nie mamy takich urządzeń za dużo i trzeba mieć powód żeby się wepchnąć w kolejkę, a chemicy naklepią modeli do testów logarytmicznie szybciej niż biotechy, bo ich modele są mniejsze i mają prostsze szukane. Więc zerwiemy nisko wiszące owoce najpierw. Impact, significance i takie tam. Jak już będziemy mieli tych energożernych urządzeń za dużo to może nawet starczy na Biotech. O ile zrobią modele. A mają raczej trudną robotę. Chemicy od materiałoznawstwa, metalurdzy i podobni od baterii mają prostszą.

Z tego widzimy, że sama koncepcja stanu maszyny jest dobra dla B i Ch pod warunkiem, że chcą uzyskać model statystycznie poprawny. A jak się zaczną rozdrabniać, to muszą umieścić w nim ładunki elektryczne i magnetyczne, z których jednych w przyrodzie nie ma w formie zlokalizowanej na pewno, a drugie owszem chyba są zależnie od zastosowanego wyobrażenia, ale nie przesadzajmy z ich lokalizacją bo… bo skoro ujęliśmy pole B w funkcji, czyli występuje ono w czasie, a wynika z E, które też ma sens wyłącznie dynamicznie to zaczynamy dochodzić do delta t, które jest Chemikom i Biotechnologom potrzebne jak psu koło. Dopiero w takim niszowym zagadnieniu zaczyna kłuć w oczy. Do tego zagadnienia jest potrzebne inne wyobrażenie stanu maszyny, inne wyobrażenie funkcji, a maszyna obliczeniowa musi przenosić inne dane niż są do tego przyzwyczajeni. Zanim więc wykształcimy kolejne pokolenia uzbrojone w aparat pojęciowy do przegryzania tego problemu (a jeszcze nie zaczęliśmy ich kształcić) to chwilka minie. Wspominałem w poprzednim tekście o tym, że pewne badania wymagają pokoleń – no właśnie dlatego ich wymagają, bo trzeba dopasować aparat pojęciowy do stanu wyobrażeń o zaistniałym problemie.

Tylko dlaczego właściwie robimy to wszystko tak na ookoło z tym carry, multithreadingiem i duperelami? Nie da się prościej?

Wydawało się, że się da. Coraz mniej się wydaje, ale wydajemy na sprawdzenie. Pożytek z tego taki, że mamy ai. Jaka tam ona sobie jest taka jest, ale to jest miś na skalę naszych możliwości. Najpierw hardware, potem software. Omówmy to po łebkach.

Elektronika działa tak, że mamy pewną częstotliwość taktowania, to znaczy różnice napięcia są w postaci impulsów w zgodzie z fazą zasilania. Żeby wszytko działało w jedną stronę to jest tam prostownik i sygnał wchodzi w postaci impulsu w zadanych widełkach zmienności. Przepływ na tym paśmie jest albo go nie ma czemu przypisujemy abstrakcyjną wartość, że jest albo nie ma. I to dalej uważamy za liczbę. Czy co tam akurat za interpretację softwarową sobie dokleimy. Taki sygnał wchodzi do “rejstru” w takiej właśnie postaci przełączeń napięcia. Tworzy to ciąg, na którym możemy w dalszej kolejności poprzełączać kolejnym wsadem impulsu wartości. Ponieważ mamy aż dwa stany, to maksymalna liczba operacji do przeprowadzenia wszystkich możliwych zbrodni na danym ciągu jest kwadratem liczby impulsów. Czyli największa jednostka logiczna wykonująca operację może się składać z tylu szeregów przetwarzania jaka jest długość wprowadzonych danych. Większa ilość operacji w jednostce logicznej będzie dawała rezultat jednej z tych ujętych w kwadracie rejestru. Nie ma innych kombinacje zer i jedynek. Nie ma więc potrzeby aby jakakolwiek alu była większa niż kwadrat rejestru. Zresztą adresujemy te operacje takim samym impulsem więc i tak nie zaadresujemy większej ilości operacji na raz niż wynosi ta podstawa. Większość alu nie potrzebuje nawet kwadratu, dodawanie w najbardziej prymitywnej formie, łopatologicznej z carry jest trójkątem będącym połową powierzchni tego kwadratu. Przenoszenie (wcześniej wymieniony przypadek odwracania kwadratu) danych w dwóch rejestrach wymaga znowu takiego samego podejścia czyli kwadratu hardware. Natomiast większość operacji jest na tyle prosta, że ma specjalistyczny gadżet, który nie trybi w cyklach kwadratowych tylko w jednym. Na przykład kwadrat jest mielony przez przesłanie sygnału z przesunięciem o jeden sygnał – z rejestru do obwodu wychodzi sygnał i w tym samym momencie jest ładowany do innej linii rejestru z krok po kroku z doklejeniem na początku sygnału zera (jak ktoś ma problem z wyobrażeniem tego sobie, to mamy przewód z wodą, w wodzie są bąbelki, i przepychamy to z prawej strony zbiornika rejestru na lewą stronę drugiego zbiornika rejestru po prostu dolewając wody z prawej). Dla większości operacji to wystarcza, dopiero jak zaczynamy się kopać z domeną po krawędziach to są pewne liczby maksymalne, które można sumować (czyli mniejsze o jedną daną z lewej strony rejestru), mnożyć, kwadracić, pirewiastkować i tak dalej. Problem precyzji to obliczenia niebinarne, takie jak tabelki sinusów i cosinusów gdzie do operacji jest ustawiony jakiś grubszy epsilon, żeby nie męczyć maszyn (wtedy sofwarowo możemy wymusić carry w innym rejestrze po ustawieniu epsilona na maksa i sobie policzyć jakiś kąt bardzo powoli, ale w większej rozdzielczości). W przypadku kiedy potrzeba cosinusy liczyć szybko (na przykład w sterowaniu pocisku fajnie jest, żeby obliczenia dla korekty lotek czy gimbala gadały z detektorami w czasie w miarę rzeczywistym, bo w cyklu jesteśmy już z uwzględnieniem manewrów celu optymistycznie 4 metry nie tam gdzie trzeba, a w rzeczywistości dryf może być bardziej złośliwy, dlatego trafienie w cel stacjonarny na mapie bez przeciwdziałania z dokładnością do ośmiu metrów jest dla artylerii rakietowej bardzo poważnym osiągnięciem) to jedzie się przetwarzaniem przez tabelę, która w locie dokonuje transformacji sprzętowo. To nie jest prawdziwa trygonometria, tylko takie uproszczenie szybkie dopasowane do danego systemu sterowania. Dlatego nie można sobie od tak wyjąć z rakiety o danej aerodynamice, masie głowicy i powierzchniach sterowych modułu i wsadzić do czegoś innego. I nie – nie da się tego automagicznie dopasować do lotu w czasie rzeczywistym z takim ruchem postępowym względem taktowania liczydła. Trzeba taki moduł wytworzyć i przetestować od nowa. Dlatego masę głowicy lepiej uzupełnić do zadanych wartości niż cokolwiek zmieniać w oprogramowaniu, dlatego loty na softwarze (na przykład rakiet z zastosowaniem cywilnym, które mają zawieźć coś na kółko wokół naszego dysku postawionego na czterech słoniach stojących na żółwiu) mają bardzo ostre warunki kiedy lecą, gdzie lecą i nad czym przelecą, a jakiekolwiek zmiany w tym planie to proszenie się o kłopoty (i prawie wszystkie problemy w aerospace w ciągu ostatnich dwóch dekad to problemy softwarowe, bo jakiś krawaciarz zmienił plany w ostatnim momencie i kazał nerdom pokiwać głowami, że to naaapeeeewno zadziała).

To teraz do brzegu z ai.

To że karty graficzne chodzą na float i wciskanie tam int jest proszeniem się o kłopoty wie każdy kto dłubał i już wie, że 1 i 1. to są dwa różne zwierzęta^^. Ale nie wnikajmy w te detale techniczne z kategorii opengl. Jeśli ktoś się popularnoopowieściowo interesował tematem to pewnie oglądał takie przedstawienie wyobrażenia, na którym są jakieś komórki grafu połączone kreskami i coś tam się niby przetwarza. To porzucamy to wyobrażenie. AI to jest równanie będące rozwinięciem ciągu o liczbie zmiennych na czynnik równy liczbie czynników (więcej się nie da, a mniej nic nie zmienia na tym etapie) z wykładnikami o wartości liczby tych czynników. Czyli dajmy sobie taką sieć o pięciu komórkach, będzie ją opisywało coś przypominającego zwierzę:

a^(f)*b^(g)*c(h)*d^(i)*e^(j) + a^(f-1)*b^(g-1)*c(h-1)*d^(i-1)*e^(j-1) + a^(f-2)*b^(g-2)*c(h-2)*d^(i-2)*e^(j-2) + a^(f-3)*b^(g-3)*c(h-3)*d^(i-3)*e^(j-3) + abcde

I to jest zakres danych wejściowych – pięć zmiennych. A funkcja to maksymalnie tyle rzędów takich równań po takiej samej kratce jak omawialiśmy przy rejestrze, tylko ze względu na liczbę połączeń ta kratka może być k-wymiarowa, ale k nie większe od liczby czynników. Całe czary mary jakie to robi nie kryją się w równaniu (dlatego popularyzatorzy deklamują, że nie wiemy co to takiego robi) tylko w wagach jakie przypisujemy tym wzajemnie wpływającym na siebie czynnikom. Technicznie to jest ustalanie funkcji za pomocą zmiennych. Przyjmijmy, że szukacie jakiegoś równania polegającego na sumowaniu dwóch czynników, ale nie macie nic lepszego niż ai, bo technika poszła na przód i kalkulatory zostały zapomniane. Chcecie dodać trzy do dwóch,no to wrzucacie sobie tam taki obraz kotka, żeby wykładniki były zerem (wtedy operujecie na normalnym rejestrze int) i jedynym członem, który Was interesuje jest ostatni, a reszta to carry z nadwyżek dwójki i trójki ponad jeden. Nie różni się to niczym od normalnego przetwarzania w rejestrze, po prostu mamy w jednym równaniu (w swojej domenie uniwersalnym) rejestr danych, szukanych i funkcji. Pakujemy to w jedno równanie tak samo jak pakowaliśmy to w rejestry procesora wcześniej i to wypluwa jakąś odpowiedź. Jak widać jest to metoda dość powolna i niezgodna sprzętowo z urządzeniami elektronicznymi. Uczenie maszynowe polega jedynie na odnalezieniu takich wag dla czynników (abcde), żeby rezultat wygrał social contest. Uzyskujemy w ten sposób macierz do mnożenia (przyjmijmy) obrazka, której wartość jest odpowiedzią czy wynik mieści się w zakresie szkoleniowym wyników dla “kotek”. Można z tego wykopać wagi i niby zrobić układ elektroniczny, ale tych czynników obecnie nie jest tam pięć na pięć tylko hopsztylion na hopsztylion i nikt nie będzie palił wafla pod model, który jutro będzie miał nową wersję.

Proces uczenia maszynowego nie polega na dodawaniu tam czegokolwiek (bo tam jest na starcie każde możliwe rozwiązanie z kwadratu rejestru wejściowego) tylko na uwalaniu pewnych wątków przetwarzania. Gdybyście dość długo pomęczyli taki model na przykład potęgowaniem i wyciągnęli z tego macierz do budowy układu elektronicznego to dostalibyście moduł błyskawicznie potęgujący. Wiemy to, ponieważ podzespoły procesorów są projektowane przez maszyny od końca lat dziewięćdziesiątych i kiedy jeszcze się temu bacznie przyglądano, to pewne układy tak generowane miały ciekawostki – elementy układu prowadzące niby donikąd, ale bez nich niedziałające poprawnie. To jest akurat ten sam problem jaki trapi Panią B – nie musimy wiedzieć jak coś konkretnie realizuje swoje funkcje jeśli daje poprawny wynik. Tylko zaprojektowanie układu gdzie na komórkę przypadają dwa stany, a zaprojektowanie układu, który ma ich “nieco” więcej jest kłopotem sprzętowym i czasu. Ale do stanów bazy na wejściu i wyjściu się to sprowadza. Dlatego właśnie ai jest stosowane z takim sukcesem w zagadnieniach o jakich trąbione są sukcesy – do tego się nadaje. To że do zaprojektowania sporej części podzespołów procesora w Waszym lapku czy telefonie nie trapi się inżynierów od dwóch dekad nikt nie trąbi, bo by to mogło negatywnie wpłynąć na Waszą chęć do dzielenia się dobrem za rezultat. Ale tak – nikt nie wie jak to konkretnie działa i w niczym to nie przeszkadza. Przy okazji odkrywane są ciekawe prawidłowości do dalszych analiz. W elektronice mamy dokładnie to samo co w alphafold – hopsztylion generatorów ewolucyjnych lepiej sobie radzi z narysowaniem modelu działającego w rzeczywistości niż pokolenia inżynierów ślęczących nad modułem dodawania. ALU dodawania zaprojektowane przez człowieka miało z całą pewnością wszystko potrzebne do dodawania, ale i tak dało się część gratów wywalić i dalej działało. A nawet udało się zrobić układ, który wykonuje na tej samej architekturze więcej operacji i jeszcze pod koniec lat dziewięćdziesiątych dało się podążyć za logiką jaka była rezultatem takiego ewolucyjnego generowania układów, ale kiedy był tam kubik 16 połączeń to już się mało komu chciało chcieć robić to z ciekawości. Działa.

Wróćmy do problemu Pani B i Pana Ch.

Potrzebowali oni jednostki obsługującej ten algorytm, który przedstawił pan Fiszyk. Dłubanie tego na elektronice było serią takich sobie obejść, a wrzucanie węgla do zasilania i chłodzenia superkomputera, żeby policzyć jaki kolorek ma dana substancja po wzbudzeniu światełkiem nie licowało z konkurencyjnymi zastosowaniami dla węgla. Wynika to wyłącznie z tego, że algebra na jakiej pracuje sygnał przez bramki logicznej słabo się nadaje do liczenia oscylacji (complex z wykładnikiem urojonym) dla materiałów. Ale że Pan Fiszyk potrzebował tego aparatu obliczeniowego do liczenia fenomenu zaobserwowanego w naturze to pozostało ten fenomen zaprząc do liczenia. Nic prostszego – doświadczalnicy wszystkich specjalności robią to od dawna, wrzucają coś w proces badawczy i pokazują “o takie wyszło z drugeij strony”. Tylko trzeba było to zrobić programowalne, żeby zadać dane i obejrzeć sobie szukane. Ponieważ aparat matematyczny do tego istniał od dekad i był przyczyną zgryzot Pana Ch i Pani B to użyto go do podjęcia próby zbudowania takiego fragmentu architektury obliczeniowej, która będzie wypluwać właśnie takie liczby. Czyli zabrano się za zbudowanie programowalnego aqu (algorythmic quantum unit). Żeby to wcisnąć krawaciarzom od zdobywania funduszy trzeba to było jakoś sexy nazwać i mamy komputery kwantowe, ale to tak jakby pierwsze kalkulatory nazwać komputerami – za dużo bitów to tam nie wchodzi. Uzyskano alokację, zrobiono hajp i rozpoczęto budowę demonstratorów. Bardzo to wszystko fajnie wyglądało, ale proces przebiegał dokładnie tak jak z Panią B. O ile Pan Ch rozwiązuje kwestie na mniejszym łańcuchu (a najlepiej na kilku atomach tworzących cząstkę) to wszystko gra i koliduje. No ale celem było wsadzenie Pani B do instytutu takiego komputera, który policzy te duże łańcuszki z powodu problemów wymienionych powyżej. Cała ta koncepcja ai to było takie przygotowanie pod architekturę jaką będą miały kalkulatory kwantowe. To jest taka uproszczona do precyzji danych i bez nazbyt wyszukanych funkcji Pana Fiszyka wersja na urządzenia elektroniczne, ale jest konstrukcja logiczna jest żywcem wzięta z tego czym posługuje się Pan Fiszyk.

Jednak w czasie łączenia kolejnych qbitów zaczęły wychodzić klasyczne kwiatki. Całą koncepcję (świetnie sprawdzoną) trapią uproszczenia i przybliżenia pewnych danych wejściowych związanych, a jakże z trygonometrią (tylko w wersji algebraicznej). Oczywiście można by z problemem pójść do Panów Matematyków żeby coś z tym zrobili, ale ten zestaw wiedzy jest na poziomie inżynierskiej tabelki i Matematycy piany dostają kiedy są zmuszani do grzebania w tak naciąganym aparacie. Według Matematyków w szafie z fiszyką kwantową jest upchniętych nazbyt wiele szkieletów, które zaczęły wypadać kiedy podjęto próbę zbudowania urządzeń, które robią coś użytecznego w porównaniu z elektroniką. To są te trupy tego samego gatunku, na jakie natknęła się Pani B – w procesie edukacji jest wiele uproszczeń, które wpływają na wyobrażenia. Z elektroniką się udało gdyż opiera się ona na statystycznej powtarzalności, jeśli przyjrzycie się bliżej to zarówno wejście sygnału nie jest prostym odcięciem w pionie (funkcja jest ciągła) jak i jego zakończenie. Przyjmując (z grzeczności), że rozdzielamy to na ładunki (choć oscyloskopem nie zliczamy elektronów, ponieważ kondensatory – pułapki na sztukę dopiero powstają jako kropki) to jest ich tam na pik w sygnale wielkie mnóstwo. A nie jeden. Dlatego po początkowym hajpie i trupach wypadających z szafy zabrano się do zagadnienia mrówczo, tradycyjnie, tak jak zawsze – zamiast porywać się od razu na Gralla zaczęto robić wyspecjalizowane układy, które mają do granicy tej koncepcji dojść i zobaczymy jak to tam wychodzi w tabelkach i czy da się wyniki przeciąć jakąś krzywą.

Tylko co to ma wspólnego z Panią B? Ano bardzo dużo. Bo żeby napędzić centrum obliczeniowe trzeba sypać dużo węgla, gdzieś ktoś musi wydobyć udziwnione pierwiastki na tranzystory, ktoś inny to czyścić i wyprodukować. To jest bardzo dużo roboty, a wszyscy ci ludzie jedzą. No i poprzednie pokolenia Pan z Biotechu zajmowały się rozwiązaniem problemu produkcji żywności. Z sukcesem! Zmodyfikowano genetycznie rośliny – tak jak potrafiono najlepiej. Plony wzrosły, ale ujawniły się działy krawaciarskie i pod pozorem ochrony patentowej zaczęto ścigać rolników, którzy nawet u siebie tego zboża nie siali, ale które u nich samowolnie i bez rozkazu rosło. Czemu rolnicy nie ścigali Monsanto za zaśmiecanie im pola to nie wiem. No ale Panie z Biotechu już kiedyś świat ulepszyły i zamiast przekierować to zboże do karmienia wszystkich, którzy im popchnąć nowe komputery, wydobyć na nie minerały, ryć węglowodory na zasilanie to jakoś tak wyszło, że zaczęto wyniki z tych alokacji przekierowywać nie na nowe alokacje w techu tylko na lewny szamanizm. To tak jakbyśmy musieli płacić tantiemy za wymyślenie metody rozpalania ognia w czasie, kiedy każdy już sam potrafi. Stąd absurdalne próby prowadzenia badań w instytucjach publicznych aby zastrzec rzeczywistość w domenie publicznej. Atak na patentowanie wzorków matematycznych i kodu do maszyn liczących też już szamani lewa przeprowadzili. Nikt chyba nie jest zdziwiony, że ludzie kierowani ciekawością nie będą walić drzwiami i oknami aby szukać rozwiązań mających w deklaracjach rozwiązać jakieś tam problemy populacji, a służące jedynie rozwiązywaniu problemów akcjonariuszy? Że się komuś zwichrowały proporcje i skończy się jeszcze bardziej nieracjonalnymi rozwiązaniami od samego lewa patentowego?

Jak widzicie to nie metoda badawcza atakowania problemów każdym możliwym sposobem zawodzi. Z tym sobie radzimy – mamy bardzo dużo sposobów. Ten cały brak innowacji wynika z tego jak implementowaliśmy poprzednie. Jakie tam niby diabły są w GMO to jest kwestia ile wiemy o majstrowaniu (najpierw zmajstrujemy – później się dowiemy, inaczej nie działa), ale jakoś nie udostępniono tego w domenie publicznej tym, którym akurat z sianiem i zbieraniem nie wychodzi, żeby się już nie męczyli? Bo przecież roślinki same sobie rosną i zajmują przestrzeń. Arpanet trafił do domeny publicznej. Są pożytki? No to tak działa – tak trzeba robić.

Mi to w zasadzie nie przeszkadza, że zabrano z domeny publicznej finansowanie nauczycieli i mamy selekcję negatywną w zawodzie. Moje dzieciaki i tak uczą się w domu. Tyle o ile, na miarę mojego skromnego łba aż do momentu, kiedy dadzą sobie radę dalej, a pozostali? A dostali kredyty studenckie i teraz jak ktoś ma ich zatrudnić to dostaje kwitek, że podejmą pracę o ile to spłaci^^

Przez jakiś czas ośrodki badawcze będą się więc zajmować nieco prostszymi sprawami, aż wyniki postępu zobaczymy również w domenie dystrybucji. Albo zobaczymy wyniki postępactwa i dopiero będą ciekawe czasy.