Puntuación por lotes de modelos de Python en Azure

Azure Container Registry
Azure Event Hubs
Azure Machine Learning
Azure SQL Database
Azure Stream Analytics

Esta guía de arquitectura muestra cómo crear una solución escalable para los modelos de puntuación por lotes mediante Azure Machine Learning. La solución se puede usar como plantilla y se puede generalizar para diferentes problemas.

Architecture

Architecture diagram that shows the batch scoring of Python models on Azure

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo

Esta guía de arquitectura es aplicable tanto para el streaming como para los datos estáticos, siempre que el proceso de ingesta se adapte al tipo de datos. Los siguientes pasos y componentes describen la ingesta de estos dos tipos de datos.

Streaming de datos:

  1. Los datos de streaming se originan en sensores de IoT, donde los nuevos eventos se transmiten a intervalos frecuentes.
  2. Los eventos de streaming entrantes se ponen en cola mediante Azure Event Hubs y, a continuación, se procesan previamente mediante Azure Stream Analytics.
    • Azure Event Hubs. Este servicio de ingesta de mensajes puede ingerir millones de mensajes de eventos por segundo. En esta arquitectura, los sensores envían un flujo de datos al centro de eventos.
    • Azure Stream Analytics. Un motor de procesamiento de eventos. Un trabajo de Stream Analytics lee los flujos de datos del centro de eventos y realiza su procesamiento.

Datos estáticos:

  1. Los conjuntos de datos estáticos pueden almacenarse como archivos en Azure Data Lake Storage o en forma de tabla en Azure Synapse o Azure SQL Database.
  2. Azure Data Factory se puede usar para agregar o procesar previamente el conjunto de datos almacenado.

La arquitectura restante, después de la ingesta de datos, es igual tanto para el streaming como para los datos estáticos, y consta de los siguientes pasos y componentes:

  1. Los datos ingeridos, agregados o procesados previamente se pueden almacenar como documentos en Azure Data Lake Storage o en forma de tabla en Azure Synapse o Azure SQL Database. A continuación, Azure Machine Learning consumirá estos datos.
  2. Azure Machine Learning se usa para entrenar, implementar y administrar modelos de Machine Learning a escala. En el contexto de puntuación por lotes, Azure Machine Learning crea un clúster de máquinas virtuales con una opción de escalado automático, donde los trabajos se ejecutan en paralelo a partir de scripts de Python.
  3. Los modelos se implementan como puntos de conexión por lotes administrados, que se usan para realizar la inferencia por lotes en grandes volúmenes de datos durante un período de tiempo. Los puntos de conexión por lotes reciben punteros hacia los datos y ejecutan trabajos de forma asincrónica para procesar los datos en paralelo en los clústeres de proceso.
  4. Los resultados de la inferencia se pueden almacenar como documentos en Azure Data Lake Storage o en forma de tabla en Azure Synapse o Azure SQL Database.
  5. Visualización: los resultados del modelo almacenado se pueden consumir mediante interfaces de usuario, como paneles de Power BI o mediante aplicaciones web personalizadas.

Componentes

Consideraciones

Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.

Rendimiento

En los modelos de Python estándar, se suele aceptar que las CPU son suficientes para controlar la carga de trabajo. Esta arquitectura utiliza varias CPU. Sin embargo, para cargas de trabajo de aprendizaje profundo, por lo general las GPU superan a las CPU en una cantidad considerable (normalmente se necesita un clúster considerable de CPU para obtener un rendimiento comparable).

Ejecución en paralelo en máquinas virtuales frente a núcleos

Al ejecutar los procesos de puntuación de muchos modelos de puntuación en modo por lotes, es preciso que los trabajos se ejecuten en paralelo en las máquinas virtuales. Son posibles dos enfoques:

  • Crear un clúster mayor mediante máquinas virtuales de bajo costo.
  • Crear un clúster menor mediante máquinas virtuales de alto rendimiento con más núcleos disponibles en cada una de ellas.

En general, la puntuación de los modelos de Python estándar no es tan exigente como la de los de aprendizaje profundo, y un clúster pequeño debería poder controlar de forma eficaz un gran número de modelos en cola. Puede aumentar el número de nodos de clúster a medida que aumenten los tamaños de los conjunto de datos.

En este escenario, por comodidad, se envía una tarea de puntuación en un paso individual de la canalización de Azure Machine Learning. Sin embargo, es posible que sea más eficaz puntuar varios fragmentos de datos dentro del mismo paso de la canalización. En esos casos, escriba código personalizado para leer en varios conjuntos de datos y ejecutar el script de puntuación durante la ejecución de un único paso.

Administración

  • Supervisión de trabajos. Es importante supervisar el progreso de los trabajos en ejecución. Sin embargo, puede resultar complicado supervisar un clúster de nodos activos. Para inspeccionar el estado de los nodos del clúster, use Azure Portal para administrar el área de trabajo de Machine Learning. Si un nodo está inactivo o un trabajo presenta algún error, los registros de errores se guardan en Blob Storage y también se puede acceder a ellos en la sección Canalizaciones. Para que la supervisión sea más exhaustiva, conecte los registros a Application Insights o ejecute procesos independientes para sondear el estado del clúster y sus trabajos.
  • Registro. Machine Learning registra todos los procesos stdout/stderr en la cuenta de Azure Storage asociada. Para ver con facilidad los archivos de registro, use una herramienta de exploración de almacenamiento como Explorador de Azure Storage.

Optimización de costos

La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.

Los componentes más caros que se usan en esta guía de arquitectura son los recursos de proceso. El tamaño del clúster de proceso se escala y se reduce verticalmente en función de los trabajos que haya en la cola. Habilite el escalado automático mediante programación con el SDK de Python modificando la configuración de aprovisionamiento del proceso. O use la CLI de Azure para establecer los parámetros de escalado automático del clúster.

Para el trabajo que no requiera un procesamiento inmediato, configure la fórmula de escalado automático, con el fin de que el estado predeterminado (mínimo) sea un clúster de cero nodos. Con esta configuración, el clúster empieza con cero nodos y solo se escala verticalmente si detecta trabajos en la cola. Si el proceso de puntuación por lotes solo se produce algunas veces al día o menos, esta configuración permite obtener importantes ahorros.

Es posible que el escalado no sea apropiado para los trabajos por lotes que se realizan muy próximos entre sí. Debido a que el tiempo que tarda un clúster en agilizarse y ralentizarse también genera costos, si una carga de trabajo por lotes empieza solo unos minutos después de que el trabajo anterior termine, puede resultar más rentable mantener el clúster en ejecución entre los trabajos. Esta estrategia depende de si los procesos de puntuación están programados para ejecutarse con mucha frecuencia (por ejemplo, cada hora), o con poca (por ejemplo, una vez al mes).

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Creadores de entidad de seguridad:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes

Documentación del producto:

Módulos de Microsoft Learn: