Podcast

Rozmowa z Barbarą Fusińską – Data Solution Architect w Microsoft

Dosłownie dwa tygodnie temu skończyła się konferencja Google I/O. To coroczne technologiczne wydarzenie, gdzie Google chwali się swoimi wynalazkami, po raz pierwszy odbyła się w roku 2008. W tym roku właściwie nie było żadnych wynalazków…  W dużym uproszczeniu można powiedzieć, że Google przemyśla „wszystkie” swoje produkty w kontekście AI first. Wzór jest bardzo prosty, bierzesz dowolny produkt dodajesz AI i dostajesz wow :).

Sundar Pichai, który jest CEO Google zwraca uwagę na to, że właśnie to jest ważny kierunek rozwoju i Google koncentruje się na tym. Teraz to brzmi jeszcze bardziej wiarygodnie, żeby zacząć interesować się tematem. Sundar ostatnio powiedział:

„Uczenie maszynowe i sztuczna inteligencja odblokowała pewne możliwości, które były nie do pomyślenia jeszcze kilka lat temu”.

Co o tym myślisz?

Dzisiaj gościem jest Barbara Fusińska, która jest Data Solution Architect w Microsoft.

Również czeka na Ciebie zniżka na konferencję… szczegóły na samym końcu.

Vladimir
Cześć Basia, powiedz trochę więcej o tym kim jesteś, czym się zajmujesz, gdzie mieszkasz…

Basia
Cześć Vladimir. W tym momencie mieszkam w Londynie, przeprowadziłam się kilka lat temu i obecnie jestem Data Solution Architect, pracuje w  Microsoft. Chciałbyś dowiedzieć się co więcej oznacza ten tytuł, bo on jest dość enigmatyczny?

Barbara Fusińska
Barbara Fusińska

Vladimir
Tak chciałbym, ale najpierw zapytam coś innego. Co ostatnio czytałaś i czego nauczyłaś z tej książki?

Basia
Nie wiem czy mogę powiedzieć, że sporo czytam, ale czytam zwykle kilka książek na raz. Ostatnio czytałem książkę która jest zatytułowana “The Hard Thing About Hard Things” ona mówi o doświadczeniach pana Bena Horowitza  dotyczące tego w jaki sposób on prowadził kilka startupów i do czego to doprowadziło.

Książka opowiada o bardzo ciężkich decyzji oraz ciężkich sytuacjach o których zwykle ludzie nie mówią, bo starają się mówić o startupach gdy one się udają, odnoszą sukces natomiast  w sytuacjach kiedy trzeba zwolnić swojego przyjaciela albo szefa działu albo zdobyć klienta w niekonwencjonalny sposób. O takich rzeczach zwykle ludzie nie mówią. On napisał całą książkę na ten temat.

Czego ona mnie nauczyła? Nauczyła ona, że biznes nie jest prosty. Może już wiedziałam to wcześniej… ale on na konkretnych przykładach pokazuje, że to jest praca 24h na dobę i mimo, że jesteśmy osobami technicznymi i chcemy założyć startup techniczny to jednak dużo tych miękkich umiejętności biznesowych trzeba posiąść. Było to takie otwarcie oczu. Polecam bardzo czytanie tej książki.

Z innych książek, uwielbiam kryminały, ostatnio przeczytałam trzy książki na raz. „Zabójstwach w polskich Tatrach” oczywiście to wszystko było wymyślone, ale ja po prostu uwielbiam kryminały.

Vladimir
Czy polecasz pierwszą książkę dla osób które chcą zacząć swój własny startup czy ogólnie dla wszystkich ta książka może być przydatna?

Basia
Myślę, że dla wszystkich. Oczywiście, jeżeli ktoś chce zacząć startup – to szczególnie polecam. W dzisiejszych czasach warto wiedzieć na temat tego, że jednak prowadzenia biznesu się łączy z wieloma konwencjonalnymi rzeczami. Polecam.

Vladimir
Powiedziałaś, że pracujesz w Microsoft jako Data Solution Architect. Czym się zajmujesz na co dzień. Jakiego typu problemy rozwiązujesz i w jaki sposób?

Basia
To jest taka enigmatyczna nazwa. Mam takie wrażenie, że Microsoft wymyślił to stanowisko. Jeżeli wiesz co robi Cloud Solution Architect, czyli osoba która się zajmuje rozmawianiem z klientami, rozmawianiem o technologiach i o tym jak konkretny firmy mogą wdrożyć konkretne technologii u siebie, ale ponieważ to jest Cloud Solution Architect skupia się głównie na chmurze.

W przypadku Microsoft jest to Azure. Data Solution Architect zajmuje się podobną rzeczą, z tym że skupia się na danych. Obejmuje wszystko co jest związane z danymi, od baz danych, hurtowni danych, data lake. W przypadku Azure mamy Cognitive Services, Cortana, Bot Framework. Czyli wszystkie rzeczy które są związane z danymi, z analizą danych. Jestem osobą która wchodzi do firmy i stara się pomóc firmie wdrożyć Azure. Współpracuje z innymi Data Solution Architect, także z Cloud Solution Architect.

Można powiedzieć, że jesteśmy technicznymi sprzedawcami. Z tym, że nie sprzedajemy chmury, tylko staramy przekonać firmę jak najlepiej mogą wykorzystać te technologie.

Vladimir
Myślę, że to jest bardzo ciekawe. Z jednej strony posiadasz wiedzę techniczną, z drugiej strony potrafisz mówić w sposób zrozumiały również dla biznesu. W moim doświadczeniu jest tak, że czym więcej rozmawiam z przedstawicielami firm, osobami decyzyjnymi to rozumiem, że jest duża przepaść w rozumieniu co to jest uczenie maszynowe i jak to może być pomocne w biznesie. Między innymi dlatego powstał ten podcast. Proszę podaj trzy przypadki użycia nad którymi miałaś okazję pracować. I jakie były korzyści z tych rozwiązań dla biznesu?

Basia
Myślę, że bardzo często ludzie się ekscytują – bo jest coś nowego i fajnego co zostało rozdmuchane przez media. Dużo rzadziej się spotykają się osoby które myślą w jaki sposób konkretnie przekuć to na rozwiązanie biznesowe. W efekcie rozwiązanie które przyniesie korzyść finansową (w końcu o to chodzi w firmach, żeby zarabiać pieniądze). Mam kilka przykładów.

