Dołącz do społeczności SIG TFX-Addons i pomóż ulepszyć TFX! Dołącz do dodatków SIG TFX

Samouczek dotyczący przepływu powietrza TFX

Pyton PyPI

Wprowadzenie

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

Będziesz postępować zgodnie z typowym procesem rozwoju 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, zobacz Podręcznik 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. Pokaż początkowy szkielet rurociągu
  3. Zanurz się w swoich danych
  4. Inżynieria cech
  5. Trening
  6. Analiza wydajności modelu
  7. Gotowe do produkcji

Wymagania wstępne

  • Linux / MacOS
  • Virtualenv
  • Python 3.5+
  • Git

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

Ponadto, jeśli twój system ma wersję GCC <7, powinieneś zaktualizować GCC. W przeciwnym razie podczas uruchamiania airflow webserver pojawią się błędy. 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 już zainstalowanego Pythona 3 i gita, 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 rozwidlaniem wątków podczas uruchamiania Airflow, w zależności od konfiguracji. Aby uniknąć tych problemów, wyedytuj swój ~/.bash_profile i dodaj następujący wiersz na końcu pliku:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Materiały szkoleniowe

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

Kod jest uporządkowany według kroków, nad którymi pracujesz, więc na każdym kroku będziesz mieć kod, którego potrzebujesz, i instrukcje, co z nim zrobić.

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

Ćwiczenie

  • taxi_pipeline.py
  • taxi_utils.py
  • taxi DAG

Rozwiązanie

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

Co robisz

Dowiesz się, jak utworzyć potok ML przy użyciu TFX

  • Potoki TFX są odpowiednie podczas wdrażania produkcyjnej aplikacji ML
  • Potoki TFX są odpowiednie, gdy zbiory danych są duże
  • Potoki TFX są odpowiednie, gdy ważna jest spójność szkolenia / serwowania
  • Potoki TFX są odpowiednie, gdy zarządzanie wersjami na potrzeby wnioskowania jest ważne
  • Google używa potoków TFX do produkcji ML

Postępujesz zgodnie z typowym procesem rozwoju ML

  • Przetwarzanie, rozumienie i czyszczenie naszych danych
  • Inżynieria cech
  • Trening
  • Analiza wydajności modelu
  • Pianka, spłucz, powtórz
  • Gotowe do produkcji

Dodawanie kodu dla każdego kroku

Samouczek został zaprojektowany w taki sposób, że cały kod jest zawarty w plikach, ale cały kod z kroków 3-7 jest zakomentowany i oznaczony komentarzami w wierszu. Komentarze w wierszu określają, którego kroku dotyczy wiersz kodu. Na przykład kod kroku 3 jest oznaczony komentarzem # Step 3 .

Kod, który dodasz na każdym kroku, zwykle obejmuje 3 regiony kodu:

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

Podczas przechodzenia przez samouczek odkomentujesz wiersze kodu, które dotyczą kroku samouczka, nad którym obecnie pracujesz. Spowoduje to dodanie kodu dla tego kroku i zaktualizowanie potoku. W związku z tym gorąco zachęcamy do przejrzenia kodu, który usuwasz z komentarzy .

Zestaw danych Chicago Taxi

TaxiTaksówka w Chicago

Używasz zbioru danych Taxi Trips opublikowanego przez miasto Chicago.

Możesz przeczytać więcej o zbiorze danych w Google BigQuery . Zapoznaj się z pełnym zbiorem danych w interfejsie użytkownika BigQuery .

Model Cel - Klasyfikacja binarna

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

Krok 1: Skonfiguruj swoje środowisko

Skrypt instalacyjny ( setup_demo.sh ) instaluje TFX i Airflow oraz konfiguruje Airflow w sposób, który ułatwia pracę z tym samouczkiem.

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: Wyświetl początkowy szkielet rurociągu

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 jakiekolwiek problemy z ładowaniem konsoli Airflow w przeglądarce internetowej lub jeśli wystąpiły jakieś błędy podczas uruchamiania airflow webserver Airflow, możesz mieć inną aplikację uruchomioną na porcie 8080. To jest 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 po wprowadzeniu zmian
  • Użyj przycisku po prawej stronie, aby uruchomić DAG
  • Kliknij taksówkę, aby przejść do widoku wykresu DAG

