Tutorial de flujo de aire TFX

Visión general

Visión general

Este tutorial está diseñado para ayudarlo a aprender a crear sus propias canalizaciones de aprendizaje automático con TensorFlow Extended (TFX) y Apache Airflow como orquestador. Se ejecuta en Vertex AI Workbench y muestra la integración con TFX y TensorBoard, así como la interacción con TFX en un entorno de Jupyter Lab.

¿Qué estarás haciendo?

Aprenderá a crear una canalización de ML con TFX

  • Una canalización TFX es un gráfico acíclico dirigido o "DAG". A menudo nos referiremos a las canalizaciones como DAG.
  • Las canalizaciones TFX son apropiadas cuando implementará una aplicación ML de producción
  • Las canalizaciones TFX son apropiadas cuando los conjuntos de datos son grandes o pueden llegar a serlo
  • Las canalizaciones de TFX son apropiadas cuando la consistencia de la capacitación o el servicio es importante
  • Las canalizaciones TFX son apropiadas cuando la gestión de versiones para la inferencia es importante
  • Google usa canalizaciones TFX para producción ML

Consulte la Guía del usuario de TFX para obtener más información.

Seguirá un proceso típico de desarrollo de ML:

  • Ingerir, comprender y limpiar nuestros datos
  • Ingeniería de características
  • Capacitación
  • Análisis del rendimiento del modelo
  • Hacer espuma, enjuagar, repetir
  • Listo para la producción

Apache Airflow para orquestación de canalizaciones

Los orquestadores de TFX son responsables de programar los componentes de la canalización de TFX en función de las dependencias definidas por la canalización. TFX está diseñado para ser portátil a múltiples entornos y marcos de orquestación. Uno de los orquestadores predeterminados admitidos por TFX es Apache Airflow . Este laboratorio ilustra el uso de Apache Airflow para la organización de canalizaciones de TFX. Apache Airflow es una plataforma para crear, programar y monitorear flujos de trabajo mediante programación. TFX usa Airflow para crear flujos de trabajo como gráficos acíclicos dirigidos (DAG) de tareas. La interfaz de usuario enriquecida facilita la visualización de canalizaciones que se ejecutan en producción, supervisa el progreso y soluciona problemas cuando es necesario. Los flujos de trabajo de Apache Airflow se definen como código. Esto los hace más mantenibles, versionables, comprobables y colaborativos. Apache Airflow es adecuado para canalizaciones de procesamiento por lotes. Es ligero y fácil de aprender.

En este ejemplo, vamos a ejecutar una canalización TFX en una instancia mediante la configuración manual de Airflow.

Los otros orquestadores predeterminados admitidos por TFX son Apache Beam y Kubeflow. Apache Beam puede ejecutarse en múltiples backends de procesamiento de datos (Beam Ruunners). Cloud Dataflow es uno de esos corredores de haz que se puede usar para ejecutar canalizaciones TFX. Apache Beam se puede usar tanto para canalizaciones de transmisión como de procesamiento por lotes.
Kubeflow es una plataforma de ML de código abierto dedicada a hacer que las implementaciones de flujos de trabajo de aprendizaje automático (ML) en Kubernetes sean simples, portátiles y escalables. Kubeflow se puede usar como orquestador para canalizaciones TFFX cuando es necesario implementarlas en clústeres de Kubernetes. Además, también puede usar su propio orquestador personalizado para ejecutar una canalización TFX.

Lea más sobre Airflow aquí .

Conjunto de datos de taxis de Chicago

taxi.jpg

chicago.png

Utilizará el conjunto de datos de viajes en taxi publicado por la ciudad de Chicago.

Modelo Objetivo - Clasificación binaria

¿El cliente dará una propina de más o menos del 20%?

Configurar el proyecto de Google Cloud

Antes de hacer clic en el botón Iniciar laboratorio Lea estas instrucciones. Los laboratorios están cronometrados y no se pueden pausar. El temporizador, que comienza cuando hace clic en Iniciar laboratorio , muestra cuánto tiempo estarán disponibles los recursos de Google Cloud.

Este laboratorio práctico le permite realizar las actividades de laboratorio usted mismo en un entorno de nube real, no en un entorno de simulación o demostración. Lo hace brindándole nuevas credenciales temporales que utiliza para iniciar sesión y acceder a Google Cloud durante la duración del laboratorio.

Lo que necesita Para completar este laboratorio, necesita:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome).
  • Es hora de completar el laboratorio.

Cómo iniciar su laboratorio e iniciar sesión en Google Cloud Console 1. Haga clic en el botón Iniciar laboratorio . Si necesita pagar el laboratorio, se abre una ventana emergente para que seleccione su método de pago. A la izquierda hay un panel con las credenciales temporales que debe usar para este laboratorio.

