Mas leido
Building Stories
Modo Rua: Redefiniendo el desarrollo de aplicaciones mediante iteración centrada en el usuario Ago 23
Building Stories
NuStories: Adaptación de productos para clientes fanáticos en varios países Oct 30
AI Research
Con IA, Nubank es pionero en un futuro de servicios financieros inclusivos y personalizados Oct 26
Carreras
Reunimos a grandes mentes de diversos orígenes que permiten la discusión y el debate y mejoran la resolución de problemas.
Conoce más sobre nuestras carreras



No hace mucho tiempo, las aplicaciones de aprendizaje automático comenzaron a florecer en varias industrias. Las empresas adaptaron rápidamente su infraestructura existente para poder enviar modelos de aprendizaje automático que generarían predicciones en lotes.
Funciona bastante bien. Ahora, parece que todo el mundo habla de cómo el aprendizaje automático en tiempo real es el futuro. ¿Pero es de verdad? ¿Realmente deberíamos hacer el esfuerzo adicional necesario para poner (y mantener) los modelos en tiempo real en producción?
¿Estás interesado en un mini mapa que te ayude a razonar sobre cuándo y cómo crear modelos de aprendizaje automático en tiempo real? ¡Sigue leyendo este artículo!
¿Qué son los modelos en tiempo real?
No existe una definición única de lo que es un modelo en tiempo real.
Cuando hablamos de modelos en tiempo real, podríamos pensar en dos procesos distintos que pueden ocurrir en tiempo real: inferencia o aprendizaje.
Lo primero que probablemente venga a la mente es que tiempo real significa aprendizaje en tiempo real, donde un modelo recibe continuamente nuevos datos de entrenamiento y actualiza sus parámetros. Esto es ciertamente emocionante, pero aún raro de encontrar en la vida real. Sin embargo, en tiempo real también significa inferencia en tiempo real, en la que un modelo entrenado puede recibir solicitudes en cualquier momento y devolver predicciones sincrónicamente. Esto se encuentra más comúnmente en la vida real.
En este artículo, presentamos estrategias para construir modelos que hagan predicciones en tiempo real.
Descubre las oportunidades
¿Por qué utilizar modelos en tiempo real?
A veces, debes usar un modelo en tiempo real simplemente porque el problema que estás abordando requiere una toma de decisiones instantánea.
Supongamos que se te pide que presentes una solución basada en Aprendizaje Automático que ayudará a escalar y mejorar el servicio al usuario. Cada vez que un usuario abre el chat en nuestra aplicación y escribe un mensaje, debemos identificar automáticamente de qué está hablando y actuar en consecuencia (por ejemplo, redirigirlo a un chat con un especialista humano).
Podríamos enmarcar este problema como un problema de clasificación de clases múltiples, en el que las clases podrían ser diferentes productos (como tarjetas de crédito, cuentas de ahorro, inversiones, etc.) y construir un clasificador que reciba el texto escrito por el usuario y devuelva el producto del que es más probable que esté hablando.
Este caso de uso requiere un modelo en tiempo real porque el modelo se alimenta de datos recién generados y también porque el usuario espera una respuesta rápida. A partir de ese caso de uso específico, podemos intentar encontrar algunas reglas generales que nos ayuden a decidir cuándo es ideal (o necesario) usar un modelo en tiempo real:
Bien. Hay muchas buenas razones para construir modelos en tiempo real. Ahora solo es cuestión de desplegarlos. Debería ser rápido y fácil, ¿verdad? Podríamos hacer eso en menos de 10 líneas de código:
Primer intento de servir un modelo en tiempo real
No tan rápido.
¿Cómo construir modelos en tiempo real?
Dado que es probable que las limitaciones de la infraestructura afecten las decisiones de modelado, la creación de un modelo en tiempo real requiere una colaboración muy estrecha entre el científico de datos y el ingeniero de aprendizaje automático.
Hablaremos de dos requisitos que debemos tener en cuenta desde el inicio del desarrollo de un modelo en tiempo real: canalización en tiempo real e inferencia rápida.
Canalización en tiempo real
Una canalización en tiempo real debe recopilar y preparar todas las entradas requeridas por el modelo. Los datos pueden obtenerse de diferentes fuentes:
Después de recopilar los datos, todavía tenemos que preprocesarlos. Los datos históricos que provienen del almacén de funciones ya están preprocesados, mientras que los datos nuevos que provienen de la carga útil de la solicitud o de los eventos de transmisión están en su formato más crudo. Ahora, podemos ver claramente que tenemos dos canalizaciones separadas: una canalización por lotes y una canalización en tiempo real.
Queremos asegurarnos de que la función de preprocesamiento que se aplicó a los datos en la canalización por lotes durante el entrenamiento sea exactamente la misma función que se aplicó a los datos en la canalización en tiempo real durante la inferencia. No hacer esto se conoce como sesgo de entrenamiento-entrega.
Inferencia Rápida
¿Recuerdas esa red neuronal súper vanguardista que construiste y que logró una precisión del 99% para todas las clases? Si intentas medir su tiempo de predicción, te sorprenderás al descubrir que puede tardar muchos segundos. Aunque suene rápido, especialmente para una gran red neuronal, en realidad no lo es.
Una respuesta que se considera rápida suele tardar milisegundos. Piensa en cuánto tiempo estaría dispuesto a esperar el usuario antes de volver a intentar una acción o simplemente abandonar la aplicación.
Los modelos en tiempo real deben ser rápidos. Básicamente, hay dos formas de hacerlos más rápidos: usar hardware más potente o construir modelos más livianos.
Usar hardware más potente (como GPU) parece una solución rápida y razonable, pero podría ser más difícil de mantener a largo plazo, ya que probablemente sería una solución no estandarizada y requeriría un monitoreo más cercano. Además, el tiempo de respuesta general podría no ser lo suficientemente rápido. Si tuviéramos un modelo pesado que necesita ejecutar inferencias en la GPU, habría una sobrecarga de comunicación considerable entre la CPU y la GPU.
Por otro lado, construir modelos más livianos es más rentable y más fácil de mantener. Si utilizáramos modelos ligeros, podríamos escalar los servicios de aprendizaje automático de forma horizontal como los microservicios normales, posiblemente utilizando herramientas internas ya existentes.
Los modelos pesados se pueden comprimir usando varias técnicas, tales como:
Vale la pena señalar que la poda y la cuantización están disponibles tanto en TensorFlow como en PyTorch, por lo que debería ser rápido y fácil ejecutar experimentos que combinen diferentes técnicas.
Además de comprimir modelos, también podemos evaluar la efectividad del uso del almacenamiento en caché para almacenar algunas predicciones. En nuestro caso de uso, después de preprocesar la entrada de texto, podríamos terminar con una entrada que se repite con frecuencia. En ese caso, llamaríamos al modelo solo la primera vez que se ve esa entrada; luego, en llamadas posteriores, obtendríamos la predicción directamente del caché.
Pero… ¿es esto la vida real?
¡Seguro que lo es! La mayoría de las empresas comienzan sus viajes de aprendizaje automático experimentando con modelos por lotes, ya que se perciben como un enfoque más fácil y seguro. Sin embargo, a medida que los expertos en aprendizaje automático y las partes interesadas del negocio trabajan juntos para descubrir nuevas áreas donde el aprendizaje automático podría aplicarse para maximizar el valor, los problemas que requieren modelos en tiempo real (como el modelo de chat del que hemos hablado) surgen inevitablemente.
Miles de empresas ya están enviando modelos de aprendizaje automático en tiempo real de forma segura y escalable, incluyendo Nubank. Si tienes curiosidad acerca de lo que se puede hacer con los sistemas de aprendizaje automático en tiempo real, únete a nosotros.
Written by Ana Martinazzo
Reviewed by Felipe Almeida
Descubre las oportunidades