Strona Główna / Blog

Nowe Oblicze AI. Zbieramy Dane w IBM Watson Studio

Przemek Malak

Przemek Malak

AWS Architect (Development) w Chmurowisku. Ponad 18 lat w branży IT. Architekt rozwiązań chmurowych i mobilnych oraz Programista (przez duże P). Entuzjasta rozwiązań Serverless, posiadacz kilku certyfikacji AWS (Architect, Developer, SysOps).

Ilość danych, które gromadzimy każdego dnia, jest ogromna. Jednak same w sobie nie mają one większej wartości. Przeważnie są to ciągi liczb lub tekstu, które dla przeciętnego człowieka wyglądają jak hieroglify.

Dopiero za pomocą odpowiednich narzędzi możemy na podstawie potężnych zbiorów danych wyciągać wnioski, przewidywać zjawiska, czy rozpoznawać trendy.

Jednym z takich narzędzi jest IBM Watson Studio, usługa, która zmienia sposób pracy z narzędziami do budowy modeli machine learning, w tym także deep learning. IBM Watson Studio oferuje kompleksowe środowisko, w którym możemy wraz z naszym zespołem pracować z danymi zgromadzonymi z różnych źródeł.

Dlaczego IBM Watson Studio?

IBM Watson Studio jest środowiskiem przeznaczonym dla osób zajmujących się dziedziną Data Science. Platforma ta łączy w jednym miejscu najbardziej popularne narzędzia open source oraz unikalne funkcjonalności IBM. Mamy także dostępne mechanizmy społecznościowe dzielenia się wiedzą i pracą grupową. Dzięki temu analitycy otrzymują spójne, zintegrowane środowisko pracy, które mogą wykorzystywać do analizy i rozwiązywania szerokiego zakresu problemów z dowolnego sektora biznesowego. IBM Watson Studio to gotowe środowisko, bez potrzeby jego konfiguracji czy dosinatlowywania poszczególnych komponentów. Narzędzie to udostępnia również gotowe konektory do dowolnych baz zarówno on-premis jak i w chmurze. Środowisko zapewnia mechanizmy tworzenia, przeliczania oraz harmonogramowania modeli. Projekty zapewniają możliwość wymiany zasobów i współpracy przy wykonywaniu zadań. Analityka może odbywać się na gotowych, zaimportowanych zasobach z plików lokalnych bądź wytworzonych bezpośrendio w środowisku narzędziach. IBM Watson Studio to elastyczne środowisko dla analityka na każdym poziomie zaawansowania.

Pracując z IBM Watson Studio mamy dostępne wiele narzędzi. 

1. Jupyter Notebooks. Dostajemy w pełni skonfigurawane środowisko z bardzo dużą liczbą preinstalowanych bibliotek. Możemy oczywiście doinstalować nowe. Od ręki mamy dostępne najpopularniejsze biblioteki deep learning t.j.: TensorFlow, Theano, Keras, Lasagne, Caffe. 

2. Rstudio i aplikacje Shiny. Dla analityków którzy posługują się w swojej pracy językiem R dostępne jest zintegrowane środowisko Rstudio w którym możemy tworzyć i uruchamiać analizy. Mamy także dostępny framework Shiny, który pozwoli nam na tworzenie interaktywnych aplikacji i dashboardów, którymi będziemy mogli podzielić się z innymi.

3. IBM Machine Learning. Jeżeli nie posiadamy jeszcze szerokiej wiedzy na temat analizy danych i modelowania data mining, pomoże nam interaktywny asystent, który automatycznie przetworzy dane i zbuduje model w oparciu o algorytmy udostępniane przez IBM Machine Learning. Przygotowanie próbki, wybór transformacji, a następnie technik uczących może odbywać się w pełni automatyczny sposób bądź za pomocą intuicyjnego kreatora. Mechanizm poprowadzi użytkownika ‘za rączkę’ przez proces uczenia, ewaluacji i operacjonalizacji modelu, w tym przez udostępnianie jego przeliczeń w formie API do wywołań w czasie rzeczywistym.

4. Canvas. Moduł, który zapewni graficzne, intuicyjne środowisko wspierające nas na każdym etapie pracy. Umożliwia tworzenie analitycznych schematów przetwarzania danych za pomocą powiązanych ze sobą predefiniowanych węzłów, które wspierają operacje wykonywane na danych. Dzięki temu możemy budować skomplikowane procesy przetwarzania danych bez napisania linijki kodu. Dodatkowo, do wyboru mamy szeroki wachlarz gotowych, ale edytowalnych węzłów do budowy modeli predykcyjnych.

