Editar

Compartir a través de


Aprendizaje automático de varios modelos a escala con Azure Machine Learning

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

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

Un artículo complementario, Aprendizaje automático de varios modelos a escala en Azure con Spark, utiliza Apache Spark en Azure Databricks o Azure Synapse Analytics.

Arquitectura

Diagrama de la arquitectura para el aprendizaje automático de varios modelos a escala en Azure con Azure Machine Learning.

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo

  1. ingesta de datos de :

    • Azure Data Factory extrae datos de una base de datos de origen y los copia en Azure Data Lake Storage.
    • Los datos se almacenan en un almacén de datos de Machine Learning como un conjunto de datos tabular.
  2. canalización de Model-Training:

    1. Preparar datos:
      • La canalización de entrenamiento extrae los datos del almacén de datos y los transforma aún más, según sea necesario.
      • Los datos se agrupan en conjuntos de datos para entrenar los modelos.
    2. Entrenar modelos:
      • La canalización entrena modelos para todos los conjuntos de datos creados durante la preparación de datos.
      • Usa la clase ParallelRunStep para entrenar varios modelos en paralelo.
      • Después del entrenamiento, la canalización registra los modelos en Machine Learning junto con sus métricas de prueba.
  3. canalización de Model-Promotion:

    1. Evaluar modelos:
      • La canalización de promoción evalúa los modelos entrenados antes de moverlos a producción.
      • Una canalización de DevOps aplica lógica de negocios para determinar si un modelo cumple los criterios de implementación (por ejemplo, comprobar que la precisión de los datos de prueba supera los 80%).
    2. Registrar modelos:
      • 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 Batch-Scoring modelo de :

    1. Preparar datos:
      • La canalización de puntuación por lotes extrae datos del almacén de datos y transforma cada archivo más, según sea necesario.
      • Los datos se agrupan en conjuntos de datos para la puntuación.
    2. modelos de puntuación de :
      • La canalización usa la clase ParallelRunStep para puntuar varios conjuntos de datos en paralelo.
      • Identifica el modelo adecuado para cada conjunto de datos de Machine Learning mediante la búsqueda de etiquetas de modelo.
      • El modelo se descarga y se usa para puntuar el conjunto de datos.
      • La clase DataTransferStep se usa para volver a escribir los resultados en Azure Data Lake.
      • A continuación, las predicciones se pasan de Azure Data Lake a Synapse SQL para servir.
  5. puntuación de Real-Time:

    • El punto de conexión en línea administrado se usa para proporcionar puntuación en tiempo real.
    • Debido al gran número de modelos, se cargan a petición en lugar de cargarse previamente.
  6. Resultados:

    1. Predicciones: la canalización de puntuación por lotes guarda las predicciones en Synapse SQL.
    2. Métricas: Power BI se conecta a las predicciones del modelo para recuperar y agregar resultados para presentar.

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 se usa para ingerir datos empresariales y metadatos de terceros en Azure Data Lake Storage.

  • 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, Azure Stream Analytics podría usarse potencialmente para el procesamiento de datos en tiempo real, aunque no se muestra explícitamente en el flujo de trabajo.

  • Azure Machine Learning es un servicio de aprendizaje automático 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, ml automatizado (AutoML) y un entorno de jupyter notebook hospedado que admite varios IDE. En esta arquitectura, Azure Machine Learning se usa para administrar el ciclo de vida de los modelos de aprendizaje automático, como entrenamiento, evaluación, implementación y orquestación de canalizaciones, como entrenamiento, promoción y puntuación.

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

  • parallelRunStep es un componente de las canalizaciones de Azure Machine Learning que se usan para ejecutar trabajos paralelos de forma eficaz. Permite la ejecución escalable de procesos por lotes, como el entrenamiento o la puntuación de muchos modelos simultáneamente. En esta arquitectura, el 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.

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

  • 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 resultados de puntuación por lotes, lo que permite una consulta y recuperación eficaces de predicciones para informes o análisis. Synapse SQL se usa específicamente para servir predicciones a aplicaciones de bajada y habilitar herramientas de visualización como Power BI para acceder a los resultados agregados.

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

  • 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 el seguimiento del trabajo, el control de código fuente, la compilación y CI/CD, la administración de paquetes y las 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.

  • Microsoft Power BI es una colección de servicios de software, aplicaciones y conectores que funcionan conjuntamente para convertir los orígenes de datos no relacionados en información coherente, interactiva y visualmente atractiva. 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

  • Los datos de origen pueden proceder de cualquier base de datos.
  • 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, lo que permite 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. Tanto si se trata de predecir las ventas para cada artículo de cada almacén como de modelar el tipo de mantenimiento para cientos de pozos petrolíferos, disponer de un modelo para cada instancia puede mejorar los resultados para 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. Mediante el uso de Azure Machine Learning, una canalización de varios modelos de un extremo a otro puede incluir entrenamiento de modelos, implementación de inferencia por lotes e 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 consiste en predecir las ventas de cada artículo y almacén, cada conjunto de datos se corresponderá con una combinación única de artículo y almacén.

