Pontuação em lote de modelos Python no Azure

Registro de Contêiner do Azure
Hubs de eventos do Azure
Azure Machine Learning
Banco de Dados SQL do Azure
Stream Analytics do Azure

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

Arquitetura

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

Baixe um Arquivo Visio dessa arquitetura.

Workflow

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

Dados de streaming:

  1. Os dados de streaming são originados de sensores IoT, em que 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. Esse serviço de ingestão de mensagens pode incluir milhões de mensagens de eventos por segundo. Nesta 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. Conjuntos de dados estáticos podem ser armazenados como arquivos no Azure Data Lake Storage ou em formato tabular no Azure Synapse ou no Banco de DadosSQL 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 a dados estáticos e de streaming e consiste nas seguintes etapas e componentes:

  1. Os dados ingeridos, agregados e/ou pré-processados podem ser armazenados como documentos no Azure Data Lake Storage ou em formato 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 é um serviço de nuvem para treinamento, implantação e gerenciamento de modelos de machine learning em escala. No contexto da pontuação em lote, o Azure Machine Learning cria um cluster de máquinas virtuais com uma opção de dimensionamento automático, em que os trabalhos são executados em paralelo a partir de scripts Python.
  3. Os modelos são implantados como Pontos de extremidade de lote gerenciados, que são usados para fazer inferência em lote em grandes volumes de dados durante um período de tempo. Os pontos de extremidade em lotes recebem ponteiros para dados e executam trabalhos de modo assíncrono para processar os dados em paralelo nos clusters de computação.
  4. Os resultados de inferência podem ser armazenados como documentos no Azure Data Lake Storage ou em formato tabular no Azure Synapse ou no Banco de Dados SQL do Azure.
  5. Visualize: os resultados do modelo armazenado podem ser consumidos por meio de interfaces do usuário, como painéis do Power BI ou por meio de aplicativos Web personalizados.

Componentes

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.

Desempenho

Para modelos Python normais, é geralmente aceito que as CPUs são suficientes para lidar com a carga de trabalho. Esta arquitetura usa CPUs. No entanto, para cargas de trabalho de aprendizado profundo, unidades de processamento gráfico (GPUs) geralmente superam as CPUs em um valor considerável; geralmente é necessário um cluster considerável de CPUs para obter desempenho comparável.

Paralelização em VMs versus em núcleos

Ao executar processos de pontuação de vários modelos em modo de lote, os trabalhos precisam ser colocados em paralelo entre VMs. Há duas abordagens possíveis:

  • Criar um cluster maior usando VMs de baixo custo.
  • Criar 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 em fila eficientemente. Você pode aumentar o número de nós de cluster de acordo com o aumento dos tamanhos do conjunto de dados.

Por questões de conveniência neste cenário, uma tarefa de pontuação é enviada dentro de uma única etapa de pipeline do Azure Machine Learning. No entanto, pode ser mais eficiente pontuar várias partes de dados dentro da mesma etapa de pipeline. Nesses casos, escreva código personalizado para ler vários conjuntos de dados e executar o script de pontuação para eles durante uma mesma execução de etapa.

Gerenciamento

  • Monitorar trabalhos. É importante monitorar o progresso dos trabalhos em execução. No entanto, pode ser um desafio monitorar um cluster de nós ativos. Para inspecionar o estado de nós no cluster, use o Portal do Azure para gerenciar o workspace de Machine learning. Se um nó estiver inativo ou se um trabalho falhar, os logs de erro serão salvos no armazenamento de blobs e também poderão ser acessados na seção Pipelines. Para um monitoramento mais avançado, conecte os logs ao Application Insights, ou execute processos separados para sondar o estado do cluster e de seus trabalhos.
  • Log. Os logs do Machine Learning registram todos os stdout/stderr da conta do Armazenamento do Azure associada. Para navegar facilmente nos arquivos de log, use uma ferramenta de navegação de armazenamento, como o Gerenciador de Armazenamento do Azure.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

Os componentes mais caros usados nessa arquitetura de referência são os recursos de computação. O tamanho do cluster de cálculo é aumentado e reduzido dependendo dos trabalhos na fila. Modifique a configuração de provisionamento da computação para habilitar o dimensionamento automático por meio de programação com o SDK do Python. Ou use a CLI do Azure para definir os parâmetros de dimensionamento automático do cluster.

Para trabalho que não exige processamento imediato, configure a fórmula de dimensionamento automático a fim de definir o estado padrão (mínimo) como um cluster sem nós. Com essa configuração, o cluster começa com zero nós e só pode ser escalado verticalmente quando detecta os trabalhos na fila. Se o processo de pontuação do lote acontecer apenas algumas vezes por dia, essa configuração permitirá uma economia considerável.

Talvez o dimensionamento automático não seja apropriado para trabalhos em lote que aconteçam muito próximos uns dos outros. O tempo de ativação e desativação de um cluster também incorre em um custo, portanto, se uma carga de trabalho do lote começar apenas alguns minutos após o término do trabalho anterior, talvez seja mais econômico manter o cluster em execução entre os trabalhos. Isso depende da frequência de agendamento dos processos de pontuação, com alta frequência (a cada hora, por exemplo) ou com baixa frequência (uma vez por mês, por exemplo).

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

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

Próximas etapas

Documentação do produto:

Módulos do Microsoft Learn: