Samouczek dotyczący przepływu powietrza TFX

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

PytonPyPI

Wstęp

Ten samouczek ma na celu wprowadzenie do TensorFlow Extended (TFX) i pomoc w nauce tworzenia własnych potoków uczenia maszynowego. Działa lokalnie i wykazuje integrację z TFX i TensorBoard oraz interakcję z TFX w notebookach Jupyter.

Będziesz postępować zgodnie z typowym procesem opracowywania ML, zaczynając od zbadania zestawu danych, a kończąc na kompletnym potoku roboczym. Po drodze poznasz sposoby debugowania i aktualizowania potoku oraz mierzenia wydajności.

Ucz się więcej

Aby dowiedzieć się więcej, zapoznaj się z Podręcznikiem użytkownika TFX .

Krok po kroku

Będziesz stopniowo tworzyć swój potok, pracując krok po kroku, zgodnie z typowym procesem rozwoju ML. Oto kroki:

  1. Skonfiguruj swoje środowisko
  2. Stwórz wstępny szkielet rurociągu
  3. Zanurz się w swoich danych
  4. Inżynieria funkcji
  5. Trening
  6. Analiza wydajności modelu
  7. Gotowy do produkcji

Warunki wstępne

  • Linux / MacOS
  • Wirtualne środowisko
  • Python 3.5+
  • Gita

Wymagane pakiety

W zależności od środowiska może być konieczne zainstalowanie kilku pakietów:

sudo apt-get install \
    build-essential libssl-dev libffi-dev \
    libxml2-dev libxslt1-dev zlib1g-dev \
    python3-pip git software-properties-common

Jeśli używasz Pythona 3.6, powinieneś zainstalować python3.6-dev:

sudo apt-get install python3.6-dev

Jeśli używasz Pythona 3.7, powinieneś zainstalować python3.7-dev:

sudo apt-get install python3.7-dev

Dodatkowo, jeśli twój system ma wersję GCC < 7, powinieneś zaktualizować GCC. W przeciwnym razie zobaczysz błędy podczas uruchamiania airflow webserver . Możesz sprawdzić swoją aktualną wersję za pomocą:

gcc --version

Jeśli chcesz zaktualizować GCC, możesz uruchomić to:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7
sudo apt install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7

Środowisko MacOS

Jeśli nie masz jeszcze zainstalowanego Pythona 3 i git, możesz je zainstalować za pomocą menedżera pakietów Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew update
brew install python
brew install git

MacOS czasami ma problemy z rozwidleniem wątków podczas uruchamiania Airflow, w zależności od konfiguracji. Aby uniknąć tych problemów, powinieneś edytować swój ~/.bash_profile i dodać następujący wiersz na końcu pliku:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Materiały szkoleniowe

Kod do tego samouczka jest dostępny pod adresem: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

Kod jest zorganizowany według kroków, nad którymi pracujesz, więc dla każdego kroku będziesz mieć potrzebny kod i instrukcje, co z nim zrobić.

Pliki samouczka zawierają zarówno ćwiczenie, jak i rozwiązanie do ćwiczenia, na wypadek, gdybyś utknął.

Ćwiczenie

  • taxi_pipeline.py
  • taxi_utils.py
  • taksówka DAG

Rozwiązanie

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taksówka_rozwiązanie DAG

Co robisz

Uczysz się, jak utworzyć potok ML za pomocą TFX

  • Potoki TFX są odpowiednie, gdy będziesz wdrażać produkcyjną aplikację ML
  • Potoki TFX są odpowiednie, gdy zestawy danych są duże
  • Potoki TFX są odpowiednie, gdy ważna jest spójność trenowania/serwowania
  • Potoki TFX są odpowiednie, gdy ważne jest zarządzanie wersjami w celu wnioskowania
  • Google używa potoków TFX do produkcyjnego ML

Postępujesz zgodnie z typowym procesem rozwoju ML

  • Przyswajanie, rozumienie i czyszczenie naszych danych
  • Inżynieria funkcji
  • Trening
  • Analizuj wydajność modelu
  • Namyj, spłucz, powtórz
  • Gotowy do produkcji

Dodanie kodu dla każdego kroku

