Fragen zu TFX? Besuchen Sie uns bei Google I / O!
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

TFX Airflow Tutorial

Python PyPI

Einführung

Dieses Tutorial soll TensorFlow Extended (TFX) vorstellen und Ihnen helfen, Ihre eigenen Pipelines für maschinelles Lernen zu erstellen. Es wird lokal ausgeführt und zeigt die Integration mit TFX und TensorBoard sowie die Interaktion mit TFX in Jupyter-Notebooks.

Sie folgen einem typischen ML-Entwicklungsprozess, indem Sie zunächst den Datensatz untersuchen und eine vollständige funktionierende Pipeline erhalten. Unterwegs werden Sie nach Möglichkeiten suchen, Ihre Pipeline zu debuggen, zu aktualisieren und die Leistung zu messen.

Mehr erfahren

Weitere Informationen finden Sie im TFX-Benutzerhandbuch .

Schritt für Schritt

Sie erstellen Ihre Pipeline schrittweise, indem Sie Schritt für Schritt nach einem typischen ML-Entwicklungsprozess arbeiten. Hier sind die Schritte:

  1. Richten Sie Ihre Umgebung ein
  2. Rufen Sie das erste Pipeline-Skelett auf
  3. Tauchen Sie in Ihre Daten ein
  4. Feature Engineering
  5. Ausbildung
  6. Modellleistung analysieren
  7. Produktionsbereit

Voraussetzungen

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

Erforderliche Pakete

Abhängig von Ihrer Umgebung müssen Sie möglicherweise mehrere Pakete installieren:

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

Wenn Sie Python 3.6 ausführen, sollten Sie python3.6-dev installieren:

sudo apt-get install python3.6-dev

Wenn Sie Python 3.7 ausführen, sollten Sie python3.7-dev installieren:

sudo apt-get install python3.7-dev

Wenn Ihr System eine GCC-Version <7 hat, sollten Sie außerdem GCC aktualisieren. Andernfalls werden beim Ausführen des airflow webserver Fehler airflow webserver . Sie können Ihre aktuelle Version überprüfen mit:

gcc --version

Wenn Sie GCC aktualisieren müssen, können Sie Folgendes ausführen:

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

MacOS-Umgebung

Wenn Sie Python 3 und Git noch nicht installiert haben, können Sie sie mit dem Homebrew- Paketmanager installieren:

/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 hat manchmal Probleme, Threads zu verzweigen, wenn Airflow ausgeführt wird, abhängig von der Konfiguration. Um diese Probleme zu vermeiden, sollten Sie Ihr ~/.bash_profile bearbeiten und die folgende Zeile am Ende der Datei ~/.bash_profile :

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Tutorial-Materialien

Der Code für dieses Tutorial ist verfügbar unter: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

Der Code ist nach den Schritten organisiert, an denen Sie arbeiten. Für jeden Schritt haben Sie den Code, den Sie benötigen, und Anweisungen, wie Sie damit umgehen sollen.

Die Tutorial-Dateien enthalten sowohl eine Übung als auch die Lösung für die Übung, falls Sie nicht weiterkommen.

Übung

  • tax_pipeline.py
  • Taxi_utils.py
  • Taxi DAG

Lösung

  • tax_pipeline_solution.py
  • Taxi_utils_solution.py
  • Taxi_Solution DAG

Was tust du

Sie lernen, wie Sie mit TFX eine ML-Pipeline erstellen

  • TFX-Pipelines sind geeignet, wenn Sie eine Produktions-ML-Anwendung bereitstellen
  • TFX-Pipelines sind geeignet, wenn die Datenmengen groß sind
  • TFX-Pipelines sind geeignet, wenn die Konsistenz von Training / Serving wichtig ist
  • TFX-Pipelines sind geeignet, wenn das Versionsmanagement für Inferenz wichtig ist
  • Google verwendet TFX-Pipelines für die Produktion von ML

