¡El Día de la Comunidad de ML es el 9 de noviembre! Únase a nosotros para recibir actualizaciones de TensorFlow, JAX, y más Más información

Tutorial de flujo de aire TFX

Pitón PyPI

Introducción

Este tutorial está diseñado para presentar TensorFlow Extended (TFX) y ayudarte a aprender a crear tus propias canalizaciones de aprendizaje automático. Se ejecuta de forma local y muestra la integración con TFX y TensorBoard, así como la interacción con TFX en los portátiles Jupyter.

Seguirás un proceso de desarrollo de AA típico, comenzando por examinar el conjunto de datos y terminarás con un proceso de trabajo completo. A lo largo del camino, explorará formas de depurar y actualizar su canalización y medir el rendimiento.

Aprende más

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

Paso a paso

Creará gradualmente su canalización trabajando paso a paso, siguiendo un proceso de desarrollo de AA típico. Estos son los pasos:

  1. Configura tu entorno
  2. Traer el esqueleto inicial de la tubería
  3. Sumérjase en sus datos
  4. Ingeniería de características
  5. Capacitación
  6. Analizar el rendimiento del modelo
  7. Listo para producción

Prerrequisitos

  • Linux / MacOS
  • Virtualenv
  • Python 3.5+
  • Git

Paquetes requeridos

Dependiendo de su entorno, es posible que deba instalar varios paquetes:

sudo apt-get install \
    build-essential libssl-dev libffi-dev \
    libxml2-dev libxslt1-dev zlib1g-dev \
    python3-pip git software-properties-common

Si está ejecutando Python 3.6, debe instalar python3.6-dev:

sudo apt-get install python3.6-dev

Si está ejecutando Python 3.7, debe instalar python3.7-dev:

sudo apt-get install python3.7-dev

Además, si su sistema tiene una versión de GCC <7, debe actualizar GCC. De lo contrario, verá errores al ejecutar el airflow webserver . Puede comprobar su versión actual con:

gcc --version

Si necesita actualizar GCC, puede ejecutar esto:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7
sudo apt install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7

Entorno MacOS

Si no tiene Python 3 y git ya instalados, puede instalarlos usando el administrador de paquetes Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew update
brew install python
brew install git

MacOS a veces tiene problemas para bifurcar hilos al ejecutar Airflow, según la configuración. Para evitar esos problemas, debe editar su ~/.bash_profile y agregar la siguiente línea al final del archivo:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Materiales tutoriales

El código de este tutorial está disponible en: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

El código está organizado por los pasos en los que está trabajando, por lo que para cada paso tendrá el código que necesita e instrucciones sobre qué hacer con él.

Los archivos del tutorial incluyen tanto un ejercicio como la solución al ejercicio, en caso de que te quedes atascado.

Ejercicio

  • taxi_pipeline.py
  • taxi_utils.py
  • taxi DAG

Solución

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

Que estas haciendo

Estás aprendiendo a crear una canalización de AA usando TFX

  • 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
  • Las canalizaciones TFX son apropiadas cuando la consistencia de entrenamiento / servicio es importante
  • Las canalizaciones TFX son apropiadas cuando la administración de versiones para inferencia es importante
  • Google usa canalizaciones TFX para ML de producción

Estás siguiendo un proceso de desarrollo de AA típico

  • Ingestión, comprensión y limpieza de nuestros datos
  • Ingeniería de características
  • Capacitación
  • Analizar el rendimiento del modelo
  • Enjabonar, enjuagar, repetir
  • Listo para producción

Agregar el código para cada paso

El tutorial está diseñado para que todo el código esté incluido en los archivos, pero todo el código de los pasos 3 a 7 está comentado y marcado con comentarios en línea. Los comentarios en línea identifican a qué paso se aplica la línea de código. Por ejemplo, el código para el paso 3 está marcado con el comentario # Step 3 .

