Compartilhar via


Melhores práticas de otimização de custos

Este artigo aborda as melhores práticas que dão suporte aos princípios de otimização de custos, organizadas por princípio.

1. Escolher recursos ideais

Usar formatos de dados otimizados para desempenho

Para aproveitar ao máximo a Plataforma de Inteligência de Dados do Databricks, você deve usar o Delta Lake como estrutura de armazenamento. Ele ajuda a criar pipelines de ETL mais simples e confiáveis e vem com muitos aprimoramentos de desempenho que podem acelerar significativamente as cargas de trabalho em comparação com o uso de Parquet, ORC e JSON. Confira Recomendações de otimização no Azure Databricks. Se a carga de trabalho também estiver em execução em uma computação de trabalho, isso se traduzirá diretamente em um tempo de atividade mais curto dos recursos de computação, levando a custos mais baixos.

Usar computação de trabalhos

Uma tarefa é uma maneira de rodar código não interativo em uma instância de computação do Databricks. Por exemplo, você pode executar uma carga de trabalho de ETL (extração, transformação e carregamento) interativamente ou com agendamento. Obviamente, você também pode executar trabalhos de maneira interativa na interface do usuário do notebook. No entanto, na computação dedicada a tarefas, os workloads não interativos custarão consideravelmente menos do que na computação geral. Confira a visão geral de preços para comparar a Computação para Trabalhos com a Computação de Uso Geral.

Um benefício adicional para alguns trabalhos é que cada trabalho pode ser executado em uma nova instância de computação, isolando cargas de trabalho umas das outras. No entanto, trabalhos multitarefa também podem reutilizar recursos de computação para todas as tarefas, portanto, o tempo de inicialização de computação ocorre apenas uma vez por trabalho. Veja Configurar a computação para trabalhos.

Usar um SQL warehouse para cargas de trabalho do SQL

Para cargas de trabalho do SQL interativas, um SQL warehouse do Databricks é o mecanismo mais econômico. Confira a visão geral de preços. Todos os warehouses de SQL vêm com o Photon por padrão, o que acelera suas chamadas de API SQL e DataFrame existentes e reduz o custo geral por carga de trabalho.

Além disso, os warehouses de SQL sem servidor são compatíveis com IWM (gerenciamento inteligente de carga de trabalho), um conjunto de recursos que aprimora a capacidade do Databricks SQL sem servidor para processar um grande número de consultas de forma rápida e econômica.

Usar runtimes atualizados para suas cargas de trabalho

A plataforma Azure Databricks fornece diferentes runtimes otimizados para tarefas de engenharia de dados (Databricks Runtime) ou tarefas de machine learning (Databricks Runtime para Machine Learning). Os runtimes são criados para fornecer a melhor seleção de bibliotecas para as tarefas e garantir que todas as bibliotecas fornecidas estejam atualizadas e trabalhem juntas de maneira ideal. Os Runtimes do Databricks são lançados em uma cadência regular, fornecendo melhorias de desempenho entre as principais versões. Essas melhorias de desempenho geralmente resultam em economia devido ao uso mais eficiente de recursos de computação.

Usar apenas GPUs para as cargas de trabalho corretas

Máquinas virtuais com GPUs podem acelerar muito os cálculos para aprendizado profundo, mas são significativamente mais caras do que as máquinas somente de CPU. Use as instâncias de GPU somente para cargas de trabalho que têm bibliotecas aceleradas por GPU.

A maioria das cargas de trabalho não usa bibliotecas aceleradas por GPU, portanto não se beneficia das instâncias habilitadas para GPU. Os administradores do workspace podem restringir computadores com GPU e recursos de computação para evitar o uso desnecessário. Confira a postagem no blog “Are GPUs Really Expensive? Benchmarking GPUs for Inference on Databricks Clusters” (As GPUs são realmente caras? Parâmetro de comparação de GPUs quanto à inferência em clusters do Databricks).

Usar serviços sem servidor para suas cargas de trabalho

Casos de uso de BI

Normalmente, as cargas de trabalho de BI consomem dados de maneira intermitente e geram várias consultas simultâneas. Por exemplo, alguém que usa uma ferramenta de BI pode atualizar um dashboard ou escrever uma consulta e, em seguida, simplesmente analisar os resultados sem interação adicional com a plataforma. Nesse cenário, a plataforma de dados:

  • Encerra recursos de computação ociosos para economizar nos custos.
  • Fornece rapidamente os recursos de computação quando o usuário solicita dados novos ou atualizados com a ferramenta de BI.