Samouczek został zaprojektowany tak, aby cały kod był zawarty w plikach, ale cały kod dla kroków 3-7 jest wykomentowany i oznaczony komentarzami w wierszu. Komentarze w tekście określają, do którego kroku odnosi się wiersz kodu. Na przykład kod kroku 3 jest oznaczony komentarzem # Step 3 .

Kod, który dodasz dla każdego kroku, zazwyczaj zawiera się w 3 regionach kodu:

  • import
  • Konfiguracja DAG
  • Lista zwrócona z wywołania create_pipeline()
  • Kod pomocniczy w taxi_utils.py

Podczas przechodzenia przez samouczek będziesz odkomentować wiersze kodu, które dotyczą kroku samouczka, nad którym obecnie pracujesz. To doda kod dla tego kroku i zaktualizuje potok. Ponieważ to robisz, gorąco zachęcamy do przejrzenia kodu, który odkomentujesz .

Zbiór danych o taksówce w Chicago

TaxiChicago taksówka

Korzystasz z zestawu danych Taxi Trips udostępnionego przez miasto Chicago.

Możesz przeczytać więcej o zbiorze danych w Google BigQuery . Przeglądaj pełny zbiór danych w interfejsie użytkownika BigQuery .

Cel modelu - Klasyfikacja binarna

Czy klient napiwku więcej czy mniej niż 20%?

Krok 1: Skonfiguruj swoje środowisko

Skrypt instalacyjny ( setup_demo.sh ) instaluje TFX i Airflow oraz konfiguruje Airflow w sposób ułatwiający pracę w tym samouczku.

W powłoce:

cd
virtualenv -p python3 tfx-env
source ~/tfx-env/bin/activate

git clone https://github.com/tensorflow/tfx.git
cd ~/tfx
# These instructions are specific to the 0.21 release
git checkout -f origin/r0.21
cd ~/tfx/tfx/examples/airflow_workshop/setup
./setup_demo.sh

Powinieneś przejrzeć setup_demo.sh , aby zobaczyć, co robi.

Krok 2: Przygotuj wstępny szkielet potoku

Witaj świecie

W powłoce:

# Open a new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow webserver -p 8080

# Open another new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow scheduler

# Open yet another new terminal window, and in that window ...
# Assuming that you've cloned the TFX repo into ~/tfx
source ~/tfx-env/bin/activate
cd ~/tfx/tfx/examples/airflow_workshop/notebooks
jupyter notebook

W tym kroku uruchomiłeś notatnik Jupyter. Później będziesz uruchamiać notatniki w tym folderze.

W przeglądarce:

  • Otwórz przeglądarkę i przejdź do http://127.0.0.1:8080

Rozwiązywanie problemów

Jeśli masz problemy z ładowaniem konsoli Airflow w przeglądarce internetowej lub wystąpiły jakieś błędy podczas uruchamiania airflow webserver Airflow , być może masz inną aplikację działającą na porcie 8080. Jest to domyślny port dla Airflow, ale możesz go zmienić do dowolnego innego portu użytkownika, który nie jest używany. Na przykład, aby uruchomić Airflow na porcie 7070, możesz uruchomić:

airflow webserver -p 7070

Przyciski widoku DAG

Przyciski DAG

  • Użyj przycisku po lewej stronie, aby włączyć DAG
  • Użyj przycisku po prawej stronie, aby odświeżyć DAG podczas wprowadzania zmian
  • Użyj przycisku po prawej stronie, aby uruchomić DAG
  • Kliknij taksówkę, aby przejść do widoku wykresu DAG

Przycisk odświeżania wykresu

CLI przepływu powietrza

Możesz także użyć Airflow CLI , aby włączyć i uruchomić swoje DAGs:

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

Czekam na zakończenie rurociągu

Po wyzwoleniu potoku w widoku DAGs możesz obserwować, jak potok kończy przetwarzanie. Gdy każdy składnik zostanie uruchomiony, kolor konturu składnika na wykresie DAG zmieni się, aby pokazać jego stan. Po zakończeniu przetwarzania komponentu kontur zmieni kolor na ciemnozielony, co oznacza, że ​​zostało wykonane.

Jak dotąd w naszym potoku masz tylko komponent CsvExampleGen, więc musisz poczekać, aż zmieni kolor na ciemnozielony (~1 minuta).