Jeden jest taki dość sztampowy, czyli jak użyć Chatbot Framework (czyli chatbota) do zamawiania jedzenia. Firma zajmowała się produkcją jedzenia i dowozem, zamiast zatrudniać osoby po drugiej stronie, zastąpiły część automatycznym chatbotem. Na początek to był taki proof of concept, ale okazało się, że całkiem nieźle to działa. Jak była korzyść? Nie trzeba była zatrudniać ludzi którzy tylko odbierają telefony, można było znaleźć dla nich bardziej ciekawsze zadania.

Vladimir
Myślę, że to jest ciekawy przykład – o detale będę pytał trochę później, a teraz jedziemy do kolejnego przykładu.

Basia
Kolejny przykład. Wiele jest takich rozwiązań związanych z bazą danych. Rozwiązanie klasyczne często nie daje sobie rady, albo za dużo jest tych danych, albo przychodzą one z różnych źródeł bardzo szybko i trzeba je przerabiać w szybkim tempie. Firmy chcą trzymać te dane, tak jak przychodzą, bo w tej chwilę może nie wykorzystują tego, ale w przyszłości ktoś nad tym się pochyli i będą mogli. W tym momencie chcą zapisać te dane gdzieś. Klasyczne bazy danych nie dają sobie rady.

Miałem kilka wdrożeń kiedy firmy użyły albo data lake, dokumentowych baz danych albo całej mikstury. Przyspieszyło to pracę i wdrożenie, bo nie trzeba było zastanawiać nad tym które dane zachowywać, w jaki sposób je zmienić, w jaki sposób wstawić jakieś transformację albo agregację, bo prostu dane szły do zapisu, a potem dalej można się zastanawiać, że można z nimi zrobić. Takich przykładów jest kilka, powiedziałabym, że jeżeli ktoś pracuje w chmurze nad danymi, to jest to najczęstszy przypadek.

Mieliśmy kilka ciekawych projektów związanych z machine learning. Azure też oferuję kilka rozwiązań w tej kwestii. Takim najciekawszym, moim zdaniem, nietypowym, współpracowaliśmy z browarem gdzie trzeba było przewidzieć (zoptymalizować) cenę butelki piwa w różnych krajach. Jeżeli cena była za wysoka, to klienci mogli nie kupować piwa, natomiast jeżeli była za niska to mniej pieniędzy firma by na tym zarobiła. Trzeba było wyśrodkować cenę ucząc się na danych która firma posiadała, w wyniku czego zoptymalizowaliśmy cenę butelki piwa.

Vladimir
Ciekawie to brzmi. Zapytam się trochę więcej o tak zwanej sztucznej inteligencji. W drugim odcinku wspomniałem, że chodzi o trzy elementy: dane (ich jakość oraz ilość), moc obliczeniowa (dostępność i jej koszt) oraz algorytmy (zaawansowany i zoptymalizowane do potrzeb). Czy z tym zgadzasz się, być może chcesz coś dodać albo wyróżnić któryś z czynników?

Basia
Na pewno to są ważne rzeczy. Do mocy obliczeniowej rozdzieliłabym dwie rzeczy. Jedna to, że mamy teraz chmury i za całkiem małe pieniądze, można użyć chmury żeby spróbować algorytm i oszczędzić sobie czasu, niż uruchamiać go na własnym komputerze czy laptopie. Po prostu wystarczy wynająć coś co jest gdzieś tam w internecie, inny komputer. To jest jedna rzecz. A druga to powiedziałabym hardware, czyli GPU. To jest względnie nowa architektura która pozwala na szybsze obliczenia z macierzami. Właśnie ta nowa architektura i nowe różne które powstają w tym momencie, bo różne firmy pracują nad tym.

Vladimir
Powiedziałaś, że chmura to jest cudzy komputer. Czasem to może być zaskakujące, bo wydaje się, że chmura jest gdzieś i tak fajnie liczy. Nie wiem czy kogoś nie zaskoczyliśmy teraz…

Basia
No tak jest. Że to jest w chmurach, bo nie do końca wiadomo gdzie do jest. Często wiadomo w jakim kraju jest, ale nie dokońca gdzie. Nie wszystkie firmy podają lokalizację. Na dodatek to nie jest tak do końcu, że to jest tylko czyjeś komputer. To są maszyne wirtualne, to jest cały management. Po to, żeby wziąć ten ból głowy który mają ludzie, którzy zajmują się komputerami on-site i żeby zajął się tym ktoś inny.

Właśnie provider który dostarcza tą chmurę. Również wszystkie rzeczy związane z bezpieczeństwem. Dlatego to jest coś więcej… Ale rzeczywiście ogólna zasada jest taka, że tam jest gdzieś obcy komputer do którego my się podłączamy. W uogólnieniu to jest tak proste, ale tak naprawdę to jest bardziej skomplikowane.

Vladimir
Teraz omówiliśmy nasz pierwszy element, czyli infrastruktura czy moc obliczeniowa. I to na co zwróciłaś uwagę, że w tej chwilę nie jest to tak skomplikowane, żeby odpalić komputer porównywalny do superkomputerów jeszcze 10 lat temu, podłączyć do niego laptop i między innymi właśnie Azure daje taką możliwość. Zgadzasz się?

Basia
Tak.

Vladimir
Dobra. Przejdźmy teraz trochę dalej. Porozmawiajmy o algorytmach, ale trochę dalej niż gołe algorytmy. Microsoft bardzo aktywnie pracuje nad platformami które umożliwiają między innymi użycie machine learning w prosty sposób. Są takie platformy jak, Cognitive Services, Bot Framework, Deep Learning, Data and Analytics Platform. Zaczniemy od pierwszej platformy. Co to jest Cognitive Services i kto jest potencjalnym odbiorcą?

Basia
Powiedziałabym, że Cognitive Services to bardzo dobry krok marketingowy i nie tylko Azure (Microsoft), robi to wiele firm, np. Watson z IBM. Różne serwisy który AWS także oferuje, tylko oni nie mają jakiejś konkretnej nazwy. Microsoft wziął wszystkie serwisy i wrzucił je do jednego worka, żeby to zgrabnie nazwać.