Os SQL warehouses que não usam o modelo sem servidor do Azure Databricks têm um tempo de inicialização de alguns minutos. Ou seja, muitos usuários tendem a aceitar o custo mais alto e não encerram os warehouses durante períodos ociosos. Por outro lado, os warehouses de SQL sem servidor são iniciados e escalam verticalmente em segundos, de modo que a disponibilidade imediata e o encerramento por ociosidade possam ser alcançados. Isso resulta em uma ótima experiência do usuário e em uma economia geral nos custos.

Além disso, os warehouses de SQL sem servidor reduzem verticalmente mais cedo do que os warehouses que não usam o modelo sem servidor, resultando em custos mais baixos.

Entrega de modelo de ML e IA

A maioria dos modelos são disponibilizados como uma API RESTful para integração ao seu aplicativo web ou cliente; o serviço de disponibilização do modelo recebe cargas variadas de solicitações ao longo do tempo, e uma plataforma de serviço de modelos deve sempre fornecer recursos suficientes, mas apenas aqueles que forem realmente necessários (escalonamento para cima e para baixo).

O Serviço de Modelo do Mosaic AI usa a computação sem servidor e fornece um serviço altamente disponível e de baixa latência para a implementação de modelos. O serviço ajusta automaticamente sua capacidade para responder às variações na demanda, reduzindo custos de infraestrutura e otimizando a latência e o desempenho.

Usar o tipo de instância ideal

O uso da última geração de tipos de instância de nuvem quase sempre oferece benefícios de desempenho, pois elas oferecem o melhor desempenho e os recursos mais recentes.

Com base em suas cargas de trabalho, também é importante escolher a família de instâncias certa para obter a melhor relação desempenho/preço. Algumas regras simples são:

  • Otimizado para memória da ML, cargas de trabalho com muita mistura e despejo
  • Computação otimizada para cargas de trabalho de streaming estruturadas e trabalhos de manutenção (como Optimize e Vacuum)
  • Armazenamento otimizado para cargas de trabalho que se beneficiam do cache, como análise de dados ad hoc e interativa
  • GPU otimizada para cargas de trabalho de ML e DL específicas
  • Uso geral na ausência de requisitos específicos

Escolher o tamanho de computação mais eficiente

O Azure Databricks executa um executor por nó de trabalho. Portanto, os termos executor e trabalho são usados de forma intercambiável no contexto da arquitetura do Azure Databricks. As pessoas geralmente pensam no tamanho do cluster em termos do número de trabalhos, mas há outros fatores importantes a considerar:

  • Total de núcleos de executor (computação): o número total de núcleos em todos os executores. Isso determina o paralelismo máximo de uma instância de computação.
  • Memória total do executor: a quantidade total de RAM em todos os executores. Isso determina quantos dados podem ser armazenados na memória antes de serem despejados no disco.
  • Armazenamento local do executor: o tipo e a quantidade de armazenamento em disco local. O disco local usado principalmente no caso de despejos durante embaralhamentos e cache.

Entre as considerações adicionais estão o tipo e o tamanho da instância de trabalho, que também influenciam os fatores descritos anteriormente. Ao redimensionar a computação, considere o seguinte:

  • Quantos dados sua carga de trabalho consumirá?
  • Qual é a complexidade computacional da carga de trabalho?
  • De onde você está lendo dados?
  • Como os dados são particionados no armazenamento externo?
  • De quanto paralelismo você precisa?

Encontre detalhes e exemplos em Considerações sobre dimensionamento de computação.

Avaliar mecanismos de consulta com otimização de desempenho

O Photon é um mecanismo de consulta vetorizado nativo do Databricks de alto desempenho que acelera suas cargas de trabalho SQL e chamadas à API do DataFrame (para ingestão de dados, ETL, streaming, ciência de dados e consultas interativas). O Photon é compatível com as APIs do Apache Spark, ou seja, começar a usá-lo é tão fácil quanto ativá-lo – sem alterações de código e sem bloqueio.

A aceleração observada pode resultar em uma economia significativa nos custos, e os trabalhos executados regularmente devem ser avaliados quanto a estarem mais rápidos, além de mais baratos com o Photon.

2. Alocar recursos de maneira dinâmica

Usar computação de dimensionamento automático

Com o dimensionamento automático, o Databricks realoca dinamicamente trabalhos para atender às características do seu trabalho. Determinadas partes do pipeline podem ser mais intensivas em computação do que outras, e o Databricks adiciona automaticamente trabalhos adicionais durante essas fases do seu trabalho (e os remove quando eles não são mais necessários). O dimensionamento automático pode reduzir os custos gerais em comparação com uma instância de computação de tamanho estática.

O dimensionamento automático de computação tem limitações ao reduzir o tamanho do cluster para cargas de trabalho de streaming estruturado. O Databricks recomenda o uso de Pipelines Declarativos do Lakeflow com dimensionamento automático aprimorado para cargas de trabalho de streaming.

