Pular para o conteúdo principal

Tutorial: rastrear gastos com modelos básicos por usuário, equipe ou projeto

info

Beta

Este recurso está em Beta. Os administradores da account podem gerenciar o acesso a este recurso na página Previews do console da account. Consulte Gerenciar prévias do Databricks.

Neste tutorial, você analisa o que está impulsionando seus gastos com modelos de fundação com o Unity AI Gateway. Você atribui custos por usuário nos serviços de modelo que governa e, em seguida, adiciona tags para rastrear gastos por equipe, projeto ou caso de uso usando tabelas do sistema:

Pré-requisitos

nota

As estimativas em dólares neste tutorial baseiam-se no preço de tabela . Eles excluem descontos negociados e créditos de faturamento. Use-os para atribuição e análise de tendências, e seu extrato de faturamento para reconciliação.

O passo 1: Veja quais usuários estão gerando gastos

prompt

Genie Code (modo Agente) pode fazer isso por você. Experimente este exemplo de prompt:

Query system.billing.usage for MODEL_SERVING records from the past 30 days where usage_metadata.ai_gateway.endpoint_name is set. Convert DBUs to list-price USD using system.billing.list_prices at the price effective for each record, break down by model service, destination model, and requesting user, and sort by cost.

Vá para AI Gateway > Govern > Usage Dashboard > Cost análise , que detalha os gastos por modelo fornecido pela Databricks ou por provedor externo, Endpoint e usuário sem escrever SQL. O gráfico Top Users by Cost (USD) em Cost Breakdown classifica os maiores gastadores.

Alternativamente, query as tabelas do sistema diretamente para ver quem está consumindo mais e onde. A tabela que você query depende do tipo de modelo:

Faça query de system.billing.usage e join de system.billing.list_prices para converter o uso de DBU em dólares. O campo identity_metadata.run_by identifica o principal que emitiu cada solicitação:

SQL
SELECT
u.usage_metadata.ai_gateway.endpoint_name AS model_service_name,
u.usage_metadata.ai_gateway.destination_model AS destination_model,
u.identity_metadata.run_by AS run_by,
SUM(u.usage_quantity * lp.pricing.effective_list.default) AS list_cost_usd
FROM system.billing.usage u
JOIN system.billing.list_prices lp
ON u.sku_name = lp.sku_name
AND u.cloud = lp.cloud
AND u.usage_unit = lp.usage_unit
AND u.usage_end_time >= lp.price_start_time
AND (lp.price_end_time IS NULL OR u.usage_end_time < lp.price_end_time)
WHERE u.billing_origin_product = 'MODEL_SERVING'
AND u.usage_metadata.ai_gateway.endpoint_name IS NOT NULL
AND u.identity_metadata.run_by IS NOT NULL
AND u.usage_unit = 'DBU'
AND lp.currency_code = 'USD'
AND u.usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY model_service_name, destination_model, run_by
ORDER BY list_cost_usd DESC;

O passo 2: Configurar o acompanhamento de uso e gastos por equipe ou projeto

O gasto por usuário informa quem , mas não qual equipe ou projeto . Para atribuir o uso de tokens a uma equipe ou projeto, marque seu tráfego com base em como seus serviços de modelo são mapeados para equipes ou projetos:

  • Tags de serviço (endpoint) : quando cada equipe ou projeto tem seu próprio serviço de modelo. A tag se aplica a cada solicitação encaminhada por meio desse serviço de modelo, portanto, você a define uma vez.
  • Tags de solicitação : quando muitas equipes ou projetos compartilham o mesmo serviço de modelo. O chamador define a tag por solicitação, para que você atribua o uso dentro de um serviço compartilhado.

Adicione uma tag como team ou project ao serviço de modelo. Toda solicitação encaminhada por ele herda a tag.

  1. Na interface do usuário do workspace, vá para AI Gateway e abra o serviço de modelo.
  2. Na página Visão geral do serviço de modelo, na seção Tags , adicione uma tag como team = ml-platform.

As tags de serviço aparecem no campo endpoint_tags em system.ai_gateway.usage e se propagam para o campo custom_tags em system.billing.usage. Para obter detalhes sobre a criação e configuração de serviços de modelo, consulte Criar e gerenciar serviços de modelo.

nota

Qual tag usar para atribuição de custos depende do modelo:

  • Modelos fornecidos pelo Databricks : use tags de serviço . Apenas as tags de serviço são propagadas para system.billing.usage.
  • Modelos de fornecedores externos : use tags de serviço ou de solicitação . Ambos são propagados para system.ai_gateway.external_model_spend, que captura estimativas de gastos com modelos externos.

O passo 3: Analisar o uso por equipe ou projeto

prompt

Genie Code (modo Agente) pode fazer isso por você. Experimente este exemplo de prompt:

Query system.ai_gateway.usage for the past 30 days to show request count and total tokens by the 'team' service tag in endpoint_tags, model service, and destination model. Sort by total tokens, highest first.

Com as tags definidas, agregue o uso em system.ai_gateway.usage, que captura métricas de solicitação e de tokens para toda solicitação encaminhada para modelos fornecidos pelo Databricks e por provedores externos . Agrupe por endpoint_tags['team'] para tags de serviço, ou por request_tags['project'] para tags de solicitação:

SQL
SELECT
endpoint_tags['team'] AS team,
endpoint_name,
destination_model,
COUNT(*) AS request_count,
SUM(total_tokens) AS total_tokens
FROM system.ai_gateway.usage
WHERE endpoint_tags['team'] IS NOT NULL
GROUP BY endpoint_tags['team'], endpoint_name, destination_model
ORDER BY total_tokens DESC;

