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:
- Richten Sie Ihre Umgebung ein
- Rufen Sie das erste Pipeline-Skelett auf
- Tauchen Sie in Ihre Daten ein
- Feature Engineering
- Ausbildung
- Modellleistung analysieren
- 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
Lernmaterialien
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
- tax_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
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 beim Laden der Airflow-Konsole in Ihrem Webbrowser Probleme auftreten oder 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
- 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
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 und zeigt ihren Status an. 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).
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
- 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 intaxi_pipeline.py
mitStep 3
gekennzeichnetentaxi_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 Aktualisieren auf der rechten Seite oder Aktualisierungsseite
Zurück auf Jupyter:
Zuvor haben Sie ein Jupyter- 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
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
- 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 intaxi_pipeline.py
als auch intaxi_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 Seite mit der DAG-Liste 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 Aktualisieren auf der rechten Seite oder Aktualisierungsseite
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
- Der Trainer trainiert das Modell mit TensorFlow Estimators
In einem Editor:
- In ~ / airflow / dags kommentieren Sie die mit
Step 5
gekennzeichneten Zeilen sowohl intaxi_pipeline.py
als auch intaxi_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 Aktualisieren auf der rechten Seite oder Aktualisierungsseite
Zurück auf Jupyter:
Kehren Sie in Ihrem Browser zur Registerkarte Jupyter zurück.
- Öffnen Sie step5.ipynb
- Folgen Sie dem Notizbuch
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 verdeckt 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 intaxi_pipeline.py
mitStep 6
gekennzeichnetentaxi_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
- 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 Aktualisieren auf der rechten Seite oder Aktualisierungsseite
Zurück auf Jupyter:
Kehren Sie in Ihrem Browser zur Registerkarte Jupyter zurück.
- Öffnen Sie step6.ipynb
- Folgen Sie dem Notizbuch
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 beidentaxi_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
- 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 Aktualisieren auf der rechten Seite oder Aktualisierungsseite
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.