Tutoriel sur le flux d'air TFX

Aperçu

Aperçu

Ce didacticiel est conçu pour vous aider à apprendre à créer vos propres pipelines de machine learning en utilisant TensorFlow Extended (TFX) et Apache Airflow comme orchestrateur. Il fonctionne sur Vertex AI Workbench et montre l'intégration avec TFX et TensorBoard ainsi que l'interaction avec TFX dans un environnement Jupyter Lab.

Qu'allez-vous faire ?

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

  • Un pipeline TFX est un graphe acyclique dirigé, ou "DAG". Nous ferons souvent référence aux pipelines en tant que DAG.
  • 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 ou peuvent devenir 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 les pipelines TFX pour le ML de production

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

Vous suivrez un processus de développement ML typique :

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

Apache Airflow pour l'orchestration de pipeline

Les orchestrateurs TFX sont responsables de la planification des composants du pipeline TFX en fonction des dépendances définies par le pipeline. TFX est conçu pour être portable dans plusieurs environnements et frameworks d'orchestration. L'un des orchestrateurs par défaut pris en charge par TFX est Apache Airflow . Cet atelier illustre l'utilisation d'Apache Airflow pour l'orchestration du pipeline TFX. Apache Airflow est une plate-forme pour créer, planifier et surveiller par programmation des flux de travail. TFX utilise Airflow pour créer des flux de travail sous forme de graphiques acycliques dirigés (DAG) de tâches. L'interface utilisateur riche permet de visualiser facilement les pipelines en cours d'exécution en production, de surveiller la progression et de résoudre les problèmes en cas de besoin. Les workflows Apache Airflow sont définis en tant que code. Cela les rend plus maintenables, versionnables, testables et collaboratives. Apache Airflow est adapté aux pipelines de traitement par lots. Il est léger et facile à apprendre.

Dans cet exemple, nous allons exécuter un pipeline TFX sur une instance en configurant manuellement Airflow.

Les autres orchestrateurs par défaut pris en charge par TFX sont Apache Beam et Kubeflow. Apache Beam peut s'exécuter sur plusieurs backends de traitement de données (Beam Ruunners). Cloud Dataflow est l'un de ces beam runner qui peut être utilisé pour exécuter des pipelines TFX. Apache Beam peut être utilisé à la fois pour les pipelines de traitement par flux et par lots.
Kubeflow est une plate-forme ML open source dédiée à rendre les déploiements de flux de travail d'apprentissage automatique (ML) sur Kubernetes simples, portables et évolutifs. Kubeflow peut être utilisé comme orchestrateur pour les pipelines TFFX lorsqu'ils doivent être déployés sur des clusters Kubernetes. En outre, vous pouvez également utiliser votre propre orchestrateur personnalisé pour exécuter un pipeline TFX.

En savoir plus sur le flux d'air ici .

Ensemble de données sur les taxis de Chicago

taxi.jpg

chicago.png

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

Modèle d'objectif - Classification binaire

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

Configurer le projet Google Cloud

Avant de cliquer sur le bouton Start Lab Lisez ces instructions. Les laboratoires sont chronométrés et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Start Lab , indique la durée pendant laquelle les ressources Google Cloud seront mises à votre disposition.

Ce laboratoire pratique vous permet d'effectuer vous-même les activités de laboratoire dans un environnement cloud réel, et non dans un environnement de simulation ou de démonstration. Pour ce faire, il vous donne de nouveaux identifiants temporaires que vous utilisez pour vous connecter et accéder à Google Cloud pendant la durée de l'atelier.

Ce dont vous avez besoin Pour réaliser cet atelier, vous avez besoin :

  • Accès à un navigateur Internet standard (navigateur Chrome recommandé).
  • Il est temps de terminer le laboratoire.

Comment démarrer votre laboratoire et se connecter à Google Cloud Console 1. Cliquez sur le bouton Démarrer le laboratoire . Si vous devez payer pour le laboratoire, une fenêtre contextuelle s'ouvre pour vous permettre de sélectionner votre mode de paiement. Sur la gauche se trouve un panneau contenant les informations d'identification temporaires que vous devez utiliser pour ce laboratoire.

qwiksetup1.png

  1. Copiez le nom d'utilisateur, puis cliquez sur Ouvrir la console Google . Le laboratoire active les ressources, puis ouvre un autre onglet qui affiche la page de connexion.

qwiksetup2.png

Conseil : Ouvrez les onglets dans des fenêtres distinctes, côte à côte.

qwiksetup3.png

  1. Dans la page de connexion, collez le nom d'utilisateur que vous avez copié à partir du panneau de gauche. Ensuite, copiez et collez le mot de passe.
  1. Cliquez sur les pages suivantes :
  2. Acceptez les termes et conditions.
  • N'ajoutez pas d'options de récupération ou d'authentification à deux facteurs (car il s'agit d'un compte temporaire).

  • Ne vous inscrivez pas pour des essais gratuits.

Après quelques instants, Cloud Console s'ouvre dans cet onglet.

qwiksetup4.png

Activer Cloud Shell

Cloud Shell est une machine virtuelle chargée d'outils de développement. Il offre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell fournit un accès en ligne de commande à vos ressources Google Cloud.

Dans Cloud Console, dans la barre d'outils en haut à droite, cliquez sur le bouton Activer Cloud Shell .

qwiksetup5.png

Cliquez sur Continuer .

qwiksetup6.png

Il faut quelques instants pour s'approvisionner et se connecter à l'environnement. Lorsque vous êtes connecté, vous êtes déjà authentifié et le projet est défini sur votre _PROJECT ID . Par exemple:

qwiksetup7.png

gcloud est l'outil de ligne de commande de Google Cloud. Il est préinstallé sur Cloud Shell et prend en charge la saisie semi-automatique.

Vous pouvez répertorier le nom du compte actif avec cette commande :

gcloud auth list

(Production)

ACTIF : * COMPTE : student-01-xxxxxxxxxxxx@qwiklabs.net Pour définir le compte actif, exécutez : $ gcloud config set account ACCOUNT

Vous pouvez répertorier l'ID du projet avec cette commande : gcloud config list project (Output)

projet [principal] =

(Exemple de sortie)

Projet [noyau] = qwiklabs-gcp-44776a13dea667a6

Pour obtenir une documentation complète sur gcloud, consultez la présentation de l' outil de ligne de commande gcloud .

Activer les services Google Cloud

  1. Dans Cloud Shell, utilisez gcloud pour activer les services utilisés dans l'atelier. gcloud services enable notebooks.googleapis.com

Déployer l'instance Vertex Notebook

  1. Cliquez sur le menu de navigation et accédez à Vertex AI , puis à Workbench .

vertex-ai-workbench.png

  1. Sur la page Instances de bloc-notes, cliquez sur Nouveau bloc-notes .

  2. Dans le menu Personnaliser l'instance, sélectionnez TensorFlow Enterprise et choisissez la version de TensorFlow Enterprise 2.x (avec LTS) > Sans GPU .

vertex-notebook-create-2.png

  1. Dans la boîte de dialogue Nouvelle instance de bloc-notes , cliquez sur l'icône en forme de crayon pour modifier les propriétés de l'instance.

  2. Pour Nom de l' instance , entrez un nom pour votre instance.

  3. Pour Région , sélectionnez us-east1 et pour Zone , sélectionnez une zone dans la région sélectionnée.

  4. Faites défiler jusqu'à Configuration de la machine et sélectionnez e2-standard-2 pour Type de machine.

  5. Laissez les champs restants avec leur valeur par défaut et cliquez sur Créer .

Après quelques minutes, la console Vertex AI affichera le nom de votre instance, suivi de Open Jupyterlab .

  1. Cliquez sur Ouvrir JupyterLab . Une fenêtre JupyterLab s'ouvrira dans un nouvel onglet.

Configurer l'environnement

Cloner le dépôt du laboratoire

Ensuite, vous allez cloner le référentiel tfx dans votre instance JupyterLab. 1. Dans JupyterLab, cliquez sur l'icône Terminal pour ouvrir un nouveau terminal.

Remarque : Si vous y êtes invité, cliquez sur Cancel pour la version recommandée.

  1. Pour cloner le référentiel tfx Github, saisissez la commande suivante et appuyez sur Entrée .
git clone https://github.com/tensorflow/tfx.git
  1. Pour confirmer que vous avez cloné le référentiel, double-cliquez sur le répertoire tfx et confirmez que vous pouvez voir son contenu.

repo-directory.png

Installer les dépendances de laboratoire

  1. Exécutez ce qui suit pour accéder au tfx/tfx/examples/airflow_workshop/taxi/setup/ , puis exécutez ./setup_demo.sh pour installer les dépendances de laboratoire :
cd ~/tfx/tfx/examples/airflow_workshop/taxi/setup/
./setup_demo.sh

Le code ci-dessus sera

  • Installez les packages requis.
  • Créez un dossier de flux d' airflow dans le dossier d'accueil.
  • Copiez le dossier dags du dossier tfx/tfx/examples/airflow_workshop/taxi/setup/ vers le dossier ~/airflow/ .
  • Copiez le fichier csv de tfx/tfx/examples/airflow_workshop/taxi/setup/data vers ~/airflow/data .

airflow-home.png

Configurer le serveur Airflow

