Decidir la implementación por lotes o en tiempo real
Al implementar un modelo en un punto de conexión para integrarse con una aplicación, puede elegir diseñarlo para predicciones por lotes o en tiempo real.
El tipo de predicciones que necesita depende de cómo quiere usar las predicciones del modelo
Para decidir si diseñar una solución de implementación por lotes o en tiempo real, debe tener en cuenta las siguientes preguntas:
- ¿Con qué frecuencia se deben generar las predicciones?
- ¿Con qué puntualidad se necesitan los resultados?
- ¿Se deben generar predicciones de forma individual o por lotes?
- ¿Cuánta capacidad de proceso se necesita para ejecutar el modelo?
Identificación de la frecuencia necesaria de puntuación
Un escenario habitual es usar un modelo para puntuar nuevos datos. Para poder obtener predicciones en tiempo real o por lotes, primero debe recopilar los nuevos datos.
Hay varias maneras de generar o recopilar datos. Los nuevos datos también se pueden recopilar a intervalos de tiempo diferentes.
Por ejemplo, puede recopilar datos de temperatura de un dispositivo de Internet de las cosas (IoT) cada minuto. Puede obtener datos transaccionales cada vez que un cliente compra un producto de su tienda web. También puede extraer datos financieros de una base de datos cada tres meses.
Por lo general, hay dos tipos de casos de uso:
- Necesita el modelo para puntuar los nuevos datos tan pronto como lleguen.
- Puede programar o desencadenar el modelo para puntuar los nuevos datos que ha recopilado con el tiempo.
Tanto si quiere realizar predicciones en tiempo real o por lotes, no depende necesariamente de la frecuencia con la que se recopilan nuevos datos. En su lugar, depende de la frecuencia y la rapidez con la que se necesitan las predicciones que se van a generar.
Si necesita las predicciones del modelo inmediatamente cuando se recopilan nuevos datos, necesita predicciones en tiempo real. Si las predicciones del modelo solo se consumen en determinados momentos, necesita predicciones por lotes.
Decisión del número de predicciones
Otra pregunta importante que debe plantearse es si necesita que las predicciones se generen individualmente o por lotes.
Una manera sencilla de ilustrar la diferencia entre las predicciones individuales y por lotes es imaginar una tabla. Supongamos que tiene una tabla de datos de cliente donde cada fila representa a un cliente. Para cada cliente, tiene algunos datos demográficos y datos de comportamiento, como cuántos productos han comprado de su tienda web y cuándo fue su última compra.
En función de estos datos, puede predecir el abandono de clientes: si un cliente volverá a comprar de su tienda web o no.
Una vez que haya entrenado el modelo, puede decidir si quiere generar predicciones:
- Individualmente: el modelo recibe una sola fila de datos y devuelve si ese cliente individual volverá a comprar.
- Por lotes: el modelo recibe varias filas de datos en una tabla y devuelve si cada cliente volverá a comprar o no. Los resultados se cotejan en una tabla que contiene todas las predicciones.
También puede generar predicciones individuales o por lotes al trabajar con archivos. Por ejemplo, al trabajar con un modelo de Computer Vision, es posible que tenga que puntuar una sola imagen individualmente o una colección de imágenes en un lote.
Consideración del costo del proceso
Además de usar el proceso al entrenar un modelo, también necesita el proceso al implementar un modelo. En función de si implementa el modelo en un punto de conexión en tiempo real o por lotes, usará diferentes tipos de proceso. Para decidir si implementar el modelo en un punto de conexión en tiempo real o por lotes, debe tener en cuenta el costo de cada tipo de proceso.
Si necesita predicciones en tiempo real, necesita un proceso que siempre esté disponible y pueda devolver los resultados (casi) inmediatamente. Las tecnologías de contenedor como Azure Container Instance (ACI) y Azure Kubernetes Service (AKS) son ideales para estos escenarios, ya que proporcionan una infraestructura ligera para el modelo implementado.
Sin embargo, al implementar un modelo en un punto de conexión en tiempo real y usar dicha tecnología de contenedor, el proceso siempre está activado. Una vez implementado un modelo, paga continuamente por el proceso, ya que no se puede pausar o detener el proceso, ya que el modelo siempre debe estar disponible para predicciones inmediatas.
Como alternativa, si necesita predicciones por lotes, necesita un proceso que pueda controlar una carga de trabajo grande. Lo ideal es usar un clúster de proceso que pueda puntuar los datos en lotes paralelos mediante varios nodos.
Al trabajar con clústeres de proceso que pueden procesar datos en lotes paralelos, el proceso se aprovisiona por parte del área de trabajo cuando se desencadena la puntuación por lotes y reducirse verticalmente a 0 nodos cuando no hay datos nuevos que procesar. Al permitir que el área de trabajo reduzca verticalmente un clúster de proceso inactivo, puede ahorrar costos significativos.
Decidir la implementación por lotes o en tiempo real
Elegir una estrategia de implementación para los modelos de aprendizaje automático puede ser difícil, ya que diferentes factores pueden influir en la decisión.
En general, si necesita predicciones individuales inmediatamente cuando se recopilan nuevos datos, necesita predicciones en tiempo real.
Si necesita que el modelo puntúe nuevos datos cuando haya disponible un lote de datos, debería usar predicciones por lotes.
Hay escenarios en los que se espera que necesite predicciones en tiempo real cuando las predicciones por lotes pueden ser más rentables. Recuerde que está pagando continuamente por el proceso con implementaciones en tiempo real, incluso cuando no se generan nuevas predicciones.
Si se puede permitir un retraso de 5 a 10 minutos al necesitar predicciones inmediatas, puede optar por implementar el modelo en un punto de conexión por lotes. El retraso se produce en el momento en que necesita iniciar el clúster de proceso después de que se desencadene el punto de conexión. Sin embargo, el clúster de proceso también se detendrá después de generar la predicción, lo que minimiza los costos y podría ser una solución más rentable.
Por último, también debe tener en cuenta el proceso necesario para que el modelo puntúe nuevos datos. Los modelos más sencillos requieren menos costos y tiempo para generar predicciones. Los modelos más complejos pueden requerir más potencia de proceso y tiempo de procesamiento para generar predicciones. Por lo tanto, debe tener en cuenta cómo implementará el modelo antes de decidir cómo entrenar el modelo.