Kto jest odbiorcą? Powiedziałabym, że odbiorcą są firmy, które nie chcą zatrudniać zespołów data scientist, ponieważ ktoś już zrobił tę robotę za nich, już zbudował model. Na przykładzie rozpoznawania twarzy. Ktoś zrobił już ten cały algorytm i udostępnił je jako usługę.  Taką usługę można wynająć i wstawić do własnego systemu. Od strony technicznej to jest wywołanie REST i jak ktoś jest programistą to może to po prostu wywołać i wstawić do systemu. To jest bardzo wygodny sposób na to, żeby wzbogacić Twój system w machine learning, w artificial intelligence (bo to tak naprawdę jest to samo, są tylko różne odcienie tego).

Przestrzegam przed czymś. Tak jak ja bardzo lubię pojęcie democratizing of AI, to jest drogą którą wiele firm idzie. W szczególności Microsoft. Chodzi tutaj o demokratyzację  sztucznej inteligencji, żeby to było dostępne jak najbardziej dla wszystkich. I już jest. W tym momencie, tak naprawdę wiele firm dają podobne usługi i można nawet za darmo sprawdzić, pobawić się, pouczyć się. Natomiast widziałam takie sytuacje, kiedy ludzie się bawią, wstawiają do systemu, wywołują usługę i ona coś zwraca.

Pytanie jest czy robią to świadomie? Czy mając taki blackbox,  potrafią wnieść wartość do systemu? Niewiadoma czy osoba która używa to niewłaściwie potrafi zinterpretować prawidłowo wyniki. Powiedziałabym tak: używać blackbox, ale wiedzieć co one robią, czego oczekują, jakie informacje dostaniemy i jak możemy ocenić czy są właściwe. Jak możemy stwierdzić czy to się nadaje, czy nie nadaje się do naszego systemu?

Vladimir
Poruszasz bardzo ciekawe tematy. Bo z jednej strony bardzo fajne jest użyć uczenia maszynowego jako gotowe serwisy, a z drugiej strony czy osoba która będzie tego używać, czy potrafi to użyć, więc może troszkę rozwińmy ten temat. Przed tym wywiadem sprawdziłem, już jest dostępne 29 usług. Na przykład computer vision, umożliwia rozpoznawać jakie obiekty są na zdjęciu czy emotion API które wykrywa wszystkie twarze na zdjęciu i pokazuje jakie mają emocje. Jest możliwość poprzez przeglądarkę wrzucić dowolne zdjęcie i sprawdzić wynik po kilku sekundach.

Warto wspomnieć o projekcie wspólnie zrobionym przez Uber i Microsoft dla identyfikacji kierowców bazując na ich zdjęciu. Kierowca wsiada do samochodu, odpala Uber aplikację, która prosi go zrobić selfie i w ten identyfikuje go.

Albo okulary dla niewidomych które umożliwiają zobaczyć co jest dookoła

Można wymyślić jeszcze sporo podobnych zastosowań w biznesie. Proszę wytłumacz, co się dzieje pod spodem od momentu kiedy ładuję zdjęcia i dostaje wynik?

Basia
Patrząc na takie proste API do rozpoznawania twarzy. Jeżeli w Twoim systemie jest potrzeba, żeby rozpoznawać twarze na zdjęciu. To właściwie tutaj nie ma miejsca na pomyłki, wrzucasz zdjęcia i dostajesz “kwadraty” które mówią tutaj gdzie są twarze. To jest dość proste i konkretnie w tym przypadku to nie jest takie ważne co tam się dzieje pod spodem.

Natomiast są takie usługi, jedna z nich to Recommendation API ona jest jedną  z Cognitive Services. Jest to trochę tak reklamowane, że bierzesz ten serwis wrzucasz do swojego systemu i od jutra czy za godzinę Twój system będzie rekomendował odpowiednie produkty dla Twoich klientów. No to tak nie będzie działać… Najpierw trzeba wrzucić Twoje dane, wytrenować model itd. Co się dzieje pod spodem to zależy o jakiej usługi mówimy. Tak w dużym uproszczeniu, machine learning polega na tym – że bierzemy dane historyczne na których algorytm się uczy, wykrywa pewne reguły czy zasady.

Można pomyśleć, że to jest zbiór reguł który określa później jak te reguły powinny wyglądać. One nie są interpretowalne dla ludzi, ale tam jest jakieś matematyczne równanie i rozwiązywania. Musimy mieć te historyczne dane, na tym polega to całe uczenie się. Po pewnym czasie te algorytmy się uczą i model staje się wytrenowany i możemy go upublicznić. To jest właśnie to co Cognitive Services oferuje, czyli już ten wytrenowany model, on wie co robić, wie jak klasyfikować, jak znajdować i obliczać nowe przykłady. Tylko stawiamy go z tyłu jakieś nowej usługi. Mamy wytrenowany model i możemy go teraz wynajmować Tobie klienci. To tak w dużym uproszczeniu wygląda.

Vladimir
Przede wszystkim należy zwrócić uwagę, że nie ma magii. Nie da się tylko kupić usługi i spodziewać się, że będzie działał system rekomendacyjny. Musimy najpierw dostarczyć dane, te dane powinny być odpowiednio przygotowane, to nie mogą być śmieciowe dane. Już wtedy mając dobre dane, możemy liczyć, że algorytm, w tym przypadku system rekomendacyjny pomoże nam rozwiązać problem. Czy dobrze zrozumiałem?

Basia
Tak, bardzo dobrze. Wracając na przykład do usługi która rozpoznaje konkretną osobę na zdjęciu, ta usługa z której korzysta Uber. Ona też nie może mieć modelu który wytrenował się wcześniej, nie można go po prostu wstawić do systemu. Należy mieć zdjęcia tych kierowców z Ubera. Trzeba przygotować nasz system do tego. Jest kilka takich przykładów, gdzie rzeczywiście, bez żadnego ryzyka możemy użyć tych usług, ale są również bardziej skomplikowane które wymagają większej integracji na tym lub innym poziomie.

Vladimir
Dobrze, że zwróciłaś uwagę na to. Bo często chce się tej magii, nic nie robiąc dostać gotowe rozwiązanie. Dlatego trzeba być świadomym, że trzeba będzie włożyć pewien wysiłek nawet wtedy kiedy mamy moc obliczeniową (np. chmura), mamy algorytmy, to jednak te dane trzeba odpowiednio przygotować.

Basia
Myślę, że  to jest wielka rola dużych firm, które chcą, żeby klienci używali ich usług… Jasne, że chcą, bo z tego zarabiają pieniądze. Ale użytkownice nie chcą wkładać wysiłku, to jest też normalne. Tutaj trzeba znaleźć balans, żeby ułatwić jak najbardziej, ale tego nie można robić bezmyślnie. Bo to jednak jest skomplikowana matematyka pod spodem. Pewne rzeczy można wstawić do blackbox’a, a inne rzeczy trzeba przemyśleć, zintegrować, no i tak jak już mówiliśmy włożyć trochę wysiłku.

Vladimir
Ciekawym przypadkiem i to może dość popularnym w użyciu może być analiza tekstu, włączając sentiment analysis taka zwana analiza nastrojów. Tego typu rozwiązania umożliwiają śledzenie opinii, rozumienia ogólnej tak zwanej temperatury nastrojów, zwłaszcza kiedy było jakieś wydarzenie (dobre czy złe, np. kiedy usługa przestała działać). Wiem, że jest wspierany angielski oraz hiszpański, jakie jeszcze języki są wspierane? Czy wspiera język polski?

Basia
Sprawdziłam to specjalnie, jeżeli chodzi o analizę i sentiment analysis język polski jest wspierany, ale to jeszcze jest w preview.  Portugalski, francuski, hiszpański, angielski to są języki które są wspierany już całkowicie. Natomiast w preview to są języki: duński, niemiecki, fiński, włoski, holenderski, norweski, polski, rosyjski, szwedzki i turecki.

Vladimir
W takim razie, już za niedługo możemy się spodziewać, że język polski będzie dopracowany i będziemy mogli użyć go do produkcji. Prawda?

Basia
Myślę, że to będzie jeszcze wielka praca… każdy język ma swojej ogólne ciekawy przypadki a angielski jest najłatwiejszy do analizy tekstów.

Vladimir
Dokładnie. Są inne biblioteki które rozwiązują tego typu problemy, natomiast z językiem polskim to zawsze było skomplikowane. Ostatnio byłem na konferencji i wiem, że są firmy które pracują nad tym 10 czy nawet już 15 lat, za bardzo o tym nie mówiąc, pisząc swoje własne rozwiązania    i podobnie im to jakoś działa. Ale ewidentnie to nie jest trywialny problem. To wymaga dużego wysiłku.

Warto wyjaśnić jeszcze jedną rzecz. Jeżeli mówimy o usługach, to one pod spodem mają tak zwany pre-trained model, po polsku pewnie to będzie wytrenowany model. Jak możesz wytłumaczyć co to jest pre-trained model i na jakich danych te modele są trenowane?

Basia
Po pierwsze nie wszystkie algorytmy wspierają taki inkrementacyjny update model. Mówiliśmy już o tym jak działa machine learning. Mamy historyczne dane, algorytm po nich chodzi – sprawdza, wypracowuje swoje współczynniki i na końcu jest wytrenowany.

W pewnym momencie algorytm mówi, albo my mówimy: “Dość, już starczy uczenia się”. Już powinno być dobrze bo sprawdzamy jakieś metryki. Wiele algorytmów nie jest w stanie inkrementacyjnie dodać, ulepszyć się. Ale są takie które to potrafią. W zależności od tego co siedzi pod spodem, możemy wytrenować model, a potem tylko dodawać nowe dane i on będzie się uczył iteracyjnie, zmieniając tylko troszeczkę te swoje współczynniki.

Vladimir
Czy możesz podać przykład o jaki model chodzi teraz? Który model można właśnie adaptować używając własnych danych?

Basia
Wydaje się mi, że Luis działa w ten sposób. To jest model który stoi za analizą tekstu w Bot Framework. Ponieważ odbiera różne sygnały od użytkowników, to jest ta cała konwersacja, to inkrementacyjnie się ulepsza. Tam jest używany deep learning z tyłu, tu możemy pomyśleć o takim algorytmie.  Duża ilość algorytmów klasycznych, oni muszą wziąć dane i nauczyć się od początku. To jest bardzo interesujące i bardzo często ludzie o to pytają, natomiast jeśli jesteśmy poza deep-learning to właściwie takich algorytmów jest bardzo niewiele.

Vladimir
Wspomniałaś o Luisie, więc przejdźmy w tym kierunku. Najpierw porozmawiamy, co to jest Bot Framework. Pozwól, że wspomnę jedną rzecz, miałaś prezentację na konferencji NewCrafts, gdzie między innymi zaznaczyłaś, zacytuję Ciebie: “Celem tej prezentacji jest pomóc uczestnikom przejść od poziomu, gdzie nigdy nie tworzyli chatbota, do stworzenia tego, który potrafi prowadzić rozmowę”. Brzmi to ciekawie i chciałbym rozwinąć ten temat. Ale najpierw, może warto zdefiniować czym jest chatbot?

Basia
To był mój zamysł, żeby trochę odrzeć z magii te chatboty. Chatbot to jest rozmowa gdzie z jednej strony jest komputer (maszyna). I to jest wszystko. Tam nie musi być żadnej sztucznej inteligencji, oczywiście wtedy to nie jest tak interesujące. Też dawałem tego talk’a z myślą o tym jak sztuczną inteligencję zaaplikować w tym przypadku. Natomiast same pojęcia chatbot to jest coś mechanicznego z jednej strony konwersacji. Jeżeli na przykład bardzo wyspecjalizujemy takiego chatbota on będzie mówił Ci jaka jest pogoda. Możemy sobie wyobrazić bardzo prymitywną rozmowę która będzie działała. Po prostu piszesz nazwę miasta, np. Londyn, Kraków czy Warszawa, po przecinku datę i ten chatbot odpowiada jaka jest pogoda. Tutaj jest mało magii bo to mógł być zwykły select do bazy danych w której trzymamy dane o pogodzie.

Vladimir
Zacząłeś mówić o pogodzie i chatbot’ach. To mi od razu przypomniał się chatbot Poncho, który już teraz jest dość popularny. Tak jeszcze podsumowując. Chatbot to jest, w dużym uproszczeniu to jest zwykły program który w środku zawiera jakieś reguły. Oczywiście, jeżeli chcemy bardzo skomplikowany chatbot – to musi być również bardziej złożony w środku. Ale w gruncie rzeczy to jest zwykły program który próbuje z nami komunikować się. Zgadza się?

Basia
Zgadza się.

Vladimir
To idziemy w szczegóły jeżeli chodzi o to oferuję Microsoft. Co to jest i co oferuje Bot Framework dla biznesu?