qwiksetup1.png

  1. Copie el nombre de usuario y luego haga clic en Abrir Google Console . El laboratorio activa los recursos y luego abre otra pestaña que muestra la página Iniciar sesión .

qwiksetup2.png

Sugerencia: Abra las pestañas en ventanas separadas, una al lado de la otra.

qwiksetup3.png

  1. En la página Iniciar sesión , pegue el nombre de usuario que copió del panel izquierdo. Luego copie y pegue la contraseña.
  1. Haga clic en las páginas siguientes:
  2. Acepta los términos y condiciones.
  • No agregue opciones de recuperación o autenticación de dos factores (porque esta es una cuenta temporal).

  • No se registre para pruebas gratuitas.

Después de unos momentos, Cloud Console se abre en esta pestaña.

qwiksetup4.png

Activar CloudShell

Cloud Shell es una máquina virtual cargada con herramientas de desarrollo. Ofrece un directorio de inicio persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a sus recursos de Google Cloud.

En Cloud Console, en la barra de herramientas superior derecha, haga clic en el botón Activar Cloud Shell .

qwiksetup5.png

Haga clic en Continuar .

qwiksetup6.png

Se tarda unos minutos en aprovisionar y conectarse al entorno. Cuando está conectado, ya está autenticado y el proyecto se establece en su _ID DE PROYECTO. Por ejemplo:

qwiksetup7.png

gcloud es la herramienta de línea de comandos para Google Cloud. Viene preinstalado en Cloud Shell y admite la finalización de pestañas.

Puede enumerar el nombre de la cuenta activa con este comando:

gcloud auth list

(Producción)

ACTIVO: * CUENTA: estudiante-01-xxxxxxxxxxxx@qwiklabs.net Para configurar la cuenta activa, ejecute: $ gcloud config set account ACCOUNT

Puede enumerar el ID del proyecto con este comando: gcloud config list project (Salida)

[núcleo] proyecto =

(Salida de ejemplo)

[núcleo] proyecto = qwiklabs-gcp-44776a13dea667a6

Para obtener la documentación completa de gcloud, consulta la descripción general de la herramienta de línea de comandos de gcloud .

Habilitar los servicios de Google Cloud

  1. En Cloud Shell, use gcloud para habilitar los servicios que se usan en el laboratorio. gcloud services enable notebooks.googleapis.com

Implementar una instancia de Vertex Notebook

  1. Haga clic en el menú de navegación y vaya a Vertex AI , luego a Workbench .

vertex-ai-workbench.png

  1. En la página de instancias de Notebook, haga clic en Nuevo Notebook .

  2. En el menú Personalizar instancia, seleccione TensorFlow Enterprise y elija la versión de TensorFlow Enterprise 2.x (con LTS) > Sin GPU .

vértice-notebook-create-2.png

  1. En el cuadro de diálogo Nueva instancia de notebook , haga clic en el ícono de lápiz para Editar las propiedades de la instancia.

  2. Para Nombre de la instancia , ingrese un nombre para su instancia.

  3. Para Región , seleccione us-east1 y para Zona , seleccione una zona dentro de la región seleccionada.

  4. Desplácese hacia abajo hasta Configuración de la máquina y seleccione e2-standard-2 para Tipo de máquina.

  5. Deje los campos restantes con su valor predeterminado y haga clic en Crear .

Después de unos minutos, la consola Vertex AI mostrará el nombre de su instancia, seguido de Open Jupyterlab .

  1. Haga clic en Abrir JupyterLab . Se abrirá una ventana de JupyterLab en una nueva pestaña.

Configurar el entorno

Clonar el repositorio de laboratorio

A continuación, clonará el repositorio tfx en su instancia de JupyterLab. 1. En JupyterLab, haga clic en el ícono Terminal para abrir una nueva terminal.

Nota: Si se le solicita, haga clic en Cancel para compilación recomendada.

  1. Para clonar el repositorio tfx Github, escriba el siguiente comando y presione Entrar .
git clone https://github.com/tensorflow/tfx.git
  1. Para confirmar que ha clonado el repositorio, haga doble clic en el directorio tfx y confirme que puede ver su contenido.

repo-directorio.png

Instalar dependencias de laboratorio

  1. Ejecute lo siguiente para ir a la tfx/tfx/examples/airflow_workshop/taxi/setup/ , luego ejecute ./setup_demo.sh para instalar las dependencias del laboratorio:
cd ~/tfx/tfx/examples/airflow_workshop/taxi/setup/
./setup_demo.sh

