Treinando modelos Python no Azure

Armazenamento de Blobs
Registro de Contêiner
Machine Learning
Armazenamento

Essa arquitetura de referência mostra as práticas recomendadas para ajustar os hiperparâmetros (parâmetros de treinamento) dos modelos do Python.This reference architecture shows recommended practices for tuning the hyperparameters (training parameters) of python models. Dois cenários são cobertos: ajuste de hiperparâmetro de modelos scikit e modelos de aprendizado profundo com GPUs.Two scenarios are covered: hyperparameter tuning of scikit-learn models and deep learning models with GPUs. Duas implementações de referência para essa arquitetura estão disponíveis no GitHub, uma para modelos scikit e outra para modelos de aprendizado profundo .Two reference implementation for this architecture are available on GitHub, one for scikit-learn models and one for deep learning models.

Diagrama de arquitetura

CenáriosScenarios

Cenário 1: correspondência de perguntas frequentes.Scenario 1: FAQ matching. O problema abordado aqui é a correspondência de perguntas frequentes (FAQ).The problem addressed here is Frequently Asked Question (FAQ) matching. Esse cenário usa um subconjunto dos dados de pergunta do Stack Overflow que inclui perguntas originais marcadas como JavaScript, suas perguntas duplicadas e suas respostas.This scenario uses a subset of Stack Overflow question data that includes original questions tagged as JavaScript, their duplicate questions, and their answers. Ele ajusta um pipeline scikit-Learn para prever a probabilidade de que uma pergunta duplicada corresponda a uma das perguntas originais.It tunes a scikit-learn pipeline to predict the probability that a duplicate question matches one of the original questions.

O processamento neste Azure Machine Learning cenário de pipeline envolve as seguintes etapas:Processing in this Azure Machine Learning pipeline scenario involves the following steps:

  1. O script Python de treinamento é enviado para Azure Machine Learning.The training Python script is submitted to Azure Machine Learning.

  2. O script é executado em contêineres do Docker que são criados em cada nó.The script runs in Docker containers that are created on each node.

  3. Esse script recupera dados de treinamento e teste do armazenamento do Azure.That script retrieves training and testing data from Azure Storage.

  4. O script treina um modelo dos dados de treinamento usando sua combinação de parâmetros de treinamento.The script trains a model from the training data using its combination of training parameters.

  5. O desempenho do modelo é avaliado nos dados de teste e é gravado no armazenamento do Azure.The model's performance is evaluated on the testing data, and is written to Azure Storage.

  6. O modelo de melhor desempenho é registrado com Azure Machine Learning.The best performing model is registered with Azure Machine Learning.

Consulte também considerações para treinar modelos de aprendizado profundo com GPUs.See also considerations for training deep learning models with GPUs.

Scenario2: detecção de indisponibilidade de estoque.Scenario2: Out of stock detection. Este cenário mostra como ajustar um modelo de RCNN de máscara de detecção de objeto que pode ser implantado como um serviço Web para fornecer previsões para espaços vazios em prateleiras de lojas.This scenario shows how to tune an object detection Mask RCNN model that can be deployed as a web service to provide predictions for empty spaces on store shelves. Imagens semelhantes às prateleiras da loja de varejistas preenchidas com produtos são usadas para prever espaços vazios para ajudar na detecção de produtos de estoque, potencialmente contratando essas previsões com outras fontes de informações, como planograms e bancos de dados.Images similar to retailer store shelves filled with products are used to predict empty spaces to help detect out of stock products by potentially marrying these predictions with other sources of information such as planograms and databases. Nesse cenário, apenas a previsão de espaço vazio é coberta.In this scenario, only empty space prediction is covered. O DataSet usado é distribuído sob a licença CC-por 4,0 .The dataset used is distributed under the CC-BY 4.0 license.

O processamento neste cenário envolve as seguintes etapas:Processing in this scenario involves the following steps:

  1. O script Python de treinamento é enviado para Azure Machine Learning.The training Python script is submitted to Azure Machine Learning.

  2. O script é executado em contêineres do Docker que são criados em cada nó, obtendo uma imagem personalizada que é armazenada no registro de contêiner do Azure.The script runs in Docker containers that are created on each node by pulling a custom image that is stored on Azure Container Registry.

  3. O script treina um modelo dos dados de treinamento salvos no armazenamento do Azure.The script trains a model from the training data saved in Azure Storage. usando sua combinação de parâmetros de treinamento.using its combination of training parameters.

  4. O desempenho do modelo é avaliado nos dados de teste e é gravado no armazenamento do Azure.The model's performance is evaluated on the testing data, and is written to Azure Storage.

  5. O modelo de melhor desempenho é registrado com Azure Machine Learning.The best performing model is registered with Azure Machine Learning.

Consulte também considerações para treinamento distribuído de modelos de aprendizado profundo com GPUs.See also considerations for distributed training of deep learning models with GPUs.

ArquiteturaArchitecture

Essa arquitetura consiste em vários serviços de nuvem do Azure que dimensionam os recursos de acordo com a necessidade.This architecture consists of several Azure cloud services that scale resources according to need. Os serviços e suas funções nesta solução são descritos abaixo.The services and their roles in this solution are described below.

O Microsoft máquina virtual de ciência de dados (DSVM) é uma imagem de VM configurada com ferramentas usadas para análise de dados e aprendizado de máquina.Microsoft Data Science Virtual Machine (DSVM) is a VM image configured with tools used for data analytics and machine learning. Ambas as versões do Windows Server e do Linux estão disponíveis.Both Windows Server and Linux versions are available. Essa implantação usa as edições do Linux do DSVM no Ubuntu 16, 4 LTS.This deployment uses the Linux editions of the DSVM on Ubuntu 16.04 LTS.

Azure Machine Learning é usado para treinar, implantar, automatizar e gerenciar modelos de aprendizado de máquina em escala de nuvem.Azure Machine Learning is used to train, deploy, automate, and manage machine learning models at cloud scale. Ele é usado nesta arquitetura para gerenciar a alocação e o uso dos recursos do Azure descritos abaixo.It's used in this architecture to manage the allocation and use of the Azure resources described below.

Azure Machine Learning computação é o recurso usado para treinar e testar o aprendizado de máquina e modelos de ia em escala no Azure.Azure Machine Learning Compute is the resource used to train and test machine learning and AI models at scale in Azure. O destino de computação nesse cenário é um cluster de nós que são alocados sob demanda com base em uma opção de dimensionamento automático.The compute target in this scenario is a cluster of nodes that are allocated on demand based on an automatic scaling option. Cada nó é uma VM que executa um trabalho de treinamento para um conjunto de hiperparâmetros específico.Each node is a VM that runs a training job for a particular hyperparameter set.

O registro de contêiner do Azure armazena imagens para todos os tipos de implantações de contêiner do Docker.Azure Container Registry stores images for all types of Docker container deployments. Esses contêineres são criados em cada nó e usados para executar o script Python de treinamento.These containers are created on each node and used to run the training Python script. A imagem usada no cluster de Computação do Machine Learning é criada por Machine Learning nos notebooks de ajuste de execução local e de hiperparâmetro e, em seguida, é enviada por push para o registro de contêiner.The image used in the Machine Learning Compute cluster is created by Machine Learning in the local run and hyperparameter tuning notebooks, and then is pushed to Container Registry.

O armazenamento de BLOBs do Azure recebe os conjuntos de dados de treinamento e teste de Machine Learning que são usados pelo script Python de treinamento.Azure Blob storage receives the training and test data sets from Machine Learning that are used by the training Python script. O armazenamento é montado como uma unidade virtual em cada nó de um cluster Computação do Machine Learning.Storage is mounted as a virtual drive onto each node of a Machine Learning Compute cluster.

Considerações sobre o desempenhoPerformance considerations

Cada conjunto de hiperparâmetros é executado em um nó do destino de computaçãoMachine Learning.Each set of hyperparameters runs on one node of the Machine Learning compute target. Para o cenário 1, cada nó é uma VM D4 v2 padrão, que tem quatro núcleos.For scenario 1, each node is a Standard D4 v2 VM, which has four cores. Esse cenário usa um classificador de LightGBM para Machine Learning, uma estrutura de aumento de gradiente.This scenario uses a LightGBM classifier for machine learning, a gradient boosting framework. Esse software pode ser executado em todos os quatro núcleos ao mesmo tempo, acelerando cada execução por um fator de até quatro.This software can run on all four cores at the same time, speeding up each run by a factor of up to four. Dessa forma, a execução de ajuste do hiperparâmetro inteiro leva até um quarto de tempo que seria necessário para ser executada em um destino Computação do Machine Learning com base em VMs D1 v2 padrão, que têm apenas um núcleo cada.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. Para o cenário 2, cada nó é um NC6 padrão com 1 GPU e cada execução de ajuste de hiperparâmetro usará a GPU única em cada nó.For scenario 2, each node is a Standard NC6 with 1 GPU and each hyperparameter tuning run will use the single GPU on each node.

O número máximo de nós de Computação do Machine Learning afeta o tempo de execução total.The maximum number of Machine Learning Compute nodes affects the total run time. O número mínimo recomendado de nós é zero.The recommended minimum number of nodes is zero. Com essa configuração, o tempo necessário para que um trabalho seja inicializado inclui alguns minutos para o dimensionamento automático de pelo menos um nó para o cluster.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. No entanto, se o ajuste de hiperparâmetro for executado por um curto período, o aumento do trabalho aumenta a sobrecarga.If the hyperparameter tuning runs for a short time, however, scaling up the job adds to the overhead. Por exemplo, um trabalho pode ser executado em menos de cinco minutos, mas escalar verticalmente para um nó pode levar mais cinco minutos.For example, a job can run in under five minutes, but scaling up to one node might take another five minutes. Nesse caso, definir o mínimo para um nó economiza tempo, mas aumenta o custo.In this case, setting the minimum to one node saves time but adds to the cost.

Considerações de monitoramento e registro em logMonitoring and logging considerations

Envie uma configuração de execução do hyperdrive para retornar um objeto de execução para uso no monitoramento do progresso da execução.Submit a HyperDrive run configuration to return a Run object for use in monitoring the run's progress.

Widget RunDetails JupyterRunDetails Jupyter Widget

Use o objeto run com o widget RunDetails Jupyter para monitorar convenientemente seu progresso no enfileiramento e ao executar seus trabalhos filhos.Use the Run object with the RunDetails Jupyter widget to conveniently monitor its progress at queuing and when running its children jobs. Ele também mostra os valores da estatística primária em que eles fazem logon em tempo real.It also shows the values of the primary statistic that they log in real time.

Portal do AzureAzure portal

Imprima um objeto de execução para exibir um link para a página da execução em portal do Azure da seguinte maneira:Print a Run object to display a link to the run's page in Azure portal like this:

Executar objeto

Use esta página para monitorar o status da execução e seus filhos são executados.Use this page to monitor the status of the run and its children runs. Cada execução filho tem um log de driver que contém a saída do script de treinamento que ele executou.Each child run has a driver log containing the output of the training script it has run.

Considerações de custoCost considerations

O custo de uma execução de ajuste de hiperparâmetro depende linearmente da escolha de Computação do Machine Learning tamanho da VM, se os nós de baixa prioridade são usados e o número máximo de nós permitidos no cluster.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.

Os custos contínuos quando o cluster não está em uso dependem do número mínimo de nós exigidos pelo cluster.Ongoing costs when the cluster is not in use depend on the minimum number of nodes required by the cluster. Com o dimensionamento automático do cluster, o sistema adiciona automaticamente nós até o máximo permitido para corresponder ao número de trabalhos e, em seguida, remove os nós até o mínimo solicitado, pois eles não são mais necessários.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. Se o cluster puder fazer o dimensionamento automático para nós zero, ele não custará nada quando não estiver em uso.If the cluster can autoscale down to zero nodes, it does not cost anything when it is not in use.

Considerações de segurançaSecurity considerations

Restringir acesso ao Armazenamento de Blobs do AzureRestrict access to Azure Blob Storage

Essa arquitetura usa chaves de conta de armazenamento para acessar o armazenamento de Blobs.This architecture uses storage account keys to access the Blob storage. Para obter mais controle e proteção, considere o uso de uma SAS (Assinatura de Acesso Compartilhado).For further control and protection, consider using a shared access signature (SAS) instead. Isso concede acesso limitado a objetos no armazenamento, sem a necessidade de codificar as chaves da conta ou salvá-las em um texto não criptografado.This grants limited access to objects in storage, without needing to hard-code the account keys or save them in plaintext. Usar uma SAS também ajuda a garantir que a conta de armazenamento tenha uma governança adequada e que o acesso seja concedido somente às pessoas certas.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 cenários com os dados mais confidenciais, verifique se todas as chaves de armazenamento estão protegidas, pois essas chaves concedem acesso completo a todos os dados de entrada e de saída da carga de trabalho.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.

Criptografar dados em repouso e em movimentoEncrypt data at rest and in motion

Em cenários que usam dados confidenciais, criptografe os dados em repouso, ou seja, os dados no armazenamento.In scenarios that use sensitive data, encrypt the data at rest-that is, the data in storage. Sempre que os dados forem movidos de um local para o próximo, use SSL para proteger a transferência de dados.Each time data moves from one location to the next, use SSL to secure the data transfer. Para saber mais, confira o Guia de segurança de Armazenamento do Azure.For more information, see the Azure Storage security guide.

Proteger dados em uma rede virtualSecure data in a virtual network

Para implantações de produção, considere implantar o cluster em uma sub-rede de uma rede virtual que você especificar.For production deployments, consider deploying the cluster into a subnet of a virtual network that you specify. Isso permite que os nós de computação no cluster se comuniquem com segurança com outras máquinas virtuais ou com uma rede local.This allows the compute nodes in the cluster to communicate securely with other virtual machines or with an on-premises network. Você também pode usar pontos de extremidade de serviço com o armazenamento de BLOBs para conceder acesso de uma rede virtual ou usar um NFS de nó único dentro da rede virtual com 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.

ImplantaçãoDeployment

Para implantar a implementação de referência para essa arquitetura, siga as etapas descritas no repositórios do GitHub:To deploy the reference implementation for this architecture, follow the steps described in the GitHub repos:

Próximas etapasNext steps

Para colocar o modelo em operação, consulte operacionalização de aprendizado de máquina (MLOps) para modelos Python usando Azure Machine Learning.To operationalize the model, see Machine learning operationalization (MLOps) for Python models using Azure Machine Learning.