Compartir a través de


Uso del enfoque de arquitectura de varios modelos para escalar modelos de aprendizaje automático

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

En este artículo se describe una arquitectura para muchos modelos que usan Azure Machine Learning y clústeres de proceso. Una arquitectura de varios modelos proporciona versatilidad para situaciones que requieren una configuración compleja.

Arquitectura

Diagrama que muestra la arquitectura de varios modelos.

Descargue un archivo Visio de esta arquitectura.

Flujo de datos

El siguiente flujo de datos corresponde al diagrama anterior:

  1. ingesta de datos de :

    1. Azure Data Factory recupera datos de una base de datos de origen y los copia en Azure Data Lake Storage.

    2. Los datos se almacenan en un almacén de datos de Machine Learning como un conjunto de datos tabular.

  2. Canalización de entrenamiento de modelos:

    1. Preparar datos:

      1. La canalización de entrenamiento recupera los datos del almacén de datos y los transforma según sea necesario.

      2. Los datos se agrupan en conjuntos de datos para entrenar los modelos.

    2. Entrenar modelos:

      1. La canalización entrena modelos para todos los conjuntos de datos creados durante la preparación de datos.

      2. Usa la clase ParallelRunStep para entrenar varios modelos en paralelo.

      3. Una vez entrenados los modelos, la canalización registra los modelos y sus métricas de prueba en Machine Learning.

  3. Canalización de promoción de modelos:

    1. Evaluar modelos:

      1. La canalización de promoción evalúa los modelos entrenados antes de moverlos a producción.

      2. Una canalización de DevOps aplica la lógica de negocios para determinar si un modelo cumple los criterios de implementación. Por ejemplo, puede comprobar que la precisión de los datos de prueba supera los 80%.

    2. Registrar modelos:

      1. La canalización de promoción registra los modelos aptos en el área de trabajo de Machine Learning de producción.
  4. Canalización de puntuación por lotes del modelo:

    1. Preparar datos:

      1. La canalización de puntuación por lotes recupera los datos del almacén de datos y transforma cada archivo según sea necesario.

      2. Los datos se agrupan en conjuntos de datos para la puntuación.

    2. Puntuación de modelos:

      1. La canalización usa la clase ParallelRunStep para puntuar varios conjuntos de datos en paralelo.

      2. Identifica el modelo adecuado para cada conjunto de datos de Machine Learning mediante la búsqueda de etiquetas de modelo.

      3. El modelo se descarga y se usa para puntuar el conjunto de datos.

      4. La clase DataTransferStep escribe los resultados en Azure Data Lake.

      5. Las predicciones se pasan de Azure Data Lake a Synapse SQL para servir.

      6. El punto de conexión en línea administrado proporciona puntuación en tiempo real.

      7. Debido al gran número de modelos, se cargan a petición en lugar de cargarse previamente.

  5. Resultados:

    • Predicciones: la canalización de puntuación por lotes guarda las predicciones en Synapse SQL.

    • métricas de : Microsoft Power BI se conecta a las predicciones del modelo para recuperar y agregar resultados para su presentación.

Componentes

  • Azure Data Factory es un servicio de integración de datos basado en la nube que permite la creación de flujos de trabajo controlados por datos para orquestar y automatizar el movimiento y la transformación de datos. En esta arquitectura, Azure Data Factory ingiere datos empresariales y metadatos de terceros en Data Lake Storage.

  • Azure DevOps es un conjunto de servicios para desarrolladores que permiten administrar todo el ciclo de vida de las aplicaciones y la infraestructura. Incluye herramientas para canalizaciones de integración continua y entrega continua (CI/CD), seguimiento de trabajos, control de código fuente, canalizaciones de compilación, administración de paquetes y soluciones de prueba. En esta arquitectura, Azure DevOps se usa para administrar canalizaciones de CI/CD para automatizar la promoción, las pruebas y la implementación de modelos en entornos de producción.

  • azure SQL Database es una base de datos en la nube relacional totalmente administrada. En esta arquitectura, SQL Database se usa para almacenar datos estructurados que se pueden consultar o analizar como parte de la canalización de datos.

  • azure Stream Analytics es un servicio de análisis en tiempo real y procesamiento de eventos complejo diseñado para analizar y procesar grandes volúmenes de datos de streaming rápidos. En esta arquitectura, Stream Analytics se puede usar para el procesamiento de datos en tiempo real.

  • Azure Synapse Analytics es un servicio de análisis que unifica integración de datos, almacenamiento de datos empresariales y análisis de macrodatos. Se usa en esta arquitectura para almacenar los resultados de puntuación por lotes. Este enfoque permite realizar consultas y recuperar predicciones eficaces para la creación de informes o análisis. Synapse SQL se usa para proporcionar predicciones a aplicaciones de bajada y habilitar herramientas de visualización como Power BI para acceder a los resultados agregados.

  • Data Lake Storage es un servicio de almacenamiento seguro y escalable de forma masiva para cargas de trabajo de análisis de alto rendimiento. En esta arquitectura, Data Lake Storage actúa como capa de almacenamiento principal para conjuntos de datos sin procesar y transformados, y para almacenar los resultados de las canalizaciones de puntuación.

  • machine Learning es un servicio de aprendizaje automático de nivel empresarial para compilar e implementar modelos rápidamente. Proporciona a los usuarios todos los niveles de aptitudes herramientas como un diseñador de poco código, aprendizaje automático automatizado y un entorno hospedado de Jupyter Notebook que admite varios entornos de desarrollo integrados. En esta arquitectura, Machine Learning se usa para administrar el ciclo de vida de los modelos, incluido el entrenamiento, la evaluación y la implementación. También organiza canalizaciones para tareas como entrenamiento, promoción y puntuación.

    • puntos de conexión en línea administrados son una característica de Machine Learning que se usa para la puntuación en tiempo real. En esta arquitectura, un punto de conexión en línea administrado ayuda a proporcionar una manera escalable y segura de servir predicciones casi en tiempo real mediante la carga de modelos de aprendizaje automático a petición.

    • La clase ParallelRunStep es un componente de las canalizaciones de Machine Learning que se usan para ejecutar trabajos paralelos de forma eficaz. Permite el procesamiento escalable de tareas por lotes, como el entrenamiento o la puntuación de muchos modelos simultáneamente. En esta arquitectura, la clase ParallelRunStep se usa en las canalizaciones de entrenamiento de modelos y puntuación por lotes para entrenar o puntuar varios conjuntos de datos o modelos en paralelo, lo que reduce significativamente el tiempo de ejecución de estas operaciones.

  • Power BI es una colección de servicios de software, aplicaciones y conectores que funcionan juntos para convertir orígenes de datos no relacionados en información coherente, visualmente envolvente e interactiva. En esta arquitectura, Power BI se conecta a Synapse SQL para recuperar y presentar predicciones y métricas agregadas a través de paneles interactivos.

Alternativas

  • Puede usar cualquier base de datos para los datos de origen.

  • Puede usar Azure Kubernetes Service (AKS) para la inferencia en tiempo real en lugar de los puntos de conexión en línea administrados. AKS permite implementar modelos en contenedores y proporciona más control sobre la implementación. Estas funcionalidades permiten la carga dinámica de modelos para controlar las solicitudes entrantes sin agotar los recursos.

Detalles del escenario

Muchos problemas de aprendizaje automático son demasiado complejos para que un solo modelo de aprendizaje automático los pueda resolver. Ya sea que prediga las ventas de cada artículo de cada almacén o mantenimiento de modelado para cientos de pozos de petróleo, tener un modelo para cada instancia podría mejorar los resultados en muchos problemas de aprendizaje automático. Este patrón de varios modelos es común en una amplia variedad de sectores y tiene muchos casos de uso reales. Con el uso de Machine Learning, una canalización de varios modelos de un extremo a otro puede incluir el entrenamiento del modelo, la implementación de inferencia por lotes y la implementación en tiempo real.

Una solución de muchos modelos requiere un conjunto de datos diferente para cada modelo durante el proceso de entrenamiento y puntuación. Por ejemplo, si la tarea es predecir las ventas de cada elemento de cada almacén, cada conjunto de datos corresponde a una combinación de almacén de elementos única.

Posibles casos de uso

  • Retail: Una cadena de tiendas de comestibles debe crear un modelo de previsión de ingresos independiente para cada tienda y artículo, lo que suma más de 1000 modelos para cada tienda.

  • Cadena de suministro: para cada combinación de almacén y producto, una empresa de distribución debe optimizar el inventario.

  • Restaurantes: Una cadena con miles de franquicias debe prever la demanda de cada franquicia.

Consideraciones