Sie folgen einem typischen ML-Entwicklungsprozess

  • Aufnahme, Verständnis und Bereinigung unserer Daten
  • Feature Engineering
  • Ausbildung
  • Analysieren Sie die Modellleistung
  • Aufschäumen, ausspülen, wiederholen
  • Produktionsbereit

Hinzufügen des Codes für jeden Schritt

Das Tutorial ist so konzipiert, dass der gesamte Code in den Dateien enthalten ist, der gesamte Code für die Schritte 3 bis 7 jedoch auskommentiert und mit Inline-Kommentaren markiert ist. Die Inline-Kommentare geben an, für welchen Schritt die Codezeile gilt. Beispielsweise ist der Code für Schritt 3 mit dem Kommentar # Step 3 .

Der Code, den Sie für jeden Schritt hinzufügen, fällt normalerweise in drei Bereiche des Codes:

  • Importe
  • Die DAG-Konfiguration
  • Die vom Aufruf create_pipeline () zurückgegebene Liste
  • Der unterstützende Code in Taxi_utils.py

Während Sie das Lernprogramm durchlaufen, werden Sie die Codezeilen auskommentieren, die für den Lernschritt gelten, an dem Sie gerade arbeiten. Dadurch wird der Code für diesen Schritt hinzugefügt und Ihre Pipeline aktualisiert. Währenddessen empfehlen wir Ihnen dringend, den Code zu überprüfen, den Sie nicht kommentieren .

Chicago Taxi Datensatz

TaxiChicago Taxi

Sie verwenden den von der Stadt Chicago veröffentlichten Datensatz für Taxifahrten .

Weitere Informationen zum Datensatz finden Sie in Google BigQuery . Durchsuchen Sie den vollständigen Datensatz in der BigQuery-Benutzeroberfläche .

Modellziel - Binäre Klassifizierung

Wird der Kunde mehr oder weniger als 20% Trinkgeld geben?

Schritt 1: Richten Sie Ihre Umgebung ein

Das Setup-Skript ( setup_demo.sh ) installiert TFX und Airflow und konfiguriert Airflow so, dass die Arbeit mit diesem Lernprogramm vereinfacht wird.

In einer Muschel:

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

Sie sollten setup_demo.sh überprüfen, setup_demo.sh zu sehen, was es tut.

Schritt 2: Rufen Sie das erste Pipeline-Skelett auf

Hallo Welt

In einer Muschel:

# 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

In diesem Schritt haben Sie das Jupyter-Notizbuch gestartet. Später werden Sie die Notizbücher in diesem Ordner ausführen.

In einem Browser:

  • Öffnen Sie einen Browser und gehen Sie zu http://127.0.0.1:8080

Fehlerbehebung

Wenn Sie Probleme beim Laden der Airflow-Konsole in Ihrem Webbrowser haben oder wenn beim Ausführen des airflow webserver Fehler airflow webserver , wird möglicherweise eine andere Anwendung auf Port 8080 ausgeführt. Dies ist der Standardport für Airflow, Sie können ihn jedoch ändern an einen anderen Benutzerport, der nicht verwendet wird. Um beispielsweise Airflow auf Port 7070 auszuführen, können Sie Folgendes ausführen:

airflow webserver -p 7070

DAG-Ansichtsschaltflächen

DAG-Tasten

  • Verwenden Sie die Schaltfläche links, um die DAG zu aktivieren
  • Verwenden Sie die Schaltfläche rechts, um die DAG zu aktualisieren, wenn Sie Änderungen vornehmen
  • Verwenden Sie die Schaltfläche rechts, um die DAG auszulösen
  • Klicken Sie auf Taxi, um zur Grafikansicht der DAG zu gelangen

Schaltfläche zum Aktualisieren des Diagramms

Luftstrom-CLI

Sie können auch die Airflow-CLI verwenden , um Ihre DAGs zu aktivieren und auszulösen:

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