El código que agregará para cada paso generalmente se divide en 3 regiones del código:

  • importaciones
  • La configuración de DAG
  • La lista devuelta de la llamada create_pipeline ()
  • El código de apoyo en taxi_utils.py

A medida que avanza en el tutorial, descomentará las líneas de código que se aplican al paso del tutorial en el que está trabajando actualmente. Eso agregará el código para ese paso y actualizará su canalización. Mientras lo hace, le recomendamos encarecidamente que revise el código que está descomentando .

Conjunto de datos de taxis de Chicago

TaxiTaxi de chicago

Está utilizando el conjunto de datos de Taxi Trips publicado por la ciudad de Chicago.

Puede leer más sobre el conjunto de datos en Google BigQuery . Explore el conjunto de datos completo en la IU de BigQuery .

Objetivo del modelo: clasificación binaria

¿Dará el cliente una propina mayor o menor al 20%?

Paso 1: configura tu entorno

El script de configuración ( setup_demo.sh ) instala TFX y Airflow , y configura Airflow de una manera que facilita el trabajo en este tutorial.

En un caparazón:

cd
virtualenv -p python3 tfx-env
source ~/tfx-env/bin/activate

git clone https://github.com/tensorflow/tfx.git
cd ~/tfx
# These instructions are specific to the 0.21 release
git checkout -f origin/r0.21
cd ~/tfx/tfx/examples/airflow_workshop/setup
./setup_demo.sh

Debería revisar setup_demo.sh para ver qué está haciendo.

Paso 2: Trae el esqueleto inicial de la tubería

Hola Mundo

En un caparazón:

# Open a new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow webserver -p 8080

# Open another new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow scheduler

# Open yet another new terminal window, and in that window ...
# Assuming that you've cloned the TFX repo into ~/tfx
source ~/tfx-env/bin/activate
cd ~/tfx/tfx/examples/airflow_workshop/notebooks
jupyter notebook

Inició el cuaderno de Jupyter en este paso. Más tarde, ejecutará los cuadernos en esta carpeta.

En un navegador:

  • Abra un navegador y vaya a http://127.0.0.1:8080

Solución de problemas

Si tiene algún problema para cargar la consola Airflow en su navegador web, o si hubo algún error cuando ejecutó el airflow webserver , es posible que tenga otra aplicación ejecutándose en el puerto 8080. Ese es el puerto predeterminado para Airflow, pero puede cambiarlo a cualquier otro puerto de usuario que no se esté utilizando. Por ejemplo, para ejecutar Airflow en el puerto 7070, puede ejecutar:

airflow webserver -p 7070

Botones de vista DAG

Botones DAG

  • Use el botón de la izquierda para habilitar el DAG
  • Utilice el botón de la derecha para actualizar el DAG cuando realice cambios
  • Utilice el botón de la derecha para activar el DAG
  • Haga clic en taxi para ir a la vista gráfica del DAG

Botón de actualización de gráfico

CLI de flujo de aire

También puede usar la CLI de Airflow 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 cómo se completa el procesamiento de su canalización. 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 ha terminado de procesarse, el contorno se volverá verde oscuro para mostrar que está hecho.

Hasta ahora, solo tiene el componente CsvExampleGen en nuestra canalización, por lo que debe esperar a que se vuelva verde oscuro (~ 1 minuto).

Instalación completa

Paso 3: Sumérjase en sus datos

La primera tarea en cualquier proyecto de ciencia de datos o ML es comprender y limpiar los datos.

  • Comprender los tipos de datos de cada característica.
  • Busque anomalías y valores perdidos
  • Comprender las distribuciones de cada característica.

Componentes

Componentes de datosComponentes de datos

  • ExampleGen ingiere y divide el conjunto de datos de entrada.
  • StatisticsGen calcula estadísticas para el conjunto de datos.
  • SchemaGen SchemaGen examina las estadísticas y crea un esquema de datos.
  • ExampleValidator busca anomalías y valores faltantes en el conjunto de datos.

