Aprendizaje de Python scikit-aprender modelos en AzureTraining of Python scikit-learn models on Azure

Esta arquitectura de referencia muestra procedimientos recomendados para optimizar los hiperparámetros (parámetros de formación) de un scikit-aprender Python model. A reference implementation for this architecture is available on GitHub.This reference architecture shows recommended practices for tuning the hyperparameters (training parameters) of a scikit-learn Python model. A reference implementation for this architecture is available on GitHub.

Diagrama de la arquitectura

Escenario: El problema se trate aquí es más preguntas frecuentes (P+F) de coincidencia.Scenario: The problem addressed here is Frequently Asked Question (FAQ) matching. Este escenario utiliza un subconjunto de datos de preguntas de Stack Overflow que incluye las preguntas originales etiquetadas como JavaScript, sus preguntas duplicadas y sus respuestas.This scenario uses a subset of Stack Overflow question data that includes original questions tagged as JavaScript, their duplicate questions, and their answers. Entrena un scikit-aprender modelo para predecir la probabilidad de que una pregunta duplicada coincide con una de las preguntas originales.It trains a scikit-learn model to predict the probability that a duplicate question matches one of the original questions.

Procesamiento en este canalización escenario implica los pasos siguientes:Processing in this pipeline scenario involves the following steps:

  1. El script de Python de aprendizaje se envía a la servicio Azure Machine Learning.The training Python script is submitted to the Azure Machine Learning service.

  2. El script se ejecuta en contenedores de Docker que se crean en cada nodo.The script runs in Docker containers that are created on each node.

  3. Ese script recupera entrenar y probar los datos de Azure Storage.That script retrieves training and testing data from Azure Storage.

  4. El script entrena un modelo de los datos de entrenamiento mediante su combinación de parámetros de entrenamiento.The script trains a model from the training data using its combination of training parameters.

  5. Rendimiento del modelo se evalúa en los datos de prueba y se escribe en el almacenamiento de Azure.The model's performance is evaluated on the testing data, and is written to Azure Storage.

  6. Es el modelo que mejor registrado con el servicio de Azure Machine Learning.The best performing model is registered with the Azure Machine Learning service.

Vea también las consideraciones para el entrenamiento modelos de aprendizaje profundo con GPU.See also considerations for training deep learning models with GPUs.

ArquitecturaArchitecture

Esta arquitectura consta de varios servicios de nube de Azure que escalar los recursos según necesidad.This architecture consists of several Azure cloud services that scale resources according to need. A continuación se describen los servicios y sus funciones en esta solución.The services and their roles in this solution are described below.

Microsoft Data Science Virtual Machine (DSVM) es una imagen de VM configurada con las herramientas usadas para el análisis de datos y aprendizaje automático.Microsoft Data Science Virtual Machine (DSVM) is a VM image configured with tools used for data analytics and machine learning. Hay disponibles versiones de Windows Server y Linux.Both Windows Server and Linux versions are available. Esta implementación usa las ediciones de Linux de DSVM en Ubuntu 16.04 LTS.This deployment uses the Linux editions of the DSVM on Ubuntu 16.04 LTS.

Servicio de Azure Machine Learning se usa para entrenar, implementar, automatizar y administrar modelos de aprendizaje automático a escala de nube.Azure Machine Learning service is used to train, deploy, automate, and manage machine learning models at cloud scale. En esta arquitectura se usa para administrar la asignación y uso de los recursos de Azure que se describe a continuación.It's used in this architecture to manage the allocation and use of the Azure resources described below.

Azure Machine Learning Compute is the resource used to train and test machine learning and AI models at scale in Azure. The compute target en este escenario es un clúster de nodos que se asignan a petición según una automática [escalado][escalado] opción.Azure Machine Learning Compute is the resource used to train and test machine learning and AI models at scale in Azure. The compute target in this scenario is a cluster of nodes that are allocated on demand based on an automatic scaling option. Cada nodo es una máquina virtual que se ejecuta un trabajo de aprendizaje para un determinado hiperparámetros establecido.Each node is a VM that runs a training job for a particular hyperparameter set.

