Únase a TensorFlow en Google I/O, del 11 al 12 de mayo Regístrese ahora

Tutorial de flujo de aire TFX

PitónPyPI

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á un proceso de desarrollo de AA típico, comenzando por examinar el conjunto de datos y terminando 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

Por favor, vea el TFX Guía del usuario 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 la 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, podrá ver los errores cuando se ejecuta 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 usted no tiene Python 3 y git ya ha instalado, puede instalar usando el Homebrew gestor de paquetes:

/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 estos problemas se debe editar su ~/.bash_profile y añada la siguiente línea al final del archivo:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Materiales tutoriales

El código para 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 se quede 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 coherencia 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

  • Ingerir, comprender y limpiar nuestros datos
  • Ingeniería de características
  • Capacitación
  • Analizar el rendimiento del modelo
  • Enjabonar, enjuagar, repetir
  • Listo para la 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. Como se hace eso se recomienda encarecidamente que revise el código que usted está quitando los comentarios.

Conjunto de datos de taxis de Chicago

TaxiTaxi de chicago

Está utilizando el taxi Viajes conjunto de datos dado a conocer por la ciudad de Chicago.

Puede leer más sobre el conjunto de datos en Google BigQuery . Explora el conjunto de datos completo en la BigQuery interfaz de usuario .

Objetivo del modelo: clasificación binaria

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

Paso 1: configura tu entorno

La secuencia de comandos de configuración ( setup_demo.sh ) instala TFX y flujo de aire , flujo de aire y se configura de una manera que hace que sea fácil trabajar con él para 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

Debe revisar setup_demo.sh para ver lo que 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 con la carga de la consola de flujo de aire en su navegador web, o si hubo algún error al ejecutar airflow webserver , entonces usted puede tener otra aplicación que se ejecuta en el puerto 8080. Ese es el puerto por defecto para flujo de aire, pero se puede cambiar 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

  • Utilizar el botón de la izquierda para que el DAG
  • Utilizar el botón de la derecha para refrescar el DAG cuando se realizan cambios
  • Utilizar 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 utilizar el flujo de aire de la CLI 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 que faltan en el conjunto de datos.

En un editor:

  • En ~ / flujo de aire / dags descomentar las líneas marcadas 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, se ejecutó jupyter notebook , que abrió una sesión 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

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

Para obtener más información sobre el uso TFDV para explorar y validar un conjunto de datos, ver 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

  • Transformar realiza la ingeniería característica en el conjunto de datos.

En un editor:

  • En ~ / flujo de aire / dags descomentar las líneas marcadas Step 4 tanto en taxi_pipeline.py y 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 un ejemplo más avanzado ver la 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 ~ / flujo de aire / dags descomentar las líneas marcadas Step 5 tanto en taxi_pipeline.py y 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 un ejemplo más avanzado ver el Tutorial 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

  • Evaluador realiza un análisis profundo de los resultados de la formación, y asegura que el modelo es "suficientemente bueno" para ser empujado a la producción.

En un editor:

  • En ~ / flujo de aire / dags descomentar las líneas marcadas Step 6 tanto 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 un ejemplo más avanzado ver el TFMA Chicago Taxi Tutorial .

Paso 7: listo para la producción

Si el nuevo modelo está listo, hazlo.

  • 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

  • Empujador despliega el modelo a una infraestructura de servir.

En un editor:

  • En ~ / flujo de aire / dags descomentar las líneas marcadas Step 7 tanto 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 la producción

Próximos pasos

Ahora ha entrenado y validado el modelo, y exportado una SavedModel archivo con el ~/airflow/saved_models/taxi directorio. 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:

  • Sirviendo TensorFlow , para servir a su modelo en una granja de servidores o servidor y el procesamiento de reposo y / o las solicitudes de inferencia GRPC.
  • TensorFlow Lite , para la inclusión de su modelo en una aplicación móvil nativa de Android o iOS, o en un Raspberry Pi, la IO, o la aplicación microcontrolador.
  • TensorFlow.js , para el funcionamiento de su modelo en un navegador web o aplicación Node.JS.