Łukasz Siatka – ex Googler, Facebooker
Z tego odcinka dowiesz się:
- czym zajmuje się Łukasz Siatka,
- co to jest to TPU i jakie problemy rozwiązuje,
- czy TPU ma przewagę nad GPU,
- jak w praktyce wykorzystywane jest TPU,
- co zrobić, żeby wejść w świat deep learningu,
- kiedy opłaca się kupować własną kartę, a kiedy lepiej przejść na chmurę,
- na czym polega rola sound engineera,
- jakie są największe wyzwania w uczeniu maszynowym,
- które obszary w uczeniu maszynowym rozwijają się najszybciej,
- jak wdrożyć uczenie maszynowe w swoim biznesie,
- czym zajmuje się organizacja Machine Learning Study Group,
- jakie są stanowiska w Facebooku, czy podobnej wielkości firmach, związane z uczeniem maszynowym i analizą, jakich kompetencji wymagają,
- od czego zacząć naukę uczenia maszynowego i gdzie się uczyć.
Google już rok temu zapowiedział strategię AI First. Zabrał się za to na poważnie, ilość projektów, który w ten czy inny sposób wykorzystują uczenie maszynowe rośnie w postępie wykładniczym. Nie tylko Google, ale również inne firmy działają podobnie. Na ostatniej konferencji Google IO CEO Google Sundar Pichai zaprezentował tzw. Google Duplex. Bardzo polecam obejrzenie krótkiego wideo.
https://www.youtube.com/watch?v=bd1mEm2Fy08
Idea jest prosta: mamy wirtualnego asystenta, w tym przypadku jest to Google Assistant, który będzie robił coraz więcej za Ciebie, w końcu jest asystentem. Może na przykład zarezerwować wizytę u fryzjera, czy stolik w restauracji. Ta rozmowa była bardzo ciekawa, nie trywialna, w szczególności jeżeli chodzi o restaurację. Można z niej wyciągnąć taki wniosek, że po pierwsze: Google Assistant próbuje udawać człowieka, by ten, kto odbierze nie czuł, że dzwoni bot, po drugie: staje się coraz bardziej intelektualny, czyli fajnie łapie kontekst, udaje mu się zadawać fajne pytania, które zależą od tego, co usłyszy od rozmówcy, po trzecie: może się wydarzyć, że po obu stronach będą boty, które będą udawać ludzi – brzmi to ciekawie, ale jest możliwe.
Nagrałem już odcinek, który więcej mówi o asystentach i jak to może zmienić naszą przyszłość. Myślę, że jest to kwestia czasu, być może 5 lat, może troszkę więcej. Tacy asystenci zaczną wchodzić w nasze życie i staną się na tyle powszechni, że już po jakimś krótkim czasie nie będziemy w stanie wyobrazić sobie życia bez takich asystentów. Podobnie mamy teraz z komórkami, kto jeszcze 10 lat temu nie mógł przeżyć bez komórki, a jak to jest teraz? No właśnie.
Dzisiaj chciałem szerzej poruszyć temat infrastruktury, również zająć się Google. Już dawno temu chciałem zaprosić Łukasza, który jest dzisiejszym gościem, jednak pewne ograniczenia, nie do końca zależne od Łukasza, spowodowały, że trochę się to przeciągnęło w czasie. Dobra wiadomość jest taka, że udało się nam spotkać i nagrać odcinek. Łukasz wcześniej pracował w Google, teraz pracuje w Facebooku, wykonuje wiele różnych ciekawych rzeczy, dla mnie jest taką skrzynką pełną wiedzy, bo potrafi odpowiedzieć na wszystkie pytania. Być może ma jakieś limity, ale jak na razie nie udało mi się go zaskoczyć, jego wiedza jest tak szeroka, że nasze rozmowy mogłyby trwać wieczność.
Co jakiś czas mamy okazję wspólnie działać na różnych eventach, hackatonach i są to zawsze bardzo inspirujące spotkania i rozmowy, dlatego pomyślałem, że fajnie byłoby zaprosić Łukasza, żeby podzielić się z większym gronem. Ta rozmowa była momentami bardzo techniczna, ale się nie przerażajcie, bo było również sporo wskazówek biznesowych, jak i edukacyjnych, czyli jak się zabrać do uczenia maszynowego.
Cześć Łukaszu. Przedstaw się, kim jesteś, czym się zajmujesz, gdzie mieszkasz?
Cześć. Jestem Łukasz, mieszkam w Krakowie, ale sporo podróżuję. Zawodowo łączę kropki, czyli zmieniam świat upraszczając procesy, tworząc nowe, wdrażając innowacyjne technologie do branż odległych od informatyki i mało podatnych do tej pory na automatyzację. Dosyć często wywracam też ludzkie życie do góry nogami, czyli uczę ludzi zadawać pytania – aktualnie jestem w Facebooku, ale współpracuje też z firmą Lonsley, która wdraża innowacyjne rozwiązania z zakresu uczenia maszynowego i sztucznej inteligencji w wielu średniej wielkości firmach i korporacjach.
Bardzo dziękuję Łukaszu, że znalazłeś chwilę, żeby porozmawiać. Myślę, że to będzie bardzo interesująca rozmowa – zacznę od standardowego pytania: co ostatnio czytałeś?
Czytam dużo – może to się wydawać dość dziwne w kontekście aktualnego trendu, ale przeważająca większość treści, które konsumuję to publikacje naukowe. Ostatnie trzy, które czytałem w minionym tygodniu i które uznałem za warte uwagi, to przede wszystkim „Exploration by Distribution Reinforcement Learning” to publikacja autorstwa Yunhao Tang, Shipra Agrawal. Autorzy prezentują w niej dość ciekawe podejście do tematu rozproszonego uczenia ze wzmacnianiem, czyli „reinforcement learning” i w tej publikacji korzystają z wnioskowanie bayesowskiego w połączeniu z głębokim uczeniem ze wzmacnianiem, czyli deep reinforcement learning.
Drugą publikacją, którą ostatnio czytałem jest „Multimodal Machine Translation with Reinforcement Learning”, która powstała na Carnegie Mellon University w Stanach Zjednoczonych. W tej publikacji autorzy pokazują podejście do multimodalnego tłumaczenia maszynowego, które korzysta nie tylko z tekstu, ale i z obrazu. Autorzy sprawdzają ich algorytm na zbiorze Multi30K, który zawiera opisy obrazków po angielsku i niemiecku, ale też korzystają ze zbioru Flickr30K, który zawiera same obrazki.
Model ten przyjmuje dwa kanały wejściowe – jeden z obrazem, jeden z tekstem i używa metryk ewaluacji translacji jako nagrody, uzyskując lepsze wyniki niż tradycyjne metody uczenia nadzorowanego.
Trzecią publikacją, którą ostatnio czytałem jest „Zero-Shot Visual Imitation” autorstwa kilku specjalistów z UC Berkeley z Kalifornii. Oni przedstawiają, że aktualnie dominujący paradygmat uczenia się naśladowania, czyli tego imitation learning, bardzo mocno zależy od nadzoru przez eksperta, który kieruje tego agenta uczącego się, czego i w jaki sposób ma się uczyć naśladować. W tej publikacji przedstawione zostało alternatywne podejście, które bazuje na tym, że agent uczący się, sam eksploruje najpierw świat bez jakiegokolwiek nadzoru, a dopiero potem dokłada nową politykę wykonywania akcji, a rolą eksperta w tym wszystkim jest jedynie komunikacja oczekiwań w trakcie działania programu.
Bardzo fajne publikacje – dość mocno techniczne. Myślę, że część osób będzie bardzo zainteresowana, postaram się podlinkować te publikacje w notatkach. Pracowałeś wcześniej w Google, czym się tam zajmowałeś? Oczywiście opowiedz tylko o tym, o czym możesz powiedzieć, bo wiem, że same ciekawe rzeczy robiłeś.
Przez ten czas miałem przyjemność działać z wieloma wspaniałymi ludźmi z kilku zespołów – mogę wręcz powiedzieć, że robiłem praktycznie wszystko. Organizowałem wydarzenia, zarządzałem projektami nietechnicznymi, byłem technicznym project managerem, zajmowałem się też akustyką pomieszczeń na wydarzeniach, pracowałem nad kilkoma projektami związanymi z przetwarzaniem audio. Miałem też przyjemność prowadzić kilka eksperymentów związanych z nowoczesnymi metodami przetwarzania dźwięku, jak i pracować nad produktem w zespołach z kategorii ATAP, czyli Advanced Technology and Projects – pracujących między innymi nad Soli i TPU.
TPU to akcelerator obliczeniowy, który zaprojektowany został do wydajnego wykonywania operacji na tensorach, przez co świetnie sprawdza się w wielu kwestiach związanych z uczeniem maszynowym.
Zaś Soli to taki specyficzny interfejs, pozwalający na bezdotykową interakcję, która bazuje na gestach. Układ ten emituje fale elektromagnetyczne, a przedmioty, które znajdują się w zasięgu tych fal, rozpraszają tę energię – część z niej odbijają w stronę anteny czegoś, co roboczo możemy nazwać radarem. Przetwarzane są wszystkie właściwości tego sygnału, między innymi niesiona energia, opóźnienie – analizowane też są przesunięcie fazowe czy poziom modulacji częstotliwości. Mając te informacje, możemy odczytać wiele parametrów na temat obiektów, jak ich charakterystykę, dynamikę, wliczając w to kształt, rozmiar, materiał z którego są zbudowane, orientację, odległość i szybkość przemieszczania się.
Soli ma przede wszystkim zastosowanie w technologiach ubieralnych, czyli wearables, czy też w szeroko pojętym internecie rzeczy zwanym roboczo IOT. Dzięki Soli urządzenia takie jak na przykład Twój telefon, będą mogły być spokojnie w kieszeni, a Ty będziesz mógł sterować tym urządzeniem, wykonując gesty w powietrzu albo chwytając się za guzik w płaszczu. Soli w połączeniu z rozszerzoną rzeczywistością pozwala na tworzenie nowych interfejsów – interfejsów przyszłości klasy człowiek-komputer.
Pociągnę ten wątek dalej, zwłaszcza, jeżeli chodzi TPU, ale najpierw dodam trochę kontekstu – jest bardzo dużo newsów o tym, jak sztuczna inteligencja osiąga kolejne sukcesy i zawdzięczamy to przede wszystkim deep learningowi.
Jest wiele wyzwań – między innymi potrzebne są dane. Drugie wyzwanie jest takie, że potrzebna jest moc obliczeniowa. Myślę, że wiele osób kojarzy karty graficzne GPU w Nvidii i zwykle to się wprost kojarzy się z tym, że trzeba kupować karty graficzne.
Natomiast Google wprowadził nowy alternatywny produkt – to jest właśnie TPU. Czy mógłbyś wyjaśnić, tak bardzo upraszczając, czym jest to TPU i dlaczego została stworzone, jaki ma rozwiązać problem?
TPU jest akceleratorem obliczeniowym, który został zaprojektowany do wydajnego wykonywania operacji na tensorach, czyli wektorach w reprezentacji macierzowej, przez co świetnie sprawdza się w wielu kwestiach związanych z uczeniem maszynowym. Ze względu na to, że jest to układ projektowany tylko i wyłącznie do wykonywania tych operacji, a nie jak w przypadku na przykład procesorów czy kart graficznych, które pojawiały się wcześniej w machine learningu czy w deep learningu, ma on świetną wydajność i efektywność prądową – niedawno wyszła już trzecia rewizja tego układu i jest około 50 razy bardziej wydajna od układów GPU porównując topowe układy, licząc układ w układ. Jest przy tym ponad 100-krotnie bardziej wydajna per wat zużytej energii, a w stosunku do CPU, ta różnica jest jeszcze większa.
Początki TPU sięgają okolic 2005-2006 roku – wtedy kilka zespołów w Google’u rozpoczęło pracę nad układami wspierającymi obliczenia.
Projektowanie układów ASIC zazwyczaj trwa latami i nie inaczej było tutaj – premiera była planowana na okolicę roku 2020, a gdy na przełomie roku 2012 i 2013 było jasne. że taki układ musi powstać możliwie szybko, by firma była w stanie uniknąć wielomiliardowych wydatków związanych z rosnącym zapotrzebowaniem na moc obliczeniową i związaną z tym dodatkowo infrastrukturą, która byłaby konieczna, zdecydowano się rozszerzyć zespół i rozpocząć pracę nad układem, który miał za zadanie bardzo szybko wykonywać operacje niskiej precyzji, dokładnie 8-bitowe, na macierzach. Mimo niskiego taktowania ten układ bardzo dobrze sobie radzi. Już w drugiej połowie 2014 roku, po około 15-17 miesiącach pracy, pojawiło się coś, co nazywamy TPU pierwszej generacji.
Zostało przedstawione na Google I/O dopiero w 2016 roku, jako element obecny w infrastrukturze firmy od ponad roku. Wszystko co dalej, to tak naprawdę tylko konsekwentny rozwój istniejącego produktu – nie jest to też oczywiście jedyny tego typu produkt, bo Google, czy też teraz Alphabet, rozwija też układy do efektywnego przetwarzania sieci neuronowych, grafów, jak i układy do kryptografii.
Z grubsza uczenie maszynowe ma dwie fazy, dwa procesy. Pierwszy jest, kiedy model trenujemy – to jest zwykle bardzo czasochłonne, a drugi, kiedy robimy predykcję. Pamiętam jak mniej więcej 2 lata temu byłem na konferencji, w trakcie której występował przedstawiciel Nvidii i opowiadał o karcie graficznej GPU, no i musiało paść oczywiście pytanie o TPU, co oni o tym myślą, czy to oznacza, że teraz przegrywają.
Wtedy to była pierwsza generacja dostępna w tamtych czasach publicznie i człowiek z Nvidii odpowiedział, że TPU pierwszej generacji jest lepsza w tej drugiej fazie, czyli kiedy robimy predykcję, ale gorsza w tej pierwszej, kiedy trenujemy. Google podobnie odpowiedział w temacie wersji drugiej TPU, że tam zostało to dość mocno zoptymalizowane. Powiedz, jak to widzisz, czy teraz TPU wygrywa w dwóch fazach?
Przede wszystkim jest to układ, który nie musi mieć przeznaczonych bloków do tego, by przetwarzać grafikę. TPU zajmuje się tylko i wyłącznie przetwarzaniem informacji wektorowych, co zawdzięcza też odpowiedniej architekturze i dzięki temu można redukować zużycie energii i poprawiać wydajność w obliczeniach niskiej precyzji.
TPU to też nie jest akcelerator, który ma za zadanie liczyć coś na przykład w 32 bitach czy w 16, on został zaprojektowany do tego, by mieć maksymalnie dobrą wydajność w obliczeniach niskiej precyzji właśnie w 8 bitach. Poza tym trzeba też zwrócić uwagę na to, że przedstawiciel danej firmy nie jest w stanie wypowiadać się krytycznie o produkcie, który oferuje jego firma, bo wtedy można byłoby go określić jako kiepskiego sprzedawcę.
Nawet jeżeli porównamy na przykład TPU drugiej generacji z GPU z rodziny Pascal albo chociażby TPU trzeciej generacji z GPU z nadchodzących rodzin Volta albo Turing i Ampere sytuacja nie ulega zmianie. Przewaga TPU czy też generalnie dedykowanych układów do obliczeń jest ponad 50-krotna nad rozwiązaniami GPU. Warto też wspomnieć, że tak naprawdę Google nie jest jedyną firmą, która zajmuje się tworzeniem rozwiązań do obliczeń, zarówno Amazon, jak i Facebook również pracują nad swoimi układami.
Facebook swego czasu współpracował z Nervana Systems nad układem, który miał efektywnie przetwarzać konwolucyjne sieci neuronowe i działało to całkiem dobrze, aczkolwiek żaden inny framework poza Neonem, który został stworzony przez Nervana Systems, nie dorobił się porządnego wsparcia dla tych układów. Ze względu na niską popularność Neona można się domyślać, co faktycznie działo się z tymi układami.
Jest też między innymi Adapteva, która tworzy swoje rozwiązania przy współpracy z DARPA, ale na tym rynku jest też Intel, który nie tylko pracował nad swoimi rozwiązaniami przez lata, ale posiada też takowe, które za wiele miliardów dolarów przejął wraz z zakupem firm takich jak na przykład Movidius, który tworzy niesamowicie wydajne układy pod computer vision, które osiągają wydajność nawet 150 gigaflopów na wat, jak i Mobily, który jest izraelskim start-upem, który tworzył układy pod computer vision – są one montowane w autonomicznych pojazdach jako asystenci dla kierowcy, czy też chociażby Nervana, którą Intel nie tak dawno przejął. Inne firmy takie jaka IBM czy Tesla także pracują nad swoimi układami z większym lub mniejszym skutkiem.
Przechodząc teraz trochę na warstwę bardziej praktyczną, bo TPU jest bardzo ciekawym rozwiązaniem, którym warto się zainteresować, podobnie jak słynne AlphaGo, który wygrał z mistrzem go i był trenowany na TPU. SEO DeepMind Demis Hassabis napisał na Twitterze, że TPU hardware, na którym był trenowany AlphaGo, teraz jest dostępny dla każdego.
Co prawda nie jest aż tak łatwo powtórzyć ten sam wynik, bo w publikacji nie są podane wszystkie szczegóły (Alpha Go i Alpha Go Zero), ale mniejsza o to. Bardziej mnie interesuje, czy kojarzysz takie przykłady z życia wzięte, oprócz AlphaGo, kiedy TPU naprawdę się sprawdził.
Z pewnością mogą to być na przykład szachy z projektu AlphaZero, który był następcą AlphaGo. Jednakże TPU było bardzo szeroko wykorzystywane na pewnym etapie przy trenowaniu modelu dla asysty kierowcy, a wręcz do tworzenia autonomicznego pojazdu.
Generalnie TPU wykorzystywany jest w większości prac badawczych korzystających na przykład z sieci konwolucyjnych, wielowarstwowych perceptronów, czy też tak zwanych LSTM-ów, czyli Long Short-Term Memory Networks.
Jest bardzo fajna prezentacja z 2017 roku, która zawiera więcej szczegółów technicznych, zalinkuję ją w notatkach dla osób zainteresowanych.
Bardzo mnie interesuje trzy, może pięć takich praktycznych porad dla osób, które chcą wejść w świat deep learningu. Na co powinny zwracać uwagę. Niekoniecznie muszą być to rady techniczne, spróbuj to jakoś powiązać z biznesem, bo wiele osób z biznesu nas słucha.
Pierwsza porada: dobieraj odpowiednie narzędzia do konkretnego zadania, potrzeby czy też strategii w pracy, nie warto zamykać się na jedną technologię czy narzędzie, dlatego że korzystając z wielu z nich, oszczędzasz przede wszystkim czas, ale też pieniądze.
Druga porada jest taka: pamiętaj, że twoje dane są co najmniej tak samo ważne jak pieniądze, dziel tworzone przez siebie rozwiązania na mniejsze części, a te części uruchamiaj w osobnych kontenerach, które mogą być zarządzane przez systemy orchestracyjne typu kubernetes. Pamiętaj o tym, by każdą z tych części, którą wydzielisz z projektu, osobno monitorować, będzie ci znacznie łatwiej lokalizować błędy i je rozwiązywać, w szczególności na etapie skalowania projektu.
A trzecia porada, jest taka, że nie warto komplikować zbytnio swoich modeli, znacznie bardziej istotne jest dobranie odpowiedniego zbioru treningowego niż dostrajanie modelu, im bardziej skomplikowany jest twój model, tym większe problemy napotkasz na etapie skalowania, jak to mówią simplicity is the key.
Dostaję bardzo często pytanie, na które nie ma prostej odpowiedzi i teraz z przyjemnością przekieruję je do Ciebie. Może warto dodać, że TPU jest dostępne tylko jako usługa, czyli Google nie sprzedaje TPU jako sprzęt, jest dostępne na Google Cloud. Co jest lepsze, zainwestować i kupić swoją kartę czy jednak wynajmować ją w chmurze. To pytanie jest dość ogólne, prawdopodobnie ta odpowiedź brzmi: to zależy. Czy mógłbyś wskazać, kiedy opłaca się kupować własną kartę, a kiedy opłaca się przejść na chmurę.
Z jednej strony powiedziałbym, że zawsze, ale taka naprawdę trudno jest zająć jednoznaczne stanowisko w tym temacie, wszystko zależy od tego, czym dokładnie się zajmujesz i w jaki sposób korzystasz z zasobów. Na podstawie tych informacji trzeba przekalkulować, kiedy warto wybrać jedną czy drugą opcję i przerzucić się wtedy, gdy coś w aktualnej infrastrukturze Cię ogranicza, a ta inna opcja faktycznie to daje.
W czasach, gdy możemy wynajmować sprzęt na godziny, a czasami nawet na sekundy, posiadanie własnego sprzętu w niektórych przypadkach mija się z celem. Powoli nasze urządzenia stają się wyłącznie terminalami do pracy w swego rodzaju środowisku rozproszonym dostępnym w chmurze.
Z pewnością jednak polecam posiadanie własnych układów obliczeniowych wszelkim osobom i firmom, które przetwarzają delikatne dane, czyli takie, które nie mogą opuszczać data center na przykład ze względu na rozporządzenia typu RODO czy w Europie – GDPR.
To chyba jeden z najistotniejszych argumentów, kiedy opłaca się trzymać ten sprzęt lokalnie, bo jeżeli chodzi o koszt karty, to czasami nie bierze się pod uwagę kosztów ukrytych, jak rachunek za prąd. Ta karta również się starzeje, kiedyś się popsuje albo będzie mniej atrakcyjna, bo będzie można wynająć coś lepszego.
Już na tym etapie tak naprawdę można przejść kompletnie na wynajem sprzętu z tego powodu, że cena jego jest de facto na granicy opłacalności między zakupem a wynajmem, więc docieramy do momentu, w którym możemy faktycznie mieć ten sprzęt fizycznie u siebie, ale musimy zajmować się nim sami, czyli mamy sprawy związane z opłatami, z administracją sprzętem, musimy się przejmować softwarem, versus możemy wybrać wygodę i korzystać na przykład z platformy w chmurze.
Przy czym istotne jest to, że dopóki nie liczymy 24 godziny na dobę przez na przykład dziewięć-dziesięć miesięcy w roku, to tak naprawdę jednostki obliczeniowe w chmurze, w takiej powiedzmy podstawowej konfiguracji, w zupełności wystarczają. Tak jak wspomniałeś, sprzęt też się starzeje i gdy korzystamy ze sprzętu w chmurze, nie interesuje nas wymiana, jeżeli coś się zepsuje, też nie przerywamy obliczeń, tylko uruchamiamy nasz kontener z aplikacją na jakimś innym klastrze.
Zgadzam się z tym, że koszt staje się coraz mniejszy. Google Cloud oferuje dwukrotnie niższy koszt niż Amazon, więc to GPU staje się naprawdę tanie, ale jest jeszcze taka inna szkoła, która mówi, że tak naprawdę możesz wynająć więcej CPU.
Na dzień dzisiejszy Google Cloud umożliwia 96 rdzeni w wersji dla zwykłego zjadacza chleba. Idea jest taka, że odpalasz swój algorytm na procesorach, tutaj co prawda są pewne triki, że przy większej ilości CPU to nie robi się aż takie wydajne, ale bardzo jestem ciekawy Twojej opinii. Do notatek dołączę link do artykułu, który ten temat porusza. Co o tym myślisz?
Odpowiedź jest bardzo prosta i brzmi dokładnie „to zależy” i tak naprawdę zależy od tego, czym się zajmujesz. Jeżeli korzystasz wyłącznie z modeli sekwencyjnych typu rekurencyjne sieci neuronowe, gdy zajmujesz się na przykład przetwarzaniem języka naturalnego, to oczywiście nie ma sensu inwestować w GPU, dlatego że zdecydowanie lepszym wyjściem jest inwestycja w CPU. GPU są dobre tam, gdzie możemy zrównoleglić obliczenia, a modele sekwencyjne zdecydowanie nie są takim elementem.
W kwestii skalowalności istotnym czynnikiem jest parametr, względem którego chcemy optymalizować to, co robimy. Jeśli przetwarzamy obrazy czy też jakieś informacje wektorowe, macierzowe, to inwestycja w GPU pozwala na optymalizację względem zasobu, który jest najbardziej ograniczony, czyli czas. Jeśli dzięki dodatkowym 200$ rocznie uzyskasz efekt w postaci redukcji czasu trwania obliczeń z jednego roku do 10 miesięcy, to chyba się to opłaca, mimo że wydasz więcej.
Google Cloud oferuje jeszcze kilka innych możliwości na trenowanie modelu. Na przykład jest dostępny ML Engine, który sam osobiście stosuję. Na początku to było bardziej TensorFlow, teraz już można trenować właściwie wszystko, włączając XGBoost.
Mało, że można trenować, można też publikować, nie martwiąc się o dostępność serwera – to już jest problem Google. Czy w usługach ML Engine i Auto ML pod spodem jest TPU?
TPU zasila znaczącą większość usług Google – na przykład search, ale tak naprawdę nie jest jedynym typem akceleratora, który jest pod spodem tychże usług, jest ich znacznie więcej. Znajduje się on także pod
ML Engine i Auto ML, ale to, czy zostanie on uruchomiony, zależy od dodatkowego systemu, który tym wszystkim steruje, dlatego że to on estymuje, ile obliczeń będzie potrzebnych, żeby wykonać konkretne zadanie i to właśnie ten system sprawi, że zostanie wybrane rozwiązanie, które wykona dany task najbardziej efektywnie.
Wspomniałeś już, że pracowałeś jako sound engineer, może najpierw wyjaśnij, na czym polega ta rola.
Jako sound engineer, czyli po polsku inżynier dźwięku, chociaż tak naprawdę nie jest to związane z polskim określeniem inżynier dźwięku, pracowałem nad dźwiękiem w wielu płaszczyznach, między innymi tworząc audio do kilku gier. Główną część mojej pracy stanowiła współpraca z artystami i ich managementami, pracowałem z artystami jako ich ghost producer, czyli tworzyłem muzykę, pod którą oni się podpisywali i wydawali tą muzykę, jako ich autorską.
Przez pewien czas pracowałem również przy narzędziach do tworzenia muzyki, współtworząc jeden z najpopularniejszych edytorów i sekwencerów o nazwie Ableton, jak również wtyczki, generatory, efekty. Tworzyłem też półprodukty do tworzenia muzyki – tak zwane szablony, potocznie nazywane template’ami, oraz paczki próbek dźwiękowych, czyli sample packi, jak i gotowe brzmienia organizowane w preset banki.
Jakie są największe wyzwania albo trudności, jeżeli chodzi o uczenie maszynowe? Możesz powiedzieć, o tym obszarze, o którym opowiadałeś, związanym z muzyką, ale też możesz rozszerzyć do szerszego kontekstu. Jak myślisz, co jest największym wyzwaniem w uczeniu maszynowym?
Przede wszystkim trzeba zwrócić uwagę na zastosowania, jest ich wiele i nad ogromną ich ilością ludzie już pracują. Jeżeli chodzi o audio, to bardzo mocno rozwijane są na przykład systemy rekomendujące muzykę, systemy resyntezy dźwięku, czy też takie, które wykorzystują dźwięk w procesie protetyki słuchu, aż po systemy zabezpieczeń bazujące na biometryce. Jeżeli chodzi o ograniczenia, to pierwszym i zarazem największym ograniczeniem są ludzie, ale nie tylko pod względem ograniczonych zasobów ludzkich, działających w tym obszarze, ale także pod względem narzucania ludzkiego myślenia maszynom, które są w stanie myśleć dużo lepiej, jeżeli człowiek ich nie kontroluje.
Przykładem jest na przykład Auto ML, który osiągnął dużo lepszą efektywność nauczania następnego modelu aniżeli człowiek, gdy uczył Auto ML. Ponadto drugim takim wyzwaniem jest czas, który nieubłaganie biegnie, jak i sama energia, którą zużywamy, wartości te są coraz większe, jeżeli chodzi o zużycie energii i optymalizacja energetyczna to klucz do sukcesu.
Które obszary w uczeniu maszynowym rozwijają się najszybciej? Które rozwiną się najbardziej w ciągu 3-5 lat?
Obszary, które rozwiną się najbardziej w uczeniu maszynowym w przeciągu najbliższych trzech do pięciu lat to zdecydowanie te, na które jest i będzie największy nacisk – w tym momencie jest to przetwarzanie języka naturalnego i widzenie komputerowe. Z natury jestem optymistą, ale nie wydaje mi się, że zobaczymy zastosowanie uczenia ze wzmocnieniem, czyli reinforcement learningu, na większą skalę, chociaż osobiście bardzo bym tego chciał, w szczególności w tematach związanych z biocybernetyką i biomechaniką.
Teraz w Polsce obserwuję taki trend, że z jednej strony jest dużo osób, które słyszały o uczeniu maszynowym, myślę, przede wszystkim o osobach decyzyjnych, ale nadal nie wiedzą, jak do tego podejść, bo nikt nie chce wydawać pieniędzy czy zużywać dostępne zasoby tylko po to, żeby poeksperymentować. Podaj proszę trzy złote porady dla biznesu – jak najlepiej podejść do wdrożenia uczenia maszynowego w swoim biznesie.
Po pierwsze poznaj swój biznes, być może twoja firma nie posiada odpowiedniej ilości danych do efektywnego wdrażania uczenia maszynowego, wtedy znacznie lepiej jest znaleźć narzędzia, które ułatwią ci pracę, zamiast tracić zasoby na wdrożenie rozwiązania, które z dużym prawdopodobieństwem nie będzie działało dobrze. Po drugie zwróć uwagę na to, czy potrzebna jest ci automatyzacja zadań, czy może dostarczenie jakichś insightów z konkretnych informacji, przede wszystkim musisz zidentyfikować problemy, które uczenie maszynowe ma rozwiązać. Po trzecie skup się na tym, co musisz robić, a wszystko pozostałe, w tym też przygotowanie i wdrożenie rozwiązania, które wykorzystuje uczenie maszynowe, zdeleguj ekspertom, dzięki temu uzyskasz znacznie większą efektywność biznesu.
Właśnie o tym pomyślałem, bo jeśli ktoś się na tym nie zna, to ciężko mu te dwie pierwsze porady zrealizować, a trzecie porada pomoże zrealizować dwie poprzednie. Czy to oznacza, że chyba najbardziej efektywna ścieżka zbadania, gdzie jesteś, jaki ma być następny krok, to zwrócenie się do ekspertów.
Tak – zwrócenie się do ekspertów i następnie rozmowa z nimi o twoich oczekiwaniach, problemach, które napotykasz na swojej drodze biznesowej, a oni z pewnością doradzą ci, jakie rozwiązanie powinno się wdrożyć, żeby te wszystkie problemy rozwiązać i dostarczyć ci jednocześnie maksymalnie dużo informacji, na podstawie której będziesz mógł podejmować trafne decyzje biznesowe.
Dobrze, to chyba już mamy najważniejszą poradę. Te trzy wskazówki wydają się bardzo ważne, ale z ekspertami różnie bywa, znalezienie eksperta nie jest łatwe, ale przynajmniej te trzy punkty, które wymieniłeś mogą ukierunkować, o co należy zapytać tego eksperta. Zmienię znów troszkę temat, bo jesteś bardzo aktywny w działaniach, dużo podróżujesz i działasz też pro bono, organizujesz meet-upy, spotkania, hackathony. Jesteś założycielem grupy Machine Learning Study Group, która działa w Krakowie. Powiedz, czy masz jakieś konkretne plany, co chciałbyś osiągnąć, co cię motywuje do działania.
Machine Learning Study Group to organizacja, która wspiera studentów, doktorantów, ale też absolwentów studiów, specjalistów z branży IT, przedsiębiorców, inwestorów w stawianiu swoich pierwszych kroków w uczeniu maszynowym. W czasie trwania wydarzeń i szkoleń przez nas organizowanych uczestnicy dowiadują się, czym jest uczenie maszynowe, jakie wyzwania stoją przed osobami na stanowiskach data scientist i machine learning engineer, z jakich narzędzi korzystają osoby na tych stanowiskach oraz w jaki sposób efektywnie przetwarzać i prezentować dane.
Współpracujemy w tym momencie z czołowymi firmami i jednostkami naukowymi na świecie, takimi jak na przykład Stanford, MIT, University of Toronto, Lonsley, Google, DeepMind, Brainly. Jeżeli chodzi o nasze plany na przyszłość, zajmujemy się tym, żeby nasz wzrost był możliwie szybki i dostarczaniem absolutnie topowej wiedzy naszym kursantom.
Bardzo szlachetny cel. Wspomniałeś, że teraz pracujesz w Facebooku, powiedziałeś, czym się zajmowałeś w Google. Czy możesz zdradzić, czym się zajmujesz w Facebooku?
Moja pozycja nazywa się machine learning manager i dołączyłem do zespołu, który nazywa się core machine learning. Zarządzam zespołami pracującymi nad projektami z zakresu uczenia maszynowego, które związane są nie tylko z przetwarzaniem dźwięku, ale też wspierają w pracy zespoły nazywające się video creators. W Facebooku, tak jak i w wielu innych firmach tego rozmiaru, pozycji związanych z uczeniem maszynowym i analizą danych jest sporo. Różnią się one wymaganymi kompetencjami, trzy podstawowe związane z uczeniem maszynowym to software engineer in machine learning, applied machine learning engineer oraz core machine learning engineer.
Pierwsza z pozycji, czyli software engineer in machine learning, jest to pozycja, na której największy nacisk, poza oczywiście teoretycznymi podstawami informatyki, kładzie się przede wszystkim na wiedzę z zakresu inżynierii systemów, czyli system design – takie osoby nie muszą znać się na modelowaniu danych i metodach ewaluacji, aczkolwiek przydatna może okazać się podstawowa wiedza z zakresu stosowania bibliotek i algorytmów uczenia maszynowego.
W przypadku pozycji drugiej, czyli applied machine learning engineer, największy nacisk kładziony jest na umiejętność doboru i stosowania algorytmów uczenia maszynowego i korzystania z bibliotek, takich jak na przykład TensorFlow czy Caffe, podstawowa wiedza z zakresu inżynierii systemów, czyli system design oraz modelowania i ewaluacji danych jest przydatna, ale nie wymagana.
Ostatnie stanowisko, czyli core machine learning engineer, jest stanowiskiem kładącym nacisk na teoretyczny aspekt uczenia maszynowego, czyli nie tylko dlaczego to działa, ale w jaki sposób to działa i dlaczego to nie ma prawa nie działać – takie dociekanie istoty problemu przez podwójne zaprzeczenia. Stanowisko to związane jest z oczekiwaniami dotyczącymi wiedzy z zakresu statystyki, modelowania i ewaluacji danych oraz oczywiście umiejętności projektowania i stosowania algorytmów z zakresu uczenia maszynowego. Na takim stanowisku najczęściej pracują ludzie, którzy mają solidne wykształcenie kierunkowe, czyli na przykład doktorat.
W przypadku ludzi, którzy zajmują się analizą danych również są trzy podstawowe stanowiska. Pierwsze stanowisko to data science analyst i skupia się ono na analizie danych i wizualizacji. Ludzie na takim stanowisku operują na danych wykonując na przykład kwerendy w SQL, a następnie przygotowują wykresy i komunikują swoje znaleziska do product managerów.
Drugie stanowisko, które znajduje się w zespole data science to data engineer. Ludzie na tym stanowisku zajmują się przygotowaniem infrastruktury i platformy, jak i podstawowym przetwarzaniem danych i doborem narzędzi, to właśnie wśród tych ludzi znajdują się osoby, które pracują intensywnie na przykład z Hadoopem czy z Sparkiem.
Trzecie stanowisko to core data scientist. Na tym stanowisku pracują ludzie posiadający tylko i wyłącznie wykształcenie kierunkowe na poziomie co najmniej doktoratu i pracują oni nad rozwiązaniami wymagającymi dużej wiedzy teoretycznej, jak na przykład modelowanie i ewaluacja danych, modelowanie predykcyjne, systemy rekomendacyjne.
Bardzo dużo różnych ról podałeś – bardzo Ci za to dziękuję. Na konferencjach, różnych wydarzeniach jestem regularnie pytany: jak zacząć? Nagrałem już na ten temat webinar i podam do niego link w notatkach. Ale chcę też zapytać Ciebie, od czego jest najlepiej zacząć?
To co powiem teraz, może się okazać dość kontrowersyjne w dobie wszechobecnych bootcampów, które wkraczają również do branży data science, ale ja osobiście polecam studia na renomowanej uczelni. W ich trakcie możesz zdobyć podstawową wiedzę potrzebną do pracy z uczeniem maszynowym, wystarczy opanować podstawy matematyki i programowania, które pojawiają się na studiach licencjackich lub inżynierskich i które są wymagane na przykład na studiach informatycznych, matematycznych albo fizycznych. Dzięki tej wiedzy będziesz w stanie skutecznie zagłębiać się w materiały z zakresu uczenia maszynowego i nie tylko rozumieć, jak to działa, ale też dlaczego to działa. Jeżeli chodzi i same wskazówki, to myślę, że jest pięć kluczowych kwestii.
Pierwsza to: wybierz się na staż czy praktyki z tego zakresu i zdobądź techniczne wykształcenie. Dobre kierunki, które możesz studiować to na przykład informatyka teoretyczna, czyli Theoretical Computer Science, inżynieria oprogramowania, czyli Software Engineering, informatyka stosowana, czyli Applied Computer Science, ekonomia, czyli Economics, statystyka, czyli Statistics, matematyka, inżynieria systemów zwana też Systems Engineering – kierunek bardziej popularny poza granicami Polski, inżynieria zarządzania, czyli Management Engineering, inżynieria komputerowa, czyli Computer Engineering, ale także kierunki typu elektronika i telekomunikacja, czyli Electronics and Telecommunication Engineering, automatyka i robotyka, czyli Automatic Control and Robotics, która zawiera bardzo dużo elementów z computer vision, jak i inżynieria środowiska, czyli Environmental Engineering, która też jest traktowana jako kierunek techniczny. Będzie ci łatwiej dostać się na ten staż czy praktyki, a gdy w trakcie nich będziesz się rozwijać i pokażesz to, to jest duża szansa na to, że dostaniesz propozycję pracy w tej dziedzinie w tej firmie.
Drugą poradą jest to, byś opanował język SQL. Dlaczego akurat SQL? Jest to dość prosty język do nauczenia się i powszechnie używany w analityce, wszelkiej maści business intelligence i wielu innych dziedzinach. Niezależnie od tego, gdzie będziesz pracować, jako na przykład data scientist czy machine learning engineer, zawsze będziesz mieć do czynienia z językiem SQL, bo będziesz musiał skądś te dane wyciągnąć, na przykład z baz danych czy hurtowni, a następnie wykonać na nich jakieś operacje. Niemalże wszystkie firmy przygotowują infrastrukturę w taki sposób, aby dana osoba mogła operować na danych wykonując odpowiednie kwerendy w języku SQL.
Moja trzecia porada: naucz się korzystać z takich narzędzi typu IPython, Tableau, R, Excel, czy czegokolwiek innego, by manipulować, wizualizować i interpretować dane, i tak większość twojej pracy będzie zależała od SQL. Python i R wyglądają najbardziej technicznie i są zorientowane na kodowanie, więc mogą być preferowane przez znaczną większość potencjalnych pracodawców i współpracowników, jednakże w praktyce nie ma wielkiego znaczenia, które z tych narzędzi wybierzesz. Możesz być bardzo dobrym analitykiem danych, korzystając chociażby samego Excela, efekt i tak zależy od tego, jak sprawnie radzisz sobie z pracą z danymi, rozwiązywaniem problemów i jak dobrze komunikujesz swoje znaleziska. Dopiero na podstawie tego można budować sprawnie działające rozwiązania, korzystając na przykład z Pythona.
Czwartą poradą jest to, byś nauczył się, czym są metryki sukcesu i metryki mierzalne, czyli success metrics i tracking metrics. Weźmy jako przykład aplikację typu YouTube, załóżmy, że będzie ona przechodziła redesign, ale i też zostaną dodane do niej funkcjonalności z zakresu uczenia maszynowego. W jaki sposób ustalisz, czy działania te okazały się sukcesem? Metryki sukcesu, to jest coś, co widzi cały zespół i na czym się skupia, w tym przypadku może to być między innymi ilość aktywnych użytkowników, czy ilość unikalnych użytkowników każdego dnia. Metryki mierzalne to są właśnie te czynniki pośrednie, które są związane z osiąganiem metryk sukcesu.
Może to być na przykład: ile czasu spędza przeciętny użytkownik w aplikacji, ile filmów dziennie ogląda, ile filmów sam wrzucił na platformę, czy też ile razy został wykonany tak zwany Force Quit, czyli wymuszone zamknięcie. Mierzyć trzeba także te negatywne metryki, bo co jeżeli dana aplikacja zawiera bardzo dużo błędów i się na przykład wyłącza w danym momencie, co jest powodem, dla którego użytkownicy spędzają w tej aplikacji bardzo dużo czasu. Istotne jest przede wszystkim, by metryki były jak najmniej podatne na oszustwa i jakąkolwiek manipulację, a przy tym reprezentowały w jakiś sposób sukces firmy.
Ostatnią moją poradą jest to, by każdy nauczył się komunikować z ludźmi. Większość pracy to komunikacja z ludźmi, jeśli nie będziesz umieć odpowiednio komunikować swoich znalezisk, to bardzo ciężko będzie zbudować cokolwiek na podstawie tych informacji i ciężko będzie zbudować skuteczne rozwiązanie, w szczególności jeżeli podążysz ścieżką data scientist, istotne jest to, byś umiał czy też umiała przemawiać publicznie. Ogromna część twojej pracy to będą spotkania z ludźmi i prezentacje, konieczne są też umiejętności z zakresu pisania chwytliwych treści, które trafiają do ludzi, najłatwiej dotrzeć ze swoimi znaleziskami do osób, w szczególności tych z innych zespołów, przez opisywanie swoich znalezisk w postaci artykułów, e-maili, postów. Treści pisane są świetnym medium do docierania do wielu ludzi, w szczególności w pracy. Mój znajomy z pracy powiedział kiedyś:
„If you made an interesting analysis, but no one is there to read your analysis, did you ever make an analysis?”
Jest to w zasadzie strzał w dziesiątkę odnośnie tego, jak bardzo istotne są umiejętności miękkie w pracy.
I jeszcze ode mnie taki jeden bonus, czyli naucz się modelować predyktywnie – predictive modelling. Wiele osób optymalizuje swój proces nauki względem tego zagadnienia, bo wydaje im się, że znaczna część pracy z danymi, czy to jako data scientist, czy machine learning engineer, czy jako jakiś analityk dotyczy właśnie tego, czyli prognozowania, finansów, automatyzacji zadań. Można w jakimś stopniu powiedzieć, że mają rację z tymi finansami, bo niezależnie od zajmowanego stanowiska twoim celem jest spowodować, że firma zacznie zarabiać więcej. Wiedza z zakresu predictive modelling w szczególności przyda się, gdy będziesz zajmować się systemami predykcyjnymi i systemami rekomendacyjnymi. Poza tym zawsze możesz też powiedzieć swoim znajomym, że zajmujesz się forecastingiem i to jest cool :).
Bardzo dziękuję Łukaszu za te wszystkie porady. Myślę, że dla osób, które chcą wejść świata uczenia maszynowego będą bardzo pomocne. I ostatnie już pytanie na dzisiaj: jak można znaleźć Ciebie w sieci?
Jestem obecny na w zasadzie wszystkich popularnych platformach społecznościowych, wystarczy wyszukać mnie po imieniu i nazwisku.
Bardzo fajnie nam się rozmawiało, jesteś kopalnią wiedzy według mnie. Bardzo dziękuję, że udało się nam spotkać i nagrać tę rozmowę. Życzę Ci wszystkiego dobrego w Facebooku, Lonsley i w wielu innych Twoich inicjatywach.
Dzięki raz jeszcze Vladimir za zaproszenie i do usłyszenia po raz kolejny przy jakiejś następnej nadarzającej się okazji.
Łukasz przygotował dla Ciebie prezent. Wystarczy zapisać się na newsletter i dostaniesz ten prezent mailowo. Zapisz się na stronie tego odcinka, a jeżeli już jesteś zapisany, to sprawdź swoją skrzynkę, bo prezent już na Ciebie czeka. Przy okazji bardzo polecam dodać do kontaktów mail info(at)biznesmysli.pl, dzięki temu masz prawie stuprocentową gwarancję, że maile ode mnie będą trafiać we właściwe miejsce.
Tak jak obiecywałem w poprzednim odcinku, w tym odcinku będzie kolejna opinia uczestnika drugiej edycji kursu „Praktyczne uczenie maszynowe”. Dzisiaj jest nim Wojtek – bardzo inspirująca osoba. Miał pakiet premium, więc spędziliśmy sporo czasu na konsultacjach, ale były one dość unikalne, musiałem dość intensywnie myśleć, żeby odpowiadać na pytania zadawane przez Wojtka, były bardzo trafnie i absolutnie nie trywialne. Z jednej strony było to trochę męczące, bo wymagały myślenia, a z drugiej strony bardzo pozytywne, bo mózg musiał zacząć się kręcić na odpowiednich obrotach, żeby te odpowiedzi znajdować.
Cześć Wojtek. Przedstaw się, kim jesteś, czym się zajmujesz, gdzie mieszkasz.
Cześć Vladimirze.
Nazywam się Wojtek Mac, mieszkam w Warszawie, z wykształcenia jestem fizykiem, w tej chwili pracuję w Orange. Pracuję w Orange już od 15 lat, zajmowałem się w tym czasie różnymi rzeczami, głównie szeroko pojętą analityką, przez wiele lat zajmowałem się również billingiem, a ostatnio zajmuję się automatycznymi kanałami obsługi klientów i pracujemy nad tym, żeby one były efektywne, oszczędzały pracę ludzi, ale jednocześnie, żeby klientom było w miarę wygodnie się z nami kontaktować i żeby rozwiązywać ich problemy, jak najłatwiej dla nich.
O tym jeszcze porozmawiamy, ale najpierw powiedz, co ostatnio czytałeś.
Ostatnią uzupełniłem taką jedną zaległość po śmierci Hawkinga, zrobiłem taki krótki remanent w głowie, więc przeczytałem „Wszechświat w skorupce orzecha”, jest to pozycja sprzed wielu lat, ale jakoś tak mi umknęła wcześniej i stwierdziłem, że to jest dobry moment. żeby sobie przypomnieć.
To bardzo dobra lektura, słyszałem o niej kilka razy, ale też nie miałam jeszcze okazji przeczytać. Warto chyba po nią sięgnąć.
Na pewno warto, ale zależy, co kto lubi. Ja lubię styl Hawkinga, który nie daje oczywistych odpowiedzi, pozwala trochę pomyśleć, a z drugiej strony jest w miarę łatwy dla osób, które nie mają silnego backgroundu fizycznego.
Ty akurat masz doświadczenie fizyczne, działasz już ponad 15 lat w Orange. Powiedz, skąd się wzięło u Ciebie zainteresowanie uczeniem maszynowym i kiedy to się zaczęło?
Bardzo trudno jest powiedzieć, kiedy to się zaczęło, bo tak naprawdę jeszcze na studiach miałem jakąś styczność z sieciami neuronowymi, chociaż one były mniej dojrzałe niż dzisiejsze uczenie maszynowe. Jak wszyscy wiedzą, w dzisiejszym świecie trudno uniknąć kontaktu z uczeniem maszynowym, z sieciami, ze sztuczną inteligencją – atakuje nas wszędzie, we wszystkich audycjach, programach, książkach i wszędzie słyszymy o tym, więc warto wiedzieć, o co chodzi i nie dawać sobie opowiadać głupot, warto się trochę zastanowić, jak to działa, do czego to służy, gdzie są jego obecne granice, możliwości.
Opowiedz proszę swoją historię, jak trafiłeś na kurs.
Na kurs trafiłem w bardzo prosty sposób. Mój szef słuchał Twojego podcastu, przyszedł kiedyś i powiedział, że jest taki fajny podcast, może by go posłuchać, a dwa dni później powiedział, że tam jest taki fajny kurs uczenia maszynowego, może by kogoś na niego wysłać. Wybraliśmy jednego z naszych kolegów, za 2 dni wymyśliliśmy, że może wyślemy na niego dwóch, no i tak od słowa do słowa w końcu okazało się, że cały nasz zespół zapisał się na kurs, a na koniec ja też.
Stwierdziłeś, że głupio będzie, jak cały zespół będzie o czymś rozmawiać, a Ty nie będziesz wiedział, o co chodzi?
Jest w tym trochę prawdy. Poza tym ja w tej chwili już sam kodu nie piszę codziennie, ale to zawsze jest fajnie, jak się dotknie własnymi rękoma czegoś, co jest takie bliskie produkcji, a nie tylko taką działalnością menadżersko-zarządczą. Ten kurs był fajny pod tym względem, że pozwał samodzielnie sobie coś podłubać, popracować. Fajne było to, że sobie przypomniałem troszeczkę, jak to jest pisać coś samemu.
Na co dzień nie programujesz, prawdopodobnie nie miałeś też dużej styczności z Pythonem, ale oglądałem Twój kod i całkiem fajnie sobie radziłeś. Powiedz, jak tego się nauczyłeś? Po nocach?
W Pythonie rzeczywiście wcześniej nie pisałem dużo, żeby nie powiedzieć prawie nic. Mogę opowiedzieć później, jak to się zaczęło z Pythonem, natomiast w życiu trochę napisałem kodu w różnych językach od Fortranu, przez różne odmiany Pascala C, czy różnych basiców. W Pythonie pierwszy kod napisałem ze 2 lata temu, kiedy moja córka w gimnazjum brała udział w jakimś konkursie informatycznym Logia i oni właśnie pisali w Pythonie. Jak ona coś pisała, to ja jej zaglądałem przez ramię, a może tata mi coś podpowie, a może razem coś zrobimy i tak od słowa do słowa nauczyłem się przy okazji Pythona. Oczywiście to jest inny Python, zupełnie inne biblioteki niż te na kursie, ale początek miałem. Ale jak się zna ileś języków, to nauczenie się kolejnego nie jest rzeczą niewykonalną albo wymagającą strasznie długiego czasu.
To prawda. Jeśli poznajesz języki, które się różnią od siebie, to ciężko jest cię zaskoczyć czymkolwiek.
Aczkolwiek Python jest rzeczywiście takim fajnym językiem, który jest bardzo elastyczny i to mi się w nim spodobało – umożliwia zoptymalizowanie długości kodu.
Też za to lubię Pythona, że to jest jeden z najprostszych języków. Między innymi dlatego ten język staje się teraz coraz bardziej popularny w uczeniu maszynowym, bo zamiast skupiać się na języku, skupiasz się na rozwiązaniu problemu. To jest taka zaleta Pythona. A jaką największą wartość dostałeś na tym kursie? Co Ci się najbardziej spodobało?
Chyba największą wartością jest to, że mam taki przegląd różnych metod, różnych algorytmów począwszy od lasów losowych, aż po sieci konwolucyjne – to są nazwy, które się człowiekowi normalnie ocierają o uszy, ale dopóki się samemu takiej prostej rzeczy nie napisze, to się nie zrozumie. Ja mam takie empiryczne podejście do świata, dopóki nie dotknę, to nie rozumiem. Jak się tak trochę podotyka ich samemu, to potem jest łatwiej rozmawiać z innymi ludźmi, którzy są nawet o kilka rzędów bieglejsi w przedmiocie. Można znaleźć łatwiej wspólny język, wiedzieć, gdzie są ograniczenia, ułatwia to kreatywne pomysły, bo nie wymyśla się czegoś, co zupełnie nie ma sensu. W tej chwili wydaje mi się, że to jest dość duże zagrożenie, jeśli chodzi o uczenie maszynowe i wszelakie sieci samouczące się, bo to jest modne, więc każdy przychodzi i mówi: „my tutaj użyjemy uczenia maszynowego i rozwiążemy wszystkie twoje problemy albo sztuczna inteligencja sama przyjdzie, sama zrobi, sama posprząta i jeszcze za to zapłaci”. Nie można wpaść w taką pułapkę, że to wszystko za ciebie rozwiąże, więc dobrze wiedzieć, mieć taką intuicję, do czego to się rzeczywiście nadaje, a do czego nie. Myślę, że jak się samemu czegoś spróbuje, to wtedy jest łatwiej.
Nawiązując trochę do Twojej intuicji – w trakcie kursu był konkurs, w którym robiliśmy predykcje kosztu samochodem. Dla mnie inspirujące było Twoje podejście – osoby, które były w czołówce miały 5, 10 a nawet 15 prób, Ty miałeś jedną próbę, po której byłeś prawie na pierwszym miejscu, a po drugiej próbie jeszcze bliżej. Zrobiłeś bardzo mało tych strzałów, ale były bardzo trafne. Czy faktycznie wyczuwałeś, co warto robić, czy po prostu więcej czasu spędzałeś na myśleniu i później dopiero podawałeś rozwiązanie?
Szczerze mówiąc, nie potrafię odpowiedzieć jednoznacznie na to pytanie. Na początku nie strzelałem w ciemno, tylko najpierw chciałem coś zrobić, trochę uporządkowałem te dane, zrobiłem coś, co wydawało mi się, że należy zrobić i tak wyszło, jak mówisz. W kolejnych krokach już spadłem, jak inni wzięli się też za optymalizację kodu. Nie wiem dlaczego nie wrzucałem tyle, może nie poświęciłem na to więcej czasu, bo w pewnym momencie przygotowanie kolejnego modelu, żeby on miał jakiś sens, trwało. Jak wszyscy się rzucili na serwer i zaczęli uruchamiać swoje modele, to często to liczenie długo trwało, żeby wygenerować nową sensowną wersję, bo trzeba było parę rzeczy sprawdzić, więc to chyba z tego wynika.
Obserwując osobowość ludzi, wydaje mi się, że każdy ma inne podejście, ale z wiekiem przychodzi takie podejście, że próbujesz więcej przewidzieć naprzód, a dopiero potem próbujesz, ale jak coś przewidzisz, to ta rzecz działa albo jest lepiej zoptymalizowana, bo mamy w głowie tę sieć neuronową bardziej zaawansowaną niż sztuczna inteligencja, więc można zastosować optymalizację przed zbudowaniem modelu.
Jak zamierzasz wykorzystać wiedzę zdobytą na kursie?
Jak już powiedziałem, w pracy zajmuję się optymalizowaniem obsługi klientów, czyli żeby tak zrobić, żeby jak najmniej się ludzie po naszej stronie napracowali, a klienci byli nadal zadowoleni i dobrze obsłużeni. Ludzi można zastąpić jakimiś maszynami, automatami, różnymi narzędziami, które mogą mieć w sobie mniej lub więcej tej sztucznej inteligencji, ale obecnie, kiedy te algorytmy sztucznej inteligencji są coraz lepsze, coraz doskonalsze, coraz szerzej stosowane. Coraz większe są doświadczenia ludzi z tym, jak je wykorzystywać do różnych zastosowań również takich jak konwersacje z klientami, do znajdowania odpowiedzi na pytania, do analizowania, czego potrzebują klienci – bardziej zaawansowane algorytmy są już dostępne i aż grzech po nie nie sięgnąć. W naturalny sposób będziemy musieli zacząć po nie sięgać, już trochę to robimy.
Ja kodu już nie piszę, ale żeby rozmawiać z dostawcami, żeby wiedzieć, czego potrzebujemy, żeby współpracować z programistami u nas, którzy piszą taki kod czy nawet ze swoim własnym zespołem, trzeba samemu też coś wiedzieć. To jest to coś, co było głównym motorem, dla którego poszedłem na kurs. No i mam nadzieję, że mi się to przyda w pracy w najbliższym czasie, a w dłuższej perspektywie to na pewno.
Wyobraź sobie, że teraz Twojego głosu słucha osoba, która zastanawia się, czy ten kurs jest dla niej, jak myślisz dla kogo jest ten kurs?
Myślę, że są dwie grupy osób, które mogą mieć największe korzyści z takiego kursu. Jedna grupa to są osoby, które jeszcze nie miały styczności z uczeniem maszynowym, ale chciałyby zacząć, mają jakiś podkład programistyczny, na przykład są informatykami, ale się takimi analizami czy tworzeniem takich modeli nie zajmowały, ale chciałyby jakoś zacząć, a mają takie empiryczne podejście, żeby najpierw spróbować, zobaczyć, co wyszło, a potem dopiero douczyć się tam, gdzie widzą, że mają braki, czy gdzie to jest interesujące. Myślę, że dla takich osób jest to bardzo fajny kurs, żeby zobaczyć, bo nie zaczynamy od szerokiego podkładu teoretycznego, tylko robimy, patrzymy, co wyszło, a jak wyjdzie, to wtedy można poczytać sobie, rozszerzyć wiedzę, więc to jest taki dobry start.
Druga grupa osób to być może takie osoby jak ja, które w tym momencie nie szukają bardzo głębokiego i szerokiego teoretycznego podkładu, ale chcą zobaczyć, jak to działa, zrozumieć, poczuć, doświadczyć. Wydaje mi się, że do takiego zastosowania ten kurs też jest bardzo fajny.
I ostatnie już pytanie na dzisiaj. Jestem bardzo ciekaw Twojej opinii, jak nasz świat może się zmienić w najbliższej przyszłości w perspektywie 5-10, a może nawet 15-20 lat. Jakie masz przemyślenia na ten temat?
Już widać, że nasz świat się bardzo zmienia i to bardzo szybko. W ciągu ostatnich 3-5 lat widać tę eksplozję. Takie najważniejsze kierunki to po pierwsze wszystkie urządzenia, które zastępują pracę człowieka – autonomiczne samochody, wszelkiego rodzaju roboty w fabrykach, różne roboty, które za nas piszą, odpowiadają, nawet lodówki zaczynają być mądre.
Czasami to jest po prostu zastępowanie pracy człowieka tylko po to, żeby się nie męczył, czasami one są sprawniejsze od człowieka, bo robią coś szybciej, z większą precyzją, z mniejszą ilością błędów. I to jest moim zdaniem jeden z takich aspektów, w których sztuczna inteligencja będzie bardzo ważna. Druga rzecz to są wszystkie interfejsy komunikujące się z ludźmi – dawno dawno temu były guziki i korbka, później ludzie wydawali tajne komendy w różnych językach tylko dla wtajemniczonych, a teraz coraz więcej jest takich interfejsów, gdzie z tymi maszynami się po prostu rozmawia, tak samo jak z innymi ludźmi, co dla wielu ludzi jest wygodne, przyjemne, prostsze.
Myślę, że tutaj na pewno doświadczymy bardzo dużej zmiany w najbliższym czasie, w naszych domach zadomowią się różni wirtualni asystenci. Taka trzecia działka to wszelkie rzeczy związane z optymalizacją i kontrolą, bo my jako ludzie próbujemy różne procesy optymalizować, ale mimo że nasze mózgi są tak wspaniałe, do niektórych rzeczy nadają się słabiej i jeżeli zaczynają się jakieś procesy z dużą ilością danych, gdzie zależności są nieliniowe, to bywa że nam jest trudniej znaleźć dziurę w całym, a dla algorytmów uczących może być to łatwiejsze i to też widać już w tej chwili w wielu zastosowaniach.
Bardzo Ci dziękuję za Twoją opinię i za to, że udało Ci się znaleźć czas, bo wiem, że z czasem jest generalnie ciężko, więc fajnie, że się udało.
Ja również bardzo dziękuję. Było mi bardzo miło z Tobą porozmawiać.
Na koniec przypomnę, że trzecia edycja kursu zaczyna się od 29 października 2018 roku. Dokonując zakupu do 15 czerwca, uzyskasz bonus o wartości ponad 2.000 złotych, otrzymasz między innymi bilet na jednodniowe szkolenie tzw. Tour, który odbędzie się we wrześniu 2018 roku – wybierzesz sobie jedno z pięciu dostępnych miast. Dostaniesz też bezpłatną wejściówkę na konferencję dla absolwentów edycji, ale również dla osób zainteresowanych praktycznym uczeniem maszynowym – będą tam różne inspiracje, intensywny networking.
Dodatkowo otrzymasz ponad 20 godzin moich webinarów, w których odpowiadam na pytania z życia wzięte, które zadawali różni ludzie, więc pytania są naprawdę zróżnicowane. Dostaniesz moduł zerowy, w którym robię mocne wprowadzenie do Pythona i bibliotek, żeby jeszcze bardziej ułatwić Twoje życie podczas kursu, ale również po nim, żebyś mógł/mogła zastosować tę wiedzę w praktyce.
Na koniec wspomnę jeszcze o webinarach, które organizuję, jeden bezpłatny odbył się 15 maja i jest dostępny (i prezentacja).
Kolejny jest zaplanowany na 12 czerwca i tematem będzie wprowadzenie do statystyki, webinar jest bezpłatny, ale polecam się zapisać na dataworkshop.eu/free-webinar.
Jeden Komentarz
Bartosz Ptak
Super podcast! Gość poruszył wiele ciekawych tematów.