Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

ML sin código con TensorFlow y AI Platform

By Gad BenramJul 2, 20193 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

0 ryyk3bja967khyim

Los avances en frameworks de IA permiten a los desarrolladores crear y desplegar modelos de deep learning con apenas unos clics en pantalla. Con una UI o una API basada en Tensorflow Estimators, se pueden construir y servir modelos sin escribir una sola línea de código de machine learning.

0 ryyk3bja967khyimFoto de Adi Goldstein en Unsplash

Hace 70 años, apenas un puñado de expertos sabía crear programas de computadora, porque programar exigía una altísima especialización teórica y técnica. Con los años, hemos desarrollado niveles cada vez mayores de abstracción y encapsulamiento en la programación, lo que permite que personas con menos formación técnica creen software con herramientas muy básicas (mira Wix, por ejemplo). Hoy ocurre exactamente lo mismo con el machine learning, solo que a una velocidad muchísimo mayor. En este artículo escribiremos un script sencillo que genera un pipeline completo de machine learning.

¿Realmente sin código?

Este artículo incluye dos tipos de código. El primero es una consulta SQL para generar el dataset; esta parte se podría reemplazar con herramientas como Google Cloud Dataprep. El segundo son llamadas a la API mediante una librería cliente de Python; todas estas acciones también están disponibles desde la UI de AI Platform. Cuando digo "sin código", me refiero a que en ningún momento necesitarás importar TensorFlow ni otras librerías de ML.

En esta demo voy a usar el dataset abierto Chicago Taxi Trips de Google BigQuery para predecir el tiempo de viaje de un taxi a partir del punto de recogida, el destino y la hora de inicio del viaje. El modelo se entrena y se despliega con servicios de Google Cloud que envuelven Tensorflow.

El código completo está disponible en este repositorio de GitHub.

Extraer features con BigQuery

A partir del EDA que se muestra en este notebook, creé una consulta SQL para generar el dataset de entrenamiento:

https://gist.github.com/gidutz/86c701c621e48860c8ab135df56a8076

En el repositorio podrás ver cómo ejecuto la consulta con un cliente de Python y la exporto a GCS.

¡Importante! Para que AI Platform pueda construir un modelo con estos datos, la primera columna debe ser la variable objetivo y el CSV exportado no debe incluir encabezado.

Enviar el job de hyper-parameter tuning y desplegar

Con el dataset listo, que contiene unos cientos de miles de viajes, defino una arquitectura sencilla de red neuronal basada en la API de TensorFlow Estimator, con un espacio de parámetros para explorar. Esta especificación crea una red neuronal de 3 capas ocultas que resuelve una tarea de regresión (el tiempo estimado del viaje). Lanza 50 trials para buscar la configuración óptima del learning rate, los factores de regularización y los pasos máximos.

https://gist.github.com/gidutz/5408bb93d0e6ab7fe9fc5cb4a82447cc

Con la especificación anterior, puedo usar un cliente de Python para lanzar un job de entrenamiento:

https://gist.github.com/gidutz/f166148d84c4d4beb98bc13b831b6284

Uso el cliente de la API para monitorear la ejecución del job y, cuando termina, despliego y pruebo el modelo.

https://gist.github.com/gidutz/70b126b2a7d561e9d5f7f232d8f754eb

Con esto queda completo el despliegue de un pipeline de machine learning usando únicamente llamadas a la API.

Obtener predicciones

Para obtener predicciones, cargo en memoria parte de los registros del set de prueba y los envío a la versión desplegada para hacer inferencia:

https://gist.github.com/gidutz/e786c430c5ea767b1bec01bcee03a863

¿Quieres más historias? Visita nuestro blog o sigue a Gad en Twitter.

Gracias a Adam Horowitz por la asesoría técnica