Basia
Jeżeli myślimy o takim prostym chatbocie.  Bot Framework ma taką koncepcję, że baterie są w komplecie, ale można je usunąć. Jeżeli chcemy zbudować bardzo prosty chatbot pogodowy, to możemy zrobić to bardzo prosto. Ponieważ mamy SDK w którym możemy zbudować system odbierający wiadomości. Mamy connector, który może połączyć się z różnymi kanałami wiadomości, np. ze Skype, nawet z sms’ami, mailem, można również wstawić na stronę. Jest trzeci element który dotyczy hostowania, tego chatbota. Bo to jest po prostu usługa.

Znowu mamy RESTowy API. Jak zbudujemy chatbota, możemy go upublicznić. Ja na przykład, na potrzeby tego talka, który wspomniałeś, mój chatbot jest na skype, można go znaleźć i sobie porozmawiać. W prosty sposób jest hostowany na Azure. Jeżeli mówimy o tej ciekawej części, wrzucenie sztucznej inteligencji, to na etape kiedy wysyłamy wiadomości od użytkownika to możemy zaaplikować wszystko co nam się chce. To może być zwykły select do bazy danych, ale również zaaplikowana sztuczna inteligencja. To może być Luis, który jest częścią Cognitive Services który Microsoft oferuje, ale to może być jakikolwiek inny algorytm, jakikolwiek inny system.

Vladimir
Właśnie, wspomniałeś już po raz drugi o Luis, więc warto przejść do szczegółów. Kim jest Luis i co tak naprawdę robi? Dlaczego jest przydatny dla biznesu?

Basia
Luis to jedna z usług Cognitive Services która właśnie zajmuje się analizą tekstu, nie taką o której mówiliśmy wcześniej. Nie szuka sentymentów, nie sprawdza języka itd, jest przydatny przede wszystkim dla rozmowy. Bo co nam jest przydatne w rozmowie, jeżeli chcemy to inteligentnie poprowadzić? Chcemy się dowiedzieć o co użytkownik pyta oraz nie chcemy zmuszać go do jakiegoś specjalnego formatu jego odpowiedzi, czyli chcemy, żeby ta rozmowa przebiegała jak najbardziej naturalnie. Powiedzmy, niech będzie przykład z pogodą, ale niech będzie to bardziej naturalna rozmowa. Pozwólmy użytkownikowi powiedzieć: “Jak będzie jutro pogoda w Krakowie?”.

Zadaniem Luisa, tego modelu, który trzeba będzie wytrenować jest to, by po pierwsze dowiedzieć się, że użytkownik pyta się o pogodę – to jest nazywane intent. Nie wiem czy po polsku “intencja” jest dobrym słowem… Chcemy się dowiedzieć, czego chcę użytkownik – kontekst tego pytania. Żeby wyłuskać te dane – Kraków i jutro. Znów ja bym ostrzegła, że to nie jest tak, że się bierze Luisa i to zacznie magiczne działać dla wszystkiego. Trzeba taki model zbudować, wytrenować i wtedy dopiero użyć.  No bo skąd taka usługa miała wiedzieć, że nasza aplikacja jest o pogodzie?

Może być o czymkolwiek innym, więc my musimy podać ilość przykładów na których model będzie się uczył. Musimy przede wszystkim powiedzieć modelowi wyłuskaj dla mnie te, a nie inne informacjie. Wyłuskać daty czy imiona, raczej jest dość łatwo. Jeżeli chcemy coś specyficznego – to trzeba to zbudować.

Vladimir
Luis umożliwia rozumieć mowę użytkownika w bardziej przyjazny sposób, nie tylko “Jak jest pogoda w Krakowie?”, tylko może zapytać na różne sposoby: “Czy jutro będzie padało?” czy “Jak jutro będzie temperatura?”. Tak jak już podkreślałaś wcześniej, bardzo ważne jest najpierw pokazać Luisowi w jaki sposób on to może rozumieć, czyli przykładowe konwersacjie.

Teraz jeszcze dopytam o języki. Czy Luis również wspiera polski?

Basia
Nie, nie ma… sprawdziłem to też. Jeśli chodzi o języki jest ich dwanaście wspieranych: American English, Canadian French, Italian, Dutch, German, Spanish, Portuguese, Japanese, Chinese. To są języki które wspieramy, ale nie wszystkie mają rozbudowany model jeżeli chodzi o standardową funkcjonalność.

Vladimir
Jeżeli chcesz użyć teraz Luis w języku polskim, to może być dość trudne. Natomiast jest pewne obejście tego i jedna firma tak zrobiła. W piątym odcinku, Tomek Wesołowski opowiadał o Edwardzie (inteligentny asystent sprzedaży). Oni to robią tak, najpierw język polski tłumaczą na angielski, a później już analizują tekst. Tutaj też można było spróbować pójść tym tropem.

Basia
To jest bardzo dobry pomysł. Tłumaczenie z polskiego istnieje i takie rozwiązania też widziałam.

Vladimir
To jest dość sprytne. Trzeba nadal mieć świadomość, że z jednej strony to może zacząć działać, a z drugiej strony w trakcie tłumaczenia potrafimy coś zgubić. Dlatego to bardzo zależy od kontekstu. Trzeba było sprawdzić, na ile taki krok pośredni faktycznie pomaga rozwiązać problem. W przypadku jeżeli konwersja jest dość prosta – to może zadziałać, dla bardziej zaawansowanych przypadków (gdzie są używane różne skomplikowane wyrazy) to może być wyzwanie.

Jeszcze dopytam się o kilka rzeczy logistyczne. Pytanie jest takie z punktu widzenia infrastruktury, taki chatbot jest w stanie odbierać 10 wiadomości dziennie, czy 10 mln wiadomości dziennie? Czy gdzieś pomiędzy? Czy da się skalować to efektywnie?

Basia
Tak jak mówiłam, to jest usługa REST’owa, więc w zależności od tego gdzie i jak będzie hostowane. To już jest rozwiązany problem. To niczym nie różni się od hostowania strony. Nawet powiedziałabym, że to jest o wiele łatwiejsze, bo to tylko tekstowe wiadomości. Nie musimy renderować cały stron, więc skalowanie to jest problem rozwiązany już. Tak najbardziej, może być tysiące czy miliony wiadomości.