Estas consideraciones implementan los pilares del Azure Well-Architected Framework, que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de una carga de trabajo. Para obtener más información, vea Well-Architected Framework.

  • Particiones de datos: Dividir los datos en particiones es esencial para implementar el patrón de muchos modelos. Si desea un modelo para cada almacén, cada conjunto de datos contiene todos los datos de un único almacén, por lo que hay tantos conjuntos de datos como almacenes. Si desea modelar productos por tienda, hay un conjunto de datos para cada combinación de producto y almacén. Dependiendo del formato de los datos de origen, puede que sea fácil crear particiones o tal vez haya que transformar y ordenar grandes cantidades de datos. Spark y Synapse SQL se escalan bien para estas tareas, mientras que Pandas de Python no se debe a que se ejecuta en un único nodo y proceso.

  • Administración de modelos: las canalizaciones de entrenamiento y puntuación identifican e invocan el modelo adecuado para cada conjunto de datos. Para ello, calculan etiquetas que caracterizan el conjunto de datos y, a continuación, usan las etiquetas para buscar el modelo coincidente. Las etiquetas identifican la clave de partición de datos y la versión del modelo. También pueden proporcionar otra información.

  • Elegir la arquitectura correcta:

    • Spark es adecuado cuando la canalización de entrenamiento tiene requisitos complejos de transformación y agrupación de datos. Ofrece técnicas flexibles de división y agrupación para organizar los datos por combinaciones de características, como el producto y el almacén o la ubicación y el producto. Los resultados se pueden incluir en un dataframe de Spark para usarlos en pasos posteriores.

    • Si el aprendizaje automático y los algoritmos de puntuación son sencillos, es posible que pueda crear particiones de datos con bibliotecas como scikit-learn. En este escenario, es posible que no necesite Spark, por lo que puede evitar posibles complejidades que surjan al instalar Azure Synapse Analytics o Azure Databricks.

    • Si los conjuntos de datos de entrenamiento ya se crean, como cuando se almacenan en archivos independientes o se organizan en filas o columnas distintas, no necesita Spark para transformaciones de datos complejas.

    • La solución Machine Learning y clústeres de proceso proporciona versatilidad para situaciones que requieren una configuración compleja. Por ejemplo, puede usar un contenedor de Docker personalizado, descargar archivos o descargar modelos entrenados previamente. Computer Vision y el aprendizaje profundo de procesamiento de lenguaje natural son ejemplos de aplicaciones que pueden requerir esta versatilidad.

  • repositorios de modelos independientes: Para proteger los modelos implementados, considere la posibilidad de almacenarlos en su propio repositorio al que las canalizaciones de entrenamiento y prueba no tienen acceso.

  • clase ParallelRunStep: La clase ParallelRunStep de Python es una opción eficaz para ejecutar muchos modelos de entrenamiento e inferencia. Puede particionar los datos de varias maneras y, a continuación, aplicar el script de aprendizaje automático en elementos de la partición en paralelo. Al igual que otras formas de entrenamiento de Machine Learning, puede especificar un entorno de entrenamiento personalizado que tenga acceso a paquetes de Índice de paquetes de Python (PyPI) o un entorno de Docker personalizado más avanzado para configuraciones que requieren más de PyPI estándar. Existen muchas CPU y GPU entre las que elegir.

  • Inferencia en línea: Si una canalización carga y almacena en caché todos los modelos desde el principio, los modelos podrían agotar la memoria del contenedor. Por lo tanto, cargue los modelos a petición en el método de ejecución, aunque la latencia pueda aumentar ligeramente.

Optimización de costos

La optimización de costos se centra en formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la optimización de costes.

Para comprender mejor el costo de ejecutar este escenario en Azure, use la calculadora de precios de . Debe suponer que:

  • Los modelos de servicios se entrenan diariamente para mantenerse actualizados.

  • Necesita unos 30 minutos para procesar un conjunto de datos que contenga 40 millones de filas de 10 mil combinaciones únicas de productos de almacén. El conjunto de datos entrena en Azure Databricks mediante un clúster que se aprovisiona con 12 máquinas virtuales (VM) que usan instancias de Ls16_v2. La puntuación por lotes con el mismo conjunto de datos lleva unos 20 minutos.

  • Puede usar Machine Learning para implementar la inferencia en tiempo real. En función del volumen de solicitudes, elija un tipo adecuado de máquina virtual y tamaño de clúster.

  • Un clúster de AKS se escala automáticamente según sea necesario, lo que da como resultado un promedio de dos nodos activos cada mes.

Para ver cómo los precios difieren en el caso de uso, cambie las variables de la calculadora de precios para que coincidan con el tamaño de los datos esperado y atender los requisitos de carga. Para tamaños de datos de entrenamiento más grandes o pequeños, aumente o reduzca el tamaño del clúster Azure Databricks. Para administrar más usuarios simultáneamente durante el servicio de modelos, aumente el tamaño del clúster de AKS.

Colaboradores

Microsoft mantiene este artículo. Los colaboradores siguientes escribieron este artículo.

Autor principal:

  • James Nguyen | Arquitecto principal de soluciones en la nube

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

Pasos siguientes