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 :

  1. 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_zone est la région du moteur gcp et $gcp_project_id est l'identifiant de votre projet GCP.

  2. Configurez la redirection de port pour la connexion à MLMD : bash nohup kubectl port-forward deployment/metadata-grpc-deployment -n $namespace $port:8080 & $namespace est l'espace de noms du cluster et $port est tout port inutilisé qui sera utilisé pour redirection de port.

  3. 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.

  1. Créez un fichier appelé stub_component_launcher.py dans 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)
    
  2. 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).

  3. Ouvrez kubeflow_dag_runner.py . Ajoutez l'instruction d'importation suivante en haut pour utiliser la classe StubComponentLauncher que nous venons d'ajouter.

    import stub_component_launcher
    
  4. Dans kubeflow_dag_runner.py , ajoutez la classe StubComponentLauncher à la supported_launcher_class de KubeflowDagRunnerConfig pour 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