Vladimir
To brzmi bardzo ciekawe, zwłaszcza jak agencja marketingowa lub inne firmy które potrzebują uruchomić chatbota w jakiś konkretny dzień kiedy coś tam się dzieje, albo wtedy kiedy awaria się wydarzyła to wtedy trzeba wyskalować od 10 tys. wiadomości do 10 mln. wiadomości. Potem jak tego już nie potrzebują wrócić. Z tego co zrozumiałem jest to wyklikowalne i można zrobić w kilka minut, a może nawet sekund… Zgadzasz się?

Basia
Tak. Jest również wiele rozwiązań które potrafią dynamicznie się dostosować do tego ile mamy użytkowników, którzy pukają do naszych drzwi.

Vladimir
Ok. Nawet nie musimy klikać, system sam się dopasuje do naszych potrzeb. Jeszcze, żeby faktycznie zrozumieć to o czym mówimy przeróbmy przykład. Na początku już wspomniałeś o podobnym. Przykład jest taki. Załóżmy, że mam biznes który dostarcza pizzę. Chcę zrobić możliwość zamówienia pizzy przez chat. Z możliwością wyboru pizzy, rodzaju ciasta, dodatków. Jak wygląda taka konfiguracja i ile czasu to może zająć implementacja?

Basia
To wszystko zależy jaki fault tolerance będziemy mieli, jakiej jakości chcemy mieć naszego chatbota. Pierwsza decyzja która należy podjąć, to gdzie wstawiamy chatbota. Czy to będzie Skype, czy to będzie na naszej stronie. Jeżeli to będzie jeden ze standardowych kanałów, to właściwie jest jedno kliknięcie, jeżeli chodzi o deployment. Na przykład SkyScanner ma takiego chatbot który zbudował razem z Microsoft.

To jest zwykły bot, którego można dodać sobie do znajomych na skype. Ta część, jeżeli chodzi o deployment ona jest raczej dość prosta, no chyba że nie mamy standardowego kanału, to wtedy trzeba go dopisać.

Vladimir
Załóżmy, mamy standardowy kanał. To może być Skype czy na stronie. Potrzebuje w tym przypadku wejść na stronę Microsoft, stworzyć nowego bota, wybrać kanał. Pytanie jest w jaki sposób, mogę mu powiedzieć jakie pizze mam i jak mogę go nauczyć?

Basia
To jest inna część, to jest właśnie ta część która będzie rozmawiać. To jest najbardziej czasochłonna część. Musimy wymyślić scenariusz, jak chcemy żeby ta rozmowa przebiegała.  Myślę, że to jest najbardziej czasochłonna część. Cała reszta jest drugorzędna. Wyobraź sobie, że klient przychodzi do chatbota, wita się, mówi “Dzień dobry, chciałbym zamówić pizzę”.

Teraz musimy się zastanowić, co ten chatbot będzie odpowiadał. Czy on będzie po prostu mówił “Tak. Słucham. Jaką pizzę?”. Co jeżeli użytkownik w pewnym momencie zmieni zdanie, np. będzie chciał dodać jeszcze pizzę bo zapomniał? Czy my będziemy chcieli wrzucić jeszcze jakieś rekomendacje do rozmowy? Patrząc co ten użytkownik w przeszłości zamawiał. Jeżeli chcemy to zrobić bardzo prosto, to możemy zrobić kroki tej konwersacji: główne dania, dodatki i napoje.

Ze zwykłymi pętlami “if” skacząc do specyficznych momentów tej konwersacji. Jeżeli chcemy, żeby to było takie bardziej naturalne to wtedy ten scenariusz, musi być bardziej skomplikowany. Żeby to była jak najbardziej naturalna konwersacja. Cała reszta to jest tak naprawdę zakodowanie kilku “if’ów”. Kodowania w tej kwestii naprawdę nie ma dużo. Tutaj też będzie duża robota, ale ona z chatbotem nie jest związana – zrealizowania zamówienia. Jak już zbierzemy te wszystkie informacje od użytkownika, to musimy napisać coś co do naszego systemu to zamówienia wstawi. Kogoś powiadomi, że ma zrobić tą pizzę i dostarczyć to wszystko.

Vladimir
Podsumowując. Możemy podzielić to na trzy części.

Pierwsza część to jest interfejs, kanały w jaki sposób komunikujemy się z chatbotem. To może być Skype, Facebook Messenger albo strona internetowa. W tym przypadku to robi się bardzo prosto i tutaj nie ma co się martwić.

Druga część, to należy zebrać wszystkie, albo przynajmniej za ostatni miesiąc czy rok, przykładowe dyskusje, w jaki sposób ludzie zamawiają pizzę. I zrozumieć jakie są możliwe kroki. Jeżeli człowiek mówi o tym, to co może być dalej. Na przykład czy następne pytanie będzie o dodatki czy rozmiar pizzy. Przygotować takie drzewa, gdzie można  po nim podróżować podczas konwersacji.

Trzecia część, to jest tak zwana egzekucja. Kiedy już wszystko wiemy, trzeba faktycznie to zrobić. W jakiś sposób zintegrować się z naszym systemem wewnętrznym albo wysłać maila komuś.

Dobrze, wydaje się, że to jest w miarę zrozumiałe na wysokim poziomie. I ta druga część, jest największym wyzwaniem. Drogi czytelniku jeżeli masz już przygotowany scenariusz, to prawdopodobnie przygotowanie chatbota nie będzie dla Ciebie dużym wyzwaniem.

Mam do Ciebie jeszcze takie pytanie. Ten podcast słuchają ludzie, którzy mają wpływ na to, czy użyć uczenia maszynowego czy nie w firmie. Tak jak zawsze to bywa, wszystko co jest nieznane wzbudza wątpliwości (a przynajmniej powinno, bo inaczej wiele błędnych decyzji można podjąć). Pytanie do Ciebie, co doradzisz osobom czy firmom, które wcześniej nigdy nie używali uczenia maszynowego ale mają zamiar to zrobić? Dlaczego warto i na co powinny uważać?

Basia
Po pierwsze, powiedziałabym, żeby uważać na wszelkiego rodzaju konsultantów od machine learning. I to nie oznacza, że konsultanci od machine learning są szarlatanami. Wiem, że są bardzo podekscytowani tym co robią i ta ekscytacja potrafi zamglić wartość biznesową. Wrócę do tego, co mówiłam na początku. Dla firmy najważniejsze jest to, żeby zarabiać pieniądze. Mówię, to jak najbardziej uczciwie, bo właśnie to firmy robią. Jeżeli celem firmy jest nauka i rozwój pracowników, wtedy prostu należy w to wejść, spróbować nowych rzeczy.

