Modelos de classificação de lote do Python no AzureBatch scoring of Python models on Azure

Esta arquitetura de referência mostra como criar uma solução dimensionável para o número de modelos de classificação com base numa agenda em paralelo com o Azure Batch AI do batch.This reference architecture shows how to build a scalable solution for batch scoring many models on a schedule in parallel using Azure Batch AI. A solução pode ser utilizada como um modelo e pode generalizar para problemas diferentes.The solution can be used as a template and can generalize to different problems.

Uma implementação de referência para esta arquitetura está disponível no GitHub.A reference implementation for this architecture is available on GitHub.

Modelos de classificação de lote do Python no Azure

Cenário: Esta solução monitoriza a operação de um grande número de dispositivos numa definição de IoT em que cada dispositivo envia as leituras dos sensores continuamente.Scenario: This solution monitors the operation of a large number of devices in an IoT setting where each device sends sensor readings continuously. Cada dispositivo é considerado previamente tiver preparado a deteção de anomalias modela que precisa para ser utilizado para prever se uma série de medidas, que são agregados ao longo de um intervalo de tempo predefinido, correspondem a uma anomalia ou não.Each device is assumed to have pre-trained anomaly detection models that need to be used to predict whether a series of measurements, that are aggregated over a predefined time interval, correspond to an anomaly or not. Em cenários de mundo real, isso pode ser um fluxo das leituras dos sensores que têm de ser filtrada e agregados antes de ser usado no treinamento ou de classificação em tempo real.In real-world scenarios, this could be a stream of sensor readings that need to be filtered and aggregated before being used in training or real-time scoring. Para simplificar, a solução utiliza o mesmo arquivo de dados ao executar tarefas de classificação.For simplicity, the solution uses the same data file when executing scoring jobs.

ArquiteturaArchitecture

Esta arquitetura é composta pelos seguintes componentes:This architecture consists of the following components:

Os Hubs de eventos do Azure.Azure Event Hubs. Este serviço de ingestão de mensagens pode ingerir milhões de mensagens de eventos por segundo.This message ingestion service can ingest millions of event messages per second. Nesta arquitetura, sensores, enviar um fluxo de dados para o hub de eventos.In this architecture, sensors send a stream of data to the event hub.

O Azure Stream Analytics.Azure Stream Analytics. Um motor de processamento de eventos.An event-processing engine. Uma tarefa do Stream Analytics lê os dados transmitidos em fluxo do hub de eventos e efetua o processamento de fluxo.A Stream Analytics job reads the data streams from the event hub and performs stream processing.

O Azure Batch AI.Azure Batch AI. Este motor de computação distribuída é utilizada para treinar e testar a aprendizagem automática e modelos de IA em escala no Azure.This distributed computing engine is used to train and test machine learning and AI models at scale in Azure. O batch AI cria máquinas virtuais a pedido com uma opção de dimensionamento automático, onde cada nó do cluster do Batch AI é executada uma tarefa de classificação para um sensor específico.Batch AI creates virtual machines on demand with an automatic scaling option, where each node in the Batch AI cluster runs a scoring job for a specific sensor. A classificação Python script python-script é executado em contentores do Docker que são criados em cada nó do cluster, onde ele lê os dados de sensor relevantes, gera predições e armazena-os no armazenamento de Blobs.The scoring Python script runs in Docker containers that are created on each node of the cluster, where it reads the relevant sensor data, generates predictions and stores them in Blob storage.

Armazenamento de Blobs do Azure.Azure Blob Storage. Contentores de BLOBs são utilizados para armazenar os modelos de pretrained, os dados e as previsões de saída.Blob containers are used to store the pretrained models, the data, and the output predictions. Os modelos são carregados para o armazenamento de BLOBs na [crie_resources.ipynb] create-resources bloco de notas.The models are uploaded to Blob storage in the create_resources.ipynb notebook. Estes [uma classe SVM] one-class-svm modelos estão treinados nos dados que representa valores de sensores diferentes para diferentes dispositivos.These one-class SVM models are trained on data that represents values of different sensors for different devices. Esta solução assume que os valores de dados são agregados ao longo de um intervalo fixo de tempo.This solution assumes that the data values are aggregated over a fixed interval of time.

Azure Logic Apps.Azure Logic Apps. Esta solução cria uma aplicação lógica que é executado, uma vez por hora, tarefas de IA do Batch.This solution creates a Logic App that runs hourly Batch AI jobs. O Logic Apps fornece uma forma fácil de criar o fluxo de trabalho de tempo de execução e o agendamento para a solução.Logic Apps provides an easy way to create the runtime workflow and scheduling for the solution. Submeter as tarefas do Batch AI através do Python script script que também é executada num contentor do Docker.The Batch AI jobs are submitted using a Python script that also runs in a Docker container.

Azure Container Registry.Azure Container Registry. Imagens do docker são utilizadas em Batch AI e Logic Apps e são criadas no [crie_resources.ipynb] create-resources bloco de notas, em seguida, enviado para o registo de contentor.Docker images are used in both Batch AI and Logic Apps and are created in the create_resources.ipynb notebook, then pushed to Container Registry. Isso fornece um meio cómodo para alojar imagens e criar uma instância de contentores através de outros serviços do Azure — Logic Apps e o Batch AI nesta solução.This provides a convenient way to host images and instantiate containers through other Azure services—Logic Apps and Batch AI in this solution.

Considerações de desempenhoPerformance considerations

Para modelos de Python padrão, é geralmente aceite que CPUs são suficientes para processar a carga de trabalho.For standard Python models, it's generally accepted that CPUs are sufficient to handle the workload. Esta arquitetura utiliza CPUs.This architecture uses CPUs. No entanto, para cargas de trabalho de aprendizagem profunda, GPUs geralmente superar o desempenho de CPUs por uma quantidade considerável — um cluster especial de CPUs, normalmente, é necessário para obter o desempenho comparável.However, for deep learning workloads, GPUs generally outperform CPUs by a considerable amount—a sizeable cluster of CPUs is usually needed to get comparable performance.

Paralelização por núcleos do vs VMsParallelizing across VMs vs cores

Ao executar processos de muitos modelos de classificação no modo de lote, os trabalhos tem de ser colocado em paralelo entre VMs.When running scoring processes of many models in batch mode, the jobs need to be parallelized across VMs. Duas abordagens são possíveis:Two approaches are possible:

  • Crie um cluster maior, ao utilizar VMs de baixo custo.Create a larger cluster using low-cost VMs.

  • Crie um cluster mais pequeno com alto executar VMs com maior número de núcleos disponíveis em cada um.Create a smaller cluster using high performing VMs with more cores available on each.

Em geral, não é tão exigente como classificação de modelos de aprendizagem profunda de classificação de modelos de Python padrão e um pequeno cluster deve ser capaz de lidar com um grande número de modelos em fila com eficiência.In general, scoring of standard Python models is not as demanding as scoring of deep learning models, and a small cluster should be able to handle a large number of queued models efficiently. Pode aumentar o número de nós de cluster como o aumento de tamanhos de conjunto de dados.You can increase the number of cluster nodes as the dataset sizes increase.

Para sua comodidade neste cenário, uma tarefa de classificação é submetida dentro de uma única tarefa de IA do Batch.For convenience in this scenario, one scoring task is submitted within a single Batch AI job. No entanto, pode ser mais eficiente para pontuar vários segmentos de dados dentro da mesma tarefa do Batch AI.However, it can be more efficient to score multiple data chunks within the same Batch AI job. Nesses casos, escreva código personalizado para vários conjuntos de dados de leitura e executar o script de classificação para aquelas durante uma única execução de tarefa do Batch AI.In those cases, write custom code to read in multiple datasets and execute the scoring script for those during a single Batch AI job execution.

Servidores de ficheirosFile servers

Ao utilizar o Batch AI, pode escolher consoante o débito necessário para o seu cenário de várias opções de armazenamento.When using Batch AI, you can choose multiple storage options depending on the throughput needed for your scenario. Para cargas de trabalho com requisitos de baixa taxa de transferência, a utilizar o armazenamento de blob deve ser suficiente.For workloads with low throughput requirements, using blob storage should be enough. Em alternativa, Batch AI suporta também um servidor de ficheiros de IA do Batch, NFS gerido, de nó único, que podem ser montadas automaticamente em nós de cluster para fornecer uma localização de armazenamento centralmente acessível para tarefas.Alternatively, Batch AI also supports a Batch AI File Server, a managed, single-node NFS, which can be automatically mounted on cluster nodes to provide a centrally accessible storage location for jobs. Na maioria dos casos, apenas um servidor de ficheiros é necessário numa área de trabalho e pode separar dados para os trabalhos de treinamento em diretórios diferentes.For most cases, only one file server is needed in a workspace, and you can separate data for your training jobs into different directories.

Se um NFS de nó único não é adequado para cargas de trabalho, o Batch AI suporta outras opções de armazenamento, incluindo [ficheiros do Azure] azure-files e soluções personalizadas como um sistema de ficheiros Gluster ou Lustre.If a single-node NFS isn't appropriate for your workloads, Batch AI supports other storage options, including Azure Files and custom solutions such as a Gluster or Lustre file system.

Considerações de gestãoManagement considerations

Monitorizar tarefas do Batch AIMonitoring Batch AI jobs

