Testare la pipeline utilizzando gli esecutori di stub

Introduzione

È necessario completare il tutorial template.ipynb fino al passaggio 6 per procedere con questo tutorial.

Questo documento fornirà istruzioni per testare una pipeline TensorFlow Extended (TFX) utilizzando BaseStubExecuctor , che genera artefatti falsi utilizzando i dati del golden test. Questo è destinato agli utenti per sostituire gli esecutori che non desiderano testare in modo da poter risparmiare tempo nell'esecuzione degli esecutori effettivi. L'esecutore di stub viene fornito con il pacchetto TFX Python in tfx.experimental.pipeline_testing.base_stub_executor .

Questo tutorial funge da estensione del tutorial template.ipynb , pertanto utilizzerai anche il set di dati Taxi Trips rilasciato dalla città di Chicago. Ti consigliamo vivamente di provare a modificare i componenti prima di utilizzare gli esecutori di stub.

1. Registra gli output della pipeline in Google Cloud Storage

Dobbiamo prima registrare gli output della pipeline in modo che gli esecutori dello stub possano copiare gli artefatti dagli output registrati.

Poiché questo tutorial presuppone che tu abbia completato template.ipynb fino al passaggio 6, un'esecuzione corretta della pipeline deve essere stata salvata in MLMD . È possibile accedere alle informazioni di esecuzione in MLMD utilizzando il server gRPC.

Apri un Terminale ed esegui i seguenti comandi:

  1. Genera un file kubeconfig con le credenziali appropriate: bash gcloud container clusters get-credentials $cluster_name --zone $compute_zone --project $gcp_project_id $compute_zone è la regione per il motore gcp e $gcp_project_id è l'ID del tuo progetto GCP.

  2. Configura il port forwarding per la connessione a MLMD: bash nohup kubectl port-forward deployment/metadata-grpc-deployment -n $namespace $port:8080 & $namespace è lo spazio dei nomi del cluster e $port è qualsiasi porta inutilizzata che verrà utilizzata per port forwarding.

  3. Clona il repository GitHub tfx. All'interno della directory tfx, esegui il comando seguente:

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 deve essere impostato su un percorso in Google Cloud Storage in cui devono essere registrati gli output della pipeline, quindi assicurati di sostituire <gcp_project_id> con l'ID progetto GCP.

$host e $port sono il nome host e la porta del server grpc dei metadati per connettersi a MLMD. $port dovrebbe essere impostato sul numero di porta utilizzato per il port forwarding e puoi impostare "localhost" per il nome host.

Nel tutorial template.ipynb , il nome della pipeline è impostato come "my_pipeline" per impostazione predefinita, quindi imposta pipeline_name="my_pipeline" . Se hai modificato il nome della pipeline durante l'esecuzione del tutorial sul modello, dovresti modificare --pipeline_name di conseguenza.

2. Abilitare gli esecutori di stub in Kubeflow DAG Runner

Innanzitutto, assicurati che il modello predefinito sia stato copiato nella directory del progetto utilizzando il comando CLI tfx template copy . È necessario modificare i due file seguenti nei file sorgente copiati.

  1. Crea un file chiamato stub_component_launcher.py nella directory in cui si trova kubeflow_dag_runner.py e inseriscivi il seguente contenuto.

    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. Imposta gli ID dei componenti come un elenco di ID dei componenti che devono essere testati (in altre parole, gli esecutori degli altri componenti vengono sostituiti con BaseStubExecutor).

  3. Apri kubeflow_dag_runner.py . Aggiungi la seguente istruzione di importazione in alto per utilizzare la classe StubComponentLauncher che abbiamo appena aggiunto.

    import stub_component_launcher
    
  4. In kubeflow_dag_runner.py , aggiungi la classe StubComponentLauncher alla supported_launcher_class di KubeflowDagRunnerConfig per abilitare l'avvio degli esecutori stub:

    runner_config = kubeflow_dag_runner.KubeflowDagRunnerConfig(
        supported_launcher_classes=[
            stub_component_launcher.StubComponentLauncher
        ],
    

3. Aggiorna ed esegui la pipeline con esecutori di stub

Aggiorna la pipeline esistente con la definizione della pipeline modificata con esecutori di stub.

tfx pipeline update --pipeline-path=kubeflow_dag_runner.py \
  --endpoint=$endpoint --engine=kubeflow

$endpoint deve essere impostato sull'endpoint del cluster KFP.

Esegui il comando seguente per creare una nuova esecuzione della pipeline aggiornata.

tfx run create --pipeline-name $pipeline_name --endpoint=$endpoint \
  --engine=kubeflow

Ripulire

Usa il comando fg per accedere al port forwarding in background, quindi ctrl-C per terminare. È possibile eliminare la directory con gli output della pipeline registrati utilizzando gsutil -m rm -R $output_dir .

Per ripulire tutte le risorse Google Cloud utilizzate in questo progetto, puoi eliminare il progetto Google Cloud utilizzato per il tutorial.

In alternativa, puoi ripulire le singole risorse visitando ciascuna console: - Google Cloud Storage - Google Container Registry - Google Kubernetes Engine