Empresas de todos os setores continuam a priorizar a otimização e o valor de fazer mais com menos. Isso é especialmente verdade para empresas nativas digitais na paisagem de dados de hoje, que geram uma demanda cada vez maior por IA e cargas de trabalho intensivas em dados. Essas organizações gerenciam milhares de recursos em vários ambientes de nuvem e plataforma. Para inovar e iterar rapidamente, muitos desses recursos são democratizados entre equipes ou unidades de negócios; no entanto, uma maior velocidade para os profissionais de dados pode levar ao caos, a menos que seja equilibrada com um cuidadoso gerenciamento de custos.
Organizações nativas digitais frequentemente empregam equipes de plataforma central, DevOps ou FinOps para supervisionar os custos e controles para recursos de nuvem e plataforma. A prática formal de controle de custos e supervisão, popularizada pela The FinOps Foundation™, também é suportada pela Databricks com recursos como marcação, orçamentos, políticas de computação e mais. No entanto, a decisão de priorizar a gestão de custos e estabelecer uma propriedade estruturada não cria maturidade de custos da noite para o dia. As metodologias e recursos abordados neste blog permitem que as equipes amadureçam incrementalmente a gestão de custos dentro da Plataforma de Inteligência de Dados.
O que vamos abordar:
Se você é um engenheiro, arquiteto ou profissional de FinOps, este blog ajudará você a maximizar a eficiência minimizando os custos, garantindo que seu ambiente Databricks permaneça de alto desempenho e custo-efetivo.
Agora, adotaremos uma abordagem incremental para implementar práticas maduras de gerenciamento de custos na Plataforma Databricks. Pense nisso como a jornada "Rastejar, Andar, Correr" para ir do caos ao controle. Explicaremos como implementar essa jornada passo a passo.
O primeiro passo é atribuir corretamente as despesas às equipes, projetos ou cargas de trabalho certas. Isso envolve a marcação eficiente de todos os recursos (incluindo computação sem servidor) para obter uma visão clara de onde os custos estão sendo incorridos. A atribuição correta permite um orçamento preciso e responsabilidade entre as equipes.
A atribuição de custos pode ser feita para todos os SKUs de computação com uma estratégia de marcação, seja para um modelo de computação clássico ou sem servidor. A computação clássica (fluxos de trabalho, Pipelines Declarativas, SQL Warehouse, etc.) herda as tags na definição do cluster, enquanto a sem servidor adere às Políticas de Orçamento Sem Servidor (AWS | Azure | GCP).
Em geral, você pode adicionar tags a dois tipos de recursos:
A marcação para ambos os tipos de recursos contribuiria para uma governança e gestão eficazes:
Consulte este artigo (AWS | AZURE | GCP) para detalhes sobre a marcação de diferentes recursos de computação, e este artigo (AWS | Azure | GCP) para detalhes sobre a marcação de securáveis do Catálogo Unity.
Para computação clássica, as tags podem ser especificadas nas configurações ao criar a computação. Abaixo estão alguns exemplos de diferentes tipos de cálculos para mostrar como as tags podem ser definidas para cada um, usando tanto a interface do usuário quanto o SDK do Databricks.
Computação SQL Warehouse:
Você pode definir as tags para um Armazém SQL na seção Opções Avançadas.
Com Databricks SDK:
Compute All-Purpose
Com Databricks SDK:
Computação de Jobs:
Com Databricks SDK:
Pipelines Declarativos:
Para computação sem servidor, você deve atribuir tags com uma política de orçamento. Criar uma política permite que você especifique um nome de política e tags de chaves e valores em string.
É um processo de 3 etapas:
Você pode se referir a detalhes sobre Políticas de Orçamento sem servidor (BP) nestes artigos (AWS/AZURE/GCP).
Alguns aspectos a ter em mente sobre Políticas de Orçamento:
Com Terraform:
|
|
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
A seguir, temos o relatório de custos, ou a capacidade de monitorar custos com o contexto fornecido pela Etapa 1. A Databricks fornece tabelas de sistema integradas, como system.billing.usage
, que é a base para o relatório de custos. As tabelas de sistema também são úteis quando os clientes desejam personalizar sua solução de relatório.
Por exemplo, o painel de uso da conta que você verá a seguir é um painel de AI/BI do Databricks, então você pode visualizar todas as consultas e personalizar o painel para atender às suas necessidades facilmente. Se você precisa escrever consultas ad hoc contra seu uso do Databricks, com filtros muito específicos, isso está à sua disposição.
Uma vez que você começou a marcar seus recursos e atribuir custos aos seus centros de custo, equipes, projetos ou ambientes, você pode começar a descobrir as áreas onde os custos são mais altos. Databricks fornece um Painel de Uso que você pode simplesmente importar para o seu próprio espaço de trabalho como um painel de AI/BI, fornecendo relatórios de custos imediatos.
Uma nova versão versão 2.0 deste painel está disponível para visualização com várias melhorias mostradas abaixo. Mesmo que você já tenha importado o painel de uso da conta, por favor, importe a nova versão do GitHub hoje!
Este painel fornece uma tonelada de informações úteis e visualizações, incluindo dados como:
O painel também permite que você filtre por intervalos de datas, espaços de trabalho, produtos e até insira descontos personalizados para taxas privadas. Com tanto conteúdo neste painel, ele realmente é sua principal parada única para a maioria de suas necessidades de relatórios de custos.
Para trabalhos Lakeflow, recomendamos o Painel de AI/BI de Tabelas de Sistema de Trabalhos para ver rapidamente os custos potenciais baseados em recursos, bem como oportunidades de otimização, como:
Para um monitoramento aprimorado do Databricks SQL, consulte nosso blog de especialistas em SQL aqui. Neste guia, nossos especialistas em SQL irão guiá-lo através do painel de Monitoramento de Custos Granular que você pode configurar hoje para ver os custos do SQL por usuário, fonte e até custos por consulta.
Da mesma forma, temos um painel especializado para monitorar o custo do Model Serving! Isso é útil para relatórios mais granulares sobre inferência em lote, uso por token, pontos de acesso provisionados e mais. Para mais informações, veja este blog relacionado.
Falamos sobre Políticas de Orçamento Sem Servidor anteriormente como uma maneira de atribuir ou marcar o uso de computação sem servidor, mas o Databricks também tem apenas um Orçamento (AWS | Azure | GCP), que é um recurso separado. Os orçamentos podem ser usados para rastrear gastos em toda a conta, ou aplicar filtros para rastrear os gastos de equipes, projetos ou espaços de trabalho específicos.
Com orçamentos, você especifica os espaços de trabalho e/ou tags que deseja que o orçamento corresponda, em seguida, define um valor (em USD), e você pode fazer com que ele envie um e-mail para uma lista de destinatários quando o orçamento for excedido. Isso pode ser útil para alertar reativamente os usuários quando seus gastos excederem um determinado valor. Por favor, note que os orçamentos usam o preço de lista do SKU.
Em seguida, as equipes devem ter a capacidade de estabelecer limites para que as equipes de dados sejam autossuficientes e conscientes dos custos ao mesmo tempo. Databricks simplifica isso para administradores e profissionais com Políticas de Computação (AWS | Azure | GCP).
Vários atributos podem ser controlados com políticas de computação, incluindo todos os atributos do cluster, bem como atributos virtuais importantes, como dbu_per_user
. Vamos revisar alguns dos principais atributos para governar especificamente para o controle de custos:
Muitas vezes, ao criar políticas de computação para permitir a criação de clusters de autoatendimento para equipes, queremos controlar o gasto máximo desses usuários. Aqui é onde se aplica um dos atributos de política mais importantes para o controle de custos: dbus_per_hour
.
dbus_per_hour
pode ser usado com um tipo de política range
para definir limites inferior e superior no custo DBU dos clusters que os usuários podem criar. No entanto, isso só impõe o máximo de DBU por cluster que usa a política, então um único usuário com permissão para esta política ainda poderia criar muitos clusters, e cada um é limitado ao DBU especificado.
Para levar isso adiante, e prevenir um número ilimitado de clusters sendo criados por cada usuário, podemos usar outra configuração, max_clusters_by_user
, que é na verdade uma configuração na política de computação de nível superior em vez de um atributo que você encontraria na definição da política.
As políticas devem impor qual tipo de cluster pode ser usado, usando o atributo virtual cluster_type
, que pode ser um dos seguintes: “all-purpose”, “job”, ou “dlt”. Recomendamos o uso do tipo fixed
para impor exatamente o tipo de cluster que a política foi projetada para quando a escrever:
Um padrão comum é criar políticas separadas para jobs e pipelines versus clusters de propósito geral, definindo max_clusters_by_user
como 1 para clusters de propósito geral (por exemplo, como a política padrão do Databricks Personal Compute é definida) e permitindo um número maior de clusters por usuário para jobs.
Os tipos de instância VM podem ser convenientemente controlados com allowlist
ou tipo regex
. Isso permite aos usuários criar clusters com alguma flexibilidade no tipo de instância sem poder escolher tamanhos que possam ser muito caros ou fora do seu orçamento.
É importante manter-se atualizado com os novos Runtimes do Databricks (DBRs), e para períodos de suporte estendidos, considere as versões de Suporte de Longo Prazo (LTS). As políticas de computação têm vários valores especiais para aplicar facilmente isso no atributo spark_version
, e aqui estão apenas alguns deles para você estar ciente:
auto:latest-lts:
Mapeia para a versão mais recente de suporte de longo prazo (LTS) do Databricks Runtime.auto:latest-lts-ml:
Mapeia para a última versão LTS do Databricks Runtime ML.auto:latest
e auto:latest-ml
para a última versão do Databricks runtime disponível geralmente (ou ML, respectivamente), que pode não ser LTS.
Recomendamos controlar o spark_version
em sua política usando um tipo allowlist
:
Os atributos da nuvem também podem ser controlados na política, como a imposição da disponibilidade de instâncias spot com fallback para on-demand. Note que sempre que usar instâncias spot, você deve sempre configurar o “first_on_demand” para pelo menos 1, para que o nó driver do cluster esteja sempre sob demanda.
No AWS:
No Azure:
No GCP (nota: o GCP atualmente não pode suportar o atributo first_on_demand
):
Como visto anteriormente, tagging é crucial para a capacidade de uma organização de alocar custos e reportá-los em níveis granulares. Há duas coisas a considerar ao impor tags consistentes no Databricks:
custom_tags.
atributo.Na política de computação, podemos controlar várias tags personalizadas adicionando-as com o nome da tag. É recomendado usar o máximo de tags fixas possível para reduzir a entrada manual dos usuários, mas a lista de permissões é excelente para permitir várias escolhas, mantendo os valores consistentes.
Consultas SQL de longa duração podem ser muito caras e até interromper outras consultas se muitas começarem a se acumular. Consultas SQL de longa duração geralmente são devido a consultas não otimizadas (filtros ruins ou mesmo sem filtros) ou tabelas não otimizadas.
Os administradores podem controlar isso configurando o Tempo Limite de Declaração no nível do workspace. Para definir um tempo limite no nível do workspace, vá para as configurações de administração do workspace, clique em Compute, depois clique em Gerenciar ao lado de armazéns SQL. Na configuração de Parâmetros de Configuração SQL, adicione um parâmetro de configuração onde o valor do tempo limite está em segundos.
Modelos de ML e LLMs também podem ser abusados com muitas solicitações, incorrendo em custos inesperados. Databricks fornece rastreamento de uso e limites de taxa com um fácil de usar AI Gateway em pontos de serviço de modelo.
Você pode definir limites de taxa no endpoint como um todo, ou por usuário. Isso pode ser configurado com a interface de usuário do Databricks, SDK, API, ou Terraform; por exemplo, podemos implantar um endpoint do Modelo de Fundação com um limite de taxa usando Terraform:
Para mais exemplos de políticas de computação do mundo real, veja nosso Acelerador de Soluções aqui: https://github.com/databricks-industry-solutions/cluster-policy
Por fim, vamos olhar para algumas das otimizações que você pode verificar em seu espaço de trabalho, clusters e camadas de armazenamento. A maioria dessas verificações pode ser feita e/ou implementada automaticamente, o que exploraremos. Várias otimizações ocorrem no nível de computação. Estas incluem ações como dimensionar corretamente o tipo de instância VM, saber quando usar o Photon ou não, seleção apropriada do tipo de computação e mais.
Como mencionado em Controles de Custos, os custos do cluster podem ser otimizados executando trabalhos automatizados com Job Compute, não com All-Purpose Compute. O preço exato pode depender de promoções e descontos ativos, mas o Job Compute é tipicamente 2-3x mais barato do que o All-Purpose.
Job Compute também fornece novas instâncias de computação cada vez, isolando cargas de trabalho umas das outras, enquanto ainda permite que fluxos de trabalho multitarefa reutilizem os recursos de computação para todas as tarefas, se desejado. Veja como configurar a computação para jobs (AWS | Azure | GCP).
Usando as tabelas de sistema Databricks, a seguinte consulta pode ser usada para encontrar trabalhos em execução em clusters All-Purpose interativos. Isso também está incluído como parte do Painel de AI/BI de Tabelas de Sistema de Trabalhos que você pode facilmente importar para o seu workspace!
Photon é um motor otimizado vetorizado para Spark na Plataforma de Inteligência de Dados Databricks que oferece desempenho de consulta extremamente rápido. Photon aumenta a quantidade de DBUs que o cluster custa por um múltiplo de 2,9x para clusters de trabalho, e aproximadamente 2x para clusters All-Purpose. Apesar do multiplicador DBU, Photon pode resultar em um TCO geral mais baixo para trabalhos, reduzindo a duração do tempo de execução.
Clusters interativos, por outro lado, podem ter quantidades significativas de tempo ocioso quando os usuários não estão executando comandos; certifique-se de que todos os clusters all-purpose tenham a configuração de auto-terminação aplicada para minimizar esse custo de computação ocioso. Embora nem sempre seja o caso, isso pode resultar em custos mais altos com o Photon. Isso também torna os notebooks sem servidor uma ótima opção, pois minimizam os gastos ociosos, funcionam com Photon para o melhor desempenho e podem iniciar a sessão em apenas alguns segundos.
Da mesma forma, o Photon nem sempre é benéfico para trabalhos de streaming contínuo que estão ativos 24/7. Monitore se você consegue reduzir o número de nós de trabalho necessários ao usar Photon, pois isso reduz o TCO; caso contrário, Photon pode não ser adequado para trabalhos contínuos.
Nota: A seguinte consulta pode ser usada para encontrar clusters interativos que estão configurados com Photon:
Existem muitas estratégias para otimizar dados, armazenamento e Spark para cobrir aqui. Felizmente, a Databricks compilou essas informações no Guia Completo para Otimizar Cargas de Trabalho Databricks, Spark e Delta Lake, cobrindo tudo, desde layout de dados e skew até otimização de merges delta e mais. A Databricks também fornece o Grande Livro de Engenharia de Dados com mais dicas para otimização de desempenho.
As melhores práticas de estrutura e propriedade organizacional são tão importantes quanto as soluções técnicas que abordaremos a seguir.
Nativos digitais que executam práticas de FinOps altamente eficazes que incluem a Plataforma Databricks geralmente priorizam o seguinte dentro da organização:
Estas são algumas das estruturas organizacionais mais bem-sucedidas para FinOps:
Um centro de excelência tem muitos benefícios, como centralizar a administração da plataforma principal e capacitar as unidades de negócios com ativos seguros e reutilizáveis, como políticas e modelos de pacotes.
O centro de excelência geralmente coloca equipes como Data Platform, Platform Engineer ou Data Ops teams no centro, ou "hub", em um modelo de hub-and-spoke. Esta equipe é responsável por alocar e relatar custos com o Painel de Uso. Para fornecer um ambiente de autoatendimento otimizado e consciente dos custos para as equipes, a equipe de plataforma deve criar políticas de computação e políticas de orçamento que se adequem aos casos de uso e/ou unidades de negócios (os "spokes"). Embora não seja obrigatório, recomendamos gerenciar esses artefatos com Terraform e VCS para uma consistência forte, versionamento e capacidade de modularizar.
Este tem sido um guia bastante exaustivo para ajudá-lo a controlar seus custos com o Databricks, então cobrimos várias coisas ao longo do caminho. Para recapitular, a jornada de rastejar-andar-correr é esta:
Finalmente, para recapitular alguns dos pontos mais importantes:
Comece hoje e crie sua primeira Política de Computação, ou use um dos nossos exemplos de políticas. Depois, importe o Painel de Uso como sua principal parada para relatórios e previsões de gastos do Databricks. Marque as otimizações do Passo 3 que compartilhamos anteriormente para seus clusters, espaços de trabalho e dados. Marque as otimizações do Passo 3 que compartilhamos anteriormente para seus clusters, espaços de trabalho e dados.
Os Arquitetos de Soluções de Entrega (DSAs) da Databricks aceleram as iniciativas de Dados e IA em organizações. Eles fornecem liderança arquitetônica, otimizam plataformas para custo e desempenho, aprimoram a experiência do desenvolvedor e conduzem a execução bem-sucedida do projeto. Os DSAs preenchem a lacuna entre a implantação inicial e as soluções de produção, trabalhando de perto com várias equipes, incluindo engenharia de dados, líderes técnicos, executivos e outros stakeholders para garantir soluções personalizadas e um tempo de valor mais rápido. Para se beneficiar de um plano de execução personalizado, orientação estratégica e suporte durante toda a sua jornada de dados e IA com um DSA, entre em contato com a sua Equipe de Conta Databricks.
(This blog post has been translated using AI-powered tools) Original Post