Azure Container Registry almacena imágenes para todos los tipos de implementaciones de contenedor de Docker.Azure Container Registry stores images for all types of Docker container deployments. Estos contenedores se crean en cada nodo y se utilizan para ejecutar el script de Python de aprendizaje.These containers are created on each node and used to run the training Python script. La imagen utilizada en el clúster de proceso de Machine Learning se crea el servicio de Machine Learning en la ejecución local y blocs de notas de ajuste de hiperparámetros y, a continuación, se inserta en el registro de contenedor.The image used in the Machine Learning Compute cluster is created by the Machine Learning service in the local run and hyperparameter tuning notebooks, and then is pushed to Container Registry.

Azure Blob almacenamiento recibe los conjuntos de datos de entrenamiento y prueba del servicio de aprendizaje automático usados por el script de Python de aprendizaje.Azure Blob storage receives the training and test data sets from the Machine Learning service that are used by the training Python script. Storage se monta como una unidad virtual en cada nodo de un clúster de Machine Learning Compute.Storage is mounted as a virtual drive onto each node of a Machine Learning Compute cluster.

Consideraciones sobre rendimientoPerformance considerations

Cada conjunto de hiperparámetros runs on one node of the Machine Learning compute target.Each set of hyperparameters runs on one node of the Machine Learning compute target. Para esta arquitectura, cada nodo es una máquina virtual estándar D4 v2, que tiene cuatro núcleos.For this architecture, each node is a Standard D4 v2 VM, which has four cores. Esta arquitectura usa un LightGBM clasificador para el aprendizaje automático, una potenciación de gradientes.This architecture uses a LightGBM classifier for machine learning, a gradient boosting framework. Este software puede ejecutar en todos los cuatro núcleos al mismo tiempo, lo que acelera la cada ejecución en un factor de hasta cuatro.This software can run on all four cores at the same time, speeding up each run by a factor of up to four. De este modo, el ajuste de hiperparámetros todo ejecuta tarda hasta un cuarto del tiempo que tardaría si hubiera ejecutar en un destino de Machine Learning Compute según el estándar D1 v2 máquinas virtuales que tienen solo un núcleo cada uno.That way, the whole hyperparameter tuning run takes up to one-quarter of the time it would take had it been run on a Machine Learning Compute target based on Standard D1 v2 VMs, which have only one core each.

El número máximo de nodos de proceso de Machine Learning afecta el tiempo de ejecución total.The maximum number of Machine Learning Compute nodes affects the total run time. El número mínimo recomendado de nodos es cero.The recommended minimum number of nodes is zero. Con esta configuración, el tiempo necesario para que un trabajo en iniciarse incluye algunos minutos para el escalado automático al menos un nodo en el clúster.With this setting, the time it takes for a job to start up includes some minutes for auto-scaling at least one node into the cluster. Sin embargo, si el ajuste de hiperparámetros se ejecuta durante un breve período, escalar verticalmente el trabajo agrega a la sobrecarga.If the hyperparameter tuning runs for a short time, however, scaling up the job adds to the overhead. Por ejemplo, puede ejecutar un trabajo en menos de cinco minutos, pero hasta un nodo de escalado puede tardar cinco minutos.For example, a job can run in under five minutes, but scaling up to one node might take another five minutes. En este caso, al establecer el mínimo en un nodo ahorra tiempo, pero agrega el costo.In this case, setting the minimum to one node saves time but adds to the cost.

Consideraciones acerca de la supervisión y el registroMonitoring and logging considerations

Enviar un HyperDrive configuración de ejecución para devolver un objeto de ejecución para su uso en supervisar el progreso de la ejecución.Submit a HyperDrive run configuration to return a Run object for use in monitoring the run's progress.

Jupyter Widget RunDetailsRunDetails Jupyter Widget

Utilice el objeto de ejecución con el RunDetails Jupyter widget cómodamente supervisar su progreso en la puesta en cola y al ejecutar trabajos de sus elementos secundarios.Use the Run object with the RunDetails Jupyter widget to conveniently monitor its progress at queuing and when running its children jobs. También muestra los valores de la estadística principal que inicien sesión en tiempo real.It also shows the values of the primary statistic that they log in real time.

Azure PortalAzure portal

Imprimir un objeto de ejecución para mostrar un vínculo a la página de la ejecución en el portal de Azure similar al siguiente:Print a Run object to display a link to the run's page in Azure portal like this:

Objeto de ejecución

Utilice esta página para supervisar el estado de la ejecución y sus ejecuciones de los elementos secundarios.Use this page to monitor the status of the run and its children runs. Cada ejecución secundario tiene un registro del controlador que contiene la salida del script de entrenamiento que se ha ejecutado.Each child run has a driver log containing the output of the training script it has run.

