#52 – Jak wdrażać AI w organizacji? Część trzecia
W tym odcinku dowiesz się jak zintegrować komponent AI z resztą swojego środowiska IT.
Transkrypcja odcinka
Cześć, nazywam się Krzysztof Rychlicki-Kicior i witam cię serdecznie w podcaście „Software z każdej strony”, w którym dowiesz się, jak łączą się ze sobą świat biznesu i IT.
To jest odcinek 52: Jak wdrażać AI w organizacji, część trzecia. W poprzednich odcinkach opowiadałem o stworzeniu koncepcji rozwiązania AI, przechodzeniu przez ten proces z konsultantem. Później w części drugiej, na dość ogólnym poziomie, ma się rozumieć, ale jednak poruszyłem kwestię podejścia do implementacji rozwiązania komponentu, właśnie związanego z obsługą sztucznej inteligencji. Pierwotnie w sumie temat, który miał się znaleźć w jednym odcinku, potem w dwóch. Ostatecznie, jak widać, rozrósł się do odcinków trzech, ale już na tych trzech faktycznie poprzestanę. Doszliśmy do momentu, w którym patrząc na zakończenie odcinka, tej części drugiej, mamy komponent, mamy taką można powiedzieć, czarną skrzynkę, która już funkcjonuje na jakimś tam dostatecznie dobrym poziomie, która ma skuteczność, mierzoną na różne sposoby, na takim procentowym poziomie, który jest dla nas zadowalający. Oczywiście to nie tak, że nie można dalej optymalizować, cyzelować, dopieszczać tego modelu, po to, aby zbliżyć się do upragnionych 100%, tak oczywiście żartując nieco, ale można oczywiście dalej rozwijać skuteczność rozwiązania. Natomiast sama taka czarna skrzynka niewiele nam da. Konieczne jest zintegrowanie jej z resztą tworzonego systemu. Czy to będzie nawet prosta aplikacja webowa, czy jakieś rozwiązanie chmurowe, mniejsza z tym. Generalnie rzecz biorąc trzeba sprawić, aby zwykły użytkownik mógł skorzystać z możliwości tego wytworzonego komponentu.
Oczywiście trudno będzie w tym odcinku, w takim dosyć krótkim czasie, przedstawić uniwersalny, a jednocześnie precyzyjny opis techniczny, bo zależy o choćby od tego na przykład, czy mówimy o jednorazowym działaniu, na przykład wrzucamy do takiego komponentu obrazek, który może zawierać jakieś usterki, jakieś elementy do rozpoznania, a w efekcie, czyli na tak zwanym wyjściu, otrzymujemy współrzędne znalezionych usterek. To jest jakby jeden scenariusz, taki można powiedzieć, wejście, wyjście, jednorazowe działanie. Ale możemy też mieć do czynienia z konwersacją, z rozmową, jak oczywiście przy wszelkiej maści chatbotach, ale nie tylko przy chatbotach. Wszędzie tam, gdzie jest potrzebne zachowanie kontekstu dłuższej komunikacji. I już to może wpłynąć na sposób implementacji właśnie takiej integracji. W tym odcinku wspomnę więc o takich istotnych kwestiach, o których warto pamiętać, kiedy mamy wytworzony, mamy dostępny mechanizm AI i chcemy go wdrożyć, chcemy go zintegrować z istniejącym oprogramowaniem. Natomiast chociaż z reguły myślimy, że tutaj o sytuacji, kiedy taki komponent jest gdzieś tam wytworzony, czy wewnątrz organizacji, czy z pomocą jakiejś zewnętrznej firmy, czy konsultanta, to jednocześnie może być sytuacja, w której nabywamy gotowca, nabywamy dostęp do usługi, czy też wręcz całą licencję na jakiś taki komponent i taką gotową wersję, gotowy komponent chcemy właśnie zintegrować z resztą naszego ekosystemu IT. Przede wszystkim nawiążę może od razu do tego przykładu, który pojawił się we wstępie, czyli właśnie do tego, w jaki sposób integrować oprogramowanie, integrować system z komponentem, bo chociażby może być tutaj kwestia tego, czy mówimy o takim, powiedzielibyśmy w języku IT, bezstanowym, jednorazowym trybie komunikacji, czy stanowym, gdzie mamy jakiś kontekst, gdzie mamy jakąś konwersację i trzeba tutaj pogadać, mówiąc krótko.
I jakby metoda integracji… no nie ma jednej. Przede wszystkim trzeba sobie zadać kluczowe pytanie, czy dany komponent, niezależnie tutaj, czy mówimy o komponencie naszego autorstwa czy też nie, jest dostępny do uruchomienia bezpośrednio jako program jakby w naszej infrastrukturze, w naszym środowisku, czy też może jest dostępny za pomocą usług chmurowych, gdzieś online, no chociażby tak jak osławiony ChatGPT. Tutaj warto pamiętać, że jeżeli mówimy o rozwiązaniu takim kupionym, już tutaj nie wynikam w niuanse prawa autorskiego, czy jest to licencja, czy jest to program, który posiadamy, natomiast mamy dostęp do jakiejś firmy trzeciej lub zespołu wewnętrznego, która daje nam taki cały komponent do naszej pełnej dyspozycji, to powinniśmy też mieć pewną kontrolę nad tym, w jaki sposób ten komponent zostanie dostarczony. Jakąś tam mniejszą firmę być może przekonamy do tego, aby udostępniła nam model AI. Open AI raczej nie przekonamy, aby nam udostępnili do wglądu ChatGPT. Jak komuś się uda, to bardzo proszę o informację. Natomiast jeżeli, krótko mówiąc, mamy dobry kontakt z tą ekipą, która opracowuje i udostępnia nam komponenty AI, to na pewno warto jest skomunikować ją, nawet nie tyle na etapie wdrożenia co nawet wcześniej, z tą można powiedzieć resztą ekipy odpowiedzialną za sam system, za resztę całego oprogramowania, bo niezależnie od tego, czy to będzie jakaś prosta apka webowa, czy właśnie rozbudowane rozwiązanie w chmurze, być może coś zainstalowanego na jakichś urządzeniach wbudowanych też, to się coraz bardziej zaczyna pojawiać, Internet rzeczy, czy aplikacja mobilna. Niezależnie od tego, co jest w tej naszej infrastrukturze IT, to dobrze jest skomunikować właśnie tę ekipę z ekipą od AI, bo chociaż po fakcie da się z reguły przerobić, zaadaptować, mechanizmy jeden do drugiego, no to jakby po co, po co generować dodatkowe koszty, dodatkowy czas, jakiś stres, skoro tak naprawdę, jeżeli właśnie dobrze skomunikujemy ze sobą ludzi na początku, to będzie tutaj prawie na pewno łatwiej dograć integrację komponentu AI z resztą systemu. Zresztą jednocześnie warto zauważyć, że to w zasadzie jest rozwiązanie, taka komunikacja, takie skomunikowanie, które zadziała nam praktycznie w każdej sytuacji, no może z wyjątkiem takiej sytuacji, w której byśmy integrowali ze sobą dwa gotowe systemy. Jakiś gotowy klocek od AI, jakiś gotowy system chmurowy, to wtedy nie za bardzo mamy możliwość wpłynięcia na formę komunikacji i najprawdopodobniej i tak trzeba będzie napisać jakiś taki, można powiedzieć adapter, przejściówkę, zbieżność nazw z przejściówkami, które mamy przy podłączaniu sprzętu komputerowego do siebie absolutnie nieprzypadkowa i wtedy taka przejściówka, tylko że w formie właśnie jakiegoś małego programu, małej aplikacji, będzie konieczna, żeby skomunikować takie gotowe komponenty.
No ale właśnie, w przypadku, gdy komponent rozwijamy wewnętrznie albo z udziałem firmy trzeciej, ale mamy na ten rozwój wpływ, możemy na przykład zadbać o to, aby komponent AI i aplikacja webowa były utworzone na przykład w tym samym języku programowania Python. No w ogóle większość rozwiązań AI jest oparta na Pythonie, niektóre są też na języku R, ale są mniej popularne. No to jeżeli mamy na przykład speców od Pythona, którzy robią właśnie rzeczy związane z machine learningiem, deep learningiem i mamy też ludzi, którzy robią aplikacje webowe w Pythonie, na przykład w Django czy we Flasku, to mimo wszystko jest to dobra sytuacja. Mówię mimo wszystko, ponieważ z doświadczenia też swojego, to też nie jest tak, tutaj od razu dodam, że to, że ktoś pisze właśnie w Pythonie rzeczy do machine learningu, to automatycznie można kazać mu zrobić aplikację webową. Absolutnie nie. No niemniej jednak język jest ten sam, pewne mechanizmy wspierające, na przykład przetwarzanie danych, preprocessing, też są bardzo podobne czy wręcz takie same. Więc na przykład, czysto z takiej perspektywy kadrowej, jakby się okazało, że nam ktoś przy rozwoju aplikacji webowej się nudzi, a na przykład mamy zadania związane właśnie z przetwarzaniem danych, augmentacją ich, no to tutaj można na pewno pogadać i takiego inżyniera aplikacji webowej przynajmniej tymczasowo wrzucić. Zawsze jest to pewna korzyść.
No dobrze, wiemy już, że temat integracji, zadbania o właściwą komunikację, przede wszystkim przy integracji komponentu AI i reszty systemu jest kluczowy. Czyli, ok, no mamy dwa elementy, system i komponent, które ze sobą rozmawiają, gadają. Możemy korzystać z tego naszego komponentu AI i to wszystko? No, oczywiście, że nie. Z reguły, gdy tak pytam, no to odpowiedź jest właśnie zachęcająca do dalszych dywagacji. Oczywiście, wytworzenie dobrze działającego, co zapewniły nam już dwie poprzednie części, dwa poprzednie odcinki, plus wkomponowanego w całość, rozwiązania mechanizmu AI, czyli to, o czym mówiłem przed chwilą, to tak naprawdę już spora część sukcesu, takiego końcowego, nie będę mówił, że to dopiero połowa sukcesu. Nie, to już jest większość, ale jednak nie wszystko. Często spotykam się z takim podejściem, czy to wśród nawet zadań studentów, ale też nawet w komercyjnych projektach, że okej, przygotowujemy model, robimy sporą fazę uczenia, mamy piękne wyniki, wdrażamy rozwiązanie, no i co? Można powiedzieć niczym klasyk, koniec mistrzostw, do widzenia? No, nie do końca. Owszem, spora część pracy jest wykonana, natomiast pamiętajmy, że kiedy faktycznie, kiedy faktycznie użytkownicy zaczną korzystać z tegoż działającego systemu i zaczną dawać informację zwrotną, feedback, no to tak naprawdę dopiero wtedy możemy mówić o faktycznie tym, że nasze rozwiązanie działa. I oczywiście chodzi również o to, aby przede wszystkim wiedzieć, że decyzje podejmowane przez model AI są prawidłowe, to jest bardzo ważne, natomiast bardzo istotne jest też to, że wszelkie opinie wyrażane przez operatora, przez człowieka, który korzysta z danego modelu, mogą być użyte… przeciwko niemu. No nie, nie przeciwko niemu, natomiast aby pomóc w rozwoju modelu AI. Jeżeli kojarzysz wszelkie jakieś takie właśnie mini ankiety, wręcz jedno pytaniowe takie ankietki na zasadzie oceń czy działanie mechanizmu było tak/nie poprawne, albo w skali od 1 do 5, to poza, no cóż, zostawieniem opinii, pomagasz także najpewniej w douczaniu takiego modelu AI. Zwłaszcza w przypadku rozwiązań, które mają zastąpić pracę ekspertów ludzi, to po ukończeniu procesu takiego zasadniczego uczenia, ważne jest też to, żeby eksperci mogli na bieżąco wyrażać swoją opinię, czy określone decyzje, określone działania modelu AI są prawidłowe. A jeżeli nawet chcemy, no to możemy to w jakiejś tam skali, pięcio, dziesięcio, stustopniowej, tak, aby potem taką wiedzę móc użyć do douczania modelu. Chodzi z grubsza o to, że jeżeli na przykład model otrzymał jakieś takie faktyczne już zdjęcie produktu, wskazał dwie usterki, jedną prawidłową i jedną nieprawidłową, czyli tak naprawdę wskazał, powiedzmy, poprawne miejsce, które zostało błędnie oznaczone jako złe, to w momencie, w którym człowiek stwierdzi, że dobra, ta pierwsza wada to jest okej, ale to drugie miejsce, ta druga usterka to tak naprawdę nie jest usterka, to my w tym momencie, program może sobie pobrać drugą usterkę i przekazać w odpowiednim momencie do modelu AI, że słuchaj, ten fragment obrazka, to tak naprawdę jest miejsce, które jest w porządku, więc doucz się i przy kolejnej okazji nie traktuj go jako wady, jako usterki. Bądź oczywiście w drugą stronę też, jeżeli na przykład jakaś usterka nie zostanie poznana i człowiek ją wskaże, to też program będzie w stanie, no krótko mówiąc, przy kolejnych okazjach powinien wykrywać daną usterkę.
Tutaj jeszcze dodam, że dorobienie takiej funkcji do systemu wymaga i pracy przy jakiejś tam części aplikacyjnej i właśnie pracy przy komponencie AI, więc no może być to dodatkowy koszt. Ale jeżeli nawet nie mamy powiedzmy budżetu na pełną taką funkcję, to róbmy jedną rzecz – zbierajmy te dane. To już jest dużo prostsza kwestia, czyli doróbmy do samej części aplikacyjnej mechanizm, który pozwoli na zapisanie w jakiejś tam prostej bazie danych informacji, że np. przy takim zdjęciu sieć wskazała takie i takie miejsce, jako usterki i operator potwierdził pierwszą, zanegował drugą. I nic z tym nawet nie musimy od razu robić, zapiszmy takie informacje i potem, kiedy będziemy mieli czas na dalszy development, zwłaszcza komponentu AI, możemy zrobić funkcję, która po prostu wczyta sobie historyczne, wszystkie zapisane poprawki i douczy model na takiej hurtem wrzuconej bazie danych. I to też może jak najbardziej zadziałać.
I na koniec, może to nie do końca rada, taka bardzo konkretna, co bardziej wytyczna, z zupełnie innego świata, bo tak dochodzimy do końca procesu opracowywania, takiego rozwiązania AI, natomiast musimy pamiętać o jednej rzeczy, w zasadzie mogłaby się pojawić wcześniej, ale to też dosyć świeży temat, mianowicie, gdzieś tak z miesiąc temu, Parlament Europejski zaakceptował AI Act. I chociaż oczywiście, jak to wiadomo, tematy prawne są wdrażane dosyć powoli, to musimy mieć świadomość, że w perspektywie kilku najbliższych lat, wszelkie rozwiązania AI, będą musiały spełniać regulacje. Nawet powiedziałbym, że nie tyle rozwiązania AI, znaczy rozwiązania też, natomiast podmioty wdrażające, które są dzielone na kilka kategorii. Więc w zależności od tego, czy jesteśmy organizacją, która chce po prostu zarabiać na AI, czy jesteśmy firmą, która wdraża takie rozwiązania, czy jakimś konsultantem, tutaj trzeba, w zasadzie już powinniśmy wszyscy z branży wdrażać je, czytać, ja gdzieś też sobie na tapet wrzuciłem, bo jest to niezwykle istotne. To nie jest coś, co może zacznie obowiązywać już teraz, o ile mi wiadomo, natomiast zdecydowanie trzeba ten temat już monitorować, bo przez dłuższy czas było tak, że ach, jeszcze prace, jeszcze poprawki były prowadzone, ale teraz, no można powiedzieć, że temat stał się już zdecydowanie bardziej poważny. To nie ukrywam, że jest temat na osobny odcinek, może nawet w zasadzie bardziej wywiad, z kimś, kto w tych tematach jest zdecydowanie bardziej kompetentny ode mnie, jednak ja nie jestem prawnikiem. Natomiast nie ulega wątpliwości, że mówimy o temacie dużym, na miarę RODO, czy też nadchodzącej dyrektywy NIST-2. No i czy to dobrze, że tak AI-akt wchodzi, czy źle, to jeszcze osobna dyskusja. Nie da się ukryć, że z jednej strony pewna kontrola, porządkowanie tematów AI-owych jest istotna, żeby gdzieś nie powstały jakieś takie modele AI, które wpłyną źle na nasze społeczeństwo. No ale z drugiej strony są to dodatkowe koszty, które trzeba uwzględnić, zadania do realizacji, obowiązki dla nas, dla wszystkich podmiotów zaangażowanych, a jednocześnie też mogą takie założenia, takie regulacje spowalniać rozwój w porównaniu do rynków, które nie są tak regulowane. No tak czy siak, nie ma wątpliwości, że jeżeli teraz zechcesz projektować rozwiązanie AI, to nie można po prostu zapomnieć, nie można pominąć tego aspektu.
I tym optymistycznym, no może nie do końca, akcentem, kończę ten odcinek, kończę ten też mini cykl. Z jednej strony miałem takie poczucie, że jeszcze nie wyczerpałem tematu, no mógłbym się zagłębiać, ale z drugiej mam w ten sposób pewne pomysły na to, jak powrócić do tematu AI w niedalekiej przyszłości, choćby ten wywiad, ale nie tylko. Tak że z pewnością sztuczna inteligencja będzie jeszcze gościć na łamach podcastu, może wręcz wywiad z jakimś chatbotem. No może jednak nie, na razie skupimy się na ludziach, ale na pewno temat AI jest godny kontynuacji. A na dziś to wszystko. Dziękuję bardzo za uwagę. Kłaniam się nisko i do usłyszenia.
KONIEC