Natomiast, jeżeli myślimy pod kątem, co tam nam może dać, czyli tej firmie (w sensie pieniędzy). Należy bardzo ostrożnie do tego podejść. Ponieważ uczenie maszynowe to jest proces który bierze nasze dane historyczne i będzie potrafiło przewidzieć coś w przyszłości dla nas. Należy popracować nad zadaniem tego pytania. Co my chcemy zmienić w naszej firmie. Na przykład chcemy się skupić na sprzedaży i chcemy je ulepszyć. Co to oznacza ulepszyć? Mamy jakieś podejrzenie, że zmiana tego – zmieni to. Skupić się na tym pytaniu biznesowym. Co my chcemy przewidzieć w przyszłości. Wtedy, jeżeli mamy takie pytanie, albo pracujemy razem z Data Scientist nad sformułowaniem tego pytania. To myślę, że machine learning tutaj ma bardzo dużo do zaoferowania.

Jak to już będzie stworzone, jak przebiegnie ta cała egzekucja całego tego programu czy projekt, to już jest sprawa drugorzędna. Tutaj naprawdę podkreślam po raz kolejny, że machine learning bazuje się na danych historycznych, a one mogą nam powiedzieć na temat trendów oraz przyszłości. Trzeba się zastanowić, co to może być. Przeanalizować te dane. Czasami jak się analizuje te dane, to pytania stają się bardzo wyraźne albo nagle nam wpada do głowy następne pytanie. Myślę, że należy zatrudnić kogoś, kto na danych się zna, ale skupiać się na wartości biznesowej. Dobrze by było, żeby osoba od danych pracowała razem z osobą która zna się na tej konkretnej domenie biznesowej. Wie z czym to się je. Jak dwie osoby będą pracować razem to wtedy “the sky is the limit”.

Vladimir
Najpierw zrozumieć problem który chcemy rozwiązać, a potem znaleźć narzędzia. Uczenie maszynowe jest potężnym narzędziem, ale to też nie jest magia. Jeżeli chcemy po prostu użyć uczenia maszynowe, nie wiedząc co chcemy ulepszyć, to raczej nic z tego nie wyjdzie.

Basia
Coś wyjdzie. Użyjesz którąś z usług albo biblioteki jakieś cyferki wyjdą, tylko pytanie jest, czy to będzie miała jakikolwiek sens :)?

Vladimir
Dokładnie. Może wyjść coś, czego kompletnie się nie spodziewamy. Bo zawsze się spodziewamy ulepszyć nasz biznes, a nie tylko użyć modnej technologii, która nic nam nie daje z punktu widzenia korzyści dla biznesu.

Kolejne pytanie, jaką widzisz przyszłość AI lub sztucznej inteligencji i jak nasz świat może wyglądać za 20 a może nawet i 10 lat?

Basia
Masz na myśli, to co nam te różne filmy sprzedają, że maszyny będą nami władać? To jest możliwe, ale nie powiedziałabym, że w przeciągu 10 czy 20 lat. Co ja widzę w tym momencie, jaki jest trend. Wiele rzeczy będzie zautomatyzowane, ale ja myślę o tym w dobry sposób. Mimo że automatyzacja, może powodować krótkoterminowe frustracje. Na przykład jak zautomatyzujemy linię produkcyjną, to wtedy ludzie stracą pracę. Jednak to zawsze jest dobre dla technologii i ogólnie dla cywilizacji.

Takie mam wrażenie. Ponieważ ja w to wierzę, jeżeli przestaniemy jako ludzie wykonywać powtarzalne rzeczy, które mogą być zautomatyzowane, to możemy się skupić na rzeczach fajnych które sprawiają nam przyjemność, które dotyczą kreatywności. Właściwie na tym, na czym polega ludzkość. Co mogą ludzi dodać od siebie, nie pracując jako maszyny.

Vladimir
Bardzo miło mi jest to słyszeć. Nie umawialiśmy w żaden sposób z Basią, żeby ona powiedziała dokładnie to, o czym mówiłem kilka odcinków temu. Bardzo mnie cieszy, że Basia ma podobną opinie. Też trzymam kciuki, żeby faktycznie tak się stało. Po pierwsze uczenie maszynowe albo tak zwana sztuczna inteligencja pomogła nam wyeliminować tę pracę rutynową. A po drugie, żebyśmy my jako ludzkość skupili się na bardziej kreatywnych, bardziej otwartych pytaniach, wyzwaniach, niż tylko chodzenie do pracy od 8 do 5. Bardzo przyjemnie mi jest to słyszeć.

Na swoim blogu wspominałaś, że chcesz stworzyć cykl artykułów dla osób które mają doświadczenie w oprogramowaniu, a chcą zmienić kierunek w stronę tak zwanego data science. Również wspominałaś o warsztatach. Podziel się swoimi planami na przyszłość?

Basia
Jestem w trakcie pisania, ale inne obowiązki jak konferencje i inne nie pozwoliły mi robić to tak szybko jak się chce. Natomiast tak, myślę, że za niedługo otworzę swoją własną firmę konsultacyjną. Chciałbym się skupić na edukacji. Żeby jakoś okiełznać to morze lub nawet ocean różnego rodzaju kursów, informacji dotyczących machine learning i AI. Ponieważ, przez to przechodziłam i chciałbym, żeby to istniało na początku mojej drogi.

Zacznę od podstaw, bo uważam, że wbrew temu że wiele stron w internecie mówi. Chcę zacząć od podstaw, jak użyć różnych bibliotek, różnych algorytmów do tego, żeby rozpoznać i zastosować je do takich typowych zbiorów danych. Przejdę również do takich zbiorów danych które są bardziej interesujące, które zazwyczaj są bardziej skomplikowane i wymagają większej wiedzy.

Nie jestem zwolennikiem tego, żeby wyrzucić kogoś na głęboką wodę, żeby wtedy szybciej się nauczył. Wiem, że człowiek może naprawdę zatonąć jeśli nie umie pływać. Można się zniechęcić jeżeli projekt jest za trudny. Chciałbym budować te umiejętności stopniowo. Zaczynając od prostych ale konkretnych rzeczy. Chciałbym, żeby to wszystko było oparte na kodzie, a nie opowiadaniu historii. Będzie to trochę mieszanka, zarówno R jak i Python.  Teraz na przykład tensorflow jest bardzo interesującą biblioteką i używaną w języku Python.