Créer une règle de pare-feu pour accéder au serveur Airflow dans le navigateur

  1. Accédez à <a href="https://console.cloud.google.com/networking/firewalls/list">https://console.cloud.google.com/networking/firewalls/list</a> et assurez-vous le nom du projet est sélectionné de manière appropriée
  2. Cliquez sur l'option CREATE FIREWALL RULE en haut

règle-pare-feu.png

Dans la boîte de dialogue Créer un pare-feu , suivez les étapes répertoriées ci-dessous.

  1. Pour Name , mettez airflow-tfx .
  2. Pour Priorité , sélectionnez 1 .
  3. Pour Cibles , sélectionnez All instances in the network .
  4. Pour les plages IPv4 source , sélectionnez 0.0.0.0/0
  5. Pour Protocoles et ports , cliquez sur tcp et entrez 7000 dans la case à côté de tcp
  6. Cliquez sur Create .

create-firewall-dialog.png

Exécutez le serveur d'airflow à partir de votre shell

Dans la fenêtre Jupyter Lab Terminal, accédez au répertoire d'accueil, exécutez la commande airflow users create pour créer un utilisateur administrateur pour Airflow :

cd
airflow users  create --role Admin --username admin --email admin --firstname admin --lastname admin --password admin

Exécutez ensuite la commande airflow webserver et airflow scheduler pour exécuter le serveur. Choisissez le port 7000 car il est autorisé via le pare-feu.

nohup airflow webserver -p 7000 &> webserver.out &
nohup airflow scheduler &> scheduler.out &

Obtenez votre IP externe

  1. Dans Cloud Shell, utilisez gcloud pour obtenir l'adresse IP externe.
gcloud compute instances list

gcloud-instance-ip.png

Exécution d'un DAG/Pipeline

Dans un navigateur

Ouvrez un navigateur et accédez à http:// :7000

  • Dans la page de connexion, entrez le nom d'utilisateur ( admin ) et le mot de passe ( admin ) que vous avez choisis lors de l'exécution de la commande airflow users create .

airflow-login.png

Airflow charge les DAG à partir de fichiers source Python. Il prend chaque fichier et l'exécute. Ensuite, il charge tous les objets DAG de ce fichier. Tous les fichiers .py qui définissent les objets DAG seront répertoriés en tant que pipelines sur la page d'accueil du flux d'air.

Dans ce didacticiel, Airflow analyse le dossier ~/airflow/dags/ à la recherche d'objets DAG.

Si vous ouvrez ~/airflow/dags/taxi_pipeline.py et faites défiler vers le bas, vous pouvez voir qu'il crée et stocke un objet DAG dans une variable nommée DAG . Par conséquent, il sera répertorié en tant que pipeline sur la page d'accueil du flux d'air, comme indiqué ci-dessous :

dag-home-full.png

Si vous cliquez sur taxi, vous serez redirigé vers la vue grille du DAG. Vous pouvez cliquer sur l'option Graph en haut pour obtenir la vue graphique du DAG.

airflow-dag-graph.png

Déclencher le taxi pipeline

Sur la page d'accueil, vous pouvez voir les boutons qui peuvent être utilisés pour interagir avec le DAG.

dag-boutons.png

Sous l'en-tête des actions , cliquez sur le bouton de déclenchement pour déclencher le pipeline.

Dans la page taxi DAG , utilisez le bouton de droite pour actualiser l'état de la vue graphique du DAG au fur et à mesure de l'exécution du pipeline. De plus, vous pouvez activer l' actualisation automatique pour demander à Airflow d'actualiser automatiquement la vue graphique au fur et à mesure que l'état change.

dag-bouton-refresh.png

Vous pouvez également utiliser la CLI Airflow dans le terminal 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 attendant la fin du pipeline

Une fois que vous avez déclenché votre pipeline, dans la vue DAG, vous pouvez suivre la progression de votre pipeline pendant son exécution. Au fur et à mesure que chaque composant s'exécute, la couleur du contour du composant dans le graphique DAG change pour indiquer son état. Lorsqu'un composant a terminé le traitement, le contour devient vert foncé pour indiquer que c'est fait.

dag-step7.png

Comprendre les composants

Nous allons maintenant examiner en détail les composants de ce pipeline et examiner individuellement les sorties produites par chaque étape du pipeline.

  1. Dans JupyterLab, accédez à ~/tfx/tfx/examples/airflow_workshop/taxi/notebooks/

  2. Ouvrez notebook.ipynb. cahier-ipynb.png

  3. Continuez l'atelier dans le bloc-notes et exécutez chaque cellule en cliquant sur le bouton Exécuter ( run-bouton.png ) icône en haut de l'écran. Alternativement, vous pouvez exécuter le code dans une cellule avec SHIFT + ENTER .

Lisez le récit et assurez-vous de comprendre ce qui se passe dans chaque cellule.