# trigger
airflow trigger_dag <your DAG name>

Warten auf den Abschluss der Pipeline

Nachdem Sie Ihre Pipeline in der DAG-Ansicht ausgelöst haben, können Sie beobachten, wie Ihre Pipeline die Verarbeitung abgeschlossen hat. Während jede Komponente ausgeführt wird, ändert sich die Umrissfarbe der Komponente im DAG-Diagramm, um ihren Status anzuzeigen. Wenn eine Komponente die Verarbeitung abgeschlossen hat, wird der Umriss dunkelgrün, um anzuzeigen, dass er fertig ist.

Bisher haben Sie nur die CsvExampleGen-Komponente in unserer Pipeline, daher müssen Sie warten, bis sie dunkelgrün wird (~ 1 Minute).

Setup abgeschlossen

Schritt 3: Tauchen Sie in Ihre Daten ein

Die erste Aufgabe in einem Data Science- oder ML-Projekt besteht darin, die Daten zu verstehen und zu bereinigen.

  • Verstehen Sie die Datentypen für jede Funktion
  • Suchen Sie nach Anomalien und fehlenden Werten
  • Verstehen Sie die Verteilungen für jede Funktion

Komponenten

DatenkomponentenDatenkomponenten

  • ExampleGen nimmt den Eingabedatensatz auf und teilt ihn auf.
  • StatisticsGen berechnet Statistiken für den Datensatz.
  • SchemaGen SchemaGen untersucht die Statistiken und erstellt ein Datenschema.
  • ExampleValidator sucht nach Anomalien und fehlenden Werten im Dataset.

In einem Editor:

  • taxi_pipeline.py in ~ / airflow / dags die in taxi_pipeline.py mit Step 3 gekennzeichneten taxi_pipeline.py
  • Nehmen Sie sich einen Moment Zeit, um den Code zu überprüfen, den Sie nicht kommentiert haben

In einem Browser:

  • Kehren Sie zur Seite mit der DAG-Liste in Airflow zurück, indem Sie oben links auf den Link "DAGs" klicken
  • Klicken Sie auf die Schaltfläche Aktualisieren auf der rechten Seite für die Taxi-DAG
    • Sie sollten sehen "DAG [Taxi] ist jetzt frisch wie ein Gänseblümchen"
  • Taxi auslösen
  • Warten Sie, bis die Pipeline abgeschlossen ist
    • Alles dunkelgrün
    • Verwenden Sie die Aktualisierung auf der rechten Seite oder die Aktualisierungsseite

Tauchen Sie in Daten ein

Zurück auf Jupyter:

Zuvor haben Sie ein jupyter notebook , mit dem eine Jupyter-Sitzung in einem Browser-Tab geöffnet wurde. Kehren Sie nun in Ihrem Browser zu dieser Registerkarte zurück.

  • Öffnen Sie step3.ipynb
  • Folgen Sie dem Notizbuch

Tauchen Sie in Daten ein

Fortgeschritteneres Beispiel

Das hier vorgestellte Beispiel soll Ihnen nur den Einstieg erleichtern. Ein ausführlicheres Beispiel finden Sie im TensorFlow Data Validation Colab .

Weitere Informationen zur Verwendung von TFDV zum Erkunden und Validieren eines Datensatzes finden Sie in den Beispielen auf tensorflow.org .

Schritt 4: Feature Engineering

Mit Feature Engineering können Sie die Vorhersagequalität Ihrer Daten erhöhen und / oder die Dimensionalität reduzieren.

  • Feature Kreuze
  • Vokabeln
  • Einbettungen
  • PCA
  • Kategoriale Codierung

Einer der Vorteile der Verwendung von TFX besteht darin, dass Sie Ihren Transformationscode einmal schreiben und die resultierenden Transformationen zwischen Training und Serving konsistent sind.

Komponenten

