Editar

Classificação em lote de modelos Python no Azure

Azure Container Registry
Azure Event Hubs
Azure Machine Learning
Azure SQL Database
Azure Stream Analytics

Este guia de arquitetura mostra como criar uma solução escalável para modelos de pontuação em lote Azure Machine Learning. A solução pode ser usada como um modelo e pode generalizar para diferentes problemas.

Arquitetura

Diagrama de arquitetura que mostra a pontuação em lote de modelos Python no Azure

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de Trabalho

Este guia de arquitetura é aplicável para streaming e dados estáticos, desde que o processo de ingestão seja adaptado ao tipo de dados. As etapas e componentes a seguir descrevem a ingestão desses dois tipos de dados.

Streaming de dados:

  1. O streaming de dados tem origem nos Sensores IoT, onde novos eventos são transmitidos em intervalos frequentes.
  2. Os eventos de streaming de entrada são enfileirados usando os Hubs de Eventos do Azure e, em seguida, pré-processados usando o Azure Stream Analytics.
    • Hubs de Eventos do Azure. Este serviço de ingestão de mensagens pode ingerir milhões de mensagens de eventos por segundo. Nessa arquitetura, os sensores enviam um fluxo de dados para o hub de eventos.
    • Azure Stream Analytics. Um mecanismo de processamento de eventos. Um trabalho do Stream Analytics lê os fluxos de dados do hub de eventos e executa o processamento de fluxo.

Dados estáticos:

  1. Os conjuntos de dados estáticos podem ser armazenados como arquivos no Armazenamento do Azure Data Lake ou em forma de tabela no Azure Synapse ou no Banco de Dados SQL do Azure.
  2. O Azure Data Factory pode ser usado para agregar ou pré-processar o conjunto de dados armazenado.

A arquitetura restante, após a ingestão de dados, é igual para streaming e dados estáticos e consiste nas seguintes etapas e componentes:

  1. Os dados ingeridos, agregados ou pré-processados podem ser armazenados como documentos no Armazenamento do Azure Data Lake ou em forma tabular no Azure Synapse ou no Banco de Dados SQL do Azure. Esses dados serão consumidos pelo Azure Machine Learning.
  2. O Azure Machine Learning é usado para treinamento, implantação e gerenciamento de modelos de aprendizado de máquina em escala. No contexto da pontuação em lote, o Aprendizado de Máquina do Azure cria um cluster de máquinas virtuais com uma opção de dimensionamento automático, onde os trabalhos são executados em paralelo a partir de scripts Python.
  3. Os modelos são implantados como Managed Batch Endpoints, que são usados para fazer inferência em lote em grandes volumes de dados durante um período de tempo. Os pontos finais em lote recebem ponteiros para dados e executam trabalhos de forma assíncrona para processar os dados em clusters de cálculo paralelos.
  4. Os resultados da inferência podem ser armazenados como documentos no Armazenamento do Azure Data Lake ou em forma de tabela no Azure Synapse ou no Banco de Dados SQL do Azure.
  5. Visualizar: os resultados do modelo armazenado podem ser consumidos por meio de interfaces de usuário, como painéis do Power BI, ou por meio de aplicativos Web personalizados.

Componentes

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

Desempenho

Para modelos Python padrão, é geralmente aceito que as CPUs são suficientes para lidar com a carga de trabalho. Essa arquitetura usa CPUs. No entanto, para cargas de trabalho de aprendizagem profunda, as unidades de processamento gráfico (GPUs) geralmente superam as CPUs em uma quantidade considerável, um cluster considerável de CPUs geralmente é necessário para obter um desempenho comparável.

Paralelizar entre VMs versus núcleos

Quando você executa processos de pontuação de muitos modelos no modo de lote, os trabalhos precisam ser paralelizados entre VMs. São possíveis duas abordagens:

  • Crie um cluster maior usando VMs de baixo custo.
  • Crie um cluster menor usando VMs de alto desempenho com mais núcleos disponíveis em cada uma.

Em geral, a pontuação de modelos Python padrão não é tão exigente quanto a pontuação de modelos de aprendizado profundo, e um pequeno cluster deve ser capaz de lidar com um grande número de modelos enfileirados de forma eficiente. Você pode aumentar o número de nós de cluster à medida que os tamanhos do conjunto de dados aumentam.

Para conveniência nesse cenário, uma tarefa de pontuação é enviada em uma única etapa de pipeline do Azure Machine Learning. No entanto, pode ser mais eficiente pontuar vários blocos de dados dentro da mesma etapa de pipeline. Nesses casos, escreva código personalizado para ler em vários conjuntos de dados e execute o script de pontuação durante uma execução de uma única etapa.

Gestão

  • Monitore trabalhos. É importante monitorar o progresso dos trabalhos em execução. No entanto, pode ser um desafio monitorar em um cluster de nós ativos. Para inspecionar o estado dos nós no cluster, use o portal do Azure para gerenciar o espaço de trabalho do Aprendizado de Máquina. Se um nó estiver inativo ou um trabalho tiver falhado, os logs de erro serão salvos no armazenamento de blob e também poderão ser acessados na seção Pipelines . Para um monitoramento mais avançado, conecte logs ao Application Insights ou execute processos separados para pesquisar o estado do cluster e seus trabalhos.
  • Registo. O Aprendizado de Máquina registra todos os stdout/stderr na conta de Armazenamento do Azure associada. Para exibir facilmente os arquivos de log, use uma ferramenta de navegação de armazenamento, como o Gerenciador de Armazenamento do Azure.

Otimização de custos

A otimização de custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.

Os componentes mais caros usados neste guia de arquitetura são os recursos de computação. O tamanho do cluster de computação aumenta e diminui dependendo dos trabalhos na fila. Habilite o dimensionamento automático programaticamente por meio do SDK do Python modificando a configuração de provisionamento da computação. Ou, use a CLI do Azure para definir os parâmetros de dimensionamento automático do cluster.

Para trabalhos que não exigem processamento imediato, configure a fórmula de dimensionamento automático para que o estado padrão (mínimo) seja um cluster de nós zero. Com essa configuração, o cluster começa com zero nós e só aumenta quando deteta trabalhos na fila. Se o processo de pontuação em lote acontecer apenas algumas vezes por dia ou menos, essa configuração permitirá economias de custos significativas.

O dimensionamento automático pode não ser apropriado para trabalhos em lote que ocorrem muito próximos uns dos outros. Como o tempo que leva para um cluster girar para cima e para baixo incorre em um custo, se uma carga de trabalho em lote começar apenas alguns minutos após o término do trabalho anterior, pode ser mais econômico manter o cluster em execução entre trabalhos. Essa estratégia depende se os processos de pontuação estão programados para serem executados com alta frequência (a cada hora, por exemplo) ou com menos frequência (uma vez por mês, por exemplo).

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.

Próximos passos

Documentação do produto:

Módulos do Microsoft Learn: