As melhores práticas para a excelência operacional

Este artigo aborda as melhores práticas de excelência operacional, organizadas por princípios arquiteturais listados nas seções a seguir.

1. Otimize os processos de criação e lançamento

Criar uma equipe de operações dedicada para a casa do lago

É uma prática recomendada geral ter uma equipe de operações de plataforma para permitir que as equipes de dados trabalhem em uma ou mais plataformas de dados. Essa equipe é responsável por criar esquemas e melhores práticas internamente. Eles fornecem ferramentas - por exemplo, para automação de infraestrutura e acesso de autoatendimento - e garantem que as necessidades de segurança e compliance sejam atendidas. Dessa forma, o ônus de proteger os dados da plataforma está em uma equipe central, para que as equipes distribuídas possam se concentrar em trabalhar com dados e produzir novos entendimentos.

Use as pastas do Databricks Git para armazenar o código no Git

As pastas Git da Databricks permitem que os usuários armazenem o Notebook ou outros arquivos em um repositório Git, oferecendo recursos como clonagem de um repositório, commit e pushing, pull, gerenciamento de ramificações e visualização de diferenças de arquivos. Use as pastas do Git para melhorar a visibilidade e o acompanhamento do código. Consulte a integração do Git com as pastas Git do Databricks.

Padronize os processos de DevOps (CI/CD)

Integração contínua (CI) e entrega contínua (CD) (CI/CD) referem-se ao desenvolvimento e à entrega de software em ciclos curtos e frequentes usando um pipeline de automação. Embora esse não seja um processo novo, já que é onipresente na engenharia de software tradicional há décadas, ele está se tornando um processo cada vez mais necessário para as equipes de engenharia de dados e ciência de dados. Para que o produto de dados seja valioso, ele deve ser entregue em tempo hábil. Além disso, os consumidores devem ter confiança na validade dos resultados desses produtos. Ao automatizar a criação, o teste e a implantação do código, as equipes de desenvolvimento podem entregar versões com mais frequência e confiabilidade do que os processos manuais ainda predominantes em muitas equipes de engenharia de dados e ciência de dados. Consulte O que é CI/CD na Databricks?

Para obter mais informações sobre as práticas recomendadas para o desenvolvimento de código usando as pastas Git da Databricks, consulte Técnicas de CI/CD com pastas Git e Databricks Git (Repos). Isso, juntamente com a API REST do Databricks, permite que o senhor crie processos de implantação automatizados com o GitHub Actions, o pipeline do Azure DevOps ou o Jenkins Job.

Padronize nos processos de MLOps

Construir e implantar modelos de ML é complexo. Existem muitas opções disponíveis para conseguir isso, mas poucas em termos de padrões bem definidos. Como resultado, nos últimos anos, vimos o surgimento de operações machine learning (MLOps). MLOps é um conjunto de processos e automação para gerenciamento de modelos, dados e código para melhorar a estabilidade do desempenho e a eficiência de longo prazo em sistemas de ML. Abrange preparação de dados, análise exploratória de dados (EDA), engenharia de recursos, treinamento de modelo, validação de modelo, implantação e monitoramento. Consulte Fluxo de trabalho de MLOps no Databricks.

  • Lembre-se sempre de seus objetivos de negócios: assim como o objetivo principal do ML em uma empresa é permitir decisões e produtos data-driven , o objetivo principal do MLOps é garantir que esses aplicativos data-driven permaneçam estáveis e atualizados e continuar a ter impactos positivos nos negócios. Ao priorizar o trabalho técnico em MLOps, considere o impacto nos negócios: ele permite novos casos de uso de negócios? Isso melhora a produtividade das equipes de dados? Reduz custos ou riscos operacionais?

  • Gerencie modelos de ML com uma ferramenta especializada, mas aberta: é recomendável rastrear e gerenciar modelos de ML com o MLflow, que foi projetado tendo em mente o ciclo de vida do modelo de ML. Consulte Gerenciamento do ciclo de vida de ML usando MLflow.

  • Implemente MLOps de maneira modular: como em qualquer aplicativo de software, a qualidade do código é fundamental para um aplicativo de ML. O código modularizado permite o teste de componentes individuais e reduz as dificuldades com futura refatoração de código. Defina passos claros (como treinamento, avaliação ou implantação), superpassos (como pipeline de treinamento para implantação) e responsabilidades para esclarecer a estrutura modular de seu aplicativo de ML.

Isso é descrito em detalhes no whitepaper Databricks MLOps.

2. Automatize implantações e cargas de trabalho

Use a infraestrutura como código para implantações e manutenção

O HashiCorp Terraform é uma ferramenta popular de código aberto para criar infraestrutura cloud segura e previsível em vários provedores cloud . O provedor Databricks Terraform gerencia workspace Databricks e a infraestrutura cloud associada usando uma ferramenta flexível e poderosa. O objetivo do provedor Databricks Terraform é oferecer suporte a todas as APIs REST Databricks, suportando a automação dos aspectos mais complicados de melhorar e gerenciar suas plataformas de dados. O provedor Databricks Terraform é a ferramenta recomendada para aprimorar e gerenciar clusters e Job de forma confiável, provisionamento Databricks workspace e configurar acesso a dados.

Usar política de clusters

Os administradores workspace do Databricks podem controlar muitos aspectos dos clusters que são gerados, incluindo tipos de instância disponíveis, versões do Databricks e o tamanho das instâncias usando a política de cluster. os administradores workspace podem impor algumas definições de configuração do Spark e podem configurar várias políticas de cluster, permitindo que determinados grupos de usuários criem clusters pequenos ou clusters de usuário único, alguns grupos de usuários criem clusters grandes e outros grupos apenas usem clusters existentes. Consulte Criar e gerenciar políticas compute .

Usar fluxo de trabalho automatizado para Job

  • fluxo de trabalho com Job (orquestração interna):

    Recomendamos o uso do fluxo de trabalho com Job para programar tarefas de processamento e análise de dados em clusters Databricks com recursos escaláveis. Os trabalhos podem consistir em uma única tarefa ou em um grande fluxo de trabalho multitarefa com dependências complexas. Databricks gerenciam orquestração de tarefas, gerenciamento clusters , monitoramento e relatórios de erros para todo o seu Job. Você pode executar seu Job imediatamente ou periodicamente através de um sistema de programar fácil de usar. Você pode implementar tarefas Job usando pipelines Notebook, JARS, Delta Live Tables ou aplicativos Python, Scala, Spark submit e Java. Consulte Introdução ao fluxo de trabalho do Databricks.

  • Orquestradores externos:

    A abrangente API REST do Databricks é usada por orquestradores externos para orquestrar ativos, Notebook e Job Databricks. Consulte Apache Airflow.

Usar Auto Loader

O Auto Loader processa de forma incremental e eficiente novos arquivos de dados à medida que chegam ao armazenamento em cloud . Ele pode ingerir muitos formatos de arquivo como JSON, CSV, PARQUET, AVRO, ORC, TEXT e BINARYFILE. Com uma pasta de entrada no armazenamento cloud , o Auto Loader processa automaticamente novos arquivos à medida que chegam.

Para ingestões únicas, considere usar o comando COPY INTO. Consulte Começar a usar COPY INTO para carregar dados.

Usar Delta Live Tables

Delta Live Tables é uma estrutura declarativa para criar pipelines de processamento de dados confiáveis, sustentáveis e testáveis. Você define as transformações a serem executadas em seus dados e o Delta Live Tables gerencia a orquestração de tarefas, gerenciamento clusters , monitoramento, qualidade de dados e tratamento de erros.

Com Delta Live Tables, defina facilmente o pipeline de dados de ponta a ponta em SQL ou Python: especifique a fonte de dados, a lógica de transformação e o estado de destino dos dados. Delta Live Tables mantém dependências e determina automaticamente a infraestrutura para a execução do Job .

Para gerenciar a qualidade dos dados, o Delta Live Tables monitora as tendências de qualidade dos dados ao longo do tempo, evitando que dados ruins fluam para as tabelas por meio de verificações de validação e integridade com políticas de erro predefinidas. Veja O que é Delta Live Tables?.

Siga a abordagem de código aprimorado para cargas de trabalho de ML

A abordagem de código aprimorado segue estes passos:

  • Ambiente de treinamento: Desenvolva código de treinamento e código auxiliar.  Em seguida, promova o código para teste.

  • Ambiente de preparação: modelo ensinado no subconjunto de dados e código auxiliar de teste. Em seguida, promova o código para produção.

  • Ambiente de produção: modelo de ensino em dados de prod e modelo de teste. Em seguida, aprimorou o modelo e os pipelines auxiliares.

Consulte Padrões de implantação de modelo.

As principais vantagens deste modelo são:

  • Isso se encaixa no fluxo de trabalho tradicional da engenharia de software, usando ferramentas familiares como sistemas Git e CI/CD.

  • Suporta retreinamento automatizado em um ambiente bloqueado.

  • Somente o ambiente de produção precisa de acesso de leitura aos dados de treinamento de produção.

  • Controle total sobre o ambiente de treinamento, o que ajuda a simplificar a reprodutibilidade.

  • Ele permite que a equipe de ciência de dados use código modular e testes iterativos, o que ajuda na coordenação e desenvolvimento em projetos maiores.

Isso é descrito em detalhes no whitepaper MLOps.

Use um registro de modelo para desacoplar o código e o ciclo de vida do modelo

Como os ciclos de vida do modelo não correspondem um a um aos ciclos de vida do código, faz sentido que o gerenciamento do modelo tenha seu próprio serviço. O MLflow e seu Model Registry oferecem suporte ao gerenciamento de artefatos de modelo diretamente por meio de interface do usuário e APIs. O baixo acoplamento de artefatos de modelo e código fornece flexibilidade para atualizar modelos de produção sem alterações de código, simplificando o processo de implantação em muitos casos. Os artefatos do modelo são protegidos usando controles de acesso MLflow ou permissões de armazenamento cloud . Consulte gerenciar o ciclo de vida do modelo no Unity Catalog.

Usar registro automático do MLflow

O Databricks Autologging é uma solução sem código que estende o registro automático do MLflow para fornecer acompanhamento automático de experimentos para sessões de treinamento machine learning no Databricks. Databricks Autologging captura automaticamente parâmetros de modelo, métricas, arquivos e informações de linhagem quando você ensina modelos com execução de ensino gravada como execução de acompanhamento de MLflow.

Reutilize a mesma infraestrutura para gerenciar ML pipelines

ML pipelines devem ser automatizados usando muitas das mesmas técnicas de outros pipelines de dados. Use o provedor Databricks Terraform para automatizar a implantação. O ML requer infraestrutura aprimorada, como Job de inferência, endpoints de atendimento e Job de caracterização. Todos ML pipelines podem ser automatizados como fluxo de trabalho com Jobs, e muitos ML pipelines centrados em dados podem usar o Auto Loader mais especializado para ingerir imagens e outros dados e Delta Live Tables para compute recursos ou monitorar métricas.

3. Configurar monitoramento, alerta e registro

Monitoramento de plataforma usando CloudWatch

A integração do Databricks com o CloudWatch permite métricas derivadas de logs e alertas. O entendimento do CloudWatch Application pode ajudá-lo a descobrir automaticamente os campos contidos nos logs, e o entendimento do CloudWatch Logs fornece uma linguagem query específica para depuração e análise mais rápidas.

Consulte Como monitorar Databricks com o Amazon CloudWatch.

monitoramento clusters via Ganglia

Para ajudar a monitorar clusters, o Databricks fornece acesso às métricas do Ganglia na página de detalhes do cluster, e estas incluem métricas de GPU. Veja as métricas do Ganglia.

SQL warehouse monitoramento

O monitoramento do SQL warehouse é essencial para entender o perfil da carga ao longo do tempo e gerenciar o SQL warehouse de forma eficiente. Com o SQL warehouse monitoramento, o senhor pode obter view informações, como o número de consultas tratadas pelo warehouse ou o número de clusters alocados ao warehouse.

Monitoramento Auto Loader

O Auto Loader fornece uma API SQL para inspecionar o estado de uma transmissão. Com funções SQL, você pode encontrar metadados sobre arquivos que foram descobertos por uma transmissão do Auto Loader. Veja monitoramento Auto Loader.

Com a interface do Ouvinte query transmitida Apache Spark, a transmissão do Auto Loader pode ser monitorada ainda mais.

Monitoramento Delta Live Tables

Um logs de eventos é criado e mantido para cada pipeline Delta Live Tables. O log de eventos contém todas as informações relacionadas ao pipeline, incluindo logs de auditoria, verificações de qualidade de dados, progresso do pipeline e linhagem de dados. Você pode usar os logs de eventos para rastrear, entender e monitorar o estado de seu pipeline de dados. Consulte Monitorar pipelines Delta Live Tables .

monitoramento de transmissão

transmissão é uma das técnicas de processamento de dados mais importantes para ingestão e análise. Ele fornece aos usuários e desenvolvedores recursos de baixa latência e processamento de dados em tempo real para análise e acionamento de ações. A Plataforma de Inteligência de Dados Databricks permite monitorar facilmente a transmissão query estruturada. Veja query de monitoramento transmissão estruturada no Databricks.

Informações adicionais podem ser encontradas na interface do usuário dedicada com métricas e estatísticas em tempo real. Para obter mais informações, consulte A look at the new transmissão estructurada UI in Apache Spark 3.0.

4. gerenciar capacidade e cotas

serviço gerenciado limites e cotas

Todo serviço lançado em uma nuvem terá que levar em conta os limites account, como limites de taxa de acesso, número de instâncias, número de usuários e requisitos de memória. Para seu provedor de nuvens, verifique os limites de nuvens. Antes de projetar uma solução, esses limites devem ser compreendidos.

Especificamente, para a plataforma Databricks, existem diferentes tipos de limites:

Databricks limites da plataforma: Esses são limites específicos para Databricks recurso. Os limites da plataforma geral estão documentados em limites de recurso.

LimitesUnity Catalog : cotas de recursosUnity Catalog

inscrição/account quotas: A Databricks aproveita o recurso de nuvens para seu serviço. Por exemplo, as cargas de trabalho no Databricks são executadas em clusters, para os quais a plataforma Databricks começa as máquinas virtuais (VM) do provedor de nuvens. Os provedores de nuvens definem cotas de default sobre quantas VMs podem ser iniciadas ao mesmo tempo. Dependendo da necessidade, essas cotas podem precisar ser ajustadas.

Para obter mais detalhes, consulte Cotas de serviço do Amazon EC2.

Da mesma forma, o armazenamento, a rede e outros serviços de nuvem têm limitações que devem ser compreendidas e levadas em conta.

Invista em planejamento de capacidade

Planeje a flutuação na carga esperada que pode ocorrer por vários motivos, como mudanças repentinas nos negócios ou até mesmo eventos mundiais. Teste as variações de carga, incluindo as inesperadas, para garantir que suas cargas de trabalho possam aumentar. Certifique-se de que todas as regiões possam escalar adequadamente para suportar a carga total se uma região falhar. A ter em consideração:

  • tecnología e limites de serviços e limitações da cloud. Consulte capacidade e cota de gerenciamento.

  • SLAs ao determinar os serviços a serem usados no projeto.

  • Análise de custo para determinar quanta melhoria será realizada no aplicativo se os custos aumentarem. Avalie se o preço vale o investimento.