Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze tutorial analyseer je waardoor de uitgaven voor je basismodel met Unity AI Gateway worden veroorzaakt. Je kent de kosten per gebruiker toe over de modelservices die je beheert, en voegt vervolgens tags toe om uitgaven per team, project of use case bij te houden met behulp van systeemtabellen:
-
system.billing.usage: Azure Databricks-verbruik in Databricks-units (DBU's) voor modellen geleverd door Azure Databricks. -
system.billing.list_prices: catalogusprijzen om DBU's naar dollars om te rekenen. -
system.ai_gateway.usage: verzoek en tokengebruik voor elk verzoek. -
system.ai_gateway.external_model_spend: geschatte kosten in USD voor externe leveranciersmodellen.
Prerequisites
- Een of meer Unity AI Gateway-modelservices met verkeer. Zie Create and manage model API's (model services).
- De systeemtabel voor factureerbaar gebruik ingeschakeld voor uw account. Zie Systeemtabellen inschakelen.
- Toegang tot de hierboven genoemde systeemtabellen, waarvoor standaard zowel account- als metastore-beheerdersrollen vereist zijn. Zie Verleen toegang tot systeemtabellen.
Note
De dollarschattingen in deze tutorial zijn gebaseerd op de lijstprijs. Ze sluiten onderhandelde kortingen en factureringscredits uit. Gebruik ze voor attributie- en trendanalyse, en je factuur voor afstemming.
Stap 1: Kijk welke gebruikers de uitgaven stimuleren
Tip
Genie Code (agentmodus) kan dit voor u doen. Probeer dit voorbeeldprompt:
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.
Ga naar AI Gateway > Govern > Usage Dashboard >Kostenanalyse, waarmee u de uitgaven kunt uitsplitsen per model van Databricks of van een externe provider, endpoint en gebruiker, zonder SQL te schrijven. De Top Users by Cost (USD)-grafiek onder Cost Breakdown rangschikt de grootste spenders.
Of vraag direct in de systeemtabellen wie het meest verbruikt en waar. De tabel die je opzoekt hangt af van het modeltype:
door Databricks geleverde modellen
Zoek system.billing.usage op en sluit je aan system.billing.list_prices om DBU-gebruik om te zetten in dollars. Het identity_metadata.run_by veld identificeert de principal die elk verzoek heeft ingediend:
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;
Externe modellen
Voor verzoeken die via modelproviders naar externe providers worden gestuurd, schat Azure Databricks de kosten in USD uit tokengebruik en de door de provider gepubliceerde prijzen, vastgelegd in system.ai_gateway.external_model_spend. Deze query geeft dezelfde uitsplitsing als de door Azure Databricks geleverde query voor model provider services:
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;
Stap 2: Stel het bijhouden van gebruik en uitgaven per team of project in
Uitgaven per gebruiker vertellen je wie, maar niet welk team of project. Om tokengebruik toe te wijzen aan een team of project, tag je je verkeer op basis van hoe je model zich verwijst naar teams of projecten:
- Service (endpoint) tags: wanneer elk team of project zijn eigen modelservice heeft. De tag geldt voor elk verzoek dat via die modelservice wordt geleid, dus je hoeft die maar één keer in te stellen.
- Request tags: wanneer veel teams of projecten hetzelfde model service delen. De aanroeper stelt de tag voor elk verzoek in, zodat je het gebruik binnen een gedeelde dienst kunt toeschrijven.
Service-tags
Voeg een tag toe zoals team of project aan de modelservice. Elk verzoek dat erdoorheen wordt geleid, erft de tag.
- Ga in de workspace-interface naar AI Gateway en open de modelservice.
- Voeg op de overzichtspagina van de modelservice, onder de sectie Tags , een tag toe zoals
team=ml-platform.
Servicetags verschijnen in het endpoint_tags veld in system.ai_gateway.usage en verspreiden zich naar het custom_tags veld in system.billing.usage. Voor details over het creëren en configureren van modelservices, zie Create and manage model API's (model services).
Tags aanvragen
Voeg een tag toe zoals project aan individuele verzoeken met de Databricks-Ai-Gateway-Request-Tags HTTP-header, een JSON-object dat stringsleutels koppelt aan stringwaarden:
Databricks-Ai-Gateway-Request-Tags: {"project": "chatbot", "team": "ml-platform"}
Verzoektags verschijnen in het request_tags veld in system.ai_gateway.usage. Voor voorbeelden die de header instellen met de OpenAI SDK, Anthropic SDK en REST API, zie Tagverzoeken voor gebruikstracking.
Note
Welke tag te gebruiken voor kostenattributie hangt af van het model:
-
Azure Databricks-geleverde modellen: gebruik servicetags. Alleen servicetags planten zich voort naar
system.billing.usage. -
Externe aanbiedersmodellen: gebruik service- of verzoektags. Beide worden doorgegeven aan
system.ai_gateway.external_model_spend, wat uitgavenschattingen voor externe modellen vastlegt.
Stap 3: Analyseer het gebruik per team of project
Tip
Genie Code (agentmodus) kan dit voor u doen. Probeer dit voorbeeldprompt:
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.
Zodra tags zijn ingesteld, wordt het gebruik geaggregeerd in system.ai_gateway.usage, waarin verzoek- en tokenmetingen worden vastgelegd voor elk verzoek dat wordt doorgestuurd naar door Azure Databricks geleverde modellen en modellen van externe aanbieders. Groeperen op basis van endpoint_tags['team'] voor servicetags, of op basis van request_tags['project'] voor verzoektags:
Service-tags
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;
Tags aanvragen
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;
Om beide uitsplitsingen zonder SQL te verkennen, gebruik de tagfilters op de pagina Kostenanalyse.
Stap 4: Analyseer de uitgaven per team of project
Tip
Genie Code (agentmodus) kan dit voor u doen. Probeer dit voorbeeldprompt:
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.
Met tags op zijn plaats, schrijf je de uitgaven in USD toe aan een team of project. Om uitgaven per tag te groeperen zonder SQL te schrijven, ga naar AI Gateway > Govern > Usage Dashboard >Cost Analysis en gebruik de Tag-based Cost Analysis-sectie . Filter op endpointtag of requesttag om Kosten per endpointtaggroep en Geschatte kosten per requesttaggroep te bekijken.
Om attributenbesteding met SQL te bepalen, hangt de tabel die je zoekt af van het modeltype:
door Databricks geleverde modellen
Servicetags verspreiden zich naar het custom_tags veld in system.billing.usage, zodat je de vermeldingsprijsuitgaven in USD aan een team kunt toewijzen, net zoals je gebruikers in Stap 1 hebt gerangschikt. Sluit je aan system.billing.list_prices om DBU-gebruik om te zetten in dollars:
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;
Externe modellen
Voor externe modellen registreert system.ai_gateway.external_model_spend al de geschatte kosten in USD en bevat zowel servicetags als verzoektags in custom_tags, zodat je kunt groeperen om custom_tags.request_tags uitgaven toe te wijzen over diensten per project of 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;
Stap 5: Analyseer kosten per token per team of project
Tip
Genie Code (agentmodus) kan dit voor u doen. Probeer dit voorbeeldprompt:
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.
De totale uitgaven geven aan waar het budget naartoe is gegaan, maar niet of je er een eerlijk tarief voor betaalt. Door inferentieuitgaven als kosten per 1 miljoen tokens te volgen, kun je bestemmingsmodellen vergelijken, regressies na een routeringswijziging spotten, of het verkeer verplaatsen naar een goedkoper model rechtvaardigen. Koppel de kostentabel aan system.ai_gateway.usage op basis van de modelservice, het bestemmingsmodel en het team. Beide tabbladen groeperen op servicetag team , zodat de resultaten overeenkomen met Stap 3:
door Databricks geleverde modellen
Tel de uitgaven tegen lijstprijs en de tokens over de volledige periode op en voeg deze vervolgens samen op basis van de modelservice, het bestemmingsmodel en het team. Sluit je aan system.billing.list_prices om DBU-gebruik om te zetten in dollars:
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;
Externe modellen
Aggregeer uitgaven en tokens over het volledige venster en voeg deze vervolgens samen op basis van de service van de modelprovider, het doelmodel en het team. Beide tabellen dekken dezelfde verzoeken, dus een totaal op periodeniveau heeft geen tijdsleutel nodig in de join:
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;
Als je requesttags gebruikt voor teamtoewijzing, vervang je custom_tags.endpoint_tags['team'] door custom_tags.request_tags['team'] en endpoint_tags['team'] door request_tags['team'] in de tokenrollup.
Note
Unity AI Gateway registreert geen tokengebruik voor niet-streamende, niet-embeddingreacties groter dan 1 MiB, waardoor de kosten per token hoog kunnen lijken in situaties waarin zulke reacties vaak voorkomen. Vergelijk tarieven, binnen een werklast in plaats van tussen niet-gerelateerde werklasten.