Implementación de modelos de Machine Learning en entornos de producción

En este artículo, se describen los procedimientos recomendados para implementar modelos de Machine Learning en entornos de producción mediante Azure Machine Learning. La implementación de modelos de Machine Learning en producción es importante para las organizaciones que usan inteligencia artificial para mejorar sus operaciones. Puede ser un proceso complejo, pero este artículo le ayudará a comprender los pasos.

Consideraciones arquitectónicas

  • Elija el método de implementación adecuado. Cada método de implementación tiene ventajas y desventajas. Es importante elegir el que mejor se adapte a las necesidades de su organización. Existen dos métodos de implementación principales:

    • La inferencia en tiempo real (en línea) procesa los datos de entrada a medida que se reciben, a menudo con un requisito de baja latencia. La baja latencia es importante para las aplicaciones que requieren respuestas inmediatas, como la detección de fraudes, el reconocimiento de voz o los sistemas de recomendaciones. La inferencia en tiempo real es más compleja y costosa de implementar que la inferencia por lotes porque requiere una infraestructura más rápida y confiable. El proceso subyacente para la inferencia en tiempo real suele ejecutarse continuamente para atender las solicitudes más rápido.

    • La inferencia por lotes (sin conexión) procesa un gran lote de datos de entrada a la vez en lugar de procesar cada punto de datos de entrada individualmente en tiempo real. La inferencia por lotes es adecuada para escenarios de gran volumen de datos que necesitan un procesamiento eficaz, pero cuyo tiempo de respuesta no es crítico. Por ejemplo, puede usar la inferencia por lotes para procesar un gran conjunto de datos de imágenes. En este caso, el modelo de Machine Learning generará predicciones en todas las imágenes a la vez. La inferencia por lotes es menos costosa y más eficaz que la inferencia en tiempo real. El proceso subyacente para la inferencia por lotes solo suele ejecutarse durante el trabajo por lotes.

    Machine Learning usa puntos de conexión para implementar modelos en escenarios en tiempo real y por lotes. Los puntos de conexión proporcionan una interfaz unificada para invocar y administrar implementaciones de modelos entre tipos de proceso. Los puntos de conexión en línea administrados sirven, escalan, protegen y supervisan los modelos de Machine Learning para la inferencia.

    Para más información, consulte la sección siguiente de este artículo; Métodos de implementación.

  • Asegúrese de la coherencia. Es importante implementar el modelo de forma coherente entre entornos, como desarrollo, ensayo y producción. Use tecnologías de contenedorización o virtualización, como entornos de Machine Learning, para proporcionar coherencia y para encapsular el entorno.

  • Supervisar el rendimiento. Después de que el modelo se implemente en producción, debe realizar un seguimiento de las métricas, como la precisión, la latencia y el rendimiento, y configurar alertas para que le notifiquen cuándo el rendimiento cae por debajo de los niveles aceptables. Use Application Insights y las funcionalidades de supervisión integradas de los puntos de conexión administrados para ver las métricas y crear alertas.

  • Implementar medidas de seguridad. Proteja los datos y los sistemas. Puede configurar controles de autenticación y acceso, cifrar los datos en tránsito y en reposo, usar la seguridad de red y supervisar la actividad sospechosa.

  • Cree un plan para las actualizaciones. Los modelos de Machine Learning necesitan actualizaciones a medida que los nuevos datos y los nuevos algoritmos estén disponibles. Es importante crear un proceso para probar y validar el modelo actualizado antes de implementarlo en producción. La implementación azul-verde es una estrategia común que actualiza los modelos de Machine Learning en producción. Con la implementación azul-verde, puede actualizar un modelo a un nuevo entorno, probarlo y, después, cambiar al nuevo modelo después de validarlo. La implementación azul-verde garantiza que los posibles problemas con el modelo actualizado no afecten a los clientes. Para más información, consulte Implementación azul-verde nativa.

Métodos de implementación

