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 com os requisitos específicos da sua carga de trabalho.
Este artigo fornece uma arquitetura e um processo de operações de aprendizado de máquina (MLOps) que usa o Azure Databricks. Cientistas de dados e engenheiros 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 tirar proveito da automação total, monitoramento contínuo e colaboração robusta e, portanto, visa um nível 4 de maturidade de MLOps. Essa arquitetura usa o código promote que gera a abordagem de modelo em vez da abordagem promote models . O código promocional 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
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de Trabalho
O fluxo de trabalho a seguir corresponde ao diagrama anterior. Use o controle do código-fonte e os componentes de armazenamento para gerenciar e organizar código e dados.
Controle do código-fonte: O repositório de código deste 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 blocos de anotações suportados pelo Git ou ambientes de desenvolvimento integrado (IDEs) que se integram com pastas Git para que você possa sincronizar com seus espaços de trabalho do Azure Databricks. O controle do código-fonte promove pipelines de aprendizado de máquina desde o ambiente de desenvolvimento até testes no ambiente de preparação 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 editados. 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 armazena dados no formato Delta Lake no Armazenamento do Azure Data Lake. 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 credenciais do Microsoft Entra ID 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.
Executar análise exploratória de dados (EDA): Explore os dados em um processo interativo e iterativo. Talvez você não implante esse trabalho no preparo ou na produção. Use ferramentas como Databricks SQL, o comando dbutils.data.summarize e Databricks AutoML.
Desenvolva treinamento de modelo e outros pipelines de aprendizado de máquina: desenvolva pipelines de aprendizado de máquina, código modular e orquestre código por meio de Notebooks Databricks ou um Projeto MLFlow. Nessa arquitetura, o pipeline de treinamento do modelo lê dados do repositório de recursos e de outras tabelas lakehouse. O pipeline treina e ajusta parâmetros e métricas do modelo de log para o servidor de rastreamento MLflow. A API de armazenamento de recursos registra o modelo final. Esses logs incluem o modelo, suas entradas e o código de treinamento.
Confirmar código: para promover o fluxo de trabalho de aprendizado de máquina para a produção, confirme o código para featurização, treinamento e outros pipelines para 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 código ao mesmo tempo. Código de aprendizado de máquina é o código relacionado ao modelo e aos dados. Código operacional é o código relacionado a trabalhos e infraestrutura do Databricks.
Esse ciclo principal de atividades que você faz quando escreve e testa 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 modelo do ambiente de desenvolvimento local.
Processo de teste
No ambiente de preparação, a infraestrutura de integração contínua (CI) testa alterações em pipelines de aprendizado de máquina em um ambiente que imita a produção.
Mesclar uma solicitação: quando você envia uma solicitação de mesclagem ou uma solicitação pull na ramificação de preparo (principal) do projeto no controle do código-fonte, uma ferramenta de integração contínua e entrega contínua (CI/CD), como o Azure DevOps , executa testes.
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, o código será modificado na mesclagem.
Criar uma ramificação de versão: quando quiser implantar os pipelines de aprendizado de máquina atualizados na produção, você 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 tabelas de recursos de atualização de produção, treinam e implantam novos modelos, executam inferência ou serviço e monitoram o desempenho do modelo.
Atualização da tabela de recursos: esse pipeline lê dados, calcula recursos e grava em tabelas de armazenamento de recursos. Você pode configurar esse pipeline para ser executado continuamente no modo de streaming, executar em uma agenda ou executar em um gatilho.
Treinamento do modelo: na produção, você pode configurar o pipeline de treinamento ou retreinamento do modelo para ser executado em um gatilho ou em um cronograma para treinar um novo modelo nos dados de produção mais recentes. Os modelos se registram automaticamente no Catálogo Unity.
Avaliação e promoção do modelo: Quando uma nova versão do modelo é registrada, o pipeline de CD é acionado, que executa testes para garantir que o modelo terá um bom desempenho na produção. Quando o modelo passa nos testes, o Unity Catalog acompanha seu progresso por meio de transições de estágio de 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 Lakehouse registram resultados de testes e métricas. Opcionalmente, você pode exigir aprovações manuais antes que os modelos façam a transição para a produção.
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 Unity Catalog e executa a inferência em um trabalho do Databricks. Ele pode publicar previsões em tabelas lakehouse, uma conexão JDBC (Java Database Connectivity), arquivos simples, filas de mensagens ou outros sistemas downstream.
Atendimento online (APIs REST): Para casos de uso de baixa latência, você geralmente precisa de serviço online. O MLflow pode implantar modelos no Mosaic AI Model Serving, sistemas de atendimento de provedores de nuvem e outros sistemas. Em todos os casos, o sistema de serviço é inicializado com o modelo de produção mais recente do Unity Catalog. Para cada solicitação, ele busca recursos de uma loja de recursos on-line e faz previsões.
Monitoramento: fluxos de trabalho contínuos ou periódicos monitoram dados de entrada e previsões de modelo para desvio, 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 de aplicativos, você também pode integrar o Azure Monitor ao Azure Databricks.
Deteção de deriva e retreinamento de modelos: Esta arquitetura suporta retreinamento manual e automático. Agende trabalhos de reciclagem para manter os modelos atualizados. Depois que um desvio detetado ultrapassa 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, em seguida, executar os pipelines manualmente.
Componentes
Uma arquitetura 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 uma casa de lago. O Azure Databricks armazena dados no Armazenamento Data Lake 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 rastrear experimentos de aprendizado de máquina e registra automaticamente parâmetros, métricas, arquivos e informações de linhagem do modelo.
Modelo MLflow é um formato que você pode usar para armazenar e implantar modelos de qualquer biblioteca de aprendizado de máquina para várias plataformas de inferência e serviço de modelo.
O Unity Catalog fornece recursos centralizados de controle de acesso, auditoria, linhagem e descoberta de dados nos espaços de trabalho do Azure Databricks.
O Mosaic AI Model Serving hospeda modelos MLflow como pontos de extremidade REST.
O Azure Databricks fornece um serviço MLflow gerenciado que tem recursos de segurança empresarial, alta disponibilidade e integrações com outros recursos de espaço de trabalho do Azure Databricks.
O Databricks Runtime for Machine Learning automatiza a criação de um cluster otimizado para aprendizado de máquina e pré-instala bibliotecas populares de aprendizado de máquina como TensorFlow, PyTorch e XGBoost. Ele também pré-instala o Azure Databricks para ferramentas de Machine Learning, como AutoML e clientes de armazenamento 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 distorção de dados entre o treinamento do modelo e a inferência.
O Databricks SQL integra-se com uma variedade de ferramentas para que você possa criar consultas e painéis em seus ambientes favoritos sem se ajustar a uma nova plataforma.
As pastas Git fornecem integração com seu provedor Git no espaço de trabalho do Azure Databricks, o que melhora a colaboração de bloco de anotações 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 o aprendizado de máquina, os trabalhos fornecem automação para preparação, featurização, treinamento, inferência e monitoramento de dados.
Alternativas
Pode adaptar esta solução à 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 para sua infraestrutura existente. Por exemplo, você pode usar o Azure Data Factory para orquestrar trabalhos do Databricks.
Integre com suas ferramentas de CI/CD existentes por meio das 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
Esta 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 Architect MLOps on the lakehouse.
Use esta arquitetura para:
Conecte as partes interessadas da sua empresa com equipes de aprendizado de máquina e ciência de dados. Use essa arquitetura para incorporar notebooks e IDEs para desenvolvimento. As partes interessadas da empresa podem visualizar métricas e painéis no Databricks SQL, tudo dentro da mesma arquitetura 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 de dados gerais para processamento de dados de aprendizado de máquina.
Implementar MLOps em módulos e pipelines. Como em qualquer aplicativo de software, use os pipelines modularizados e o código nessa arquitetura para testar componentes individuais e diminuir o custo de refatoração futura.
Automatize seus processos 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 processos manuais e de interface do usuário, além de APIs para automação.
Potenciais casos de utilização
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 árvores e impulsionamento.
- Aprendizagem profunda moderna, como TensorFlow e PyTorch.
- Análises personalizadas, como estatísticas, métodos bayesianos e análises gráficas.
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 e dimensões do problema do seu cenário.
A arquitetura aplica-se a todos os tipos de indústrias e casos de uso de negócios. Os clientes do Azure Databricks que usam essa arquitetura incluem pequenas e grandes organizações nos seguintes setores:
- Bens de consumo e serviços de retalho
- Serviços financeiros
- Saúde e ciências biomédicas
- Tecnologia da informação
Para obter exemplos, consulte Clientes Databricks.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Brandon Cowen - Brasil | Arquiteto de Soluções Cloud Sênior
- Prabal Deb - Brasil | Engenheiro de Software Principal
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
- IA e machine learning no Databricks
- Página do produto e recursos de aprendizado de máquina Databricks