Usar o encerramento automático

O Azure Databricks fornece uma série de recursos para ajudar a controlar os custos, reduzindo recursos ociosos e controlando os períodos em que os recursos de computação podem ser implantados.

  • Configure o encerramento automático para todos os recursos de computação interativos. Depois de um tempo ocioso especificado, o recurso de computação é desligado. Confira Encerramento automático.
  • Para casos de uso em que a computação é necessária somente durante o horário comercial, os recursos de computação podem ser configurados com o encerramento automático e um processo agendado pode reiniciar a computação (e possivelmente pré-ativar dados, se necessário) pela manhã, antes que os usuários estejam de volta em suas áreas de trabalho. Consulte CACHE SELECT.
  • Se os tempos de inicialização de computação forem muito longos, considere o uso de pools de clusters; consulte Práticas recomendadas de pool. Os pools do Azure Databricks são um conjunto de instâncias ociosas e prontas para uso. Quando os nós de cluster são criados usando as instâncias ociosas, os tempos de inicialização e escalonamento automático do cluster são reduzidos. Se os pools não tiverem instâncias ociosas, eles se expandirão alocando uma nova instância do fornecedor de instâncias para atender à solicitação do cluster.

O Azure Databricks não cobra as DBUs (Unidades de Databricks) enquanto as instâncias estão ociosas no pool, resultando em economia nos custos. A cobrança do provedor de instâncias se aplica.

Usar políticas de computação para controlar custos

As políticas de computação podem impor muitas restrições específicas de custo para recursos de computação. Confira Excelência operacional – usar políticas de computação. Por exemplo:

3. Monitorar e controlar os custos

O gerenciamento de custos no Databricks é um aspecto crítico da otimização dos gastos na nuvem, mantendo o desempenho. O processo pode ser dividido em três áreas-chave:

  • Configuração
  • Monitorização
  • Gerenciamento

As práticas recomendadas a seguir abrangem essas três áreas.

Configuração de marcação para atribuição de custos

Para controlar os custos em geral e atribuir com exatidão o uso do Databricks às unidades de negócios e equipes da sua organização (por exemplo, para reembolsos na sua organização), você pode marcar workspaces, clusters, SQL warehouses e pools.

Na fase de instalação, as organizações devem implementar práticas de marcação eficazes. Isso envolve a criação de convenções de nomenclatura de marca em toda a organização. É importante usar marcas gerais que atribuam o uso a grupos de usuários específicos e marcas mais granulares que fornecem insights altamente específicos, por exemplo, com base em funções, produtos ou serviços.

Comece a marcar desde o início do uso do Databricks. Além das marcas padrão definidas pelo Databricks, no mínimo, configure as marcas personalizadas _Business Units_ e _Projects_ preencha-as para sua organização específica. Se você precisar diferenciar os custos de desenvolvimento, garantia de qualidade e produção, considere adicionar a tag Environment nos workspaces e recursos computacionais.

As marcas se propagam tanto para logs de uso quanto para recursos de provedor de nuvem para análise de custos. Os custos totais incluem DBUs (Unidades do Databricks) mais máquina virtual, disco e custos de rede associados. Observe que, para serviços sem servidor, o custo do DBU já inclui os custos da máquina virtual.

Como a adição de marcas afeta apenas o uso futuro, é melhor começar com uma estrutura de marcação mais detalhada. Sempre é possível ignorar as etiquetas se o uso prático ao longo do tempo mostrar que elas não têm impacto na compreensão e na atribuição de custos. Etiquetas ausentes não podem ser adicionadas a eventos passados.

Configurar orçamentos e alertas para habilitar o monitoramento de gastos de conta

Os orçamentos permitem monitorar o uso em toda a sua conta. Eles fornecem uma maneira de definir metas financeiras e permitir que você acompanhe os gastos em toda a conta ou aplique filtros para acompanhar os gastos de equipes, projetos ou workspaces específicos. Se sua conta usar computação sem servidor, use políticas de orçamento para atribuir o uso sem servidor da sua conta. Veja Uso sem servidor do atributo com políticas de orçamento.

É recomendável que você configure notificações por email quando o orçamento mensal for atingido para evitar gastos excessivos inesperados.

Monitorar os custos para alinhar os gastos com as expectativas

