Usar o Azure Databricks para orquestrar MLOps

Azure Databricks

Ideias de soluções

Este artigo descreve uma ideia de solução. Seu arquiteto de nuvem pode usar essa orientação para ajudar a visualizar os principais componentes para uma implementação típica dessa arquitetura. Use este artigo como ponto de partida para projetar uma solução bem arquitetada que se alinhe aos requisitos específicos de sua carga de trabalho.

Esse artigo fornece uma arquitetura e um processo de operações de aprendizado de máquina (MLOps) que usa o Azure Databricks. Cientistas e engenheiros de dados podem usar esse processo padronizado para mover modelos e pipelines de aprendizado de máquina do desenvolvimento para a produção.

Essa solução pode aproveitar a automação total, o monitoramento contínuo e a colaboração robusta e, portanto, visa um nível 4 de maturidade de MLOps. Essa arquitetura usa o código de promoção que gera a abordagem de modelo em vez da abordagem de modelos de promoção. O código de promoção que gera a abordagem de modelo se concentra em escrever e gerenciar o código que gera modelos de aprendizado de máquina. As recomendações neste artigo incluem opções para processos automatizados ou manuais.

Arquitetura

Diagrama que mostra uma solução para usar o Azure Databricks para MLOps.

Este diagrama mostra as 12 etapas desse fluxo de trabalho. Uma seção de dados de produção do lakehouse inclui as métricas de modelo de tabela de dados, tabela de recursos e tabela de lakehouse. Uma seção de controle do código-fonte inclui um ambiente de desenvolvimento, preparo e versão. O controle do código-fonte inclui o Azure DevOps e o GitHub. No ambiente de desenvolvimento principal, a análise exploratória de dados da etapa 1 lê os dados da tabela de dados. O treinamento do modelo da etapa 2 lê os dados da tabela de dados e da tabela de recursos. A etapa 3 confirma o código no ambiente de desenvolvimento no controle do código-fonte. A etapa 4 mescla uma solicitação com o ambiente de preparo. O ambiente de preparo do controle do código-fonte dispara testes de unidade e CI da etapa 5 no ambiente de preparo principal, que lêem dados da tabela de recursos e da tabela de dados. As alterações de código são mescladas para o ambiente de preparo do controle do código-fonte. A etapa 6 cria uma ramificação de lançamento no ambiente de lançamento. Uma seta que aponta do ambiente de lançamento para o ambiente de produção principal diz Implantar trabalhos do Databricks de aprendizado de máquina. No ambiente de produção principal, a atualização da tabela de recursos da etapa 7 lê os dados da tabela de dados e envia dados para a tabela de recursos. O treinamento do modelo da etapa 8 lê os dados da detecção de desvios e do retreinamento do modelo. A etapa 8 também envia o modelo para o Catálogo do Unity. A avaliação e a promoção do modelo da etapa 9 carregam o modelo do Catálogo do Unity para avaliação. Em seguida, ele envia o modelo para preparo e, em seguida, para produção no Catálogo do Unity. A implantação do modelo da etapa 10 carrega o modelo para inferência e lê os dados da tabela de recursos. O monitoramento da etapa 11 lê os dados da tabela de recursos e lê as métricas do modelo de tabela lakehouse. A etapa 11 também grava dados na tabela lakehouse e no Azure Monitor. O retreinamento do modelo da etapa 12 aponta para a etapa 8 e a seta indica o retreinamento do modelo de gatilho.

Baixe um Arquivo Visio dessa arquitetura.

Workflow

O fluxo de dados a seguir corresponde ao diagrama anterior. Use componentes de controle do código-fonte e armazenamento para gerenciar e organizar código e dados.

Controle do código-fonte: o repositório de código desse projeto organiza os blocos de anotações, módulos e pipelines. Você pode criar ramificações de desenvolvimento para testar atualizações e novos modelos. Desenvolva código em notebooks com suporte do Git ou IDEs (ambientes de desenvolvimento integrados) que se integram a pastas do Git para que você possa sincronizar com seus workspaces do Azure Databricks. O controle do código-fonte promove pipelines de aprendizado de máquina do ambiente de desenvolvimento para testes no ambiente de preparo e implantação no ambiente de produção.

Dados de produção do Lakehouse: como cientista de dados, você tem acesso somente leitura aos dados de produção no ambiente de desenvolvimento. O ambiente de desenvolvimento pode ter dados espelhados e dados confidenciais redigidos. Você também tem acesso de leitura e gravação em um ambiente de armazenamento de desenvolvimento para desenvolvimento e experimentação. Recomendamos que você use uma arquitetura lakehouse para dados nos quais você armazena dados no formato Delta Lake no Azure Data Lake Storage. Um lakehouse fornece uma solução robusta, escalável e flexível para gerenciamento de dados. Para definir controles de acesso, use a passagem de credencial da ID do Microsoft Entra ou os controles de acesso à tabela.

Os ambientes a seguir compõem o fluxo de trabalho principal.

Desenvolvimento

No ambiente de desenvolvimento, você desenvolve pipelines de aprendizado de máquina.

  1. Realize análise exploratória de dados (EDA): explore os dados em um processo interativo e iterativo. Talvez você não implante esse trabalho na preparação ou na produção. Use ferramentas como o Databricks SQL, o comando dbutils.data.summarize e o Databricks AutoML.

  2. Desenvolver treinamento de modelo e outros pipelines de aprendizado de máquina: desenvolva pipelines de aprendizado de máquina, código modular e orquestre o código por meio de Notebooks do Databricks ou um projeto MLFlow. Nessa arquitetura, o pipeline de treinamento do modelo lê dados do repositório de recursos e de outras tabelas do lakehouse. O pipeline treina e ajusta parâmetros e métricas do modelo de log para o servidor de acompanhamento do MLflow. A API do repositório de recursos registra o modelo final. Esses logs incluem o modelo, suas entradas e o código de treinamento.

  3. Confirmar código: para promover o fluxo de trabalho de aprendizado de máquina para produção, confirme o código para definição de recursos, treinamento e outros pipelines para o controle do código-fonte. Na base de código, coloque o código de aprendizado de máquina e o código operacional em pastas diferentes para que os membros da equipe possam desenvolver o código ao mesmo tempo. O código de aprendizado de máquina é o código relacionado ao modelo e aos dados. O código operacional é o código relacionado aos trabalhos e à infraestrutura do Databricks.

Esse ciclo principal de atividades que você faz ao escrever e testar o código é chamado de processo innerloop. Para executar o processo innerloop para a fase de desenvolvimento, use o Visual Studio Code em combinação com a CLI do contêiner de desenvolvimento e a CLI do Databricks. Você pode escrever o código e fazer testes de unidade localmente. Você também deve enviar, monitorar e analisar os pipelines de modelo do ambiente de desenvolvimento local.

Staging

No ambiente de preparo, a infraestrutura de CI (integração contínua) testa as alterações nos pipelines de aprendizado de máquina em um ambiente que imita a produção.

  1. Mesclar uma solicitação: quando você envia uma solicitação de mesclagem ou solicitação de pull no branch de preparo (principal) do projeto no controle do código-fonte, uma ferramenta de CI/CD (integração contínua e entrega contínua), como o Azure DevOps , executa testes.

  2. Executar testes de unidade e testes de CI: os testes de unidade são executados na infraestrutura de CI e os testes de integração são executados em fluxos de trabalho de ponta a ponta no Azure Databricks. Se os testes forem aprovados, as alterações de código serão mescladas.

  3. Criar um branch de lançamento: quando você quiser implantar os pipelines de aprendizado de máquina atualizados na produção, poderá criar uma nova versão. Um pipeline de implantação na ferramenta CI/CD reimplanta os pipelines atualizados como novos fluxos de trabalho.

Produção

