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 localmente 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. En el 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:
- Configura tu entorno
- Traer el esqueleto inicial de la tubería
- Sumérjase en sus datos
- Ingeniería de características
- Formación
- Analizar el rendimiento del modelo
- 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, dependiendo de 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 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 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
- Formació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 cae 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 avance 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
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 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
, entonces puede tener 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
- 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
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).
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
- 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
entaxi_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 actualizar 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
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
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 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
- 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 entaxi_pipeline.py
como entaxi_utils.py
- Tómese un momento para revisar el código que descomentó
En un navegador:
- Regresar a la página de la lista de DAG en Airflow
- Haga clic en el botón actualizar en el lado derecho del taxi DAG
- Debería ver "DAG [taxi] ahora está fresco como una margarita"
- Gatillo taxi
- Espere a que se complete la canalización
- Todo verde oscuro
- Utilice actualizar en el lado derecho o actualizar la página
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 un 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
- El entrenador entrena el modelo con Estimadores de TensorFlow
En un editor:
- En ~ / airflow / dags, descomente las líneas marcadas como
Step 5
tanto entaxi_pipeline.py
como entaxi_utils.py
- Tómese un momento para revisar el código que descomentó
En un navegador:
- Regresar a la página de la lista de DAG en Airflow
- Haga clic en el botón actualizar en el lado derecho del taxi DAG
- Debería ver "DAG [taxi] ahora está fresco como una margarita"
- Gatillo taxi
- Espere a que se complete la canalización
- Todo verde oscuro
- Utilice actualizar en el lado derecho o actualizar la página
De vuelta en Jupyter:
Regrese a la pestaña Jupyter en su navegador.
- Abra step5.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 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 influencers
- 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 ser llevado a producción.
En un editor:
- En ~ / airflow / dags, descomente las líneas marcadas como
Step 6
entaxi_pipeline.py
- Tómese un momento para revisar el código que descomentó
En un navegador:
- Regresar a la página de la lista de DAG en Airflow
- Haga clic en el botón actualizar 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
De vuelta en Jupyter:
Regrese a la pestaña Jupyter en su navegador.
- Abra step6.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 el Tutorial de taxis de TFMA Chicago .
Paso 7: listo para la producción
Si el nuevo modelo está listo, hazlo.
- Pusher implementa SavedModels 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
entaxi_pipeline.py
- Tómese un momento para revisar el código que descomentó
En un navegador:
- Regresar a la página de la lista de DAG en Airflow
- Haga clic en el botón actualizar 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
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 puedes implementar tu modelo en cualquiera de los objetivos de implementación de TensorFlow, incluidos:
- TensorFlow Serving , para entregar tu 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.