Consideraciones sobre el costoCost considerations

El costo de una ejecución de ajuste de hiperparámetros linealmente depende de la elección del tamaño de máquina virtual de proceso de Machine Learning, si se utilizan los nodos de prioridad baja y el número máximo de nodos permitido en el clúster.The cost of a hyperparameter tuning run depends linearly on the choice of Machine Learning Compute VM size, whether low-priority nodes are used, and the maximum number of nodes allowed in the cluster.

El número mínimo de nodos de clúster requerido dependen de costes cuando el clúster no está en uso.Ongoing costs when the cluster is not in use depend on the minimum number of nodes required by the cluster. Con el escalado automático de clúster, el sistema agrega automáticamente los nodos hasta el máximo permitido para que coincida con el número de trabajos y, a continuación, quita los nodos hasta el mínimo solicitado según ya no sean necesarios.With cluster autoscaling, the system automatically adds nodes up to the allowed maximum to match the number of jobs, and then removes nodes down to the requested minimum as they are no longer needed. Si el clúster puede escalar automáticamente hasta cero nodos, no cuesta nada cuando no está en uso.If the cluster can autoscale down to zero nodes, it does not cost anything when it is not in use.

Consideraciones sobre la seguridadSecurity considerations

Restricción de acceso a Azure Blob StorageRestrict access to Azure Blob Storage

Esta arquitectura usa claves de cuenta de almacenamiento para tener acceso al almacenamiento de blobs.This architecture uses storage account keys to access the Blob storage. Para obtener más control y protección, en su lugar, considere la posibilidad de usar una firma de acceso compartido (SAS).For further control and protection, consider using a shared access signature (SAS) instead. Esto concede acceso limitado a los objetos de almacenamiento, sin necesidad de codificar de forma rígida las claves de cuenta ni de guardarlas como texto no cifrado.This grants limited access to objects in storage, without needing to hard-code the account keys or save them in plaintext. El uso de una SAS también ayuda a asegurarse de que la cuenta de almacenamiento tiene una gobernanza corporativoa adecuada y que se concede acceso solo a las personas que deben tenerlo.Using a SAS also helps to ensure that the storage account has proper governance, and that access is granted only to the people intended to have it.

Para escenarios con información más confidencial, asegúrese de que todas las claves de almacenamiento están protegidas, ya que estas claves conceden acceso total a todos los datos de entrada y salida de la carga de trabajo.For scenarios with more sensitive data, make sure that all of your storage keys are protected, because these keys grant full access to all input and output data from the workload.

Cifrado de datos en reposo y en movimientoEncrypt data at rest and in motion

En escenarios que utilizan datos confidenciales, cifrar los datos en reposo, es decir, los datos de almacenamiento.In scenarios that use sensitive data, encrypt the data at rest—that is, the data in storage. Cada vez que los datos se muevan de una ubicación a la siguiente, use SSL para proteger la transferencia de datos.Each time data moves from one location to the next, use SSL to secure the data transfer. Para obtener más información, consulte el Guía de seguridad de Azure Storage.For more information, see the Azure Storage security guide.

Protección de datos de una red virtualSecure data in a virtual network

Para las implementaciones de producción, considere la posibilidad de implementar el clúster en una subred de una red virtual que especifique.For production deployments, consider deploying the cluster into a subnet of a virtual network that you specify. Esto permite que los nodos de proceso del clúster se comuniquen de forma segura con otras máquinas virtuales o con una red local.This allows the compute nodes in the cluster to communicate securely with other virtual machines or with an on-premises network. También puede usar los extremos del servicio con almacenamiento de blobs para conceder acceso desde una red virtual o usar un NFS de nodo único dentro de la red virtual con el servicio de Azure Machine Learning.You can also use service endpoints with blob storage to grant access from a virtual network or use a single-node NFS inside the virtual network with Azure Machine Learning service.

ImplementaciónDeployment

Para implementar la implementación de referencia para esta arquitectura, siga los pasos descritos en la GitHub repositorio.To deploy the reference implementation for this architecture, follow the steps in the GitHub repo.

Pasos siguientesNext steps

Para poner en marcha el modelo, vea operacionalización de Machine learning (MLOps) para los modelos de Python con Azure Machine Learning.To operationalize the model, see Machine learning operationalization (MLOps) for Python models using Azure Machine Learning.