Handledning: Följ grundmodellens utgifter per användare, team eller projekt

I denna handledning analyserar du vad som driver din grundmodellinvestering med Unity AI Gateway. Du tilldelar kostnad per användare över de modelltjänster du styr, och lägger sedan till taggar för att följa utgifter per team, projekt eller användningsfall med hjälp av systemtabeller:

Prerequisites

Note

Uppskattningarna i dollar i denna handledning baseras på listpris. De exkluderar förhandlade rabatter och faktureringskrediter. Använd dem för attribuering och trendanalys, samt din faktura för avstämning.

Steg 1: Se vilka användare som står för utgifterna

Tip

Genie Code (agentläge) kan göra detta åt dig. Prova den här exempelprompten:

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.

Gå till AI Gateway > Styrning > Användningsöversikt >Kostnadsanalys, som delar upp kostnaderna efter modell från Databricks eller extern leverantör, endpoint och användare utan att du behöver skriva SQL. Tabellen för de största användarna efter kostnad (USD) under kostnadsfördelning rankar de största spenderarna.

Alternativt, fråga systemtabellerna direkt för att se vem som använder mest och var. Tabellen du frågar beror på modelltypen:

Databricks-levererade modeller

Sök system.billing.usage och gå med system.billing.list_prices för att omvandla DBU-användning till dollar. Fältet identity_metadata.run_by identifierar huvudpersonen som utfärdade varje begäran:

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;

Externa modeller

För förfrågningar som skickas till externa leverantörer via modellleverantörstjänster uppskattar Azure Databricks kostnaden i USD från tokenanvändning och leverantörens publicerade priser, fångade i system.ai_gateway.external_model_spend. Denna fråga ger samma uppdelning som Azure Databricks-tillhandahållen fråga för modellleverantörstjänster:

SELECT
  usage_metadata.endpoint_name AS model_provider_service_name,
  identity_metadata.run_by AS run_by,
  SUM(usage_quantity) AS estimated_provider_cost_usd
FROM system.ai_gateway.external_model_spend
WHERE identity_metadata.run_by IS NOT NULL
  AND usage_start_time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY run_by, model_provider_service_name
ORDER BY estimated_provider_cost_usd DESC;

Steg 2: Sätt upp användnings- och utgiftsspårning per team eller projekt

Kostnad per användare visar dig vem, men inte vilket team eller projekt. För att tilldela tokenanvändning till ett team eller projekt, tagga din trafik baserat på hur din modell hanterar team eller projekt:

  • Service (endpoint) taggar: när varje team eller projekt har sin egen modelltjänst. Taggen gäller för varje förfrågan som routas genom den modelltjänsten, så du sätter den en gång.
  • Förfrågningstaggar: när många team eller projekt delar samma modelltjänst. Anroparen sätter taggen per förfrågan, så du tilldelar användningen inom en delad tjänst.

Tjänstetaggar

Lägg till en tagg som team eller project till modelltjänsten. Varje förfrågan som skickas genom den ärver taggen.

  1. I arbetsytans gränssnitt, gå till AI Gateway och öppna modelltjänsten.
  2. På sidan Översikt över modelltjänsten, under avsnittet Taggar , lägg till en tagg såsom team = ml-platform.

Servicetaggar förekommer i endpoint_tags fältet i system.ai_gateway.usage och propagerar till custom_tags fältet i system.billing.usage. För detaljer om att skapa och konfigurera modelltjänster, se Skapa och hantera modell-API:er (modelltjänster).

Taggar för begäran

Bifoga en tagg såsom project till enskilda förfrågningar med Databricks-Ai-Gateway-Request-Tags HTTP-headern, ett JSON-objekt som mappar strängnycklar till strängvärden:

Databricks-Ai-Gateway-Request-Tags: {"project": "chatbot", "team": "ml-platform"}

Begäran-taggar request_tags visas i fältet i system.ai_gateway.usage. För exempel som sätter headern med OpenAI SDK, Anthropic SDK och REST API, se Tag-förfrågningar för användningsspårning.

Note

Vilken tagg som ska användas för kostnadsattribution beror på modellen:

  • Azure Databricks-levererade modeller: använd servicetaggar. Endast servicetaggar propagerar till system.billing.usage.
  • Externa leverantörsmodeller: använd service- eller begäran-taggar. Båda vidarebefordras till system.ai_gateway.external_model_spend, som fångar uppskattningar av kostnader för externa modeller.

Steg 3: Analysera användningen per team eller projekt

Tip

Genie Code (agentläge) kan göra detta åt dig. Prova den här exempelprompten:

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.

Med taggar på plats aggregeras användningen i system.ai_gateway.usage, som fångar förfrågnings- och tokenmetrik för varje förfrågan som dirigeras till modeller som tillhandahålls av Azure Databricks och externa leverantörer. Gruppera efter endpoint_tags['team'] för tjänsttaggar, eller efter request_tags['project'] för begärandetaggar:

Tjänstetaggar

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;

Taggar för begäran

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

För att utforska någon av dessa uppdelningar utan SQL, använd taggfiltren på sidan Kostnadsanalys.

Steg 4: Analysera utgifter per team eller projekt

Tip

Genie Code (agentläge) kan göra detta åt dig. Prova den här exempelprompten:

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.

Med taggar på plats kan du attribuera kostnader i USD till ett team eller projekt. För att gruppera utgifter efter tagg utan att skriva SQL, gå till AI Gateway > Govern > Usage Dashboard >Cost Analysis och använd avsnittet Tag-baserad kostnadsanalys . Filtrera efter endpoint tagg eller request tag för att se kostnad per endpoint tag groups och uppskattad kostnad per request tag group.

För att attribuera utgifter med SQL beror vilken tabell du frågar mot på modelltypen:

Databricks-levererade modeller

Tjänsttaggar överförs till fältet custom_tags i system.billing.usage, så att du kan attribuera utgifter till listpris i USD till ett team på samma sätt som du rangordnade användare i steg 1. Gå med system.billing.list_prices för att omvandla DBU-användning till dollar:

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;

Externa modeller

För externa modellersystem.ai_gateway.external_model_spend registrerar redan uppskattad kostnad i USD och inkluderar både servicetaggar och begärantagstaggar i custom_tags, så du kan gruppera efter custom_tags.request_tags för att fördela utgifter över tjänster per projekt eller team:

SELECT
  custom_tags.request_tags['team'] AS team,
  SUM(usage_quantity) AS estimated_provider_cost_usd
FROM system.ai_gateway.external_model_spend
WHERE custom_tags.request_tags['team'] IS NOT NULL
  AND usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY team
ORDER BY estimated_provider_cost_usd DESC;

Steg 5: Analysera kostnad per token per team eller projekt

Tip

Genie Code (agentläge) kan göra detta åt dig. Prova den här exempelprompten:

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.

Totalkostnaden visar vart budgeten tog vägen, men inte om du betalar ett rättvist pris för den. Att följa inferensutgifter som kostnad per 1 miljon tokens låter dig jämföra destinationsmodeller, upptäcka regressioner efter en routingändring eller motivera att flytta trafik till en billigare modell. Sammanfoga kostnadstabellen med system.ai_gateway.usage utifrån modelltjänst, destinationsmodell och team. Båda flikarna grupperas efter servicetaggen team , så resultaten stämmer överens med steg 3:

Databricks-levererade modeller

Samla listprisutgifter och tokens över hela fönstret, och gå sedan med i modelltjänsten, destinationsmodellen och teamet. Gå med system.billing.list_prices för att omvandla DBU-användning till dollar:

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;

Externa modeller

Samla utgifter och tokens över hela fönstret, och gå sedan med i modellleverantörens tjänst, destinationsmodell och team. Båda tabellerna omfattar samma begäranden, så en total på periodnivå behöver ingen tidsnyckel i sammanfogningen:

WITH spend AS (
  SELECT
    usage_metadata.endpoint_name AS endpoint_name,
    usage_metadata.model AS destination_model,
    custom_tags.endpoint_tags['team'] AS team,
    SUM(usage_quantity) AS estimated_provider_cost_usd
  FROM system.ai_gateway.external_model_spend
  WHERE custom_tags.endpoint_tags['team'] IS NOT NULL
    AND 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 destination_model IS NOT NULL
    AND event_time >= current_timestamp() - INTERVAL 30 DAYS
  GROUP BY ALL
)
SELECT
  s.endpoint_name,
  s.destination_model,
  s.team,
  s.estimated_provider_cost_usd,
  t.total_tokens,
  1000000 * s.estimated_provider_cost_usd / NULLIF(t.total_tokens, 0) AS estimated_cost_usd_per_1m_tokens
FROM spend s
JOIN tokens t
  ON  s.endpoint_name     = t.endpoint_name
  AND s.destination_model = t.destination_model
  AND s.team              = t.team
ORDER BY estimated_cost_usd_per_1m_tokens DESC;

Om du använder begärandetaggar för teamtilldelning, ersätt custom_tags.endpoint_tags['team'] med custom_tags.request_tags['team'] och endpoint_tags['team'] med request_tags['team'] i tokensammanställningen.

Note

Unity AI Gateway registrerar inte tokenanvändning för icke-streamande svar och svar som inte är embedding-svar som är större än 1 MiB, så den redovisade kostnaden per token kan verka hög i miljöer där sådana svar är vanliga. Jämför priser inom en arbetsbelastning snarare än mellan orelaterade arbetsuppgifter.

Nästa steg