Tester le pipeline à l'aide de Stub Executors
Introduction
Vous devez suivre le didacticiel template.ipynb jusqu'à l'étape 6 afin de poursuivre ce didacticiel.
Ce document fournira des instructions pour tester un pipeline TensorFlow Extended (TFX) à l'aide de BaseStubExecuctor , qui génère de faux artefacts à l'aide des données de test Golden. Ceci est destiné aux utilisateurs pour remplacer les exécuteurs qu'ils ne souhaitent pas tester afin de pouvoir gagner du temps lors de l'exécution des exécuteurs réels. L'exécuteur Stub est fourni avec le package TFX Python sous tfx.experimental.pipeline_testing.base_stub_executor .
Ce didacticiel sert d'extension au didacticiel template.ipynb . Vous utiliserez donc également l'ensemble de données Taxi Trips publié par la ville de Chicago. Nous vous encourageons fortement à essayer de modifier les composants avant d'utiliser des exécuteurs de stub.
1. Enregistrez les sorties du pipeline dans Google Cloud Storage
Nous devons d'abord enregistrer les sorties du pipeline afin que les exécuteurs de stub puissent copier les artefacts des sorties enregistrées.
Étant donné que ce didacticiel suppose que vous avez terminé template.ipynb jusqu'à l'étape 6, une exécution réussie du pipeline doit avoir été enregistrée dans le MLMD . Les informations d'exécution dans MLMD sont accessibles à l'aide du serveur gRPC.
Ouvrez un terminal et exécutez les commandes suivantes :
Générez un fichier kubeconfig avec les informations d'identification appropriées :
bash gcloud container clusters get-credentials $cluster_name --zone $compute_zone --project $gcp_project_id$compute_zoneest la région du moteur gcp et$gcp_project_idest l'identifiant de votre projet GCP.Configurez la redirection de port pour la connexion à MLMD :
bash nohup kubectl port-forward deployment/metadata-grpc-deployment -n $namespace $port:8080 &$namespaceest l'espace de noms du cluster et$portest tout port inutilisé qui sera utilisé pour redirection de port.Clonez le référentiel tfx GitHub. Dans le répertoire tfx, exécutez la commande suivante :
python tfx/experimental/pipeline_testing/pipeline_recorder.py \
--output_dir=gs://<gcp_project_id>-kubeflowpipelines-default/testdata \
--host=$host \
--port=$port \
--pipeline_name=$pipeline_name
$output_dir doit être défini sur un chemin dans Google Cloud Storage où les sorties du pipeline doivent être enregistrées. Assurez-vous donc de remplacer <gcp_project_id> par l'ID du projet GCP.
$host et $port sont le nom d'hôte et le port du serveur grpc de métadonnées pour se connecter à MLMD. $port doit être défini sur le numéro de port que vous avez utilisé pour la redirection de port et vous pouvez définir "localhost" pour le nom d'hôte.
Dans le didacticiel template.ipynb , le nom du pipeline est défini par défaut sur "my_pipeline", définissez donc pipeline_name="my_pipeline" . Si vous avez modifié le nom du pipeline lors de l'exécution du didacticiel du modèle, vous devez modifier le --pipeline_name en conséquence.
2. Activer les exécuteurs de stub dans Kubeflow DAG Runner
Tout d’abord, assurez-vous que le modèle prédéfini a été copié dans le répertoire de votre projet à l’aide de la commande CLI tfx template copy . Il est nécessaire d'éditer les deux fichiers suivants dans les fichiers sources copiés.
Créez un fichier appelé
stub_component_launcher.pydans le répertoire où se trouve kubeflow_dag_runner.py et placez-y le contenu suivant.from tfx.experimental.pipeline_testing import base_stub_component_launcher from pipeline import configs class StubComponentLauncher( base_stub_component_launcher.BaseStubComponentLauncher): pass # GCS directory where KFP outputs are recorded test_data_dir = "gs://{}/testdata".format(configs.GCS_BUCKET_NAME) # TODO: customize self.test_component_ids to test components, replacing other # component executors with a BaseStubExecutor. test_component_ids = ['Trainer'] StubComponentLauncher.initialize( test_data_dir=test_data_dir, test_component_ids=test_component_ids)Définissez les identifiants de composants comme étant une liste d'identifiants de composants qui doivent être testés (en d'autres termes, les exécuteurs des autres composants sont remplacés par BaseStubExecutor).
Ouvrez
kubeflow_dag_runner.py. Ajoutez l'instruction d'importation suivante en haut pour utiliser la classeStubComponentLauncherque nous venons d'ajouter.import stub_component_launcherDans
kubeflow_dag_runner.py, ajoutez la classeStubComponentLauncherà lasupported_launcher_classdeKubeflowDagRunnerConfigpour activer le lancement des exécuteurs de stub :runner_config = kubeflow_dag_runner.KubeflowDagRunnerConfig( supported_launcher_classes=[ stub_component_launcher.StubComponentLauncher ],
3. Mettez à jour et exécutez le pipeline avec des exécuteurs de stub
Mettez à jour le pipeline existant avec la définition de pipeline modifiée avec les exécuteurs de stub.
tfx pipeline update --pipeline-path=kubeflow_dag_runner.py \
--endpoint=$endpoint --engine=kubeflow
$endpoint doit être défini sur le point de terminaison de votre cluster KFP.
Exécutez la commande suivante pour créer une nouvelle exécution de votre pipeline mis à jour.
tfx run create --pipeline-name $pipeline_name --endpoint=$endpoint \
--engine=kubeflow
Nettoyage
Utilisez la commande fg pour accéder à la redirection de port en arrière-plan, puis ctrl-C pour terminer. Vous pouvez supprimer le répertoire contenant les sorties de pipeline enregistrées à l'aide gsutil -m rm -R $output_dir .
Pour nettoyer toutes les ressources Google Cloud utilisées dans ce projet, vous pouvez supprimer le projet Google Cloud que vous avez utilisé pour le didacticiel.
Vous pouvez également nettoyer des ressources individuelles en visitant chaque console : - Google Cloud Storage - Google Container Registry - Google Kubernetes Engine