Verwandeln

  • Transform führt das Feature-Engineering für das Dataset durch.

In einem Editor:

  • In ~ / airflow / dags kommentieren Sie die mit Step 4 gekennzeichneten Zeilen sowohl in taxi_pipeline.py als auch in taxi_utils.py
  • Nehmen Sie sich einen Moment Zeit, um den Code zu überprüfen, den Sie nicht kommentiert haben

In einem Browser:

  • Kehren Sie zur DAG-Listenseite in Airflow zurück
  • Klicken Sie auf die Schaltfläche Aktualisieren auf der rechten Seite für die Taxi-DAG
    • Sie sollten sehen "DAG [Taxi] ist jetzt frisch wie ein Gänseblümchen"
  • Taxi auslösen
  • Warten Sie, bis die Pipeline abgeschlossen ist
    • Alles dunkelgrün
    • Verwenden Sie die Aktualisierung auf der rechten Seite oder die Aktualisierungsseite

Feature Engineering

Zurück auf Jupyter:

Kehren Sie in Ihrem Browser zur Registerkarte Jupyter zurück.

  • Öffnen Sie step4.ipynb
  • Folgen Sie dem Notizbuch

Fortgeschritteneres Beispiel

Das hier vorgestellte Beispiel soll Ihnen nur den Einstieg erleichtern. Ein ausführlicheres Beispiel finden Sie im TensorFlow Transform Colab .

Schritt 5: Training

Trainieren Sie ein TensorFlow-Modell mit Ihren schönen, sauberen und transformierten Daten.

  • Schließen Sie die Transformationen aus Schritt 4 ein, damit sie konsistent angewendet werden
  • Speichern Sie die Ergebnisse als SavedModel für die Produktion
  • Visualisieren und erkunden Sie den Trainingsprozess mit TensorBoard
  • Speichern Sie auch ein EvalSavedModel zur Analyse der Modellleistung

Komponenten

In einem Editor:

  • In ~ / airflow / dags kommentieren Sie die mit Step 5 gekennzeichneten Zeilen sowohl in taxi_pipeline.py als auch in taxi_utils.py
  • Nehmen Sie sich einen Moment Zeit, um den Code zu überprüfen, den Sie nicht kommentiert haben

In einem Browser:

  • Kehren Sie zur DAG-Listenseite in Airflow zurück
  • Klicken Sie auf die Schaltfläche Aktualisieren auf der rechten Seite für die Taxi-DAG
    • Sie sollten sehen "DAG [Taxi] ist jetzt frisch wie ein Gänseblümchen"
  • Taxi auslösen
  • Warten Sie, bis die Pipeline abgeschlossen ist
    • Alles dunkelgrün
    • Verwenden Sie die Aktualisierung auf der rechten Seite oder die Aktualisierungsseite

Ein Modell trainieren

Zurück auf Jupyter:

Kehren Sie in Ihrem Browser zur Registerkarte Jupyter zurück.

  • Öffnen Sie step5.ipynb
  • Folgen Sie dem Notizbuch

Ein Modell trainieren

Fortgeschritteneres Beispiel

Das hier vorgestellte Beispiel soll Ihnen nur den Einstieg erleichtern. Ein ausführlicheres Beispiel finden Sie im TensorBoard-Tutorial .

Schritt 6: Analysieren der Modellleistung

Mehr als nur die Metriken der obersten Ebene verstehen.

  • Benutzer erfahren die Modellleistung nur für ihre Abfragen
  • Eine schlechte Leistung auf Datenscheiben kann durch Metriken der obersten Ebene ausgeblendet werden
  • Modellgerechtigkeit ist wichtig
  • Oft sind wichtige Teilmengen von Benutzern oder Daten sehr wichtig und können klein sein
    • Leistung unter kritischen, aber ungewöhnlichen Bedingungen
    • Leistung für wichtige Zielgruppen wie Influencer
  • Wenn Sie ein Modell ersetzen, das derzeit in Produktion ist, stellen Sie zunächst sicher, dass das neue Modell besser ist
  • Der Evaluator teilt der Pusher-Komponente mit, ob das Modell in Ordnung ist

