Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto tutoriálu analyzujete, co stojí za vašimi výdaji na základní model pomocí Unity Gateway. Náklady přisuzujete uživateli napříč modelovými službami, které spravujete, a pak přidáváte štítky pro sledování výdajů podle týmu, projektu nebo případu použití pomocí systémových tabulek:
-
system.billing.usage: Spotřeba Azure Databricks v jednotkách Databricks (DBU) pro modely poskytované službou Azure Databricks. -
system.billing.list_prices: katalogové ceny pro převod DBU na dolary. -
system.ai_gateway.usage: využití požadavků a tokenů pro každý požadavek. -
system.ai_gateway.external_model_spend: odhadované náklady v USD pro modely externích poskytovatelů.
Prerequisites
- Jedna nebo více modelových služeb Unity Gateway se síťovým provozem. Viz Vytvořit vlastní modelovou službu .
- Systémová tabulka zpoplatněného využití povolená pro váš účet. Viz Povolení systémových tabulek.
- Přístup k výše uvedeným systémovým tabulkám, který ve výchozím nastavení vyžaduje jak administrátorské role účtu, tak metastore. Viz Udělení přístupu k systémovým tabulkám.
Note
Odhady v dolarech v tomto kurzu vycházejí z katalogové ceny. Vylučují vyjednané slevy a kredity na fakturaci. Použijte je pro atribuci a analýzu trendů a fakturační výpis pro smíření.
Krok 1: Zjistěte, kteří uživatelé generují výdaje
Tip
Genie Code (režim agenta) to může udělat za vás. Vyzkoušejte tento příklad výzvy:
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.
Přejděte na AI Gateway > Govern > Usage Dashboard >Cost Analysis, kde se výdaje rozdělují podle modelu poskytovaného Databricks nebo externím poskytovatelem, koncového bodu a uživatele bez psaní SQL. Graf Top Users podle nákladů (USD) v rámci Cost Breakdown řadí největší utrácetele.
Alternativně se můžete dotazovat přímo do systémových tabulek, abyste zjistili, kdo spotřebovává nejvíce a kde. Tabulka, kterou dotazujete, závisí na typu modelu:
Modely poskytované Databricks
Dotazujte se na system.billing.usage a spojte jej s system.billing.list_prices, abyste převedli využití DBU na dolary. Pole identifikuje identity_metadata.run_by zmocněného, který vydal každou žádost:
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;
Externí modely
Pro požadavky směrované externím poskytovatelům prostřednictvím modelových služeb odhaduje Azure Databricks náklady v USD z využití tokenů a zveřejněných cen poskytovatele, upravených o jakýkoli násobitel ceny nastavený na službě modelového poskytovatele. Tento dotaz vrací stejné rozdělení jako dotaz poskytovaný Azure Databricks pro služby poskytovatele modelů:
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;
Krok 2: Nastavte sledování spotřeby a výdajů podle týmu nebo projektu
Útrata podle uživatele vám ukáže, kdo, ale ne který tým nebo projekt. Chcete-li přiřadit využití tokenů konkrétnímu týmu nebo projektu, označte svůj provoz štítky podle toho, jak jsou vaše modelové služby přiřazeny k týmům nebo projektům:
- Štítky služby (koncového bodu): když má každý tým nebo projekt vlastní modelovou službu. Tag se vztahuje na každý požadavek směrovaný přes danou modelovou službu, takže ho nastavíte jednou.
- Tagy požadavků: když mnoho týmů nebo projektů sdílí stejnou modelovou službu. Volající nastavuje tag pro každý požadavek, takže přisuzujete využití ve sdílené službě.
Značky služeb
Přidejte značku jako team nebo project do modelové služby. Každý požadavek směrovaný přes něj zdědí štítek.
- V rozhraní pracovního prostoru přejděte do AI Gateway a otevřete model service.
- Na stránce Přehledu modelové služby v sekci Štítky přidejte štítek například
team=ml-platform.
Servisní štítky se zobrazují v poli endpoint_tags v system.ai_gateway.usage a přenášejí se do pole custom_tags v system.billing.usage. Pro podrobnosti o vytváření a konfiguraci modelových služeb viz Vytvořit vlastní modelovou službu .
Štítky požadavků
Připojte ke konkrétním požadavkům tag, například project, pomocí hlavičky HTTP Databricks-Ai-Gateway-Request-Tags, což je objekt JSON, který mapuje řetězcové klíče na řetězcové hodnoty:
Databricks-Ai-Gateway-Request-Tags: {"project": "chatbot", "team": "ml-platform"}
Tagy požadavků se objevují v request_tags poli v .system.ai_gateway.usage Příklady, které nastavují hlavičku pomocí OpenAI SDK, Anthropic SDK a REST API, viz Tagování požadavků.
Note
Jaký tag použít pro atribuci nákladů závisí na modelu:
-
Modely poskytované Azure Databricks: používejte service tags. Pouze značky služby se přenášejí na
system.billing.usage. -
Modely od externích poskytovatelů: používejte značky služeb nebo značky požadavků. Oba se šíří do
system.ai_gateway.external_model_spend, které zachycuje odhady externích modelových výdajů.
Krok 3: Analyzujte využití podle týmu nebo projektu
Tip
Genie Code (režim agenta) to může udělat za vás. Vyzkoušejte tento příklad výzvy:
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.
S tagy na místě agregujte využití v system.ai_gateway.usage, které zachycuje metriky požadavků a tokenů pro každý požadavek směrovaný do modelů poskytovaných Azure Databricks a externích poskytovatelů. Seskupit podle endpoint_tags['team'] pro značky služby nebo podle request_tags['project'] pro značky požadavků:
Značky služeb
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;
Štítky požadavků
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;
Pro prozkoumání kterékoli z těchto variant bez SQL použijte filtry tagů na stránce analýzy nákladů.
Krok 4: Analyzujte finanční výdaje podle týmu nebo projektu
Tip
Genie Code (režim agenta) to může udělat za vás. Vyzkoušejte tento příklad výzvy:
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.
Po nastavení tagů přiřaďte výdaje v USD týmu nebo projektu. Chcete-li seskupit výdaje podle tagů bez psaní SQL, přejděte na AI Gateway > Govern > Usage Dashboard >Cost Analysis a použijte sekci Tag-based Cost Analysis . Filtrujte podle tagu endpointu nebo tagu požadavku, abyste viděli náklady podle skupin tagů endpointů a odhadované náklady podle skupin tagů požadavků.
Pro atributování výdajů pomocí SQL závisí tabulka, kterou dotazujete, na typu modelu:
Modely poskytované Databricks
Štítky služeb se přenášejí do pole custom_tags v system.billing.usage, takže můžete týmu přiřadit výdaje v ceníkových cenách v USD stejným způsobem, jako jste v kroku 1 seřadili uživatele. Připojte se k system.billing.list_prices a převeďte využití DBU na dolary:
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;
Externí modely
U externích modelůsystem.ai_gateway.external_model_spend již zaznamenává odhadované náklady v USD a v custom_tags zahrnuje jak značky služeb, tak značky požadavků, takže můžete seskupovat podle custom_tags.request_tags a přiřazovat náklady napříč službami podle projektu nebo týmu:
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;
Krok 5: Analyzujte náklady na token podle týmu nebo projektu
Tip
Genie Code (režim agenta) to může udělat za vás. Vyzkoušejte tento příklad výzvy:
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.
Celkové výdaje vám řeknou, kam šel rozpočet, ale ne, jestli za něj platíte férovou sazbu. Sledování výdajů na inferenci jako náklad na 1 milion tokenů vám umožní porovnat modely destinací, rozpoznat regresie po změně směrování nebo ospravedlnit přesun provozu na levnější model. Připojte se k tabulce system.ai_gateway.usage nákladů k modelové službě, cílovému modelu a týmu. Obě záložky jsou seskupeny podle tagu služby team, takže výsledky jsou v souladu s krokem 3:
Modely poskytované Databricks
Sečtěte výdaje podle ceníkových cen a tokeny za celé časové okno, poté je spojte podle služby modelu, cílového modelu a týmu. Připojte se k system.billing.list_prices a převeďte využití DBU na dolary:
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;
Externí modely
Agregujte výdaje a tokeny během celého okna, pak se připojte na službu poskytovatele modelu, cílový model a tým. Obě tabulky pokrývají stejné požadavky, takže součet za celé období nepotřebuje v podmínce spojení časový klíč:
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;
Pokud používáte tagy požadavků pro přiřazení týmu, nahraďte custom_tags.endpoint_tags['team'] je v tokenovém rollupu za custom_tags.request_tags['team'], a endpoint_tags['team'] za .request_tags['team']
Note
Unity Gateway nezaznamenává použití tokenů u nestreamovaných a neembeddingových odpovědí větších než 1 MiB, takže cena za token může být vysoká tam, kde jsou tyto odpovědi běžné. Porovnejte rychlosti v rámci pracovní zátěže, nikoli mezi nesouvisejícími pracovními zátěžemi.