Os painéis de observabilidade de custos ajudam a visualizar padrões de gastos e as políticas de orçamento ajudam a atribuir o uso de computação sem servidor a usuários, grupos ou projetos específicos, permitindo uma alocação de custo mais precisa. Para se manter em cima dos gastos, o Databricks oferece uma variedade de ferramentas e recursos para acompanhar e analisar os custos:

  • Monitorar o uso no console da conta: o Databricks oferece painéis de IA/BI para gerenciamento de custos no console da conta, que podem ser importados por administradores de conta para qualquer espaço de trabalho habilitado com o Catálogo Unity em sua conta. Isso permite que você monitore o uso da conta ou um único uso de workspace.

  • Use orçamentos para monitorar os gastos da conta: os orçamentos permitem monitorar o uso em sua conta.
    As políticas de orçamento podem ser usadas para atribuir o uso sem servidor aplicando marcas a qualquer atividade de computação sem servidor incorrida por um usuário atribuído à política.

  • Monitorar e gerenciar custos de saída de compartilhamento Delta: ao contrário de outras plataformas de compartilhamento de dados, o compartilhamento Delta não requer replicação de dados. Esse modelo tem muitas vantagens, mas significa que seu fornecedor de nuvem pode cobrar valores de saída de dados quando você compartilhar dados entre nuvens ou regiões. Consulte Monitorar e gerenciar custos de saída do Delta Sharing (para provedores) para monitorar e gerenciar encargos de saída.

  • Monitorar os custos usando tabelas do sistema: a tabela system.billing.usage do sistema permite monitorar os custos. As marcas personalizadas aplicadas a espaços de trabalho e recursos de computação são propagadas para essa tabela do sistema. Você pode monitorar os custos de computação sem servidor, custos de trabalho e custos de serviço de modelo.

  • Monitorar os custos usando o Gerenciador de Custos do Azure: a Análise de Custos é uma ferramenta para analisar os custos no Azure. As marcas dos recursos do Azure Databricks estão disponíveis nessa ferramenta para análise detalhada.

Gerenciar custos para alinhar o uso às necessidades organizacionais

O gerenciamento de custos vai além da implementação técnica para incluir estratégias organizacionais mais amplas:

  • Desenvolver e programar um trabalho de limpeza para aplicar ou limpar etiquetas (de forma incremental). O trabalho precisa ser resiliente para não ser interrompido por problemas de recursos únicos. Todas as alterações devem ser gravadas em um log de auditoria.
  • Realize auditorias de custo regulares para examinar todos os recursos ativos, seus gastos e seu alinhamento com as necessidades organizacionais. O compartilhamento de relatórios de custos mensais ajuda a controlar os aumentos e anomalias de consumo e incentiva o gerenciamento proativo de custos em todas as equipes.
  • Otimizar a alocação de recursos por meio de estratégias como dimensionamento automático e encerramento automático, que alocam dinamicamente recursos com base nos requisitos de carga de trabalho; confira as outras práticas recomendadas neste capítulo.
  • Instrua as equipes sobre as implicações de custo de seu uso de recursos e treine sobre as práticas recomendadas para otimização de custos.
  • Use políticas de computação como uma ferramenta para controlar o tipo e o tamanho dos recursos de computação que determinados usuários podem criar e acessar.

No geral, a otimização de custos precisa ser vista como um processo contínuo e as estratégias precisam ser revisitadas regularmente em caso de dimensionamento, novos projetos ou picos de custos inesperados. Use os recursos de gerenciamento de custos nativos do Databricks e ferramentas de terceiros para controle e otimização abrangentes.

4. Projetar cargas de trabalho econômicas

Balancear o streaming sempre ativado e disparado

Tradicionalmente, quando as pessoas pensam em streaming, termos como “tempo real”, “24 horas por dia, 7 dias por semana” ou “sempre ativado” vêm à mente. Se a ingestão de dados ocorrer em tempo real, os recursos de computação subjacentes deverão ser executados 24 horas por dia, 7 dias por semana, incorrendo em custos a cada hora do dia.

No entanto, nem todos os casos de uso que dependem de um fluxo contínuo de eventos exigem que esses eventos sejam adicionados imediatamente ao conjunto de dados de análise. Se o requisito empresarial para o caso de uso exigir apenas dados novos a certo intervalo de horas ou todos os dias, esse requisito poderá ser atendido com apenas algumas execuções por dia, resultando em uma redução significativa no custo da carga de trabalho. O Databricks recomenda usar o Streaming Estruturado com o gatilho AvailableNow para cargas de trabalho incrementais que não tenham requisitos de baixa latência. Confira Configuração do processamento em lote incremental.

Equilibrar o uso de instâncias sob demanda e de excesso de capacidade

As instâncias spot utilizam o excesso de recursos da máquina virtual na nuvem que estão disponíveis a um preço mais baixo. Para economizar nos custos, o Azure Databricks dá suporte à criação de clusters que usam instâncias spot. O Databricks recomenda que a primeira instância (o driver do Spark) sempre seja uma máquina virtual sob demanda. As instâncias spot são uma boa opção para cargas de trabalho em que é aceitável demorar mais porque uma ou mais instâncias spot foram despejadas pelo provedor de nuvem.