SELECT

SELECT

Otimização de custos do Databricks Genie: como rastrear e controlar o que ele dispara

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

By SELECTNov 12, 2022 min read

TL;DR

O Genie tem dois custos, e só um deles é fácil de controlar. Os budgets do Unity AI Gateway cuidam do lado do uso de LLM. O compute que o Genie dispara, SQL warehouses e jobs serverless, não tem controle equivalente nem tag do Genie nos seus dados de billing. A solução não é um relatório melhor. É dar aos workloads do Genie um compute próprio e aplicar tags de forma consistente, para que a atribuição já venha embutida desde o início, em vez de ser reconstruída depois que a fatura chega.

Otimização de custos no Databricks geralmente significa fazer right-sizing de clusters ou corrigir políticas de auto-termination. O Genie adiciona uma complicação que esses playbooks não cobrem: um workload capaz de disparar compute de verdade sem nunca aparecer como um item que você consiga buscar na fatura. Apresentamos as quatro ferramentas do Genie no primeiro post desta série e mostramos quanto o Genie realmente custa no segundo, incluindo um teste real em que o uso de IA era fácil de medir e o compute não. Este post é sobre fechar essa lacuna antes que ela custe mais caro do que um simples exercício de pesquisa.

Essa lacuna não é algo que o Databricks deve fechar por conta própria. A maioria das respostas do Genie Agent e a maioria das sessões do Genie Code geram SQL ou código e depois o executam, e executar coisas é justamente para isso que o compute serve, mas nem sempre: um Genie Agent às vezes consegue responder a uma pergunta geral sem tocar em nenhuma tabela, e o Genie Code frequentemente gera código sem executá-lo. Quando a execução acontece, o uso de IA que a gerou recebe um rótulo claro. A execução em si, não. Essa divisão reflete como o Databricks projetou o produto, não um descuido, e significa que a solução também precisa ser arquitetural.

Por que você não consegue simplesmente olhar a fatura e ver o custo do Genie?

O Databricks marca explicitamente o uso de LLM do Genie. Cada registro carrega billing_origin_product = 'GENIE', então você pode filtrar, agrupar e totalizar sem adivinhar. O compute que o Genie dispara não recebe esse tratamento. A fatura de um SQL warehouse diz que um warehouse executou queries. Ela não diz se foi uma pessoa que digitou aquele SQL ou se um Genie Agent o gerou.

O Gartner prevê que, até 2027, 40% das empresas vão rebaixar ou desativar agentes de IA autônomos depois que lacunas de governança só vierem à tona quando algo já tiver dado errado em produção. Visibilidade de custos faz parte dessa mesma lacuna de governança. Deixar para resolver a atribuição só quando o financeiro fizer uma pergunta que você não consegue responder é o jeito caro de aprender essa lição.

O que o controle do lado do LLM realmente cobre?

Os budgets do Unity AI Gateway, com escopo de conta, workspace, grupo de usuários ou usuários individuais e marcados com a tag databricks-product: genie, dão a você um controle real sobre o gasto de LLM do Genie. Genie One, Agents e Code são todos medidos pelo mesmo mecanismo, então um único budget cobre a família inteira. Tags são aditivas, então adicionar mais tags não quebra o rastreamento. Só dá uma visão mais granular do mesmo gasto com o Genie.

Esse é um problema resolvido, e vale dizer com todas as letras: se você só configurar budgets para o Genie e parar por aí, cobriu talvez metade do risco. A metade maior continua em aberto.

Por que a metade do compute é tão mais difícil?

Os Genie Agents executam SQL no warehouse para o qual estiverem apontados, geralmente o mesmo que todo o resto do workspace já usa. O Genie Code inicia compute serverless para executar o código que escreve. Nenhum dos dois recebe uma tag específica do Genie por padrão. Se você for procurar o custo de compute do Genie depois que tudo já aconteceu, vai acabar correlacionando system.billing.usage com system.query.history e system.compute.warehouse_events, tentando alinhar timestamps e torcendo para que nada mais estivesse rodando no mesmo momento. Isso funciona para um teste isolado. Desmorona no instante em que mais de um workload toca o mesmo warehouse, ou seja, em qualquer ambiente real.

A McKinsey descobriu que 93% das organizações que rodam workloads de IA já estouraram seus orçamentos de IA, e compute não rastreado contribui diretamente para esse padrão. Não dá para gerenciar um número que você só consegue reconstruir a posteriori.

Foi exatamente nesse muro que batemos quando testamos o Genie por conta própria. Nosso ebook, Databricks Genie Explained, detalha o teste completo, incluindo a query que usamos para extrair o uso real de DBUs do Genie direto das tabelas de billing.

Como tornar o compute do Genie atribuível?

Dê ao Genie um compute próprio sempre que possível, em vez de compartilhar um warehouse com dashboards, SQL ad hoc e todo o resto. Um SQL warehouse dedicado para os Genie Agents transforma uma pergunta sem resposta em uma conta simples: warehouse do Genie, vezes sua taxa de DBU, é igual ao custo de SQL relacionado ao Genie. Sem correlação, sem alinhamento de timestamps, sem adivinhação.

Aplique tags nesse compute do mesmo jeito que faria com qualquer outra coisa que precise rastrear: tags de warehouse consistentes e tags de budget policy serverless, aplicadas antes de o workload rodar, não reconstruídas depois. A prática de alocação da FinOps Foundation trata tagging e convenções de nomenclatura no nível do recurso como o mecanismo básico para atribuir custos compartilhados ou ambíguos, e o compute do Genie é exatamente o tipo de custo ambíguo que essa prática existe para resolver. Compute dedicado isola o workload. As tags o identificam. Você quer os dois, não um no lugar do outro.