Posibles casos de uso

  • Venta al por menor: una cadena de tiendas de alimentación necesita crear un modelo de previsión de ingresos independiente para cada tienda y artículo, con más de 1000 modelos por 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 necesita hacer una previsión de la demanda de cada una de ellas.

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.

  • Particiones de datos: la creación de particiones de datos es fundamental para implementar el patrón de varios modelos. Si desea usar un modelo por almacén, un conjunto de datos constará de todos los datos para un almacén y habrá tantos conjuntos de datos como almacenes. Si desea modelar los productos por almacén, habrá 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 facilitan el escalado para esas tareas, mientras que Pandas de Python no lo hace, ya que solo se ejecuta en un 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 las etiquetas que caracterizan el conjunto de datos y después usan las etiquetas para identificar el modelo correspondiente. Las etiquetas identifican la clave de partición de datos y la versión del modelo. También pueden proporcionar otra información.
  • Elección de la arquitectura adecuada:
    • Spark es adecuado cuando la canalización de entrenamiento impone requisitos complejos de agrupación y transformació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.
    • Cuando los algoritmos de entrenamiento y puntuación de aprendizaje automático son sencillos, es posible crear particiones de datos con bibliotecas como Scikit-learn. En esos casos, puede que no necesite Spark. De este modo, evitará complicaciones que pueden surgir al instalar Azure Synapse o Azure Databricks.
    • Cuando los conjuntos de datos de entrenamiento ya están creados (por ejemplo, se encuentran en archivos, en filas o en columnas independientes), no se necesita Spark para efectuar transformaciones de datos complejas.
    • La solución de clústeres de Machine Learning y de proceso ofrece una gran versatilidad en situaciones que requieren una configuración compleja. Así, por ejemplo, puede usar un contenedor de Docker personalizado, descargar archivos o descargar modelos previamente entrenados. El servicio Computer Vision y el aprendizaje profundo del procesamiento de lenguaje natural (NLP) son ejemplos de las aplicaciones que pueden requerir esa flexibilidad.
  • Repositorios de modelos independientes: para proteger los modelos implementados, valore la posibilidad de almacenarlos en su propio repositorio, ya que las canalizaciones de entrenamiento y pruebas no les afectarán.
  • Clase ParallelRunStep: la clase ParallelRunStep de Python es una opción eficaz para ejecutar el entrenamiento y la inferencia de varios modelos. Puede crear particiones de los datos de varias maneras y, después, aplicar el script de aprendizaje automático en los elementos de la partición en paralelo. Al igual que otras formas de entrenamiento de Machine Learning, puede especificar un entorno de entrenamiento personalizado con acceso a paquetes de índice de paquetes de Python (PyPI) o un entorno de Docker personalizado más avanzado para las configuraciones que requieren más de un 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 al 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 costes trata de buscar 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 entender mejor el costo de ejecutar este escenario en Azure, use la calculadora de precios. Las suposiciones iniciales son las siguientes:

  • Los modelos de servicios se entrenan diariamente para mantenerse actualizados.
  • Para un conjunto de datos de 40 millones de filas con 10 000 combinaciones de almacén y producto, el entrenamiento en Azure Databricks mediante un clúster con 12 máquinas virtuales que usan instancias de Ls16_v2 tarda unos 30 minutos.
  • 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 la solicitud, elija un tipo de máquina virtual y un tamaño de clúster adecuados.
  • El clúster de AKS se ajusta automáticamente según las necesidades, lo que da lugar a dos nodos activos al mes como promedio.

Para ver cómo difieren los precios en su caso de uso, cambie las variables para que coincidan con los requisitos de carga de servicio y tamaño de datos previstos. 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. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

  • James Nguyen | Arquitecto principal de soluciones en la nube

Pasos siguientes