Modelos de puntuación por lotes de aprendizaje automático de Spark en Azure DatabricksBatch scoring of Spark machine learning models on Azure Databricks

Esta arquitectura de referencia le muestra cómo compilar una solución escalable para la puntuación por lotes de un modelo de clasificación de Apache Spark en una programación mediante Azure Databricks, que es una plataforma de análisis basada en Apache Spark y optimizada para Azure.This reference architecture shows how to build a scalable solution for batch scoring an Apache Spark classification model on a schedule using Azure Databricks, an Apache Spark-based analytics platform optimized for Azure. La solución se puede usar como una plantilla que a su vez se puede usar en otros escenarios.The solution can be used as a template that can be generalized to other scenarios.

En  GitHub hay disponible una implementación de referencia de esta arquitectura.A reference implementation for this architecture is available on GitHub.

Puntuación por lotes de modelos de Spark en Azure Databricks

Escenario: Una empresa en una industria de activos pesados quiere minimizar los costos y el tiempo de inactividad asociados a errores mecánicos inesperados.Scenario: A business in an asset-heavy industry wants to minimize the costs and downtime associated with unexpected mechanical failures. Al usar los datos de IoT recopilados de sus máquinas, pueden crear un modelo de mantenimiento predictivo.Using IoT data collected from their machines, they can create a predictive maintenance model. Gracias a este modelo, la empresa puede mantener los componentes de manera proactiva y repararlos antes de que se produzca un error.This model enables the business to maintain components proactively and repair them before they fail. Al maximizar el uso de componentes mecánicos, pueden controlar los costos y reducir el tiempo de inactividad.By maximizing mechanical component use, they can control costs and reduce downtime.

A su vez, un modelo de mantenimiento predictivo recopila datos de las máquinas y conserva un historial con ejemplos de los errores de los componentes.A predictive maintenance model collects data from the machines and retains historical examples of component failures. El modelo se puede usar para supervisar el estado actual de los componentes y predecir si un componente dado generará un error en un futuro cercano.The model can then be used to monitor the current state of the components and predict if a given component will fail in the near future. Para casos de uso comunes y enfoques de modelado, consulte Guía de Azure AI para soluciones de mantenimiento predictivo.For common use cases and modeling approaches, see Azure AI guide for predictive maintenance solutions.

Esta arquitectura de referencia está diseñada para cargas de trabajo que se desencadenan debido a la presencia de nuevos datos de las máquinas componentes.This reference architecture is designed for workloads that are triggered by the presence of new data from the component machines. El procesamiento implica los siguientes pasos:Processing involves the following steps:

  1. Introduzca los datos del almacén de datos externo en un almacén de datos de Azure Databricks.Ingest the data from the external data store onto an Azure Databricks data store.

  2. Entrene un modelo de Machine Learning transformando los datos en un conjunto de datos de entrenamiento y, a continuación, compilando un modelo de Spark MLlib.Train a machine learning model by transforming the data into a training data set, then building a Spark MLlib model. MLlib consta de los algoritmos y utilidades de Machine Learning más comunes optimizados para aprovechar las capacidades de escalabilidad de los datos de Spark.MLlib consists of most common machine learning algorithms and utilities optimized to take advantage of Spark data scalability capabilities.

  3. Aplique el modelo entrenado para predecir (o clasificar) los errores de los componentes transformando los datos en un conjunto de datos de puntuación.Apply the trained model to predict (classify) component failures by transforming the data into a scoring data set. Puntúe los datos con el modelo de Spark MLLib.Score the data with the Spark MLLib model.

  4. Almacene los resultados en el almacén de datos de Databricks para usarlos después del procesamiento.Store results on the Databricks data store for post-processing consumption.

Los cuadernos se proporcionan en  GitHub para realizar cada una de estas tareas.Notebooks are provided on GitHub to perform each of these tasks.

ArquitecturaArchitecture

La arquitectura define un flujo de datos que encontrará al completo en Azure Databricks y que está basado en un conjunto de cuadernos ejecutados de forma secuencial.The architecture defines a data flow that is entirely contained within Azure Databricks based on a set of sequentially executed notebooks. Este consta de los siguientes componentes:It consists of the following components:

Archivos de datos.Data files. La implementación de referencia usa un conjunto de datos simulados que están en cinco archivos de datos estáticos.The reference implementation uses a simulated data set contained in five static data files.

Ingesta de datos.Ingestion. El cuaderno de ingesta de datos descarga los archivos de datos de entrada en una colección de conjuntos de datos de Databricks.The data ingestion notebook downloads the input data files into a collection of Databricks data sets. En el mundo real, los datos de los dispositivos IoT se transmitirían al almacenamiento accesible de Databricks, como Azure SQL Server o Azure Blob Storage.In a real-world scenario, data from IoT devices would stream onto Databricks-accessible storage such as Azure SQL Server or Azure Blob storage. Databricks admite varios orígenes de datos.Databricks supports multiple data sources.

Canalización de entrenamiento.Training pipeline. Este cuaderno ejecuta el cuaderno de ingeniería de características para crear un conjunto de datos de análisis a partir de los datos ingeridos.This notebook executes the feature engineering notebook to create an analysis data set from the ingested data. A continuación ejecuta un cuaderno de creación de modelos que entrena el modelo de Machine Learning mediante la biblioteca de Machine Learning escalable Apache Spark MLlib.It then executes a model building notebook that trains the machine learning model using the Apache Spark MLlib scalable machine learning library.

Canalización de puntuación.Scoring pipeline. Este cuaderno ejecuta el cuaderno de ingeniería de características para crear un conjunto de datos de puntuación a partir de los datos ingeridos, y ejecuta el cuaderno de puntuación.This notebook executes the feature engineering notebook to create scoring data set from the ingested data and executes the scoring notebook. El cuaderno de puntuación usa el modelo entrenado de Spark MLlib para crear predicciones a partir de las observaciones en el conjunto de datos de puntuación.The scoring notebook uses the trained Spark MLlib model to generate predictions for the observations in the scoring data set. Las predicciones se guardan en el almacén de resultados, un nuevo conjunto de datos del almacén de datos de Databricks.The predictions are stored in the results store, a new data set on the Databricks data store.

Scheduler.Scheduler. Un trabajo programado de Databricks maneja la puntuación por lotes con el modelo de Spark.A scheduled Databricks job handles batch scoring with the Spark model. El trabajo ejecuta el cuaderno de canalización de puntuación, pasando argumentos variables a través de los parámetros del cuaderno para así especificar los detalles para crear el conjunto de datos de puntuación y saber dónde almacenar el conjunto de datos de resultados.The job executes the scoring pipeline notebook, passing variable arguments through notebook parameters to specify the details for constructing the scoring data set and where to store the results data set.

El escenario se crea como un flujo de canalización.The scenario is constructed as a pipeline flow. Cada cuaderno está optimizado para realizar una configuración por lotes en cada una de estas operaciones: ingestión, ingeniería de características, compilación de modelos y puntuación de modelos.Each notebook is optimized to perform in a batch setting for each of the operations: ingestion, feature engineering, model building, and model scorings. Para lograr esto, el cuaderno de ingeniería de características está diseñado para crear un conjunto de datos general para cualquiera de las operaciones de entrenamiento, calibración, prueba o puntuación.To accomplish this, the feature engineering notebook is designed to generate a general data set for any of the training, calibration, testing, or scoring operations. En este escenario, usaremos una estrategia de división temporal para estas operaciones, por lo que los parámetros del cuaderno se usan para configurar el filtrado del rango de fechas.In this scenario, we use a temporal split strategy for these operations, so the notebook parameters are used to set date-range filtering.

Como el escenario crea una canalización por lotes, proporcionaremos un conjunto de cuadernos de revisión opcionales para así poder explorar la salida de los cuadernos de canalizaciones.Because the scenario creates a batch pipeline, we provide a set of optional examination notebooks to explore the output of the pipeline notebooks. Puede encontrarlos en el repositorio de GitHub:You can find these in the GitHub repository:

  • 1a_raw-data_exploring
  • 2a_feature_exploration
  • 2b_model_testing
  • 3b_model_scoring_evaluation

RecomendacionesRecommendations

Databricks está configurado para que pueda cargar e implementar los modelos entrenados y así poder hacer predicciones con datos nuevos.Databricks is set up so you can load and deploy your trained models to make predictions with new data. Usaremos Databricks en este escenario porque proporciona estas ventajas adicionales:We used Databricks for this scenario because it provides these additional advantages:

  • Soporte técnico para el inicio de sesión único mediante las credenciales de Azure Active Directory.Single sign-on support using Azure Active Directory credentials.
  • Un programador de trabajos para ejecutar trabajos de procesos de producción.Job scheduler to execute jobs for production pipelines.
  • Un cuaderno totalmente interactivo que permite la colaboración entre usuarios, además de ofrecer paneles y varias API REST.Fully interactive notebook with collaboration, dashboards, REST APIs.
  • Clústeres ilimitados que pueden escalarse en cualquier tamaño.Unlimited clusters that can scale to any size.
  • Seguridad avanzada, controles de acceso basados en roles y registros de auditoría.Advanced security, role-based access controls, and audit logs.

Para interactuar con el servicio de Azure Databricks, use la interfaz del área de trabajo de Databricks en un navegador web o en la interfaz de la línea de comandos (CLI).To interact with the Azure Databricks service, use the Databricks Workspace interface in a web browser or the command-line interface (CLI). Puede obtener acceso a la CLI de Databricks desde cualquier plataforma que admita Python (versiones 2.7.9 a 3.6).Access the Databricks CLI from any platform that supports Python 2.7.9 to 3.6.

La implementación de referencia usa cuadernos para ejecutar tareas en secuencia.The reference implementation uses notebooks to execute tasks in sequence. Cada cuaderno almacena artefactos de datos intermedios (de entrenamiento, prueba, puntuación o conjuntos de datos de resultados) en el mismo almacén de datos que los datos de entrada.Each notebook stores intermediate data artifacts (training, test, scoring, or results data sets) to the same data store as the input data. El objetivo es facilitarle las cosas según su caso de uso particular.The goal is to make it easy for you to use it as needed in your particular use case. En la práctica, debe conectar el origen de datos a su instancia de Azure Databricks para que los cuadernos puedan leer y escribir directamente en el almacenamiento.In practice, you would connect your data source to your Azure Databricks instance for the notebooks to read and write directly back into your storage.

Puede supervisar la ejecución de trabajos a través de la interfaz de usuario de Databricks, el almacén de datos la CLI de Databricks según sea necesario.You can monitor job execution through the Databricks user interface, the data store, or the Databricks CLI as necessary. Supervise el clúster mediante el registro de eventos y otras métricas que proporciona Databricks.Monitor the cluster using the event log and other metrics that Databricks provides.

Consideraciones sobre rendimientoPerformance considerations

Un clúster de Azure Databricks habilita el escalado automático de manera predeterminada para que, durante el tiempo de ejecución, Databricks reasigne dinámicamente los roles de trabajo para que tengan en cuenta las características de su trabajo.An Azure Databricks cluster enables autoscaling by default so that during runtime, Databricks dynamically reallocates workers to account for the characteristics of your job. Ciertas partes de la canalización pueden ser más exigentes en el cálculo que otras.Certain parts of your pipeline may be more computationally demanding than others. Databricks agrega roles de trabajo adicionales durante estas fases del trabajo (y los elimina cuando ya no son necesarios).Databricks adds additional workers during these phases of your job (and removes them when they’re no longer needed). El escalado automático hace que sea más fácil lograr una alta utilización del clúster, ya que no es necesario aprovisionar ese clúster para que coincida con una carga de trabajo.Autoscaling makes it easier to achieve high cluster utilization, because you don’t need to provision the cluster to match a workload.

Además, se pueden desarrollar canalizaciones programadas más complejas mediante Azure Data Factory con Azure Databricks.Additionally, more complex scheduled pipelines can be developed by using Azure Data Factory with Azure Databricks.

Consideraciones sobre el almacenamientoStorage considerations

En esta implementación de referencia, los datos se guardan directamente en el almacenamiento de Databricks para facilitarle las cosas.In this reference implementation, the data is stored directly within Databricks storage for simplicity. Sin embargo, en una configuración de producción, los datos se pueden guardar en un almacén de datos en la nube como Azure Blob Storage.In a production setting, however, the data can be stored on cloud data storage such as Azure Blob Storage. Databricks también es compatible con Azure Data Lake Store, Azure SQL Data Warehouse, Azure Cosmos DB, Apache Kafka y Hadoop.Databricks also supports Azure Data Lake Store, Azure SQL Data Warehouse, Azure Cosmos DB, Apache Kafka, and Hadoop.

Consideraciones sobre el costoCost considerations

Azure Databricks es una oferta premium de Spark con un costo asociado.Azure Databricks is a premium Spark offering with an associated cost. Además, puede optar por planes de tarifa estándar y premium de Databricks.In addition, there are standard and premium Databricks pricing tiers.

En este ejemplo el plan de tarifa estándar es suficiente.For this scenario, the standard pricing tier is sufficient. Sin embargo, si su aplicación específica debe escalar clústeres automáticamente para controlar cargas de trabajo más grandes o paneles interactivos de Databricks, el nivel premium podría aumentar los costos aún más.However, if your specific application requires automatically scaling clusters to handle larger workloads or interactive Databricks dashboards, the premium level could increase costs further.

Para eliminar paquetes específicos de Databricks, los cuadernos de soluciones pueden ejecutarse en cualquier plataforma basada en Spark si se realizan unos cambios mínimos.The solution notebooks can run on any Spark-based platform with minimal edits to remove the Databricks-specific packages. Consulte las siguientes soluciones similares para varias plataformas de Azure:See the following similar solutions for various Azure platforms:

Implementación de la soluciónDeploy the solution

Para implementar esta arquitectura de referencia, siga los pasos descritos en el repositorio de  GitHub para crear una solución escalable para puntuar lotes de modelos de Spark en Azure Databricks.To deploy this reference architecture, follow the steps described in the GitHub repository to build a scalable solution for scoring Spark models in batch on Azure Databricks.

También hemos construido una arquitectura de referencia que usa Spark para compilar sistemas de recomendación en tiempo real con puntuaciones calculadas previamente y sin conexión.We have also built a reference architecture that uses Spark for building real-time recommendation systems with offline, pre-computed scores. Estos sistemas de recomendación son escenarios comunes donde las puntuaciones se procesan por lotes.These recommendation systems are common scenarios where scores are batch-processed.