Przycisk odświeżania wykresu

Airflow CLI

Możesz również użyć interfejsu wiersza polecenia Airflow, aby włączyć i wyzwolić DAG:

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

# trigger
airflow trigger_dag <your DAG name>

Czekam na zakończenie potoku

Po wyzwoleniu potoku w widoku DAG można obserwować, jak potok kończy przetwarzanie. Gdy każdy składnik działa, kolor konturu składnika na wykresie DAG zmieni się, aby pokazać jego stan. Kiedy komponent zakończy przetwarzanie, kontur zmieni kolor na ciemnozielony, aby pokazać, że jest gotowy.

Jak dotąd w naszym potoku masz tylko składnik 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.

  • Zapoznaj się z typami danych dla każdej funkcji
  • Poszukaj anomalii i brakujących wartości
  • Zapoznaj się z dystrybucjami dla każdej funkcji

składniki

Składniki danychSkładniki 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 z listą DAG w Airflow, klikając link „DAGs” w lewym górnym rogu
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić taksówkę DAG
    • Powinien pojawić się komunikat „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 danych

Wracając do Jupyter:

Wcześniej uruchomiłeś jupyter notebook , który otworzył 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 danych

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu jedynie rozpoczęcie pracy. Bardziej zaawansowany przykład znajduje się w kolumnie 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ć jakość predykcyjną swoich danych i / lub zmniejszyć wymiarowość dzięki inżynierii funkcji.

  • Krzyże funkcyjne
  • Słownictwo
  • Osadzenia
  • PCA
  • Kodowanie kategorialne

Jedną z zalet korzystania z TFX jest to, że jeden raz napiszesz kod transformacji, a wynikowe transformacje będą spójne między uczeniem a serwowaniem.

składniki

Przekształcać

  • Transform wykonuje inżynierię funkcji na zbiorze 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 odkomentowanego kodu

W przeglądarce:

  • Wróć do strony z listą DAG w Airflow
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić taksówkę DAG
    • Powinien pojawić się komunikat „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 Jupyter:

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

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

Bardziej zaawansowany przykład

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

Krok 5: Szkolenie

Wytrenuj model TensorFlow z ładnymi, czystymi, przekształconymi danymi.

  • Uwzględnij transformacje z kroku 4, aby były konsekwentnie stosowane
  • 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 z listą DAG w Airflow
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić taksówkę DAG
    • Powinien pojawić się komunikat „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ę

Trenowanie modelu

Wracając do Jupyter:

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

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

Trenowanie modelu

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu jedynie rozpoczęcie pracy. Bardziej zaawansowany przykład znajduje się w samouczku TensorBoard .

Krok 6: Analiza wydajności modelu

Zrozumieć więcej niż tylko wskaźniki najwyższego poziomu.

  • Użytkownicy doświadczają wydajności modelu tylko dla swoich zapytań
  • Niska wydajność wycinków danych może być ukryta za pomocą wskaźników najwyższego poziomu
  • Uczciwość 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
    • Wyniki dla kluczowych odbiorców, takich jak wpływowe osoby
  • Jeśli wymieniasz model, który jest obecnie 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 zapewnia, ż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 z listą DAG w Airflow
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić taksówkę DAG
    • Powinien pojawić się komunikat „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 Jupyter:

Wróć do zakładki Jupyter w 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 jedynie rozpoczęcie pracy. Bardziej zaawansowany przykład znajduje się 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żenia otrzymują nowe modele z dobrze znanych lokalizacji

  • Obsługa TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Hub

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 z listą DAG w Airflow
  • Kliknij przycisk odświeżania po prawej stronie, aby wyświetlić taksówkę DAG
    • Powinien pojawić się komunikat „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ę

Gotowe do produkcji

Następne kroki

Wyszkoliłeś i zweryfikowałeś swój model oraz wyeksportowałeś plik SavedModel w katalogu ~/airflow/saved_models/taxi . Twój model jest teraz gotowy do produkcji. Możesz teraz wdrożyć model w dowolnym miejscu docelowym wdrożenia TensorFlow, w tym:

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