Para explorar qualquer uma das divisões sem SQL, use os filtros de tags na página de análise de custos.

O passo 4: Analisar gastos em dólares por equipe ou projeto

prompt

Genie Code (modo Agente) pode fazer isso por você. Experimente este exemplo de prompt:

Query system.billing.usage for MODEL_SERVING records from the past 30 days where usage_metadata.ai_gateway.endpoint_name is set. Convert DBUs to list-price USD using system.billing.list_prices at the price effective for each record, group by the 'team' service tag in custom_tags, and sort by cost.

Com as tags definidas, atribua os gastos em USD a uma equipe ou projeto. Para agrupar gastos por tag sem escrever SQL, vá para AI Gateway > Govern > Usage Dashboard > Cost Análise e use a seção Tag-based Cost Análise . Filtre por tag de endpoint ou tag de solicitação para ver Cost by Endpoint Tag Groups e Estimated Cost by Request Tag Groups .

Para atribuir gastos com SQL, a tabela que você query depende do tipo de modelo:

As tags de serviço se propagam para o campo custom_tags em system.billing.usage, para que você possa atribuir os gastos de preço de lista em USD a uma equipe da mesma forma que classificou os usuários no passo 1. Faça o join de system.billing.list_prices para converter o uso de DBU em dólares:

SQL
SELECT
u.custom_tags['team'] AS team,
SUM(u.usage_quantity * lp.pricing.effective_list.default) AS list_cost_usd
FROM system.billing.usage u
JOIN system.billing.list_prices lp
ON u.sku_name = lp.sku_name
AND u.cloud = lp.cloud
AND u.usage_unit = lp.usage_unit
AND u.usage_end_time >= lp.price_start_time
AND (lp.price_end_time IS NULL OR u.usage_end_time < lp.price_end_time)
WHERE u.billing_origin_product = 'MODEL_SERVING'
AND u.usage_metadata.ai_gateway.endpoint_name IS NOT NULL
AND u.custom_tags['team'] IS NOT NULL
AND u.usage_unit = 'DBU'
AND lp.currency_code = 'USD'
AND u.usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY team
ORDER BY list_cost_usd DESC;

o passo 5: Analisar o custo por tokens por equipe ou projeto

prompt

Genie Code (modo Agente) pode fazer isso por você. Experimente este exemplo de prompt:

Query system.billing.usage and system.ai_gateway.usage for the past 30 days to show list-price USD per million tokens by model service, destination model, and the 'team' service tag. Convert DBUs to dollars using system.billing.list_prices at the price effective for each record, and join the two tables on usage date.

O gasto total informa para onde o orçamento foi, mas não se você está pagando uma taxa justa por ele. O acompanhamento dos gastos de inferência como custo por 1M de tokens permite comparar modelos de destino, identificar regressões após uma alteração de roteamento ou justificar a mudança de tráfego para um modelo mais barato. Faça join da tabela de custos com system.ai_gateway.usage no serviço de modelo, modelo de destino e equipe. Ambas as tab agrupam pela tag de serviço team, portanto, os resultados se alinham com o passo 3:

Agregue o gasto de preço de lista e os tokens durante toda a janela e, em seguida, faça o join no serviço de modelo, no modelo de destino e na equipe. Faça o join de system.billing.list_prices para converter o uso de DBU em dólares:

SQL
WITH cost AS (
SELECT
u.usage_metadata.ai_gateway.endpoint_name AS endpoint_name,
u.usage_metadata.ai_gateway.destination_model AS destination_model,
u.custom_tags['team'] AS team,
SUM(u.usage_quantity * lp.pricing.effective_list.default) AS list_cost_usd
FROM system.billing.usage u
JOIN system.billing.list_prices lp
ON u.sku_name = lp.sku_name
AND u.cloud = lp.cloud
AND u.usage_unit = lp.usage_unit
AND u.usage_end_time >= lp.price_start_time
AND (lp.price_end_time IS NULL OR u.usage_end_time < lp.price_end_time)
WHERE u.billing_origin_product = 'MODEL_SERVING'
AND u.usage_metadata.ai_gateway.endpoint_name IS NOT NULL
AND u.custom_tags['team'] IS NOT NULL
AND u.usage_unit = 'DBU'
AND lp.currency_code = 'USD'
AND u.usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY ALL
),
tokens AS (
SELECT
endpoint_name,
destination_model,
endpoint_tags['team'] AS team,
SUM(total_tokens) AS total_tokens
FROM system.ai_gateway.usage
WHERE endpoint_tags['team'] IS NOT NULL
AND endpoint_name IS NOT NULL
AND event_time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY ALL
)
SELECT
c.endpoint_name,
c.destination_model,
c.team,
c.list_cost_usd,
t.total_tokens,
1000000 * c.list_cost_usd / NULLIF(t.total_tokens, 0) AS list_cost_usd_per_1m_tokens
FROM cost c
JOIN tokens t
ON c.endpoint_name = t.endpoint_name
AND c.destination_model = t.destination_model
AND c.team = t.team
ORDER BY list_cost_usd_per_1m_tokens DESC;
nota

O Unity AI Gateway não registra o uso de tokens para respostas que não sejam de transmissão ou de incorporação (embedding) maiores que 1 MiB, portanto, o custo por token pode parecer alto onde essas respostas são comuns. Compare as taxas dentro de uma carga de trabalho em vez de entre cargas não relacionadas.

Próximos passos