En un editor:

  • En ~ / airflow / dags, descomente las líneas marcadas como Step 3 en taxi_pipeline.py
  • Tómese un momento para revisar el código que descomentó

En un navegador:

  • Regrese a la página de la lista de DAG en Airflow haciendo clic en el enlace "DAG" en la esquina superior izquierda
  • Haga clic en el botón de actualización en el lado derecho del taxi DAG
    • Debería ver "DAG [taxi] ahora está fresco como una margarita"
  • Taxi de gatillo
  • Espere a que se complete la canalización
    • Todo verde oscuro
    • Utilice actualizar en el lado derecho o actualizar la página

Sumérjase en los datos

De vuelta en Jupyter:

Anteriormente, ejecutó jupyter notebook , que abrió una sesión de Jupyter en una pestaña del navegador. Ahora regrese a esa pestaña en su navegador.

  • Abra step3.ipynb
  • Sigue el cuaderno

Sumérjase en los datos

Ejemplo más avanzado

El ejemplo que se presenta aquí solo está destinado a comenzar. Para obtener un ejemplo más avanzado, consulte el Colab de validación de datos de TensorFlow .

Para obtener más información sobre el uso de TFDV para explorar y validar un conjunto de datos, consulte los ejemplos en tensorflow.org .

Paso 4: ingeniería de funciones

Puede aumentar la calidad predictiva de sus datos y / o reducir la dimensionalidad con la ingeniería de funciones.

  • Cruces de características
  • Vocabularios
  • Embeddings
  • PCA
  • Codificación categórica

Uno de los beneficios de usar TFX es que escribirá su código de transformación una vez, y las transformaciones resultantes serán consistentes entre el entrenamiento y el servicio.

Componentes

Transformar

  • Transform realiza la ingeniería de características en el conjunto de datos.

En un editor:

  • En ~ / airflow / dags, descomente las líneas marcadas como Step 4 tanto en taxi_pipeline.py como en taxi_utils.py
  • Tómese un momento para revisar el código que descomentó

En un navegador:

  • Volver a la página de la lista de DAG en Airflow
  • Haga clic en el botón de actualización en el lado derecho del taxi DAG
    • Debería ver "DAG [taxi] ahora está fresco como una margarita"
  • Taxi de gatillo
  • Espere a que se complete la canalización
    • Todo verde oscuro
    • Utilice actualizar en el lado derecho o actualizar la página

Ingeniería de funciones

De vuelta en Jupyter:

Regrese a la pestaña Jupyter en su navegador.

  • Abra step4.ipynb
  • Sigue el cuaderno

Ejemplo más avanzado

En realidad, el ejemplo que se presenta aquí solo tiene la intención de comenzar. Para obtener un ejemplo más avanzado, consulte TensorFlow Transform Colab .

Paso 5: Entrenamiento

Entrena un modelo de TensorFlow con tus datos agradables, limpios y transformados.

  • Incluya las transformaciones del paso 4 para que se apliquen de forma coherente
  • Guarde los resultados como modelo guardado para producción
  • Visualice y explore el proceso de entrenamiento con TensorBoard
  • También guarde un EvalSavedModel para analizar el rendimiento del modelo

Componentes

En un editor:

  • En ~ / airflow / dags, descomente las líneas marcadas como Step 5 tanto en taxi_pipeline.py como en taxi_utils.py
  • Tómese un momento para revisar el código que descomentó

En un navegador:

  • Volver a la página de la lista de DAG en Airflow
  • Haga clic en el botón de actualización en el lado derecho del taxi DAG
    • Debería ver "DAG [taxi] ahora está fresco como una margarita"
  • Taxi de gatillo
  • Espere a que se complete la canalización
    • Todo verde oscuro
    • Utilice actualizar en el lado derecho o actualizar la página

Entrenamiento de un modelo

De vuelta en Jupyter:

Regrese a la pestaña Jupyter en su navegador.

  • Abra step5.ipynb
  • Sigue el cuaderno

Entrenamiento de un modelo

Ejemplo más avanzado

En realidad, el ejemplo que se presenta aquí solo tiene la intención de comenzar. Para obtener un ejemplo más avanzado, consulte el tutorial de TensorBoard .

Paso 6: Analizar el rendimiento del modelo

Comprender más que solo las métricas de nivel superior.

  • Los usuarios experimentan el rendimiento del modelo solo para sus consultas
  • Las métricas de nivel superior pueden ocultar un rendimiento deficiente en segmentos de datos
  • La equidad del modelo es importante
  • A menudo, los subconjuntos clave de usuarios o datos son muy importantes y pueden ser pequeños.
    • Rendimiento en condiciones críticas pero inusuales
    • Rendimiento para audiencias clave como personas influyentes
  • Si está reemplazando un modelo que está actualmente en producción, primero asegúrese de que el nuevo sea mejor
  • El evaluador le dice al componente Pusher si el modelo está bien

Componentes

  • El evaluador realiza un análisis profundo de los resultados de la capacitación y se asegura de que el modelo sea "lo suficientemente bueno" para llevarlo a producción.

En un editor:

  • En ~ / airflow / dags, descomente las líneas marcadas como Step 6 en taxi_pipeline.py
  • Tómese un momento para revisar el código que descomentó

En un navegador:

  • Volver a la página de la lista de DAG en Airflow
  • Haga clic en el botón de actualización en el lado derecho del taxi DAG
    • Debería ver "DAG [taxi] ahora está fresco como una margarita"
  • Taxi de gatillo
  • Espere a que se complete la canalización
    • Todo verde oscuro
    • Utilice actualizar en el lado derecho o actualizar la página

Analizar el rendimiento del modelo

De vuelta en Jupyter:

Regrese a la pestaña Jupyter en su navegador.

  • Abra step6.ipynb
  • Sigue el cuaderno

Analizar el rendimiento del modelo

Ejemplo más avanzado

En realidad, el ejemplo que se presenta aquí solo tiene la intención de comenzar. Para obtener un ejemplo más avanzado, consulte el tutorial TFMA Chicago Taxi .

Paso 7: listo para la producción

Si el nuevo modelo está listo, hágalo así.

  • Pusher implementa modelos guardados en ubicaciones conocidas

Los objetivos de implementación reciben nuevos modelos de ubicaciones conocidas

  • Publicación de TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Hub

Componentes

  • Pusher implementa el modelo en una infraestructura de servicio.

En un editor:

  • En ~ / airflow / dags, descomente las líneas marcadas como Step 7 en taxi_pipeline.py
  • Tómese un momento para revisar el código que descomentó

En un navegador:

  • Volver a la página de la lista de DAG en Airflow
  • Haga clic en el botón de actualización en el lado derecho del taxi DAG
    • Debería ver "DAG [taxi] ahora está fresco como una margarita"
  • Taxi de gatillo
  • Espere a que se complete la canalización
    • Todo verde oscuro
    • Utilice actualizar en el lado derecho o actualizar la página

Listo para producción

Próximos pasos

Ahora ha entrenado y validado su modelo, y exportó un archivo de modelo SavedModel en el directorio ~/airflow/saved_models/taxi . Su modelo ya está listo para la producción. Ahora puede implementar su modelo en cualquiera de los objetivos de implementación de TensorFlow, que incluyen:

  • TensorFlow Serving , para entregar su modelo en un servidor o granja de servidores y procesar solicitudes de inferencia REST o gRPC.
  • TensorFlow Lite , para incluir su modelo en una aplicación móvil nativa de Android o iOS, o en una aplicación Raspberry Pi, IoT o microcontrolador.
  • TensorFlow.js , para ejecutar su modelo en un navegador web o aplicación Node.JS.