Konfiguracja zakończona

Krok 3: Zanurz się w swoich danych

Pierwszym zadaniem w każdym projekcie Data Science lub ML jest zrozumienie i wyczyszczenie danych.

  • Poznaj typy danych dla każdej funkcji
  • Poszukaj anomalii i brakujących wartości
  • Zrozum rozkłady dla każdej funkcji

składniki

Komponenty danychKomponenty danych

W edytorze:

  • W ~/airflow/dags odkomentuj linie oznaczone Step 3 w taxi_pipeline.py
  • Poświęć chwilę na przejrzenie kodu, który odkomentowałeś

W przeglądarce:

  • Wróć do strony listy DAG w Airflow, klikając link „DAGs” w lewym górnym rogu
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić DAG taksówki
    • Powinieneś zobaczyć „DAG [taxi] jest teraz świeży jak stokrotka”
  • Uruchom taksówkę
  • Poczekaj na zakończenie potoku
    • Wszystko ciemnozielone
    • Użyj odświeżania po prawej stronie lub odśwież stronę

Zanurz się w dane

Wracając do Jupytera:

Wcześniej uruchomiłeś jupyter notebook , który otwierał sesję Jupyter na karcie przeglądarki. Teraz wróć do tej karty w przeglądarce.

  • Otwórz step3.ipynb
  • Postępuj zgodnie z notatnikiem

Zanurz się w dane

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu tylko rozpoczęcie pracy. Aby zapoznać się z bardziej zaawansowanym przykładem, zobacz TensorFlow Data Validation Colab .

Aby uzyskać więcej informacji na temat używania TFDV do eksploracji i walidacji zestawu danych, zobacz przykłady na tensorflow.org .

Krok 4: Inżynieria funkcji

Możesz zwiększyć predykcyjną jakość swoich danych i/lub zmniejszyć wymiarowość dzięki inżynierii funkcji.

  • Krzyże funkcji
  • Słowniki
  • Osadzania
  • PCA
  • Kodowanie kategoryczne

Jedną z korzyści płynących z używania TFX jest to, że napiszesz kod transformacji raz, a wynikowe przekształcenia będą spójne między trenowaniem a udostępnianiem.

składniki

Przekształcać

  • Transform wykonuje inżynierię funkcji w zestawie danych.

W edytorze:

  • W ~/airflow/dags odkomentuj linie oznaczone Step 4 zarówno w taxi_pipeline.py , jak i taxi_utils.py
  • Poświęć chwilę na przejrzenie kodu, który odkomentowałeś

W przeglądarce:

  • Wróć do strony listy DAGs w Airflow
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić DAG taksówki
    • Powinieneś zobaczyć „DAG [taxi] jest teraz świeży jak stokrotka”
  • Uruchom taksówkę
  • Poczekaj na zakończenie potoku
    • Wszystko ciemnozielone
    • Użyj odświeżania po prawej stronie lub odśwież stronę

Inżynieria funkcji

Wracając do Jupytera:

Wróć do zakładki Jupyter w swojej przeglądarce.

  • Otwórz step4.ipynb
  • Postępuj zgodnie z notatnikiem

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu tylko rozpoczęcie pracy. Aby zapoznać się z bardziej zaawansowanym przykładem, zobacz TensorFlow Transform Colab .

Krok 5: Trening

Trenuj model TensorFlow, korzystając z ładnych, czystych i przekształconych danych.

  • Uwzględnij przekształcenia z kroku 4, aby były stosowane konsekwentnie
  • Zapisz wyniki jako SavedModel do produkcji
  • Wizualizuj i poznawaj proces szkolenia za pomocą TensorBoard
  • Zapisz również EvalSavedModel do analizy wydajności modelu

składniki

W edytorze:

  • W ~/airflow/dags odkomentuj linie oznaczone Step 5 zarówno w taxi_pipeline.py , jak i taxi_utils.py
  • Poświęć chwilę na przejrzenie kodu, który odkomentowałeś

W przeglądarce:

  • Wróć do strony listy DAGs w Airflow
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić DAG taksówki
    • Powinieneś zobaczyć „DAG [taxi] jest teraz świeży jak stokrotka”
  • Uruchom taksówkę
  • Poczekaj na zakończenie potoku
    • Wszystko ciemnozielone
    • Użyj odświeżania po prawej stronie lub odśwież stronę