Jeżeli chodzi o warsztaty. Mam gotowy warsztat “Machine Learning in R”, również ma warsztat który tłumaczy czym jest machine learning. Ten warsztat bazuje się na Azure Machine Learning. To jest jedna z technologii w chmurze Azure.

Mam też warsztat, który uczy jak korzystać z Bot Framework. I tam będę uczyć jak zbudować chatbot. Nie wiem, czy oglądałeś IT Crowd tam jest taka “Answering machine”. Jak ktokolwiek dzwoni do supportu, to ta maszyna ciąglę odpowiada: “Have you try to turn on and off again”. Coś takie zasymulować, taki dzień lub dwa. Żeby od początku nie mając nic, co taką konwersacje poprawdzi.  Tam będą elementy Bot Framework i Luis.

Takie trzy tematy mam w tym momencie.

Vladimir
To brzmi bardzo ambitnie. Trzymam kciuki, żeby Ci się udało. Oglądałem przynajmniej dwie prezentacje. Jedna z nich była o języku R i według mnie bardzo fajnie Ci to idzie. Jeszcze raz, trzymam kciuki i mam nadzieje, że wszystko Ci się uda.

Basia
Dziękuję.

Vladimir
Ostatnie pytanie na dzisiaj. Jeżeli ktoś będzie chciał z Tobą skontaktować się, to jak to może zrobić?

Basia
To jest bardzo proste –  barbara <małpka> fusinska.com. Jestem na twiterze. Mam oprócz tego gmail: barbara.fusinska <małpka> gmail.com. Jestem jedyną osobą na świecie który ma takie imię i nazwisko. Przynajmniej w internecie. Jeżeli ktoś mnie wygugluje, to jestem na pewno ja.

Vladimir
Dziękuję Ci bardzo za Twój czas.


Co myślisz o tym co powiedziała Basia? Basia zwracała szczególną uwagę, na to, że nawet wtedy, gdy jest ktoś kto rozwiązuje nasze problemy związane z uczeniem maszynowym, takie jak moc obliczeniowa, skalowalność, wytrenowane modele to nadal zdrowy rozsądek trzeba mieć, żeby potrafić to użyć. Należy uświadomić sobie, że dane mają naprawdę duży wpływ na rozwiązanie.

Dla mnie było ta rozmowa ciekawa, bo myślę, że podobne platformy to jest jeden z kierunków który w przyszłości pomoże używać uczenia maszynowego na większych obrotach. Są inne platformy i mam plan również podzielić się z Tobą wiedzą na ten temat.

Podziękowania

Zacznę od komentarzy na itunes, bo są tam dwa z pięcioma gwiazdkami – co mnie bardzo cieszy. Jeden jest od osoby z Białorusi z Brześcia. Dziękuję Ci brest_by. A drugi jest od Donald Trąba który napisał “Warto! Ciekawy podcast”. Dzięki wielkie, bardzo mi miło to słyszeć i czerpać z tego energię, żeby kontynuować to co robię. Podziel się swoją opinią, dla Ciebie to jest dosłownie minuta, a zrobisz dwie dobre rzeczy: osoby które będą potrzebować tego podcastu, będą mogły to zrobić łatwiej, bo tak działa wyszukiwarka w itunes. A po drugie, naładujesz moją baterię. Z góry dziękuję.

Dziękuję również za maile które dostaję i gdzie staram się pomóc. Zacytuję jeden z maili, a właściwe jego końcówkę:  Vladimir robisz świetną robotę. Tak trzymać i proszę kontynuuj nagrywać swój podcast. Świat naprawdę potrzebuje takich ludzi jak ty. Bardzo dziękuję Ci Krzysiek, za takie słowa.

Dzięki również za retweety i udostępniania na facebooku.

Jeszcze jedna rzecz, która może być ciekawa dla Ciebie. W zeszłym tygodniu został opublikowany odcinek: doradca finansowy ze sztuczną inteligencją. Gorąco polecam do wysłuchania. Również przy okazji pozdrawiam i dziękuję Marcinowi Iwuciowi. Bardzo przyjemnie się z nim rozmawiało i jego sposób myślenia (również już w prywatnych rozmowach) pokazuje, że myślę o tym jak pomóc ludziom, a nie być konsumentom. Bardzo bliskie jest mi takie podejście… i dlatego tak inspirujące.

Kilka dobrych wieści na koniec.

W sobotę, 17 czerwca, odbędzie się konferencja Polcaster. To już jest trzecia edycja i bardzo polecam odwiedzić ją osobom, które zamierzają uruchomić swój własny podcast albo już go mają. Będę miał również wykład – opowiem o wyzwaniach które miałem kiedy zaczynałem tworzyć Biznes Myśli i jak je pokonałem. Jeżeli masz czas, chcesz się spotkać ze mną to gorąco zapraszam. Wstęp jest bezpłatny, wymagana jest jedynie rejestracja. Do zobaczenia.

PolCaster 2017 | Promujemy polski podcasting!
PolCaster 2017 | Promujemy polski podcasting!

Już wspomniałem wcześniej o mojej innej inicjatywie Data Workshop. To są warsztaty gdzie pokazuję jak zacząć używać uczenie maszynowe w praktyce, bez żadnych studiów doktoranckich. Celem jest pokazać jak rozwiązać realny problem po linii najmniejszego oporu. Uczenie maszynowe jest bardzo złożonym tematem i zrozumieć wszystkiego po prostu się nie da, ale zrozumieć jak to używać – jak najbardziej. Dlaczego o tym mówię? Przy współpracę z organizatorami konferencji Chat Bot Summit udało się dostać zniżkę na konferencję która odbędzie się w Berlinie 26 czerwca. Zniżka to 20%, wystarczy wpisać promokod „dataworkshop20” bez żadnych spacji wszystko z małej litery. Proszę daj znać jeżeli zdecydujesz się tam wybrać.

To tyle na dzisiaj. Dziękuję Ci bardzo za Twój czas i energię.

Książka polecana przez gościa

Od 2013 roku zacząłem pracować z uczeniem maszynowym (od strony praktycznej). W 2015 założyłem inicjatywę DataWorkshop. Pomagać ludziom zaczać stosować uczenie maszynow w praktyce. W 2017 zacząłem nagrywać podcast BiznesMyśli. Jestem perfekcjonistą w sercu i pragmatykiem z nawyku. Lubię podróżować.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *