MARGO

Aktualności

Wprowadzenie do TensorFlow na datalab od Google Cloud Platform

Odkryj TensorFlow i opracuj swój pierwszy program


11/05/2018

Czym jest TensorFlow?

 

TensorFlow to biblioteka programów do obliczeń numerycznych, działająca na zasadzie open source od 2015 r., opracowana przez Google. Szczególną cechą TensorFlow jest wykorzystanie diagramów przepływu danych (data flow graphs).

 

TensorFlow został zaprojektowany przez naukowców i inżynierów Google, aby realizować projekty badawcze w dziedzinie maszynowego uczenia się (machine learning) oraz głębokich sieci neuronowych (deep neural networks). System pozostaje mimo to dość ogólny, co pozwala  na szeroką gamę innych zastosowań. TensorFlow umożliwia przede wszystkim optymalne uczenie się modeli wymagających dużej ilości danych (na przykład banków zdjęć).

 

Elastyczna architektura TensorFlow umożliwia wdrożenie obliczeń na jednym lub większej liczbie procesorów (CPU) lub kart graficznych (GPU) na komputerze osobistym, serwerze itp. bez konieczności ponownego pisania kodu.

Firma Google stworzyła także Tensor Processing Units (inaczej TPU), wyspecjalizowany układ scalony, zaprojektowany z myślą o rozwoju maszynowego uczenia się i stosowania  TensorFlow. TPU zostały zaprojektowane do wykorzystywania i testowania modeli, a nie do ich uczenia się. Od lutego 2018 r. TPU są dostępne w wersji beta Google Cloud Platform.

 

TensorFlow bazuje na platformie DistBelief (Google 2011) i interfejsie Pythona, posiadającego nietypową, niską formę (bardziej przystosowaną do architektury maszyn) w porównaniu do zwykłego użycia Pythona. Nie trzeba więc wpadać w panikę, sprawne posługiwanie się TensorFlow wymaga czasu!

 

TensorFlow jest obecnie używany przez liczne firmy i aplikacje – w tym, między innymi: Airbnb, Nvidia, Uber, Dropbox, Ebay, Google (oczywiście), Snapchat, Twitter… i mnóstwo innych!

Dzięki datalab TensorFlow może być używany na Google Cloud Platform (GCP), w konfiguracji domyślnej lub po dostosowaniu właściwości maszyny wirtualnej, takich jak: liczba serc, wybór CPU/GPU itp.

 

Jak wygląda TensorFlow?

 

Jak napisano powyżej, TensorFlow przedstawia obliczenia w formie grafu.

Wierzchołki grafu przedstawiają działania matematyczne, takie jak dodawanie, mnożenie, mnożenie macierzy, obliczanie pochodnych funkcji itp.

Krawędzie grafu to tensory łączące wierzchołki. Tensor może być sumą, wektorem, obrazem itp. Każdy wierzchołek grafu przybiera więc na początku różne tensory, przeprowadza obliczenia, i oddaje nowe tensory.

 

Przykład:

1+4=5

deriv(2x)=2

 

Kod przypisany do TensorFlow dzieli się na dwa główne etapy, budowę i realizację. W fazie budowy, zmienne i działania na grafie są określane i tworzone. Tworzenie grafu jest następnie automatycznie przetwarzane przez TensorFlow, co umożliwia optymalizację i zrównoleglanie kodu i realizacji.

Faza realizacji wykorzystuje sesję do przeprowadzania działań na grafie. Graf wykona obliczenie dopiero po utworzeniu sesji. Sesja umożliwia ustawienie działań grafu w odpowiednim elemencie (CPU/GPU/TPU) i udostępnia metody ich realizacji. Uruchomienie obliczeń przeprowadza się za pomocą metody run() sesji, czym zajmiemy się nieco dalej. Ten system realizacji obliczeń jest jedną z głównych właściwości TensorFlow – umożliwia on przeprowadzenie wszystkich działań grafu za jednym razem.

TensorFlow posiada wiele opcji umożliwiających  głębokie uczenie się (Deep Learning) – optymalnie ułatwia on tworzenie sieci neuronowej, jej wykorzystanie i uczenie się.

 

Google Cloud Platform

 

Google Cloud Platform (lub GCP) to platforma online opracowana przez Google. Platforma ta udostępnia usługę tworzenia maszyn wirtualnych i sieci.

 

Do czego można ją wykorzystać?

* do wykonywania obliczeń

* do przechowywania danych

