Aide à protéger la Grande barrière de corail avec tensorflow sur Kaggle Rejoignez Défi

Tutoriel TFX Airflow

PythonPyPI

introduction

Ce didacticiel est conçu pour présenter TensorFlow Extended (TFX) et vous aider à apprendre à créer vos propres pipelines de machine learning. 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

S'il vous plaît voir le Guide de l' utilisateur TFX pour en savoir plus.

Pas à pas

Vous allez progressivement créer 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. Entraînement
  6. Analyse des performances du modèle
  7. Prêt pour la fabrication

Conditions préalables

  • Linux/Mac OS
  • Environnement virtuel
  • 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 de GCC < 7, vous devez mettre à jour GCC. Sinon , vous verrez des erreurs lors de l' exécution airflow webserver d' airflow webserver . Vous pouvez vérifier votre version actuelle avec :

gcc --version

Si vous devez 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 Python 3 et git déjà installé, vous pouvez les installer à l' aide du Homebrew gestionnaire de paquets:

/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 des threads lors de l'exécution d'Airflow, en fonction de la configuration. Pour éviter ces problèmes , vous devez modifier votre ~/.bash_profile et ajoutez la ligne suivante à la fin du fichier:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Matériel didactique

Le code de ce tutoriel est disponible à l' adresse: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

Le code est organisé par les étapes sur lesquelles vous travaillez, donc pour chaque étape, vous aurez le code dont vous avez besoin et des instructions sur ce qu'il faut en faire.

Les fichiers du didacticiel incluent à 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 de ML à l'aide de TFX

  • Les pipelines TFX sont appropriés lorsque vous déploierez 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/du 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 le ML de production

Vous suivez un processus de développement ML typique

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

Ajout du code pour chaque étape

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

Le code que vous ajouterez pour chaque étape se répartit généralement en 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 décommenterez les 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. Comme vous le faites que nous vous encourageons à lire le code que vous décommentant.

Jeu de données sur les taxis de Chicago

TaxiTaxi de Chicago

Vous utilisez le taxi Trips ensemble de données publié par la ville de Chicago.

Vous pouvez en savoir plus sur l'ensemble de données dans Google BigQuery . Explorez l'ensemble des données dans l' interface utilisateur 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 d'une manière qui le rend facile à travailler pour ce tutoriel.

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 examiner 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 au cours de 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 avez des problèmes avec le chargement de la console Airflow dans votre navigateur Web, ou s'il y avait des erreurs lors de l' exécution airflow webserver d' airflow webserver , vous pouvez avoir une autre application en cours d' exécution sur le port 8080. C'est le port par défaut pour Airflow, mais vous pouvez le changer à tout autre port utilisateur qui n'est pas utilisé. Par exemple, pour exécuter Airflow sur le port 7070, vous pouvez exécuter :

airflow webserver -p 7070

Boutons d'affichage du DAG

Boutons DAG

  • Utilisez le bouton à gauche pour permettre à la DAG
  • Utilisez le bouton à droite pour actualiser la DAG lorsque vous modifiez
  • Utilisez le bouton de droite pour déclencher la DAG
  • Cliquez sur taxi pour accéder à la vue graphique du DAG

Bouton d'actualisation du graphique

CLI du flux d'air

Vous pouvez également utiliser l' Airflow CLI 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. Au fur et à mesure que chaque composant s'exécute, la couleur du contour du composant dans le graphique DAG changera pour montrer son état. Lorsqu'un composant a terminé son traitement, le contour devient vert foncé pour indiquer que c'est fait.

Jusqu'à présent, vous n'avez que le composant CsvExampleGen dans notre pipeline, vous devez donc attendre qu'il devienne vert foncé (environ 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 pour 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 pour l'ensemble de données.
  • SchemaGen SchemaGen examine les statistiques et crée un schéma de données.
  • ExampleValidator recherche des anomalies et des valeurs manquantes dans l'ensemble de données.

Dans un éditeur :

  • Dans ~ / débit d' air / DAG décommenter 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 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 :

Plus tôt, vous avez couru jupyter notebook , qui a ouvert 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 uniquement destiné à vous aider à démarrer. Pour un exemple plus avancée voir la validation des données tensorflow Colab .

Pour plus d' informations sur l' utilisation de TFDV pour explorer et valider un ensemble de données, voir 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 des caractéristiques.

  • Croix de caractéristique
  • Vocabulaires
  • Incrustations
  • APC
  • Encodage catégoriel

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

Composants

Transformer

  • Transformer réalise l' ingénierie de fonction sur l'ensemble de données.

Dans un éditeur :

  • Dans ~ / débit d' air / DAG décommenter les lignes marquées Step 4 dans les deux 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 uniquement destiné à vous aider à démarrer. Pour un exemple plus avancé voir la tensorflow Transformer Colab .

Étape 5 : formation

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

  • Inclure les transformations de l'étape 4 afin qu'elles soient appliquées de manière cohérente
  • Enregistrez les résultats en tant que modèle enregistré 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 ~ / débit d' air / DAG décommenter les lignes marquées Step 5 dans les deux 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

Former un modèle

De retour sur Jupyter :

Revenez à l'onglet Jupyter de votre navigateur.

  • Ouvrez step5.ipynb
  • Suivez le cahier

Former un modèle

Exemple plus avancé

L'exemple présenté ici est uniquement destiné à vous aider à démarrer. Pour un exemple plus avancée voir le TensorBoard Tutorial .

Étape 6 : Analyser les performances du modèle

Comprendre plus que les métriques de haut niveau.

  • Les utilisateurs expérimentent les performances du modèle pour leurs requêtes uniquement
  • Les mauvaises performances sur des tranches de données peuvent être masquées par des métriques de niveau supérieur
  • L'équité du modèle est importante
  • Souvent, les sous-ensembles clés d'utilisateurs ou de données sont très importants et peuvent être petits
    • Performances dans des conditions critiques mais inhabituelles
    • Performance pour les 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

  • Évaluateur effectue l'analyse approfondie des résultats de la formation, et assure que le modèle est « assez bon » pour être poussé à la production.

Dans un éditeur :

  • Dans ~ / débit d' air / DAG décommenter 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 de déclenchement
  • Attendre la fin du pipeline
    • Tout vert foncé
    • Utiliser l'actualisation 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 uniquement destiné à vous aider à démarrer. Pour un exemple plus avancée voir le TFMA Chicago Taxi Tutorial .

É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 d'emplacements bien connus

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

Composants

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

Dans un éditeur :

  • Dans ~ / débit d' air / DAG décommenter 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é
    • Utiliser l'actualisation sur le côté droit ou actualiser la page

Prêt pour la fabrication

Prochaines étapes

Vous avez maintenant formé et validé votre modèle, et exporté un SavedModel fichier sous le ~/airflow/saved_models/taxi d' ~/airflow/saved_models/taxi répertoire. 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 service , pour servir votre modèle sur une batterie de serveurs ou d'un serveur et le traitement REST et / ou demandes d'inférence GRPC.
  • Tensorflow Lite , pour inclure votre modèle dans une application mobile native Android ou iOS, ou dans un Raspberry Pi, IdO, ou l' application microcontrôleur.
  • TensorFlow.js , pour l' exécution de votre modèle dans un navigateur Web ou une application Node.JS.