Os engenheiros de aprendizado de máquina gerenciam o ambiente de produção, onde os pipelines de aprendizado de máquina atendem diretamente aos aplicativos finais. Os principais pipelines em produção atualizam tabelas de recursos, treinam e implantam novos modelos, executam inferência ou serviço e monitoram o desempenho do modelo.

  1. Atualização da tabela de recursos: esse pipeline lê dados, calcula recursos e grava em tabelas de repositório de recursos. Você pode configurar esse pipeline para ser executado continuamente no modo de streaming, executado em um agendamento ou executado em um gatilho.

  2. Treinamento de modelo: na produção, você pode configurar o pipeline de treinamento ou retreinamento de modelo para ser executado em um gatilho ou em um agendamento para treinar um novo modelo nos dados de produção mais recentes. Os modelos se registram automaticamente no Catálogo do Unity.

  3. Avaliação e promoção do modelo: quando uma nova versão do modelo é registrada, o pipeline de CD é disparado, o que executa testes para garantir que o modelo tenha um bom desempenho na produção. Quando o modelo passa nos testes, o Catálogo do Unity rastreia seu progresso por meio de transições de estágio do modelo. Os testes incluem verificações de conformidade, testes A/B para comparar o novo modelo com o modelo de produção atual e testes de infraestrutura. As tabelas do Lakehouse registram resultados e métricas de teste. Opcionalmente, você pode exigir aprovações manuais antes da transição dos modelos para a produção.

  4. Implantação de modelo: quando um modelo entra em produção, ele é implantado para pontuação ou veiculação. Os modos de implantação mais comuns incluem:

    • Pontuação em lote ou streaming: para latências de minutos ou mais, o lote e o streaming são as opções mais econômicas. O pipeline de pontuação lê os dados mais recentes do repositório de recursos, carrega a versão mais recente do modelo de produção do Catálogo do Unity e executa a inferência em um trabalho do Databricks. Ele pode publicar previsões em tabelas lakehouse, uma conexão Java Database Connectivity (JDBC), arquivos simples, filas de mensagens ou outros sistemas downstream.

    • Veiculação on-line (APIs REST): para casos de uso de baixa latência, geralmente é necessário veicular on-line. O MLflow pode implantar modelos no Mosaic AI Model Serving, sistemas de serviço de provedor de nuvem e outros sistemas. Em todos os casos, o sistema de veiculação é inicializado com o modelo de produção mais recente do Catálogo do Unity. Para cada solicitação, ele busca recursos de um repositório de recursos online e faz previsões.

  5. Monitoramento: fluxos de trabalho contínuos ou periódicos monitoram dados de entrada e previsões de modelo para deriva, desempenho e outras métricas. Você pode usar a estrutura Delta Live Tables para automatizar o monitoramento de pipelines e armazenar as métricas em tabelas lakehouse. Databricks SQL, Power BI e outras ferramentas podem ler essas tabelas para criar painéis e alertas. Para monitorar métricas, logs e infraestrutura do aplicativo, você também pode integrar o Azure Monitor ao Azure Databricks.

  6. Detecção de desvio e retreinamento de modelo: essa arquitetura oferece suporte a retreinamento manual e automático. Agende trabalhos de retreinamento para manter os modelos atualizados. Depois que um desvio detectado cruza um limite pré-configurado definido na etapa de monitoramento, os pipelines de retreinamento analisam o desvio e acionam o retreinamento. Você pode configurar pipelines para disparar automaticamente ou pode receber uma notificação e executar os pipelines manualmente.

Componentes

  • Uma arquitetura de data lakehouse unifica os elementos de data lakes e data warehouses. Use um lakehouse para obter recursos de gerenciamento e desempenho de dados que normalmente são encontrados em data warehouses, mas com os armazenamentos de objetos flexíveis e de baixo custo que os data lakes oferecem.

    • Delta Lake é o formato de dados de código aberto recomendado para um lakehouse. O Azure Databricks armazena dados no Data Lake Storage e fornece um mecanismo de consulta de alto desempenho.
  • MLflow é um projeto de código aberto para gerenciar o ciclo de vida de aprendizado de máquina de ponta a ponta. O MLflow tem os seguintes componentes:

    • O recurso de rastreamento rastreia experimentos, para que você possa registrar e comparar parâmetros, métricas e artefatos de modelo.

      • O registro automático do Databricks estende o registro automático do MLflow para acompanhar experimentos de aprendizado de máquina e registra automaticamente parâmetros de modelo, métricas, arquivos e informações de linhagem.
    • O Modelo de MLflow é um formato que você pode usar para armazenar e implantar modelos de qualquer biblioteca de aprendizado de máquina em várias plataformas de inferência e serviço de modelo.

    • O Catálogo do Unity fornece recursos centralizados de controle de acesso, auditoria, linhagem e descoberta de dados em workspaces do Azure Databricks.

    • O Mosaic AI Model Serving hospeda modelos do MLflow como pontos de extremidade REST.

  • O Azure Databricks fornece um serviço gerenciado do MLflow que tem recursos de segurança corporativa, alta disponibilidade e integrações com outros recursos de workspace do Azure Databricks.

    • O Databricks Runtime para Machine Learning automatiza a criação de um cluster otimizado para machine learning e pré-instala bibliotecas populares de machine learning, como TensorFlow, PyTorch e XGBoost. Ele também pré-instala o Azure Databricks para ferramentas do Machine Learning, como AutoML e clientes do repositório de recursos.

    • Um repositório de recursos é um repositório centralizado de recursos. Use o repositório de recursos para descobrir e compartilhar recursos e ajudar a evitar a distorção de dados entre o treinamento e a inferência do modelo.

    • O Databricks SQL se integra a uma variedade de ferramentas para que você possa criar consultas e dashboards em seus ambientes favoritos sem se ajustar a uma nova plataforma.

    • As pastas do Git fornecem integração com seu provedor Git no workspace do Azure Databricks, o que melhora a colaboração de notebook ou código e a integração do IDE.

    • Fluxos de trabalho e trabalhos fornecem uma maneira de executar código não interativo em um cluster do Azure Databricks. Para aprendizado de máquina, os trabalhos fornecem automação para preparação de dados, definição de recursos, treinamento, inferência e monitoramento.

Alternativas

Você pode personalizar essa solução para sua infraestrutura do Azure. Considere as seguintes personalizações:

  • Use vários espaços de trabalho de desenvolvimento que compartilham um espaço de trabalho de produção comum.

  • Troque um ou mais componentes de arquitetura por sua infraestrutura existente. Por exemplo, você pode usar o Azure Data Factory para orquestrar trabalhos do Databricks.

  • Integre-se às suas ferramentas de CI/CD existentes por meio de APIs REST do Git e do Azure Databricks.

  • Use o Microsoft Fabric ou o Azure Synapse Analytics como serviços alternativos para recursos de aprendizado de máquina.

Detalhes do cenário

Essa solução fornece um processo MLOps robusto que usa o Azure Databricks. Você pode substituir todos os elementos na arquitetura, para que possa integrar outros serviços do Azure e serviços de parceiros conforme necessário. Esta arquitetura e descrição são adaptadas do e-book The Big Book of MLOps. O e-book explora essa arquitetura com mais detalhes.

O MLOps ajuda a reduzir o risco de falhas em sistemas de aprendizado de máquina e IA e melhora a eficiência da colaboração e das ferramentas. Para obter uma introdução ao MLOps e uma visão geral dessa arquitetura, consulte Arquitetar MLOps no lakehouse.

Use essa arquitetura para:

  • Conectar os stakeholders de sua empresa com equipes de aprendizado de máquina e ciência de dados. Use essa arquitetura para incorporar notebooks e IDEs para desenvolvimento. Os stakeholders de negócios podem exibir métricas e painéis no Databricks SQL, tudo dentro da mesma arquitetura de lakehouse.

  • Torne sua infraestrutura de aprendizado de máquina centrada em dados. Essa arquitetura trata os dados de aprendizado de máquina como outros dados. Os dados de aprendizado de máquina incluem dados de engenharia de recursos, treinamento, inferência e monitoramento. Essa arquitetura reutiliza ferramentas para pipelines de produção, painéis e outros processamentos gerais de dados para processamento de dados de aprendizado de máquina.

  • Implementar MLOps em módulos e pipelines. Como acontece com qualquer aplicativo de software, use os pipelines modularizados e o código nesta arquitetura para testar componentes individuais e diminuir o custo de refatoração futura.

  • Automatize seus processos de MLOps conforme necessário. Nessa arquitetura, você pode automatizar etapas para melhorar a produtividade e reduzir o risco de erro humano, mas não precisa automatizar todas as etapas. O Azure Databricks permite a interface do usuário e processos manuais, além de APIs para automação.

Possíveis casos de uso

Essa arquitetura se aplica a todos os tipos de aprendizado de máquina, aprendizado profundo e análise avançada. As técnicas comuns de aprendizado de máquina e IA nessa arquitetura incluem:

  • Aprendizado de máquina clássico, como modelos lineares, modelos baseados em árvore e impulsionamento.
  • Aprendizado profundo moderno, como TensorFlow e PyTorch.
  • Análises personalizadas, como estatísticas, métodos bayesianos e análise de gráficos.

A arquitetura suporta dados pequenos (máquina única) e dados grandes (computação distribuída e acelerada por GPU). Em cada estágio da arquitetura, você pode escolher recursos de computação e bibliotecas para se adaptar aos dados do cenário e às dimensões do problema.

A arquitetura se aplica a todos os tipos de indústrias e casos de uso de negócios. Os clientes do Azure Databricks que usam essa arquitetura incluem organizações pequenas e grandes nos seguintes setores:

  • Bens de consumo e serviços de varejo
  • Serviços financeiros
  • Saúde e ciências naturais
  • Tecnologia da informação

Para obter exemplos, consulte Clientes do Databricks.

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