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:
- Configura tu entorno
- Traer el esqueleto inicial de la tubería
- Sumérjase en sus datos
- Ingeniería de características
- Capacitación
- Analizar el rendimiento del modelo
- 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
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
- 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
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).
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 que faltan en el conjunto de datos.
En un editor:
- En ~ / flujo de aire / dags descomentar las líneas marcadas
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 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
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
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 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 entaxi_pipeline.py
ytaxi_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
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
- Entrenador entrena el modelo utilizando TensorFlow estimadores
En un editor:
- En ~ / flujo de aire / dags descomentar las líneas marcadas
Step 5
tanto entaxi_pipeline.py
ytaxi_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
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 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 entaxi_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
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 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 entaxi_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
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.