Editar

Modelos de classificação em lote do Spark no Azure Databricks

Microsoft Entra ID
Azure Databricks
Azure Data Factory
Azure Blob Storage

Esta arquitetura de referência mostra como criar uma solução escalável para pontuação em lote de um modelo de classificação Apache Spark em um cronograma usando o Azure Databricks. O Azure Databricks é uma plataforma de análise baseada no Apache Spark otimizada para o Azure. O Azure Databricks oferece três ambientes para o desenvolvimento de aplicativos com uso intensivo de dados: Databricks SQL, Databricks Data Science & Engineering e Databricks Machine Learning. O Databricks Machine Learning é um ambiente integrado de aprendizado de máquina de ponta a ponta que incorpora serviços gerenciados para rastreamento de experimentos, treinamento de modelos, desenvolvimento e gerenciamento de recursos e serviço de recursos e modelos. Você pode usar essa arquitetura de referência como um modelo que pode ser generalizado para outros cenários. Uma implementação de referência para essa arquitetura está disponível no GitHub.

Apache® e Apache Spark® são marcas registadas ou marcas comerciais da Apache Software Foundation nos Estados Unidos e/ou noutros países. Nenhum endosso da Apache Software Foundation está implícito no uso dessas marcas.

Arquitetura

Diagrama mostrando a pontuação em lote de modelos de classificação do Apache Spark no Azure Databricks.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de Trabalho

A arquitetura define um fluxo de dados que está totalmente contido no Azure Databricks com base em um conjunto de blocos de anotações executados sequencialmente. É composto pelos seguintes componentes:

Ficheiros de dados. A implementação de referência usa um conjunto de dados simulados contidos em cinco arquivos de dados estáticos.

Ingestão. O bloco de anotações de ingestão de dados baixa os arquivos de dados de entrada em uma coleção de conjuntos de dados Databricks. Em um cenário do mundo real, os dados de dispositivos IoT seriam transmitidos para o armazenamento acessível pelo Databricks, como o Azure SQL ou o armazenamento de Blob do Azure. O Databricks suporta várias fontes de dados.

Pipeline de treinamento. Este bloco de anotações executa o bloco de anotações de engenharia de recursos para criar um conjunto de dados de análise a partir dos dados ingeridos. Em seguida, ele executa um bloco de anotações de construção de modelo que treina o modelo de aprendizado de máquina usando a biblioteca de aprendizado de máquina escalável Apache Spark MLlib .

Pipeline de pontuação. Este bloco de anotações executa o bloco de anotações de engenharia de recursos para criar um conjunto de dados de pontuação a partir dos dados ingeridos e executa o bloco de anotações de pontuação. O caderno de pontuação usa o modelo Spark MLlib treinado para gerar previsões para as observações no conjunto de dados de pontuação. As previsões são armazenadas no repositório de resultados, um novo conjunto de dados no armazenamento de dados Databricks.

Scheduler. Um trabalho Databricks agendado lida com a pontuação em lote com o modelo Spark. O trabalho executa o bloco de anotações do pipeline de pontuação, passando argumentos variáveis pelos parâmetros do bloco de anotações para especificar os detalhes da construção do conjunto de dados de pontuação e onde armazenar o conjunto de dados de resultados.

Detalhes da solução

O cenário é construído como um fluxo de gasoduto. Cada notebook é otimizado para ser executado em uma configuração de lote para cada uma das operações: ingestão, engenharia de recursos, construção de modelos e pontuações de modelos. O notebook de engenharia de recursos foi projetado para gerar um conjunto de dados gerais para qualquer uma das operações de treinamento, calibração, teste ou pontuação. Nesse cenário, usamos uma estratégia de divisão temporal para essas operações, portanto, os parâmetros do bloco de anotações são usados para definir a filtragem de intervalo de datas.

Como o cenário cria um pipeline em lote, fornecemos um conjunto de blocos de anotações de exame opcionais para explorar a saída dos blocos de anotações de pipeline. Você pode encontrar esses blocos de anotações na pasta de blocos de anotações do repositório GitHub:

  • 1a_raw-data_exploring.ipynb
  • 2a_feature_exploration.ipynb
  • 2b_model_testing.ipynb
  • 3b_model_scoring_evaluation.ipynb

Potenciais casos de utilização

Uma empresa em um setor pesado em ativos quer minimizar os custos e o tempo de inatividade associados a falhas mecânicas inesperadas. Usando dados de IoT coletados de suas máquinas, eles podem criar um modelo de manutenção preditiva. Esse modelo permite que a empresa mantenha os componentes de forma proativa e os repare antes que eles falhem. Ao maximizar o uso de componentes mecânicos, eles podem controlar os custos e reduzir o tempo de inatividade.

Um modelo de manutenção preditiva coleta dados das máquinas e retém exemplos históricos de falhas de componentes. O modelo pode então ser usado para monitorar o estado atual dos componentes e prever se um determinado componente falhará em breve. Para casos de uso comuns e abordagens de modelagem, consulte o guia de IA do Azure para soluções de manutenção preditiva.

Essa arquitetura de referência foi projetada para cargas de trabalho acionadas pela presença de novos dados das máquinas componentes. O processamento envolve as seguintes etapas:

  1. Ingerir os dados do armazenamento de dados externo em um repositório de dados do Azure Databricks.

  2. Treine um modelo de aprendizado de máquina transformando os dados em um conjunto de dados de treinamento e, em seguida, criando um modelo Spark MLlib. O MLlib consiste nos algoritmos e utilitários de aprendizado de máquina mais comuns otimizados para aproveitar os recursos de escalabilidade de dados do Spark.

  3. Aplique o modelo treinado para prever (classificar) falhas de componentes transformando os dados em um conjunto de dados de pontuação. Pontuar os dados com o modelo Spark MLLib.

  4. Armazene resultados no armazenamento de dados Databricks para consumo pós-processamento.

Os blocos de anotações são fornecidos no GitHub para executar cada uma dessas tarefas.

Recomendações

O Databricks é configurado para que você possa carregar e implantar seus modelos treinados para fazer previsões com novos dados. O Databricks também oferece outras vantagens:

  • Suporte de logon único usando credenciais do Microsoft Entra.
  • Agendador de tarefas para executar trabalhos para pipelines de produção.
  • Notebook totalmente interativo com colaboração, painéis, APIs REST.
  • Clusters ilimitados que podem ser dimensionados para qualquer tamanho.
  • Segurança avançada, controles de acesso baseados em função e logs de auditoria.

Para interagir com o serviço Azure Databricks, use a interface do Espaço de Trabalho Databricks em um navegador da Web ou a interface de linha de comando (CLI). Acesse a CLI do Databricks de qualquer plataforma que suporte Python 2.7.9 a 3.6.

A implementação de referência usa blocos de anotações para executar tarefas em sequência. Cada bloco de anotações armazena artefatos de dados intermediários (conjuntos de dados de treinamento, teste, pontuação ou resultados) no mesmo armazenamento de dados que os dados de entrada. O objetivo é tornar mais fácil para você usá-lo conforme necessário em seu caso de uso específico. Na prática, você conectaria sua fonte de dados à sua instância do Azure Databricks para que os blocos de anotações lessem e gravassem diretamente em seu armazenamento.

Monitore a execução do trabalho por meio da interface do usuário do Databricks, do armazenamento de dados ou da CLI do Databricks, conforme necessário. Monitore o cluster usando o log de eventos e outras métricas fornecidas pelo Databricks.

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

Um cluster do Azure Databricks permite o dimensionamento automático por padrão para que, durante o tempo de execução, o Databricks realoque dinamicamente os trabalhadores para levar em conta as características do seu trabalho. Certas partes do seu pipeline podem ser mais exigentes computacionalmente do que outras. O Databricks adiciona trabalhadores extras durante essas fases do seu trabalho (e os remove quando não são mais necessários). O dimensionamento automático facilita a alta utilização do cluster, pois não é necessário provisionar o cluster para corresponder a uma carga de trabalho.

Desenvolva pipelines agendados mais complexos usando o Azure Data Factory com o Azure Databricks.

Armazenamento

Nesta implementação de referência, os dados são armazenados diretamente no armazenamento Databricks para simplificar. Em uma configuração de produção, no entanto, você pode armazenar os dados no armazenamento de dados em nuvem, como o Armazenamento de Blob do Azure. O Databricks também suporta Azure Data Lake Store, Azure Synapse Analytics, Azure Cosmos DB, Apache Kafka e Apache Hadoop.

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.

No geral, utilize a calculadora de preços do Azure para prever os custos. Outras considerações são descritas na seção Custo em Microsoft Azure Well-Architected Framework.

O Azure Databricks é uma oferta premium do Spark com um custo associado. Além disso, existem níveis de preços padrão e premium do Databricks.

Para este cenário, o nível de preço padrão é suficiente. No entanto, se seu aplicativo específico exigir o dimensionamento automático de clusters para lidar com cargas de trabalho maiores ou painéis interativos do Databricks, o nível premium poderá aumentar ainda mais os custos.

Os notebooks da solução podem ser executados em qualquer plataforma baseada no Spark com edições mínimas para remover os pacotes específicos do Databricks. Consulte as seguintes soluções semelhantes para várias plataformas Azure:

Implementar este cenário

Para implantar essa arquitetura de referência, siga as etapas descritas no repositório GitHub para criar uma solução escalável para pontuar modelos Spark em lote no Azure Databricks.

Contribuidores

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

Autor principal:

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

Próximos passos