* do maszynowego uczenia się/głębokiego uczenia się

* i do wielu innych rzeczy!

 

W tej mini instrukcji pokażemy jak:

* otworzyć darmowe konto na GCP

* używać datalab na GCP na komputerze osobistym działającym w systemie GNU/Linux

* napisać pierwszy program na TensorFlow

 

Tworzenie konta na GCP

Jak wejść na GCP?

* otworzyć stronę https://cloud.google.com/

* kliknąć Try it free

* wypełnić formularz

 

W ten sposób otrzymasz bezpłatnie około 300 dolarów/250 euro do wykorzystania na platformie w ciągu roku. Zostaniesz poproszony o podanie informacji dotyczących karty płatniczej. Z konta NIE zostaną pobrane pieniądze. Jest to środek ostrożności mający na celu zabezpieczenie GCP przed niewłaściwym wykorzystywaniem.

 

Następnie należy:

* kliknąć Discover the console. Uruchomi się poradnik, który wspomoże naukę obsługi platformy.

* utworzyć/wybrać projekt

* wykonać instrukcje

* kliknąć Go to console.

 

Utwórz (lub wybierz) projekt na GCP, klikając:

https://console.cloud.google.com/cloud-resource-manager

Kliknij poniższy link, aby aktywować Google Compute Engine oraz Cloud Source Repositories APIs dla wybranego projektu:

https://console.cloud.google.com/flows/enableapi?apiid=compute,sourcerepo.googleapis.com

 

Instalacja gcloud na komputerze

 

Teraz przejdziemy do instalacji Google Cloud SDK na Twoim komputerze. W tym momencie Google Cloud SDK nie pracuje z Pythonem 3. Sprawdź, czy Twój komputer posiada Python 2 typ Python 2.7.9 lub nowszą wersją, z użyciem polecenia:

 

      python2 –V

 

W razie potrzeby zaktualizuj Pythona

 

      sudo apt-get install python2.7

 

Następnie pobierz jedną z poniższych paczek w zależności od architektury urządzenia, jakim dysponujesz:

Platforma Link Rozmiar
Linux 64-bit (x86_64) https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-187.0.0-linux-x86_64.tar.gz 18,5 MB
Linux 32-bit (x86) https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-187.0.0-linux-x86.tar.gz 18,1 MB

 

Możesz wypakować plik w dowolnym miejscu systemu plików.

 

      tar zxvf nom_du_fichier.tar.gz

 

Wprowadź poniższe dwa wiersze poleceń:

 

      source ‚./google-cloud-sdk/path.bash.inc’

      source ‚./google-cloud-sdk/completion.bash.inc’

 

Wprowadź następnie komendę gcloud init, aby zinicjalizować SDK.

 

      ./google-cloud-sdk/bin/gcloud init

 

Wykonaj instrukcje dotyczące konfiguracji: wybór/tworzenie projektu, wybór strefy itp.

 

Możesz uzyskać dostęp do gcloud z użyciem komendy:

 

      gcloud –help

 

Dostęp do datalab

 

Najpierw zaktualizuj gcloud

gcloud components update

 

Następnie zainstaluj gcloud datalab component.

gcloud components install datalab

 

Stwórz instancję Cloud Datalab. Nazwa instancji musi rozpoczynać się od małej litery, po której następują maksymalnie 63 znaki: małe litery, cyfry lub łączniki.

Uwaga!  Nazwa instancji nie może kończyć się łącznikiem.

datalab create nazwa_twojej_instancji

 

Wykonaj instrukcje. Wybierz sektor geograficzny w pobliżu miejsca, gdzie się znajdujesz. Wpisz zdanie, aby wygenerować klucz publiczny.

Uwaga! Jeśli proces trwa zbyt długo lub nie skończy się pomyślnie, prosimy ponowić tworzenie instancji. Podczas tego etapu często zdarzają się problemy z łączem.

 

Po powrocie na pulpit GCP i po kliknięciu 3 pasków u góry po lewej, a następnie Compute Engine, utworzona instancja będzie aktywna.

 

W końcu, po podłączeniu do datalab, otwórz w przeglądarce stronę główną Cloud Datalab, używając następującego adresu: http://localhost:8081

W ten sposób uzyskasz dostęp do Jupyter notebook. Utwórz nowy Jupyter notebook, klikając symbol ‘+’ po lewej od Notebooka.

 

Uwaga: aby ponownie uruchomić instancję po opuszczeniu jej

 

datalab connect nazwa_twojej_instancji

 

W dalszej części proponujemy wprowadzenie do TensorFlow na Google Cloud Platform.

 

Mój pierwszy program w TensorFlow na GCP

 

    1) Witaj świecie!

 

Wprowadź poniższe wiersze poleceń do Jupyter notebook. Aby zatwierdzić komórkę, naciśnij Shift+Enter.

 

      import tensorflow as tf           # Importowanie biblioteki TensorFlow
witaj = tf.constant(‚Witaj!’) # Ustalenie stałej „Witaj” zawierającej ciąg znaków ‚Witaj!’

 

Jeśli wpiszesz witaj do notebooka, otrzymasz

            <tf.Tensor ‚Const:0’ shape=() dtype=string>

To normalne, ponieważ brakuje podstawowej cegiełki TensorFlow, o której wspominaliśmy wcześniej w tym artykule – sesji w funkcji tf.Session() TensorFlow
sesja = tf.Session()           # Tworzenie sesji

Może pojawić się wiadomość o błędzie – należy ją zignorować.

 

session.run(witaj)             # Realizacja sesji

 

‚Witaj!’

Powyższy przykład wprowadza dwa najważniejsze elementy dla każdego programu w TensorFlow – funkcje Session() i run().

 

    2) Podstawowe działania matematyczne

 

x = tf.constant(3)                      # Określenie stałej x=3

      y = tf.constant(2)                      # Określenie stałej x=2

 

X = tf.constant([1,0], shape=(2,1))     # Określenie stałego wektora X

M = tf.constant([1,1,2,2], shape=(2,2)) # Określenie stałej matrycy M

 

      resultat_1 = tf.add(x, y)               # Dodawanie

      resultat_2 = tf.multiply(x, y)          # Mnożenie

resultat_3 = tf.matmul(M, X)            # Mnożenie macierzy

 

      session = tf.Session()                  # Tworzenie sesji

 

      session.run(resultat_1)                 # Realizacja sesji

      session.run(resultat_2)                 # Realizacja sesji

session.run(resultat_3)                 # Realizacja sesji

 

Podobnie jak wcześniej – nie należy zapomnieć o realizacji sesji!

 

    3) Zmienne i inicjalizacja

 

W TensorFlow zmienne są określane i zarządzane za pomocą tf.Variable().

x=tf.Variable(0)

 

Zmienna to tensor, którego wartość może się zmienić wskutek wykonania obliczenia.

      x = tf.constant(0)

      y = tf.Variable(x + 1)

 

Uwaga: zmienne muszą zostać zainicjowane, aby graf mógł ich użyć. W tym celu używa się funkcji tf.global_variables_initializer().

Przykład programu:

import tensorflow as tf

 

      x = tf.constant(0)

      y = tf.Variable(x + 1)

 

      initialisation = tf.global_variables_initializer() # Inicjalizacja zmiennych

 

      with tf.Session() as session:

      session.run(initialisation)

      print(session.run(y))

Przykład użycia: Zmienna może zostać wykorzystana do wag w sieci neuronowej, w tym wypadku podlega aktualizacji podczas trenowania modelu.

    4) Symbole zastępcze (Placeholders)

 

Symbol zastępczy (Placeholder) to tensor stworzony dzięki metodzie tf.placeholder(). Tworząc go, nie nadaje mu się żadnej konkretnej wartości, precyzuje się jedynie typ i wymiar danych

x = tf.placeholder(tf.float32, shape=(1024, 1024)) # tworzenie symbolu zastępczego x typu float32 o wymiarach (1024, 1024)

 

Symbol zastępczy (Placeholder) może zostać uznany za zmienną, która uzyska wartości w programie później, na etapie realizacji. Wartość jest ustalana dzięki przeprowadzeniu (run) obliczenia.

      x = tf.placeholder(tf.float32, shape=(1024, 1024)) # tworzenie symbolu zastępczego x

      y = tf.matmul(x, x) #

 

      z tf.Session() as sess:

             rand_array = np.random.rand(1024, 1024) # określanie rand_array

print(sess.run(y, feed_dict={x: rand_array}))  # nadaje się x wartość rand_array podczas realizacji

 

Przykład użycia: przy każdej iteracji uczenia sieci neuronowej używa się symbolu zastępczego (Placeholder) do zasilenia modelu nową paczką obrazów.

 

 

Wnioski

 

Dysponujesz obecnie kwotą w wysokości 250 euro na GCP i wiesz, jak dostać się do datalab ze swojego komputera. Masz za sobą pierwsze linie kodu w TensorFlow i posiadasz podstawy, umożliwiające zrozumienie zaawansowanych kodów napisanych w tym języku.

Jeśli chcesz pójść o krok dalej, to w datalab na GCP znajdziesz bardziej zaawansowane przykłady użycia TensorFlow oraz inne samouczki dotyczące maszynowego uczenia się.

Miłego odkrywania!

 

Bibliografia i źródła

 

https://www.tensorflow.org/

https://github.com/tensorflow/tensorflow

https://cloud.google.com/

https://cloud.google.com/datalab/docs/quickstart

https://cloud.google.com/solutions/running-distributed-tensorflow-on-compute-engine

https://www.nvidia.fr/daa-center/gpu-accelerated-applications/tensorflow/

https://blog.xebia.fr/2017/03/01/tensorflow-deep-learning-episode-1-introduction/

https://learningtensorflow.com/lesson2/


Big Data
Dane
Google
Aktualności

Projekty z dziedziny Data Science to wciąż droga pełna przeszkód

Projekty z dziedziny Data Science to wciąż droga pełna przeszkód W czasach, gdy wiele firm pretenduje do miana „spółek działających w oparciu o dane” nadal wiele projektów z zakresu Data Science kończy się porażką. W większości przypadków porażki wynikają z dobrze znanych i powtarzalnych przyczyn. Pierre Fares, Digital Offering & Business Transformation Officer w firmie Margo, opowiada o częstych pułapkach, których bezwzględnie należy unikać.

Więcej 
Aktualności

Tutorial: Podstawy stosowania Pythona do prognozowania szeregów czasowych

W tutorialu wprowadzamy kilka podstawowych pojęć z zakresu szeregów czasowych, aby umożliwić „szybką” predykcję przyszłych wartości w odniesieniu do danych czasowych.

07/11/2018 Więcej 
Aktualności

Utworzenie scentralizowanej platformy zarządzania logami za pomocą pakietu narzędzi Elastic

Ilość danych generowanych przez nasze systemy i aplikacje stale rośnie, co powoduje wzrost liczby centrów danych i systemów przechowywania danych. W obliczu tej eksplozji danych i inwestycji w wiedzę fachową i zasoby, decydenci potrzebują uzasadnionych analiz i zaawansowanych tabel, umożliwiających im zarządzanie swoimi systemami i klientami.

04/06/2018 Więcej 
Aktualności

Data Science w świecie handlu detalicznego: 10 najważniejszych przypadków wykorzystania

Data Science w coraz większym stopniu wpływa na modele biznesowe we wszystkich gałęziach przemysłu, zwłaszcza w sprzedaży detalicznej. Według IBM, 62% detalistów deklaruje, że wykorzystanie technik związanych z Big Data daje im poważną przewagę konkurencyjną. Dzięki data sicence możemy sprawdzić, czego potrzebuje klient i w jakim momencie jest obecnie na wyciągnięcie ręki. Aby to zrobić, musimy jedynie posiadać odpowiednie narzędzia i wdrożyć dobre procedury związane z ich używaniem. W niniejszym artykule przedstawiamy 10 najważniejszych zastosowań data science w handlu detalicznym.

01/06/2018 Więcej 
Aktualności

Zegary Lamporta i wzorzec Idempotent Producer (Kafka)

Znacie zegary Lamporta? Podczas konferencji Devoxx France 2018 była okazja, w trakcie bardzo interesującej prezentacji DuyHai DOAN, do poznania lub ponownego poznania tego algorytmu, sformalizowanego przez Lesliego Lamporta w 1978 r., częściej niż kiedykolwiek używanego dzisiaj w dziedzinie systemów rozproszonych, który w szczególności skłonił twórców Apache Kafka do wprowadzenia wzorca Idempotent Producer.

25/05/2018 Więcej 
Aktualności

Uruchamianie aplikacji Jupyter notebook w Google Cloud do wyzwania Kaggle

Kiedy rozpoczynasz wyzwanie Kaggle, potrzebny jest zazwyczaj komputer do przechowywania w pamięci całego zestawu danych i przyspieszenia szkolenia za pomocą procesora. Zamiast kupować nowy komputer wolę zrobić to za darmo dzięki środkom o wartości 300 dol. oferowanym przez Google Cloud Platform.

20/04/2018 Więcej