Sztuczna Inteligencja stała się w ciągu ostatnich kilku lat jednym z najgorętszych tematów w świecie IT. Od startup-ów po największe firmy globalne. Każdy stara się znaleźć nowe sposoby jej wykorzystania, aby zbudować aplikacje czy systemy, które działałyby lepiej niż poprzednie wersje, umożliwiłyby tworzenie rzeczy, które wcześniej były niemożliwe lub zbyt czasochłonne. Sama koncepcja sztucznej inteligencji, mechanizmów, które wykorzystujemy, aby budować inteligentne systemy w większości nie jest jednak niczym nowym i istnieje już od kilkudziesięciu lat. Mimo wszystko to właśnie teraz obserwujemy jak poważnie może zmieniać nasz świat.
Powodów jest kilka. Po pierwsze, w dobie Internetu mamy dostęp do niemal nieograniczonego zbioru danych uczących, które możemy wykorzystać, aby nasze modele stawały się lepsze i dokładniejsze. Nawet jeśli jednak nie chcemy wykorzystywać danych z Internetu, to może się okazać, że nasze własne dane, które gromadzimy non stop na naszych serwerach, mogą w pełni wystarczyć. Drugim powodem jest dostęp do dostatecznie dużej mocy obliczeniowej – nauka modeli sztucznej inteligencji nie jest czynnością banalną i wymaga odpowiedniego zaplecza serwerowego. Okazuje się, że w dobie chmury obliczeniowej, gdzie w ciągu kilku minut możemy uruchomić 1 czy też 10 000 serwerów, moc obliczeniowa nie jest już problemem. Trzecim powodem przełomu, który wynika poniekąd z poprzednich, jest opracowanie lub ulepszenie algorytmów i narzędzi AI (przykładowo TensorFlow, Apache MXNet, Gluon i wiele innych).
Widzimy zatem, że budowanie aplikacji i systemów wykorzystujących AI stało się prostsze, ale wciąż nie jest banalne. Czy można zatem jednak to jeszcze uprościć? Tak, dzięki wykorzystaniu chmury obliczeniowej. Okazuje się bowiem, że obok znanych wszystkim usługom, takim jak serwery wirtualne, bazy danych czy usługi archiwizacyjne, istnieją również usługi AI.
Każdy projekt informatyczny, który będzie wykorzystywał AI jest oczywiście inny, mimo wszystko może się okazać, że jesteśmy w stanie wybrać takie usługi z portfolio chmury obliczeniowej, dzięki którym będziemy w stanie go zrealizować szybciej. Firmy, które nie mają kompetencji z zakresu AI, ale mimo wszystko pragną wykorzystać zalety jakie niesie, mogą wykorzystać gotowe usługi AI, które zostały opracowane, aby rozwiązać często pojawiające się problemy. Przyjrzyjmy się przykładowym usługom AI w ramach portfolio usług Amazon Web Services:
Jak widzimy, są to usługi, które rozwiązują (za pomocą sztucznej inteligencji) popularne problemy z którymi możemy spotkać się, projektując i budując nowe aplikacje czy systemy. Przykładowo, usługa Amazon Rekognition pozwala analizować zdjęcia oraz filmy, aby wykrywać osoby i przedmioty na zdjęciach, badać poprawność tych zdjęć czy też opisywać osoby na zdjęciach. Przykładem firmy wykorzystującej tę usługę może być Pinterest, czyli platforma, dzięki której w chwili obecnej ponad 200 milionów użytkowników z całego świata dzieli się swoimi zdjęciami. Innym przykładem może być Amazon Polly, usługa, która została zbudowana w Polsce, pozwalająca na konwersję tekstu na audio w ponad 25 językach, w tym również w języku polskim. Jednym z przykładów użytkowników usługi jest platforma Duolingo, czyli jedna z największych platform do nauki języków obcych. Sprawdźmy, jak brzmi ‘sztucznie’ wygenerowany popularny wierszyk, przeczytany przez tę usługę.
W Szczebrzeszynie chrząszcz brzmi w trzcinie
Czasem jednak, system czy aplikacja, którą chcemy zbudować, nie ogranicza się do powyższych ‘prostych’ czynności i jest bardziej specyficzna dla naszego biznesu, firmy. Co wówczas? Okazuje się, że ponownie chmura przychodzi z pomocą i ułatwia nam zbudowanie takiej aplikacji. Pozostańmy zatem w strefie chmury AWS i zobaczmy co z portfolio AWS mogłoby nam pomóc. Jedną z najnowszych usług w ramach chmury jest Amazon SageMaker – to w pełni zarządzana platforma, która umożliwia programistom i analitykom szybkie i łatwe tworzenie, szkolenie i wdrażanie modeli uczenia maszynowego na dowolną skalę. Celem usługi jest usunięcie barier, które zazwyczaj spowalniają programistów chcących korzystać z uczenia maszynowego.
Ideę usługi dobrze prezentuje poniższy schemat. Zadaniem usługi jest bowiem dostarczenie użytkownikowi jednego interfejsu, za pomocą którego będzie mógł połączyć się ze swoimi danymi, rozpocząć naukę modelu SageMaker (powoływane są wówczas bowiem serwery, na których następuje nauka sieci), dostroić go, a następnie wdrożyć.
Pojedynczy interfejs o którym tutaj mowa, to popularny notebook Jupyter, znany osobom, które miały do czynienia z projektami z ekosystemu BigData. Warto również odnotować, że usługa SageMaker to szkielet ułatwiający budowanie aplikacji AI, ale sam w sobie nie jest technologię zamkniętą. W ramach usługi dostajemy dostęp do wielu popularnych narzędzi sztucznej inteligencji, które możemy wykorzystać, aby zbudować i wyszkolić własny model. Aby ułatwić pracę z AI, Amazon SageMaker zawiera najbardziej popularne algorytmy uczenia maszynowego, które zostały wstępnie zainstalowane i zoptymalizowane w celu zapewnienia do 10-krotnej wydajności, jaką można znaleźć, uruchamiając te algorytmy w innym miejscu. Usługa Amazon SageMaker jest również wstępnie skonfigurowana do uruchamiania TensorFlow i Apache MXNet na kontenerach Docker. Można również pobrać te kontenery (dostępne jako open source) do lokalnego środowiska i użyć zestawu Amazon SageMaker Python SDK, aby przetestować skrypty w trybie lokalnym przed użyciem programu Amazon SageMaker do szkolenia lub hostowania modelu w procesie produkcyjnym.
Na obrazku powyżej widać również informacje o Gluonie. Warto zatrzymać się tutaj na trochę dużej, gdyż Gluon to interfejs deep learing opracowany wspólnie przez firmy Amazon i Microsoft, którego celem jest ułatwienie developerowi budowanie modeli nauczania maszynowego. Gluon zapewnia bowiem przejrzysty, zwięzły interfejs API do definiowania modeli uczenia maszynowego z wykorzystaniem zestawu gotowych, zoptymalizowanych komponentów sieci neuronowych. Programiści, którzy są nowicjuszami w uczeniu maszynowym, uznają ten interfejs za bardziej znany z tradycyjnego kodu, ponieważ modele uczenia maszynowego mogą być definiowane i manipulowane tak jak każda inna struktura danych. Bardziej doświadczeni naukowcy i badacze cenią sobie umiejętność szybkiego budowania prototypów i wykorzystania dynamicznych wykresów sieci neuronowych dla zupełnie nowej architektury i modeli, a wszystko to bez poświęcania prędkości szkolenia.