Rejoignez la communauté SIG TFX-Addons et contribuez à rendre TFX encore meilleur ! Rejoignez SIG TFX-Addons

Tutoriel TFX Airflow

Python PyPI

introduction

Ce didacticiel est conçu pour présenter TensorFlow Extended (TFX) et vous aider à apprendre à créer vos propres pipelines d'apprentissage automatique. Il s'exécute localement et montre l'intégration avec TFX et TensorBoard ainsi que l'interaction avec TFX dans les notebooks Jupyter.

Vous suivrez un processus de développement ML typique, en commençant par examiner l'ensemble de données, et vous vous retrouverez avec un pipeline de travail complet. En cours de route, vous explorerez des moyens de déboguer et de mettre à jour votre pipeline, et de mesurer les performances.

Apprendre encore plus

Veuillez consulter le guide de l'utilisateur TFX pour en savoir plus.

Pas à pas

Vous créerez progressivement votre pipeline en travaillant étape par étape, en suivant un processus de développement ML typique. Voici les étapes:

  1. Configurez votre environnement
  2. Afficher le squelette initial du pipeline
  3. Plongez dans vos données
  4. Ingénierie des fonctionnalités
  5. Formation
  6. Analyse des performances du modèle
  7. Prêt pour la production

Conditions préalables

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

Forfaits requis

En fonction de votre environnement, vous devrez peut-être installer plusieurs packages:

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

Si vous exécutez Python 3.6, vous devez installer python3.6-dev:

sudo apt-get install python3.6-dev

Si vous exécutez Python 3.7, vous devez installer python3.7-dev:

sudo apt-get install python3.7-dev

De plus, si votre système a une version GCC <7, vous devez mettre à jour GCC. Sinon, vous verrez des erreurs lors de l'exécution du airflow webserver . Vous pouvez vérifier votre version actuelle avec:

gcc --version

Si vous avez besoin de mettre à jour GCC, vous pouvez exécuter ceci:

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

Environnement MacOS

Si vous n'avez pas encore installé Python 3 et git, vous pouvez les installer à l'aide du gestionnaire de paquets 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 a parfois des problèmes pour forger les threads lors de l'exécution d'Airflow, en fonction de la configuration. Pour éviter ces problèmes, vous devez éditer votre ~/.bash_profile et ajouter la ligne suivante à la fin du fichier:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Matériel didactique

Le code de ce tutoriel est disponible sur: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

Le code est organisé en fonction des étapes sur lesquelles vous travaillez, donc pour chaque étape, vous aurez le code dont vous avez besoin et des instructions sur la marche à suivre.

Les fichiers du didacticiel contiennent à la fois un exercice et la solution de l'exercice, au cas où vous seriez bloqué.

Exercer

  • taxi_pipeline.py
  • taxi_utils.py
  • taxi DAG

Solution

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

Que fais tu

Vous apprenez à créer un pipeline ML à l'aide de TFX

  • Les pipelines TFX sont appropriés lorsque vous déployez une application ML de production
  • Les pipelines TFX sont appropriés lorsque les ensembles de données sont volumineux
  • Les pipelines TFX sont appropriés lorsque la cohérence de la formation / service est importante
  • Les pipelines TFX sont appropriés lorsque la gestion des versions pour l'inférence est importante
  • Google utilise des pipelines TFX pour la production ML

Vous suivez un processus de développement de ML typique

  • Ingérer, comprendre et nettoyer nos données
  • Ingénierie des fonctionnalités
  • Formation
  • Analyser les performances du modèle
  • Faire mousser, rincer, répéter
  • Prêt pour la production

Ajout du code pour chaque étape

Le didacticiel est conçu pour que tout le code soit inclus dans les fichiers, mais tout le code des étapes 3 à 7 est commenté et marqué par des commentaires en ligne. Les commentaires en ligne identifient à quelle étape la ligne de code s'applique. Par exemple, le code de l'étape 3 est marqué du commentaire # Step 3 .

Le code que vous ajouterez pour chaque étape appartient généralement à 3 régions du code:

  • importations
  • La configuration du DAG
  • La liste renvoyée par l'appel create_pipeline ()
  • Le code de support dans taxi_utils.py

Au fur et à mesure que vous parcourez le didacticiel, vous supprimerez les commentaires des lignes de code qui s'appliquent à l'étape du didacticiel sur laquelle vous travaillez actuellement. Cela ajoutera le code de cette étape et mettra à jour votre pipeline. En faisant cela, nous vous encourageons fortement à revoir le code que vous ne commentez pas .

Ensemble de données de taxi de Chicago

TaxiTaxi de Chicago

Vous utilisez l' ensemble de données Taxi Trips publié par la ville de Chicago.

Vous pouvez en savoir plus sur l'ensemble de données dans Google BigQuery . Explorez l'ensemble de données complet dans l' interface utilisateur de BigQuery .

Objectif du modèle - Classification binaire

Le client donnera-t-il un pourboire supérieur ou inférieur à 20%?

Étape 1: Configurez votre environnement

Le script de configuration ( setup_demo.sh ) installe TFX et Airflow , et configure Airflow de manière à faciliter l'utilisation de ce didacticiel.

Dans une coquille:

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

Vous devriez revoir setup_demo.sh pour voir ce qu'il fait.

Étape 2: afficher le squelette initial du pipeline

Bonjour le monde

Dans une coquille:

# 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

Vous avez démarré le bloc-notes Jupyter à cette étape. Plus tard, vous exécuterez les blocs-notes dans ce dossier.

Dans un navigateur:

  • Ouvrez un navigateur et accédez à http://127.0.0.1:8080

Dépannage

Si vous rencontrez des problèmes avec le chargement de la console Airflow dans votre navigateur Web, ou s'il y a eu des erreurs lorsque vous avez exécuté le airflow webserver Airflow, une autre application peut être exécutée sur le port 8080. C'est le port par défaut pour Airflow, mais vous pouvez le modifier à tout autre port utilisateur non utilisé. Par exemple, pour exécuter Airflow sur le port 7070, vous pouvez exécuter:

airflow webserver -p 7070

Boutons de vue DAG

Boutons DAG

  • Utilisez le bouton à gauche pour activer le DAG
  • Utilisez le bouton à droite pour actualiser le DAG lorsque vous apportez des modifications
  • Utilisez le bouton à droite pour déclencher le DAG
  • Cliquez sur taxi pour accéder à la vue graphique du DAG

Bouton d'actualisation du graphique

CLI de flux d'air

Vous pouvez également utiliser l' interface de ligne de commande Airflow pour activer et déclencher vos DAG:

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

# trigger
airflow trigger_dag <your DAG name>

En attente de la fin du pipeline

Une fois que vous avez déclenché votre pipeline dans la vue DAG, vous pouvez observer la fin du traitement de votre pipeline. À mesure que chaque composant s'exécute, la couleur du contour du composant dans le graphique DAG change pour afficher son état. Lorsqu'un composant a terminé le traitement, le contour devient vert foncé pour indiquer que c'est terminé.

Jusqu'à présent, vous n'avez que le composant CsvExampleGen dans notre pipeline, vous devez donc attendre qu'il devienne vert foncé (~ 1 minute).

Configuration terminée

Étape 3: plongez dans vos données

La première tâche de tout projet de science des données ou de ML est de comprendre et de nettoyer les données.

  • Comprendre les types de données pour chaque fonctionnalité
  • Rechercher des anomalies et des valeurs manquantes
  • Comprendre les distributions de chaque fonctionnalité

Composants

Composants de donnéesComposants de données

  • ExampleGen ingère et divise l'ensemble de données d'entrée.
  • StatisticsGen calcule les statistiques de l'ensemble de données.
  • SchemaGen SchemaGen examine les statistiques et crée un schéma de données.
  • ExampleValidator recherche les anomalies et les valeurs manquantes dans l'ensemble de données.

Dans un éditeur:

  • Dans ~ / airflow / dags décommentez les lignes marquées Step 3 dans taxi_pipeline.py
  • Prenez un moment pour revoir le code que vous avez décommenté

Dans un navigateur:

  • Revenez à la page de la liste des DAG dans Airflow en cliquant sur le lien "DAG" dans le coin supérieur gauche
  • Cliquez sur le bouton d'actualisation sur le côté droit pour le taxi DAG
    • Vous devriez voir "DAG [taxi] est maintenant frais comme une marguerite"
  • Taxi de déclenchement
  • Attendre la fin du pipeline
    • Tout vert foncé
    • Utiliser l'actualisation sur le côté droit ou actualiser la page

Plongez dans les données

De retour sur Jupyter:

Auparavant, vous jupyter notebook , qui ouvrait une session Jupyter dans un onglet du navigateur. Revenez maintenant à cet onglet dans votre navigateur.

  • Ouvrez step3.ipynb
  • Suivez le cahier

Plongez dans les données

Exemple plus avancé

L'exemple présenté ici est vraiment uniquement destiné à vous aider à démarrer. Pour un exemple plus avancé, consultez la Colab de validation des données TensorFlow .

Pour plus d'informations sur l'utilisation de TFDV pour explorer et valider un ensemble de données, consultez les exemples sur tensorflow.org .

Étape 4: Ingénierie des fonctionnalités

Vous pouvez augmenter la qualité prédictive de vos données et / ou réduire la dimensionnalité grâce à l'ingénierie d'entités.

  • Traverses de caractéristiques
  • Vocabulaires
  • Embeddings
  • PCA
  • Encodage catégorique

L'un des avantages de l'utilisation de TFX est que vous écrirez votre code de transformation une fois, et les transformations résultantes seront cohérentes entre la formation et la diffusion.

Composants

Transformer

  • Transform effectue une ingénierie d'entités sur le jeu de données.

Dans un éditeur:

  • Dans ~ / airflow / dags, décommentez les lignes marquées Step 4 à la fois dans taxi_pipeline.py et taxi_utils.py
  • Prenez un moment pour revoir le code que vous avez décommenté

Dans un navigateur:

  • Revenir à la page de liste des DAG dans Airflow
  • Cliquez sur le bouton d'actualisation sur le côté droit pour le taxi DAG
    • Vous devriez voir "DAG [taxi] est maintenant frais comme une marguerite"
  • Taxi de déclenchement
  • Attendre la fin du pipeline
    • Tout vert foncé
    • Utiliser l'actualisation sur le côté droit ou actualiser la page

Ingénierie des fonctionnalités

De retour sur Jupyter:

Revenez à l'onglet Jupyter de votre navigateur.

  • Ouvrez step4.ipynb
  • Suivez le cahier

Exemple plus avancé

L'exemple présenté ici est vraiment uniquement destiné à vous aider à démarrer. Pour un exemple plus avancé, consultez TensorFlow Transform Colab .

Étape 5: Formation

Entraînez un modèle TensorFlow avec vos belles données, propres et transformées.

  • Incluez les transformations de l'étape 4 afin qu'elles soient appliquées de manière cohérente
  • Enregistrez les résultats en tant que SavedModel pour la production
  • Visualisez et explorez le processus de formation à l'aide de TensorBoard
  • Enregistrez également un EvalSavedModel pour l'analyse des performances du modèle

Composants

Dans un éditeur:

  • Dans ~ / airflow / dags décommentez les lignes marquées Step 5 à la fois dans taxi_pipeline.py et taxi_utils.py
  • Prenez un moment pour revoir le code que vous avez décommenté

Dans un navigateur:

  • Revenir à la page de liste des DAG dans Airflow
  • Cliquez sur le bouton d'actualisation sur le côté droit pour le taxi DAG
    • Vous devriez voir "DAG [taxi] est maintenant frais comme une marguerite"
  • Taxi de déclenchement
  • Attendre la fin du pipeline
    • Tout vert foncé
    • Utiliser l'actualisation sur le côté droit ou actualiser la page

Entraîner un modèle

De retour sur Jupyter:

Revenez à l'onglet Jupyter de votre navigateur.

  • Ouvrez step5.ipynb
  • Suivez le cahier

Entraîner un modèle

Exemple plus avancé

L'exemple présenté ici est vraiment uniquement destiné à vous aider à démarrer. Pour un exemple plus avancé, consultez le didacticiel TensorBoard .

Étape 6: Analyse des performances du modèle

Comprendre bien plus que les métriques de haut niveau.

  • Les utilisateurs bénéficient des performances du modèle pour leurs requêtes uniquement
  • Des performances médiocres sur des tranches de données peuvent être masquées par des métriques de premier niveau
  • L'équité du modèle est importante
  • Les sous-ensembles clés d'utilisateurs ou de données sont souvent très importants et peuvent être petits
    • Performances dans des conditions critiques mais inhabituelles
    • Performances pour des publics clés tels que les influenceurs
  • Si vous remplacez un modèle actuellement en production, assurez-vous d'abord que le nouveau est meilleur
  • L'évaluateur indique au composant Pusher si le modèle est OK

Composants

  • L'évaluateur effectue une analyse approfondie des résultats de la formation et s'assure que le modèle est «suffisamment bon» pour être mis en production.

Dans un éditeur:

  • Dans ~ / airflow / dags décommentez les lignes marquées Step 6 dans les deux taxi_pipeline.py
  • Prenez un moment pour revoir le code que vous avez décommenté

Dans un navigateur:

  • Revenir à la page de liste des DAG dans Airflow
  • Cliquez sur le bouton d'actualisation sur le côté droit pour le taxi DAG
    • Vous devriez voir "DAG [taxi] est maintenant frais comme une marguerite"
  • Taxi à gâchette
  • Attendre la fin du pipeline
    • Tout vert foncé
    • Utilisez actualiser sur le côté droit ou actualiser la page

Analyse des performances du modèle

De retour sur Jupyter:

Revenez à l'onglet Jupyter de votre navigateur.

  • Ouvrez step6.ipynb
  • Suivez le cahier

Analyse des performances du modèle

Exemple plus avancé

L'exemple présenté ici est vraiment uniquement destiné à vous aider à démarrer. Pour un exemple plus avancé, consultez le didacticiel TFMA Chicago Taxi .

Étape 7: Prêt pour la production

Si le nouveau modèle est prêt, faites-le.

  • Pusher déploie SavedModels dans des emplacements bien connus

Les cibles de déploiement reçoivent de nouveaux modèles provenant d'emplacements bien connus

  • Servir TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • Hub TensorFlow

Composants

  • Pusher déploie le modèle sur une infrastructure de service.

Dans un éditeur:

  • Dans ~ / airflow / dags décommentez les lignes marquées Step 7 dans les deux taxi_pipeline.py
  • Prenez un moment pour revoir le code que vous avez décommenté

Dans un navigateur:

  • Revenir à la page de liste des DAG dans Airflow
  • Cliquez sur le bouton d'actualisation sur le côté droit pour le taxi DAG
    • Vous devriez voir "DAG [taxi] est maintenant frais comme une marguerite"
  • Taxi de déclenchement
  • Attendre la fin du pipeline
    • Tout vert foncé
    • Utilisez actualiser sur le côté droit ou actualiser la page

Prêt pour la production

Prochaines étapes

Vous avez maintenant formé et validé votre modèle et exporté un fichier SavedModel sous le répertoire ~/airflow/saved_models/taxi . Votre modèle est maintenant prêt pour la production. Vous pouvez désormais déployer votre modèle sur l'une des cibles de déploiement TensorFlow, notamment:

  • TensorFlow Serving , pour servir votre modèle sur un serveur ou une batterie de serveurs et traiter les demandes d'inférence REST et / ou gRPC.
  • TensorFlow Lite , pour inclure votre modèle dans une application mobile native Android ou iOS, ou dans une application Raspberry Pi, IoT ou microcontrôleur.
  • TensorFlow.js , pour exécuter votre modèle dans un navigateur Web ou une application Node.JS.