
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.
Foto 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