Deep Learning en Cloud: cómo poner en producción un recomendador de productos para banca


Uno de los grandes retos de los proyectos de machine learning (ML) es el lapso entre el desarrollo de un modelo en entornos experimentales y el momento de tenerlo listo para funcionar en producción (paso de produccionalización). Para analizar cuáles son las barreras en este último paso y proponer soluciones y mejores prácticas, hemos lanzado una iniciativa de inversión.

La idea era utilizar un caso de uso real para entrenar y poner en funcionamiento un modelo de Deep Learning (DL). Más adelante profundizaremos en este artículo sobre qué es un modelo de DL, pero, de momento, vamos a explorar el enfoque que seguimos. Elegimos el desafío Kaggle, lanzado por el Banco Santander para recomendar productos a sus clientes minoristas según su perfil. Encontrarás más información sobre el juego de datos y el desafío aquí

Utilizando este juego de datos de Kaggle, propusimos un modelo de recomendador basado en DL desarrollado con el entorno TensorFlow de Google. El DL es un subcampo del Machine Learning que ofrece estupendos resultados con problemas complejos y dinámicos. El DL se basa en redes neuronales artificiales (Artificial Neural Networks, ANN) que pretenden emular en un ordenador la manera en que funciona nuestro cerebro. Como ya sabrás, nuestro cerebro está formado por miles de millones de neuronas interconectadas. El DL extrae de aquí la idea de concatenar muchísimas ANN, que presentan la capacidad de aprender tareas solo con enseñarles ejemplos. Lo que hicimos fue construir un tipo especial de ANN llamado Long-Short Term Memory (LSTM) (red neuronal de memoria de corto plazo largo) y la entrenamos con muchos ejemplos procedentes del juego de datos de Kaggle. 

La idea es proporcionar información del cliente al recomendador, de manera que el modelo pueda predecir si el cliente comprará determinado producto o cancelará un producto el mes que viene. El modelo intenta combinar dos tipos de variables de clientes: por una parte, cada cliente cuenta con un juego de características que son inalterables, como, por ejemplo, el género o el país de nacimiento; y, por otra parte, existen características que son potencialmente variables, como la actividad del cliente en relación a los productos o la renta anual.

Una vez construido el modelo, analizamos los diferentes requisitos no funcionales (NFR) para una aplicación de IA (disponibilidad, capacidad de mantenimiento, interoperabilidad, latencia, capacidad de procesamiento, etc.) y exploramos las diferentes alternativas de infraestructura para satisfacerlos.

Las principales conclusiones que obtuvimos son las siguientes:

  • Las tecnologías Cloud presentan varias ventajas, como la elasticidad, el rendimiento, la integración en otros servicios, etc., que son muy adecuadas para exponer servicios de ML. Por eso, decidimos implementar este recomendador en un proveedor de Cloud. 
  • Llevar a producción un modelo ML desde un entorno experimental exige superar varias barreras. Desde el punto de vista tecnológico, hay que encontrar la manera de integrar los modelos en infraestructuras existentes. Desde el punto de vista de los datos, el preprocesado en producción es más costoso y proclive a errores que el preprocesado en entornos controlados de experimentación.
  • En caso de que existan barreras tecnológicas en el proyecto/empresa a la hora de utilizar infraestructuras cloud, exponer este servicio como una API REST. Se recomienda dimensionar el servidor de acuerdo con los requisitos de rendimiento y, además, considerar la replicación de servidores para obtener una alta disponibilidad.

Google Cloud Platform proporciona un ecosistema muy conveniente para la produccionalización de modelos implementados en TensorFlow. Específicamente, el producto ML Engine permite exportar un modelo entrenado en local en modo serverless en Cloud. Esto presenta varias ventajas: evitar subir datos sensibles al Cloud, escalabilidad elástica (incluyendo escalabilidad cero), tiempo de mantenimiento cero, entre otros. En definitiva, mediante esta opción de produccionalización, obtenemos una API que podemos invocar mediante una URL en la que podemos consultar las recomendaciones con toda la capacidad y elasticidad que ofrece Cloud de Google.

En resumen, mediante el uso conjunto de Inteligencia Artificial y Cloud combinamos dos factores transformacionales clave hoy en día. Por un lado, usando la IA pasamos de programar algoritmos a enseñarles mediante datos, lo cual aporta mayor adaptabilidad y precisión. Por otro lado, gracias al Cloud eliminamos barreras infraestructurales, incrementando la disponibilidad y capacidad computacional de manera casi ilimitada.