Nem todo Agent precisa do próprio warehouse. Reserve isso para os de alto volume ou críticos para o negócio, em que a visibilidade de custos realmente importa, e deixe Agents menores e ocasionais compartilharem espaço até que o próprio uso justifique um warehouse dedicado.

E quanto ao Genie Code especificamente?

O Genie Code é mais difícil de isolar do que os Genie Agents, porque parte da sua execução roda em compute serverless, e não em um warehouse que você mesmo provisiona e nomeia. Não dá para simplesmente apontá-lo para um warehouse dedicado da mesma forma. Atribuição por usuário, budget policies serverless e tags consistentes fazem mais diferença aqui. Saiba qual usuário ou service principal está executando o Genie Code, aplique uma budget policy com escopo nesse uso e marque com tags os jobs serverless que ele inicia, para que apareçam como compute do Genie em vez de um item anônimo na fatura.

Como isso fica na prática depois de configurado?

Um warehouse dedicado ao Genie, com tags e isolado, transforma uma pergunta que antes exigia uma query de correlação em algo que você responde lendo um dashboard. Esse é o ponto central. Você não está tentando construir um relatório retrospectivo mais inteligente. Está mudando onde o workload roda, para que a fatura já traga a resposta pronta. Em vez de fazer join de system.billing.usage com o histórico de queries e os eventos de warehouse toda vez que alguém pergunta quanto o Genie custa, você filtra uma tag de warehouse e lê o número direto.

O mesmo vale para o Genie Code: quando os jobs serverless carregam uma tag consistente e têm um dono conhecido, "quanto o Genie Code está nos custando" deixa de ser uma pergunta de pesquisa e vira um filtro. Nenhuma dessas correções toca no lado do LLM, e esse é justamente o ponto. Os budgets do Genie já cuidam disso. Aqui, trata-se puramente de tornar a outra metade igualmente fácil de enxergar.

Uma plataforma como o SELECT for Databricks foi construída exatamente para esse tipo de reconciliação, cruzando as cobranças de DBU com o custo da infraestrutura de nuvem subjacente, para que o lado de compute do Genie não precise ser montado manualmente toda vez que alguém perguntar sobre ele.

O que você deve fazer, e em que ordem?

Comece pelo budget. Defina um budget do Unity AI Gateway para o uso de LLM do Genie, com a tag databricks-product: genie e nada mais, com um limite de alerta compartilhado e limites por usuário para quem usa de forma excepcionalmente intensa. Alertas são melhores do que um bloqueio rígido aqui, já que esgotar um budget compartilhado interrompe o Genie para todos no escopo, não só para a pessoa que o acionou.

Depois, resolva o lado do compute. Dê aos seus Genie Agents de maior volume ou mais críticos para o negócio um SQL warehouse dedicado. Aplique tags consistentes nesse warehouse e em quaisquer budget policies serverless ligadas ao Genie Code, antes que o uso cresça além de um punhado de usuários piloto. Acompanhe os service principals separadamente, já que eles não têm cota gratuita em nenhum produto do Genie e seu uso escala de um jeito que uma pessoa clicando em uma interface de chat não escala.

Nada disso é exclusivo do Genie. É a mesma disciplina que uma boa otimização de custos no Databricks já exige: compute com right-sizing, tags consistentes e workloads que não se escondem uns dentro dos outros. O Genie só adiciona mais uma fonte de demanda onde aplicar essa disciplina.

Quer o resto da história: o que o Genie realmente é, quanto custa uma sessão real e como mantê-lo atribuível? Encontre tudo em um só lugar no nosso ebook, Databricks Genie Explained.

Perguntas frequentes

O que é otimização de custos do Databricks Genie?

É a prática de tornar o gasto do Genie, tanto o uso de LLM quanto o compute que ele dispara, visível e controlável, em vez de reconstruído depois que a fatura chega. Isso significa budgets do Unity AI Gateway para o uso de LLM e compute dedicado e com tags para o SQL e os jobs serverless que o Genie inicia.

Os budgets do Genie controlam os custos de compute?

Não. Os budgets do Unity AI Gateway, com a tag databricks-product: genie, cobrem apenas o uso de LLM. O SQL warehouse e o compute serverless que o Genie dispara são cobrados separadamente e precisam de compute dedicado e tags próprias para continuar atribuíveis.

Por que os Genie Agents devem ter um SQL warehouse dedicado?

Porque um warehouse compartilhado mistura as queries do Genie com tudo o mais que roda nele, então a fatura não consegue dizer qual parte veio do Genie. Um warehouse dedicado transforma isso em um cálculo direto: o custo de DBU do warehouse é o custo do Genie, sem nada para reconstruir.

O Genie Code é mais difícil de atribuir do que os Genie Agents?

Sim. O Genie Code roda em compute serverless, e não em um warehouse que você mesmo provisiona, então não pode ser isolado da mesma forma. Atribuição por usuário, budget policies serverless e tags consistentes importam mais para o Genie Code do que compute dedicado.

Como o SELECT for Databricks ajuda na otimização de custos do Genie?

Ele reconcilia as cobranças de DBU do Databricks com o custo da infraestrutura de nuvem subjacente em um só lugar, o que resolve o mesmo problema que compute dedicado e tagging para o Genie resolvem: tornar atribuível ao workload de origem um gasto que normalmente é invisível nos dados padrão de billing.