Jak zacząć z IBM Watson Studio?

Rozpoczęcie pracy z usługą nie jest skomplikowane.

  1. Logujemy się na nasze konto w chmurze IBM (https://console.bluemix.net) lub zakładamy nowe. Wystarczy nam konto Lite.
  2. Z katalogu usług IBM (Catalog) wybieramy oczywiście ‘Watson Studio’:

I przechodzimy do konfiguracji usługi.

  1. Nadajemy jej nazwę (1) i wybieramy region (3). To właściwie… wszystko!

W wersji Lite mamy do dyspozycji co prawda tylko jednego użytkownika, ale przysługuje mu 50 darmowych godzin pracy w środowisku. Do zapoznania się z usługą, czy nawet wykonywania drobnych zadań, w zupełności wystarczy.

IBM Watson Studio – Projekty

Praca z Watson Studio zorganizowana jest wokół projektów. To właśnie w projekcie skupiamy naszych współpracowników, podłączamy źródła danych, czy używamy narzędzi do ich obróbki i analizy.

Wsród oferowanych narzędzi są oczywiście notatniki Jupyter. Możemy korzystać także z RStudio.

Po zalogowaniu się do Watson Studio musimy utworzyć pierwszy projekt (Create a project):

Już w momencie tworzenia projektu możemy zdefiniować, jakie narzędzia udostępni nam usługa. Na początek można też wybrać projekt typu Standard i dodać potrzebne usługi później.

Warto wspomnieć, że w momencie tworzenia projektu uruchamiana jest także dla nas powiązana z nim usługa storage:

Storage obiektowy w IBM Cloud

Nasze dane przechowujemy w tak zwanych bucketach (nazywanych też koszykami). Podczas tworzenia projektu jeden taki bucket zostaje dla nas utworzony:

Korzystając ze storage’u obiektowego w chmurze IBM, możemy wybierać pomiędzy różnymi klasami: Standard, Vault, Cold Vault, Flex, oraz obszarami, w których nasze dane będą przechowywane: Cross Region,Regional i Single Data Center.

W zależności od wyboru, nasze dane będą przechowywane w różnych miejscach, stając się przez to bardziej bezpieczne.

W planie Lite mamy dostępne dla naszego projektu 25 GB miejsca na dane. Na dobry początek – wystarczająco.

W razie potrzeby możemy także nasze dane trzymane w storage przeszukiwać za pomocą SQL. To także może być przydatne.

Dobrze także skorzystać z automatycznej archiwizacji danych. Po jakimś czasie, kiedy nie będziemy już ich używać, warto je przenieść do archiwum.

Dodajemy dane

Po utworzeniu naszego projektu mamy dostęp do panelu, w którym konfigurujemy między innymi źródła danych dla naszych działań.

Jedną z możliwości jest wykorzystanie danych udostępnianych przez społeczność (Community).

Po przefiltrowaniu zasobów (1) i znalezieniu interesującego nas zbioru danych, możemy dodać go do naszego projektu (2).

W tym momencie zaimportowany zbiór będzie dla nas dostępny w projekcie w zakładce Assets.

Plik ten został oczywiście zapisany także w naszym buckecie w usłudze storage:

Tworzenie własnych plików

Nic nie stoi na przeszkodzie, abyśmy dodali do projektu własne pliki. Najprościej dokonamy tego poprzez wybór ikonki Find and add data.

Umożliwi nam to wgranie do Watsona plików na przykład z lokalnego komputera:

Mamy już w naszym projekcie dwa różne zbiory danych. Teraz spróbujemy z nimi popracować:

Watson Studio – Tworzymy notatnik

Aby móc pracować w IBM Watson Studio, musimy uruchomić jakieś środowisko. Do wyboru mamy ich sporo:

Aby dodać jedno z nich do naszego projektu, klikamy w Add to project:

Dodajemy nowy notatnik:

W zależności od wybranego środowiska, nasz notatnik będzie zużywał różne ilości zasobów:

Możemy spróbować z opcją darmową:

Pozostaje nam jeszcze tylko nazwanie naszego notatnika i klikamy [Create notebook]. Po chwili zobaczymy nasze środowisko w postaci notatnika Jupyter:

IBM Watson Studio – Korzystanie z danych

Jeżeli wejdziemy do zakładki Assets w naszym projekcie, zobaczymy listę wszystkich zasobów:

Zarówno nasze zbiory danych, jak i utworzony notatnik, stanowią część jednego projektu. Nie powinno być więc problemu z wykorzystaniem plików z danymi w Jupyter.

IBM Watson Studio bardzo ułatwia import danych do naszego notatnika.

Jeżeli klikniemy w nim na ikonkę importu danych (poniżej), otrzymamy możliwość wstawienia kodu, który pomoże nam zaimportować dane:

  • Wybranie opcji Insert Credentials wstawi do notatnika kod definiujący zmienne niezbędne do połączenia ze storage’ami zaimportowanie pliku.

# @hidden_cell
# The following code contains the credentials for a file inyour IBM Cloud Object Storage.
# You might want to remove those credentials before you share your notebook.
credentials_1 = {
    'IBM_API_KEY_ID': 'xIFpx-1dfgdfgdff9hhfrer8Wu0bbycvf8VerU_bno',
    'IAM_SERVICE_ID': 'iam-ServiceId-63460ab9-34a-4a4f-a4bd-bd0fb2116a96',
    'ENDPOINT': 'https://s3.eu-geo.objectstorage.service.networklayer.com',
    'IBM_AUTH_ENDPOINT': 'https://iam.bluemix.net/oidc/token',
    'BUCKET': 'project1-donotdelete-pr-vbvucfprlya70f',
    'FILE': 'test.xlsx'
}

  • Opcja Insert StreamingBody object  wstawi kod, który utworzy klienta storage oraz zwróci obiekt typu ibm_botocore.response.StreamingBody dla konkretnego pliku (w naszym przypadku jest to arkusz Excela):

import sys
import types
import pandas as pd
from botocore.client import Config
import ibm_boto3

def __iter__(self): return 0

# @hidden_cell
# The following code accesses a file in your IBM Cloud Object Storage. It includes your credentials.
# You might want to remove those credentials before you share your notebook.
client_c9b83d5a25d049a6ad76736efc5ab839 = ibm_boto3.client(service_name='s3',
   ibm_api_key_id='xIFpx-SOftEJIq1dfgdfgdff9hhfrer8Wu0bbycvfU_bn',
   ibm_auth_endpoint="https://iam.bluemix.net/oidc/token",
   config=Config(signature_version='oauth'),
   endpoint_url='https://s3.eu-geo.objectstorage.service.networklayer.com')

# Your data file was loaded into abotocore.response.StreamingBody object.
# Please read the documentation of ibm_boto3 and pandas to learn more about your possibilities to load the data.
# ibm_boto3 documentation: https://ibm.github.io/ibm-cos-sdk-python/
# pandas documentation: http://pandas.pydata.org/
streaming_body_1 = client_c9b83d5a25d049a6ad76736efc5ab839.get_object(Bucket='project1-donotdelete-pr-vbvucfprlya70f', Key='test.xlsx')['Body']
# add missing __iter__ method, so pandas accepts body as file-like object
if not hasattr(streaming_body_1, "__iter__"):streaming_body_1.__iter__ = types.MethodType( __iter__, streaming_body_1 )

Mając ten obiekt, możemy korzystać z danych w pliku.

W naszym przypadku potrzebować będziemy metody wczytującej dane z arkusza Excela. Może ona wyglądać następująco:

def load_excel(fileobject,sheetname):
   excelFile = pd.ExcelFile(fileobject)
   df = excelFile.parse(sheetname)
   return df

Definiujemy metodę (1), następnie przekazujemy do niej instancję typu StreamingBody (2) i pozostaje nam jedynie wybrać nazwę arkusza z pliku (3) oraz wyświetlić dane:

W podobny sposób możemy na przykład wczytać do notatnika dane w formacie JSON.

Powinna wystarczyć następująca metoda, która wczyta nasz plik oraz zamieni go na typ słownikowy w Pythonie:

def load_dictionary(fileobject):
    text = fileobject.read()
    dict = json.loads(text)
    return dict

Podsumowanie

Integracja usługi storage z IBM Watson Studio nie ogranicza się oczywiście tylko do notatników Jupyter. Także w przypadku innych usług będą one korzystały z naszego storage’u obiektowego.

Na przykład kiedy tworzymy i trenujemy model visual recognition, pliki będą również przechowywane w projekcie w naszym storage’u.

Jest to według mnie bardzo wygodne rozwiązanie. Nasze zasoby są dostępne jako Assetsw naszym projekcie, a my mamy wszystko pod ręką.

Dołącz do listy mailingowej!

Dołącz do naszego newslettera

Staramy się wysyłać tylko wartościowe informacje, np. co miesiąc dostaniesz spis najważniejszych nowości z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.