Komponenten

  • Der Evaluator führt eine gründliche Analyse der Trainingsergebnisse durch und stellt sicher, dass das Modell "gut genug" ist, um in die Produktion gebracht zu werden.

In einem Editor:

  • taxi_pipeline.py in ~ / airflow / dags die in taxi_pipeline.py mit Step 6 gekennzeichneten taxi_pipeline.py
  • Nehmen Sie sich einen Moment Zeit, um den Code zu überprüfen, den Sie nicht kommentiert haben

In einem Browser:

  • Kehren Sie zur DAG-Listenseite in Airflow zurück
  • Klicken Sie auf die Schaltfläche Aktualisieren auf der rechten Seite für die Taxi-DAG
    • Sie sollten sehen "DAG [Taxi] ist jetzt frisch wie ein Gänseblümchen"
  • Taxi auslösen
  • Warten Sie, bis die Pipeline abgeschlossen ist
    • Alles dunkelgrün
    • Verwenden Sie die Aktualisierung auf der rechten Seite oder die Aktualisierungsseite

Modellleistung analysieren

Zurück auf Jupyter:

Kehren Sie in Ihrem Browser zur Registerkarte Jupyter zurück.

  • Öffnen Sie step6.ipynb
  • Folgen Sie dem Notizbuch

Modellleistung analysieren

Fortgeschritteneres Beispiel

Das hier vorgestellte Beispiel soll Ihnen nur den Einstieg erleichtern. Ein ausführlicheres Beispiel finden Sie im TFMA Chicago Taxi Tutorial .

Schritt 7: Produktionsbereit

Wenn das neue Modell fertig ist, machen Sie es so.

  • Pusher setzt SavedModels an bekannten Standorten ein

Bereitstellungsziele erhalten neue Modelle von bekannten Standorten

  • TensorFlow Serving
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Hub

Komponenten

  • Pusher stellt das Modell in einer bedienenden Infrastruktur bereit.

In einem Editor:

  • In ~ / airflow / dags kommentieren Sie die mit Step 7 gekennzeichneten Zeilen in beiden taxi_pipeline.py
  • Nehmen Sie sich einen Moment Zeit, um den Code zu überprüfen, den Sie nicht kommentiert haben

In einem Browser:

  • Kehren Sie zur DAG-Listenseite in Airflow zurück
  • Klicken Sie auf die Schaltfläche Aktualisieren auf der rechten Seite für die Taxi-DAG
    • Sie sollten sehen "DAG [Taxi] ist jetzt frisch wie ein Gänseblümchen"
  • Taxi auslösen
  • Warten Sie, bis die Pipeline abgeschlossen ist
    • Alles dunkelgrün
    • Verwenden Sie die Aktualisierung auf der rechten Seite oder die Aktualisierungsseite

Produktionsbereit

Nächste Schritte

Sie haben jetzt Ihr Modell trainiert und validiert und eine SavedModel Datei im SavedModel ~/airflow/saved_models/taxi exportiert. Ihr Modell ist jetzt produktionsbereit. Sie können Ihr Modell jetzt auf jedem der TensorFlow-Bereitstellungsziele bereitstellen, einschließlich:

  • TensorFlow Serving , um Ihr Modell auf einem Server oder einer Serverfarm bereitzustellen und REST- und / oder gRPC-Inferenzanforderungen zu verarbeiten.
  • TensorFlow Lite , um Ihr Modell in eine native mobile Android- oder iOS-Anwendung oder in eine Raspberry Pi-, IoT- oder Mikrocontroller-Anwendung aufzunehmen.
  • TensorFlow.js , um Ihr Modell in einem Webbrowser oder einer Node.JS-Anwendung auszuführen.