É importante monitorizar o progresso das tarefas em execução, mas pode ser um desafio para monitorizar um cluster de nós ativos.It's important to monitor the progress of running jobs, but it can be a challenge to monitor across a cluster of active nodes. Para obter uma noção do que o estado geral do cluster, vá para o Batch AI painel da [Portal do Azure] portal para inspecionar o estado de nós no cluster.To get a sense of the overall state of the cluster, go to the Batch AI blade of the Azure Portal to inspect the state of the nodes in the cluster. Se um nó estiver inativo ou uma tarefa falhou, os registos de erros são guardados no armazenamento de BLOBs e também são acessíveis no tarefas painel do portal.If a node is inactive or a job has failed, the error logs are saved to blob storage, and are also accessible in the Jobs blade of the portal.

Para um monitoramento mais avançado, ligar os registos para Application Insights, ou executar processos separados para consultar o estado do cluster do Batch AI e as tarefas.For richer monitoring, connect logs to Application Insights, or run separate processes to poll for the state of the Batch AI cluster and its jobs.

Iniciar sessão de IA do BatchLogging in Batch AI

O batch AI regista todos os stdout/stderr a conta de armazenamento do Azure associado.Batch AI logs all stdout/stderr to the associated Azure storage account. Para uma navegação fácil dos ficheiros de registo, utilize uma ferramenta de navegação de armazenamento como Explorador de armazenamento do Azure.For easy navigation of the log files, use a storage navigation tool such as Azure Storage Explorer.

Ao implementar esta arquitetura de referência, tem a opção de configurar um sistema de Registro em log mais simples.When you deploy this reference architecture, you have the option to set up a simpler logging system. Com esta opção, todos os registos de entre as diferentes tarefas são guardados no mesmo diretório no contentor de blob, conforme mostrado abaixo.With this option, all the logs across the different jobs are saved to the same directory in your blob container as shown below. Utilize estes registos para monitorizar o tempo que demora para cada tarefa e cada imagem para processar, para que tenha uma ideia melhor de como otimizar o processo.Use these logs to monitor how long it takes for each job and each image to process, so you have a better sense of how to optimize the process.

Explorador do Storage do Azure

Considerações de custosCost considerations

Os componentes mais caros utilizados nesta arquitetura de referência são os recursos de computação.The most expensive components used in this reference architecture are the compute resources.

O tamanho de cluster do Batch AI pode ser dimensionada e reduzir verticalmente consoante as tarefas na fila.The Batch AI cluster size scales up and down depending on the jobs in the queue. Pode habilitar [dimensionamento automático] automatic-scaling com o Batch AI em uma de duas formas.You can enable automatic scaling with Batch AI in one of two ways. Pode fazer por isso, por meio de programação, que pode ser configurado no ficheiro. env que faz parte do passos de implementação, ou pode alterar a fórmula de dimensionamento diretamente no portal depois do cluster ser criado.You can do so programmatically, which can be configured in the .env file that is part of the deployment steps, or you can change the scale formula directly in the portal after the cluster is created.

Para o trabalho que não requer processamento imediato, configure a fórmula de dimensionamento automática, para que o estado predefinido (mínimo) é um cluster de nós de zero.For work that doesn't require immediate processing, configure the automatic scaling formula so the default state (minimum) is a cluster of zero nodes. Com esta configuração, o cluster começa com zero nós e só são verticalmente quando detetar tarefas na fila.With this configuration, the cluster starts with zero nodes and only scales up when it detects jobs in the queue. Se o processo de apenas de classificação do lote acontecer algumas vezes por dia ou menos, esta definição permite a redução significativa de custos.If the batch scoring process only happens a few times a day or less, this setting enables significant cost savings.

Dimensionamento automático pode não ser adequado para tarefas de lote que acontecem aproximar muito entre si.Automatic scaling may not be appropriate for batch jobs that happen too close to each other. O tempo que demora para um cluster lançar e multi-canal também ter um custo, portanto, se uma carga de trabalho do batch começa apenas alguns minutos depois de termina a tarefa anterior, pode ser mais rentável para manter o cluster em execução entre tarefas.The time that it takes for a cluster to spin up and spin down also incur a cost, so if a batch workload begins only a few minutes after the previous job ends, it might be more cost effective to keep the cluster running between jobs. Isso depende se os processos de classificação são agendados para serem executadas com alta frequência (a cada hora, por exemplo) ou com menos frequência (uma vez por mês, por exemplo).That depends on whether scoring processes are scheduled to run at a high frequency (every hour, for example), or less frequently (once a month, for example).

Implementar a soluçãoDeploy the solution

A implementação desta arquitetura de referência está disponível no GitHub.The reference implementation of this architecture is available on GitHub. Siga os passos de configuração aqui para criar uma solução dimensionável para o número de modelos de classificação em paralelo com o Batch AI.Follow the setup steps there to build a scalable solution for scoring many models in parallel using Batch AI.