Szkolenie modelki

Wracając do Jupytera:

Wróć do zakładki Jupyter w swojej przeglądarce.

  • Otwórz step5.ipynb
  • Postępuj zgodnie z notatnikiem

Szkolenie modelki

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu tylko rozpoczęcie pracy. Bardziej zaawansowany przykład można znaleźć w samouczku TensorBoard .

Krok 6: Analiza wydajności modelu

Zrozumienie więcej niż tylko wskaźników najwyższego poziomu.

  • Użytkownicy doświadczają wydajności modelu tylko dla swoich zapytań
  • Niska wydajność na wycinkach danych może być ukryta przez wskaźniki najwyższego poziomu
  • Sprawiedliwość modelu jest ważna
  • Często kluczowe podzbiory użytkowników lub danych są bardzo ważne i mogą być małe
    • Wydajność w krytycznych, ale nietypowych warunkach
    • Wydajność dla kluczowych odbiorców, takich jak influencerzy
  • Jeśli wymieniasz model, który jest aktualnie w produkcji, najpierw upewnij się, że nowy jest lepszy
  • Ewaluator informuje komponent Pusher, czy model jest OK

składniki

  • Oceniający przeprowadza dogłębną analizę wyników szkolenia i upewnia się, że model jest „wystarczająco dobry”, aby można go było wprowadzić do produkcji.

W edytorze:

  • W ~/airflow/dags odkomentuj linie oznaczone Step 6 w obu taxi_pipeline.py
  • Poświęć chwilę na przejrzenie kodu, który odkomentowałeś

W przeglądarce:

  • Wróć do strony listy DAGs w Airflow
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić DAG taksówki
    • Powinieneś zobaczyć „DAG [taxi] jest teraz świeży jak stokrotka”
  • Uruchom taksówkę
  • Poczekaj na zakończenie potoku
    • Wszystko ciemnozielone
    • Użyj odświeżania po prawej stronie lub odśwież stronę

Analiza wydajności modelu

Wracając do Jupytera:

Wróć do zakładki Jupyter w swojej przeglądarce.

  • Otwórz step6.ipynb
  • Postępuj zgodnie z notatnikiem

Analiza wydajności modelu

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu tylko rozpoczęcie pracy. Bardziej zaawansowany przykład można znaleźć w samouczku TFMA Chicago Taxi .

Krok 7: Gotowy do produkcji

Jeśli nowy model jest gotowy, zrób to.

  • Pusher wdraża SavedModels w dobrze znanych lokalizacjach

Cele wdrożeniowe otrzymują nowe modele z dobrze znanych lokalizacji

  • Obsługa TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • Centrum TensorFlow

składniki

  • Pusher wdraża model w infrastrukturze obsługującej.

W edytorze:

  • W ~/airflow/dags odkomentuj linie oznaczone Step 7 w obu taxi_pipeline.py
  • Poświęć chwilę na przejrzenie kodu, który odkomentowałeś

W przeglądarce:

  • Wróć do strony listy DAGs w Airflow
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić DAG taksówki
    • Powinieneś zobaczyć „DAG [taxi] jest teraz świeży jak stokrotka”
  • Uruchom taksówkę
  • Poczekaj na zakończenie potoku
    • Wszystko ciemnozielone
    • Użyj odświeżania po prawej stronie lub odśwież stronę

Gotowy do produkcji

Następne kroki

Twój model został przeszkolony i zweryfikowany, a także wyeksportowany plik SavedModel do katalogu ~/airflow/saved_models/taxi . Twój model jest teraz gotowy do produkcji. Możesz teraz wdrożyć swój model w dowolnym z celów wdrożenia TensorFlow, w tym:

  • TensorFlow Serving , do obsługi modelu na serwerze lub farmie serwerów i przetwarzania żądań wnioskowania REST i/lub gRPC.
  • TensorFlow Lite do dołączania modelu do natywnej aplikacji mobilnej na Androida lub iOS lub do aplikacji Raspberry Pi, IoT lub mikrokontrolera.
  • TensorFlow.js , do uruchamiania modelu w przeglądarce internetowej lub aplikacji Node.JS.