Probar la canalización utilizando Stub Executors
Introducción
Debe completar el tutorial template.ipynb hasta el Paso 6 para poder continuar con este tutorial.
Este documento proporcionará instrucciones para probar una canalización de TensorFlow Extended (TFX) utilizando BaseStubExecuctor , que genera artefactos falsos utilizando los datos de prueba dorados. Esto está destinado a que los usuarios reemplacen los ejecutores que no desean probar para poder ahorrar tiempo al ejecutar los ejecutores reales. El ejecutor de código auxiliar se proporciona con el paquete TFX Python en tfx.experimental.pipeline_testing.base_stub_executor .
Este tutorial sirve como una extensión del tutorial template.ipynb , por lo que también utilizará el conjunto de datos Taxi Trips publicado por la ciudad de Chicago. Le recomendamos encarecidamente que intente modificar los componentes antes de utilizar ejecutores de código auxiliar.
1. Registre los resultados de la canalización en Google Cloud Storage.
Primero debemos registrar las salidas de la canalización para que los ejecutores del código auxiliar puedan copiar los artefactos de las salidas grabadas.
Dado que este tutorial supone que ha completado template.ipynb hasta el paso 6, se debe haber guardado una ejecución exitosa de la canalización en MLMD . Se puede acceder a la información de ejecución en MLMD mediante el servidor gRPC.
Abra una Terminal y ejecute los siguientes comandos:
Genere un archivo kubeconfig con las credenciales adecuadas:
bash gcloud container clusters get-credentials $cluster_name --zone $compute_zone --project $gcp_project_id$compute_zonees la región para el motor gcp y$gcp_project_ides la identificación del proyecto de GCP.Configure el reenvío de puertos para conectarse a MLMD:
bash nohup kubectl port-forward deployment/metadata-grpc-deployment -n $namespace $port:8080 &$namespacees el espacio de nombres del clúster y$portes cualquier puerto no utilizado que se utilizará para reenvío de puertos.Clona el repositorio tfx de GitHub. Dentro del directorio tfx, ejecute el siguiente comando:
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 debe establecerse en una ruta en Google Cloud Storage donde se registrarán las salidas de la canalización, así que asegúrese de reemplazar <gcp_project_id> con la identificación del proyecto de GCP.
$host y $port son el nombre de host y el puerto del servidor grpc de metadatos para conectarse a MLMD. $port debe configurarse en el número de puerto que utilizó para el reenvío de puertos y puede configurar "localhost" como nombre de host.
En el tutorial template.ipynb , el nombre de la canalización se establece como "my_pipeline" de forma predeterminada, por lo tanto, configure pipeline_name="my_pipeline" . Si modificó el nombre de la canalización al ejecutar el tutorial de la plantilla, debe modificar --pipeline_name en consecuencia.
2. Habilite los ejecutores de código auxiliar en Kubeflow DAG Runner
Primero, asegúrese de que la plantilla predefinida se haya copiado en el directorio de su proyecto mediante el comando CLI tfx template copy . Es necesario editar los dos archivos siguientes en los archivos fuente copiados.
Cree un archivo llamado
stub_component_launcher.pyen el directorio donde se encuentra kubeflow_dag_runner.py y agregue el siguiente contenido.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)Establezca los identificadores de componentes para que sean una lista de identificadores de componentes que se van a probar (en otras palabras, los ejecutores de otros componentes se reemplazan con BaseStubExecutor).
Abra
kubeflow_dag_runner.py. Agregue la siguiente declaración de importación en la parte superior para usar la claseStubComponentLauncherque acabamos de agregar.import stub_component_launcherEn
kubeflow_dag_runner.py, agregue la claseStubComponentLaunchera lasupported_launcher_classdeKubeflowDagRunnerConfigpara habilitar el lanzamiento de ejecutores de código auxiliar:runner_config = kubeflow_dag_runner.KubeflowDagRunnerConfig( supported_launcher_classes=[ stub_component_launcher.StubComponentLauncher ],
3. Actualice y ejecute la canalización con ejecutores de código auxiliar.
Actualice la canalización existente con la definición de canalización modificada con ejecutores de código auxiliar.
tfx pipeline update --pipeline-path=kubeflow_dag_runner.py \
--endpoint=$endpoint --engine=kubeflow
$endpoint debe configurarse en el punto final de su clúster de KFP.
Ejecute el siguiente comando para crear una nueva ejecución de su canalización actualizada.
tfx run create --pipeline-name $pipeline_name --endpoint=$endpoint \
--engine=kubeflow
limpiando
Utilice el comando fg para acceder al reenvío de puertos en segundo plano y luego presione Ctrl-C para finalizar. Puedes eliminar el directorio con salidas de canalización registradas usando gsutil -m rm -R $output_dir .
Para limpiar todos los recursos de Google Cloud utilizados en este proyecto, puede eliminar el proyecto de Google Cloud que utilizó para el tutorial.
Alternativamente, puede limpiar recursos individuales visitando cada consola: - Google Cloud Storage - Google Container Registry - Google Kubernetes Engine