Tenga en cuenta las siguientes preguntas para evaluar el modelo, comparar los métodos de implementación y seleccionar el método que mejor se adapte a su modelo:

  • ¿Con qué frecuencia se deben generar las predicciones?
  • ¿En qué momento necesita los resultados?
  • ¿Las predicciones se almacenan o se usan inmediatamente?
  • ¿Se deben generar predicciones de forma individual, en lotes pequeños o en lotes grandes?
  • ¿Se espera la latencia del modelo?
  • ¿Cuánta potencia de proceso necesita ejecutar el modelo?
  • ¿Existen implicaciones y costos operativos para mantener el modelo?
  • ¿Cómo se desencadena la predicción? ¿Está programada o basada en eventos?

Consulte el siguiente árbol de decisión para determinar qué modelo de implementación se adapta mejor a su caso de uso:

A diagram of the real-time inference and batch inference decision tree.

Inferencia por lotes

La inferencia por lotes es un proceso sencillo que permite que los modelos se ejecuten en intervalos con un tiempo límite o basados en desencadenadores. Con la inferencia por lotes, las aplicaciones empresariales pueden almacenar las predicciones.

Tenga en cuenta los siguientes procedimientos recomendados para la inferencia por lotes:

  • Ejecute operaciones por lotes mediante la API. Use puntos de conexión por lotes para crear un punto de conexión HTTPS duradero que desencadene un trabajo de puntuación por lotes para canalizaciones de datos programadas o basadas en eventos. La API se puede integrar con cualquier plataforma de orquestación de datos que admita la invocación de la API de REST. Para más información, consulte el punto sobre la integración por lotes en esta sección e Implementación de modelos para la puntuación en puntos de conexión por lotes.

  • Opciones de proceso. Los procesos de inferencia por lotes no suelen ejecutarse de forma continua, por lo que se recomienda iniciar, detener y escalar automáticamente los clústeres reutilizables que pueden controlar una amplia variedad de cargas de trabajo. A menudo, los distintos modelos requieren entornos diferentes. La solución debe implementar un entorno específico y quitarlo tras completar la inferencia. La automatización hace que el proceso esté disponible para el siguiente modelo. Para reducir el costo, use máquinas virtuales de prioridad baja para los nodos de proceso.

    Importante

    El tamaño de los nodos de proceso es importante. Si los nodos son demasiado pequeños, el trabajo de inferencia por lotes tarda más tiempo. Si los nodos son demasiado grandes, el trabajo es más caro. Pruebe y supervise los nodos de proceso para determinar el tamaño adecuado para el modelo.

  • Considere las necesidades de escalabilidad. Para mejorar el rendimiento, Machine Learning admite características que permiten el procesamiento escalable. El número de nodos de proceso y los parámetros de simultaneidad máximos se definen durante la implementación del punto de conexión por lotes en Machine Learning. Puede invalidar los parámetros de cada trabajo, lo que proporciona a los clientes flexibilidad en tiempo de ejecución y paralelismo estándar. Estas características funcionan con inferencias tabulares y basadas en archivos.

  • Desafíos de la inferencia por lotes. La inferencia por lotes es una forma más sencilla de usar e implementar el modelo en producción, pero presenta su propio conjunto de desafíos.

    • En función de la frecuencia con la que se ejecuta la inferencia, la predicción generada podría ser irrelevante en el momento en que se accede a ella.

    • La implementación en muchas regiones y el diseño de la solución para alta disponibilidad no son problemas críticos en un escenario de inferencia por lotes porque el modelo no se implementa a nivel regional. Sin embargo, es posible que sea necesario implementar el almacén de datos con una estrategia de alta disponibilidad en muchas ubicaciones. La implementación debe seguir el diseño y la estrategia de alta disponibilidad de la aplicación.

    • Es posible que se produzcan errores parciales en los datos generados durante una inferencia por lotes. Por ejemplo, si una canalización programada desencadena un trabajo de inferencia por lotes y se produce un error en la canalización, los datos generados por el trabajo de inferencia por lotes podrían estar incompletos. Los reinicios parciales son un problema común con la inferencia por lotes. Una solución consiste en usar un área de almacenamiento provisional para los datos y solo mover los datos al destino final una vez completado correctamente el trabajo de inferencia por lotes. Otra solución consiste en mantener un registro, o transacción, de cada archivo que se procesa y comparar ese registro con la lista de archivos de entrada para evitar la duplicación. Este método incorpora lógica en el script de puntuación. Esta solución es más compleja, pero se puede personalizar la lógica de error si se produce un error en el trabajo de inferencia por lotes.

  • Requisitos de seguridad. Use la autenticación y la autorización para controlar el acceso al punto de conexión por lotes para mejorar la seguridad.

    • Un punto de conexión por lotes con protección de entrada solo acepta solicitudes de puntuación de hosts dentro de una red virtual. No acepta solicitudes de puntuación de la red pública de Internet. Un punto de conexión por lotes que se crea en un área de trabajo habilitada para vínculos privados tiene protección de entrada. Para más información, consulte Aislamiento de red en puntos de conexión por lotes.
    • Use tokens de Microsoft Entra para la autenticación.
    • Use el cifrado SSL en el punto de conexión, que está habilitado de forma predeterminada para la invocación del punto de conexión de Machine Learning.
    • Los puntos de conexión por lotes garantizan que solo los usuarios autorizados puedan invocar implementaciones por lotes, pero los usuarios pueden usar otras credenciales para leer los datos subyacentes. Para obtener una referencia de los almacenes de datos y las credenciales para acceder a ellos, consulte la tabla de acceso a datos.
  • Integración por lotes. Los puntos de conexión por lotes de Machine Learning usan una API abierta. La inferencia por lotes se puede integrar con otros servicios de Azure, como Azure Data Factory, Azure Databricks y Azure Synapse Analytics para que forme parte de una canalización de datos más grande. Por ejemplo, puede usar:

    • Data Factory para orquestar el proceso de inferencia por lotes.
    • Azure Databricks para preparar los datos para la inferencia por lotes.
    • Machine Learning para ejecutar el proceso de inferencia por lotes.
    • Azure Synapse Analytics para almacenar las predicciones posteriores.

    Los puntos de conexión de Batch admiten Microsoft Entra ID para la autorización. La solicitud a la API requiere una autenticación adecuada. Los servicios de Azure, como Data Factory, admiten el uso de una entidad de servicio o una identidad administrada para autenticarse en puntos de conexión por lotes. Para más información, consulte Ejecución de puntos de conexión por lotes desde Data Factory.

    Para elegir el mejor método para el procesamiento de entrada y salida por lotes, es importante comprender cómo se mueven los datos a través de las fases de las canalizaciones de datos. Puede acceder directamente a los servicios de datos de Azure a través del script de puntuación de puntos de conexión por lotes mediante SDK, pero el uso de almacenes de datos registrados de Machine Learning es más sencillo, seguro y auditable. Para orígenes de datos de terceros, use un motor de procesamiento de datos, como Data Factory, Azure Databricks o Azure Synapse Analytics, para preparar los datos para la inferencia por lotes y aplicar el procesamiento posterior a la inferencia.

  • MLflow. Use el marco de código abierto, MLflow, durante el desarrollo del modelo. Machine Learning admite la implementación sin código de modelos que se crean y registran con MLflow. Al implementar el modelo de MLflow en un punto de conexión por lotes, no es necesario indicar un script de puntuación ni un entorno.

Inferencia en tiempo real

La inferencia en tiempo real es un método que permite desencadenar la inferencia del modelo en cualquier momento y proporciona una respuesta inmediata. Use este método para analizar los datos de streaming o los datos interactivos de la aplicación.

Tenga en cuenta los siguientes procedimientos recomendados para la inferencia en tiempo real:

  • Opciones de proceso. La mejor manera de implementar la inferencia en tiempo real es implementar el modelo que está en un punto de conexión en línea en un punto de conexión en línea administrado o un punto de conexión en línea de Kubernetes. Los puntos de conexión en línea administrados implementan los modelos de Machine Learning inmediatamente mediante máquinas de CPU o GPU en Azure. Este método es escalable y totalmente administrado. Los puntos de conexión en línea de Kubernetes implementan modelos y atienden puntos de conexión en línea en el clúster de Kubernetes totalmente configurado y administrado. Para más información, consulte Puntos de conexión en línea administrados frente a puntos de conexión en línea de Kubernetes.

  • Implementación en varias regiones y alta disponibilidad. Las arquitecturas de implementación regional y alta disponibilidad son ejemplos de escenarios de inferencia en tiempo real, ya que la latencia y el rendimiento del modelo son críticos. Para reducir la latencia en implementaciones en varias regiones, localice el modelo que esté lo más cerca posible del punto de consumo. Para el modelo y la infraestructura auxiliar, siga los principios y la estrategia de alta disponibilidad y recuperación ante desastres de la empresa.

  • Desafíos de la inferencia en tiempo real.

    • La inferencia en tiempo real es más compleja debido a los requisitos de latencia y rendimiento. Un sistema simple en tiempo real recibe la entrada a través de una solicitud HTTP y devuelve una predicción. Sin embargo, un sistema complejo podría necesitar responder en 100 milisegundos o menos. Durante ese tiempo, recupera datos, realiza la ingeniería de características, realiza el trabajo de inferencia, valida y almacena los resultados del modelo, ejecuta la lógica de negocios y devuelve los resultados al sistema o la aplicación.
    • Descargue la ingeniería de características en un almacén de datos de baja latencia, un servicio de almacenamiento en caché o un almacén de características dedicado. Un almacén de características es un repositorio centralizado que permite a los científicos de datos buscar y compartir características. Un almacén de características asegura que el mismo código usado para procesar los valores de la característica también se usa para el entrenamiento del modelo y el proceso de inferencia.
  • Requisitos de seguridad. Para mejorar la seguridad, use la autenticación y la autorización para controlar el acceso al punto de conexión en línea.

    • Un punto de conexión en línea con protección de entrada solo acepta solicitudes de puntuación de hosts dentro de una red virtual. No acepta solicitudes de puntuación de la red pública de Internet. Un punto de conexión en línea que se crea en un área de trabajo habilitada para vínculo privado tiene protección de entrada. Para más información, consulte Uso del aislamiento de red con puntos de conexión en línea administrados.
    • Use tokens de Microsoft Entra para la autenticación del plano de control. En el caso de las operaciones del plano de datos, se admiten enfoques basados en claves y basados en tókenes. Se prefiere el enfoque basado en tókenes porque los tókenes expiran. Use los controles de acceso basado en roles (RBAC) de Azure para restringir el acceso y recuperar la clave o el token de un punto de conexión en línea.
    • Use el cifrado SSL en el punto de conexión, que está habilitado de forma predeterminada para la invocación del punto de conexión de Machine Learning.
  • Integración en tiempo real. Integre la inferencia en tiempo real con otros servicios de Azure mediante los SDK para distintos lenguajes e invoque el punto de conexión mediante una API de REST. Puede invocar el punto de conexión en línea como parte del código de una aplicación.

  • MLflow. Use el marco de código abierto, MLflow, durante el desarrollo del modelo. Machine Learning admite la implementación sin código de modelos que se crean y registran con MLflow. Al implementar el modelo de MLflow en un punto de conexión en línea, no es necesario indicar un script de puntuación ni un entorno.

  • Implementación segura. Implemente actualizaciones por fases en los modelos de Machine Learning para asegurarse de que el modelo funciona según lo previsto. Use la estrategia de implementación segura de Machine Learning para implementar un modelo en un punto de conexión, realizar pruebas en el modelo y aumentar gradualmente el tráfico al nuevo modelo. Aproveche el tráfico reflejado para reflejar un porcentaje de tráfico activo en el nuevo modelo para una validación adicional. La creación de reflejo del tráfico (también llamado "shadowing") no cambia los resultados devueltos a los clientes. Todas las solicitudes siguen fluyendo al modelo original. Para más información, consulte Implementación segura para puntos de conexión en línea.

Otras consideraciones

Tenga en cuenta estas consideraciones al implementar modelos de Machine Learning en entornos de producción.

ONNX

Para optimizar la inferencia de los modelos de Machine Learning, use Open Neural Network Exchange (ONNX). Puede ser un desafío usar completamente las funcionalidades de hardware al optimizar los modelos, especialmente cuando se usan diferentes plataformas (por ejemplo, la nube, el perímetro o la CPU/GPU). Puede entrenar un nuevo modelo o convertir un modelo existente de otro formato a ONNX.

Escenario de varios modelos

Un modelo singular podría no capturar la naturaleza compleja de los problemas del mundo real. Por ejemplo, los supermercados tienen datos demográficos, marcas, SKU y otras características que varían entre regiones, lo que hace que sea un desafío crear un único modelo de predicción de ventas. De forma similar, las variaciones regionales pueden suponer un desafío para un modelo de mantenimiento predictivo de medidores inteligentes. Use muchos modelos a fin de capturar datos regionales o relaciones a nivel de tienda para proporcionar una mayor precisión que un solo modelo. El enfoque de muchos modelos supone que hay suficientes datos disponibles para este nivel de granularidad.

El escenario de muchos modelos tiene tres fases: origen de datos, ciencia de datos y muchos modelos.

A diagram that shows the stages of the many-models scenario.

  • Origen de datos. En la fase del origen de datos, es importante segmentar los datos en solo unos pocos elementos. Por ejemplo, no factorice el id. de producto ni el código de barras en la partición principal porque genera demasiados segmentos y podría impedir modelos significativos. La marca, el SKU o la localidad son elementos más adecuados. Es importante simplificar los datos eliminando las anomalías que puedan sesgar la distribución de los datos.

  • Ciencia de datos. En la fase de la ciencia de datos, se ejecutan varios experimentos en paralelo en cada segmento de datos. La experimentación con varios modelos es un proceso iterativo que evalúa los modelos para determinar lo mejor.

  • Muchos modelos. los mejores modelos para cada segmento o categoría se registran en el registro del modelo. Asigne nombres descriptivos a los modelos para que sean más detectables para la inferencia. Use el etiquetado cuando sea necesario para agrupar el modelo en categorías específicas.

Inferencia por lotes para varios modelos

Para muchos modelos, durante la inferencia por lotes, las predicciones se realizan según una programación periódica y pueden controlar los datos de gran volumen que se ejecutan al mismo tiempo. A diferencia de un escenario de modelo único, la inferencia de varios modelos se produce al mismo tiempo.

Muchos modelos para la inferencia por lotes usan varias implementaciones en un punto de conexión administrado único. La inferencia por lotes para modelos específicos invoca el nombre de implementación durante la llamada de REST o SDK. Para más información, consulte Implementación de muchos modelos en una implementación.

Inferencia en tiempo real para varios modelos

Puede implementar muchos modelos en un punto de conexión en línea administrado único, que puede invocar a través de una API de REST o un SDK. Al crear las implementaciones, registre los muchos modelos como un único "modelo registrado" en Azure. Incluya los varios modelos en el mismo directorio y pase ese directorio como la ruta de acceso del modelo único. Los modelos se cargan en un diccionario con clave en sus nombres. Cuando se recibe una solicitud de REST, el modelo deseado se recupera de la carga JSON y el modelo pertinente puntúa la carga.

Los modelos que se cargan en una implementación de muchos modelos mediante esta técnica deben compartir la misma versión de Python y no tener dependencias en conflicto. Sus bibliotecas deben importarse simultáneamente aunque no tengan estrictamente las mismas dependencias.

Para obtener un ejemplo, consulte Creación de una implementación multimodelo mediante un contenedor personalizado.

Pasos siguientes