El código anterior será

  • Instale los paquetes necesarios.
  • Cree una carpeta de airflow de aire en la carpeta de inicio.
  • Copie la carpeta dags de la carpeta tfx/tfx/examples/airflow_workshop/taxi/setup/ a la carpeta ~/airflow/ .
  • Copie el archivo csv de tfx/tfx/examples/airflow_workshop/taxi/setup/data a ~/airflow/data .

flujo-de-aire-casa.png

Configuración del servidor Airflow

Cree una regla de firewall para acceder al servidor de flujo de aire en el navegador

  1. Vaya a <a href="https://console.cloud.google.com/networking/firewalls/list">https://console.cloud.google.com/networking/firewalls/list</a> y asegúrese de el nombre del proyecto se selecciona apropiadamente
  2. Haga clic en la opción CREATE FIREWALL RULE en la parte superior

regla-firewall.png

En el cuadro de diálogo Crear un cortafuegos , siga los pasos que se indican a continuación.

  1. Para Nombre , coloque airflow-tfx .
  2. Para Prioridad , seleccione 1 .
  3. Para Destinos , seleccione All instances in the network .
  4. Para rangos de IPv4 de origen , seleccione 0.0.0.0/0
  5. Para Protocolos y puertos , haga clic en tcp e ingrese 7000 en el cuadro junto a tcp
  6. Haz clic Create .

crear-cortafuegos-diálogo.png

Ejecute el servidor de flujo de aire desde su shell

En la ventana Terminal de Jupyter Lab, cambie al directorio de inicio, ejecute el comando airflow users create para crear un usuario administrador para Airflow:

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

Luego ejecute el airflow webserver de aire y el comando del airflow scheduler de flujo de aire para ejecutar el servidor. Elija el puerto 7000 ya que está permitido a través del firewall.

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

Consigue tu ip externa

  1. En Cloud Shell, use gcloud para obtener la IP externa.
gcloud compute instances list

IP de instancia de gcloud.png

Ejecutar un DAG/Pipeline

en un navegador

Abra un navegador y vaya a http:// :7000

  • En la página de inicio de sesión, ingrese el nombre de usuario ( admin ) y la contraseña ( admin ) que eligió al ejecutar el comando airflow users create .

airflow-login.png

Airflow carga DAG desde archivos fuente de Python. Toma cada archivo y lo ejecuta. Luego carga cualquier objeto DAG de ese archivo. Todos los archivos .py que definen objetos DAG se enumerarán como canalizaciones en la página de inicio de flujo de aire.

En este tutorial, Airflow escanea la carpeta ~/airflow/dags/ en busca de objetos DAG.

Si abre ~/airflow/dags/taxi_pipeline.py y se desplaza hasta la parte inferior, puede ver que crea y almacena un objeto DAG en una variable llamada DAG . Por lo tanto, aparecerá como una tubería en la página de inicio de flujo de aire como se muestra a continuación:

dag-casa-completa.png

Si hace clic en taxi, será redirigido a la vista de cuadrícula del DAG. Puede hacer clic en la opción Graph en la parte superior para obtener la vista gráfica del DAG.

flujo de aire-dag-graph.png

Activar la tubería de taxi

En la página de inicio puede ver los botones que se pueden usar para interactuar con el DAG.

dag-botones.png

Debajo del encabezado de acciones , haga clic en el botón de activación para activar la canalización.

En la página del DAG de taxi, use el botón de la derecha para actualizar el estado de la vista de gráfico del DAG a medida que se ejecuta la canalización. Además, puede habilitar la actualización automática para indicarle a Airflow que actualice automáticamente la vista del gráfico cuando cambie el estado.

botón-dag-actualizar.png

También puede usar la CLI de Airflow en la terminal para habilitar y activar sus DAG:

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

Esperando a que se complete la canalización

Una vez que haya activado su canalización, en la vista de DAG, puede ver el progreso de su canalización mientras se ejecuta. A medida que se ejecuta cada componente, el color del contorno del componente en el gráfico DAG cambiará para mostrar su estado. Cuando un componente haya terminado de procesarse, el contorno se volverá verde oscuro para mostrar que ha terminado.

dag-paso7.png

Entendiendo los componentes

Ahora veremos los componentes de esta canalización en detalle y examinaremos individualmente los resultados producidos por cada paso de la canalización.

  1. En JupyterLab, vaya a ~/tfx/tfx/examples/airflow_workshop/taxi/notebooks/

  2. Abra notebook.ipynb. cuaderno-ipynb.png

  3. Continúe con el laboratorio en el cuaderno y ejecute cada celda haciendo clic en Ejecutar ( boton-ejecutar.png ) icono en la parte superior de la pantalla. Alternativamente, puede ejecutar el código en una celda con SHIFT + ENTER .

Lea la narración y asegúrese de comprender lo que sucede en cada celda.