Aller au contenu principal

Tutoriel : Suivre les dépenses liées aux modèles de fondation par utilisateur, équipe ou projet

info

Bêta

Cette fonctionnalité est en bêta. Les administrateurs de compte peuvent gérer l'accès à cette fonctionnalité depuis la page Aperçus de la console de compte. Voir Gérer les prévisualisations Databricks.

Dans ce tutoriel, vous analysez ce qui influence vos dépenses liées aux modèles de fondation avec Unity AI Gateway. Vous attribuez les coûts par utilisateur sur les services de modèle que vous gérez, puis ajoutez des tags pour suivre les dépenses par équipe, projet ou cas d'utilisation à l'aide des tables système :

Prérequis

remarque

Les estimations en dollars dans ce tutoriel sont basées sur le prix catalogue . Elles excluent les remises négociées et les crédits de facturation. Utilisez-les pour l’attribution et l’analyse des tendances, ainsi que votre relevé de facturation pour le rapprochement.

Étape 1 : voir quels utilisateurs génèrent des dépenses

prompt

Genie Code (mode Agent) peut le faire pour vous. Essayez cet exemple d'invite :

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.

Accédez à AI Gateway > Govern > Usage Dashboard > Cost analyse , qui détaille les dépenses par modèle fourni par Databricks ou par un fournisseur externe, par Endpoint et par utilisateur sans écrire de SQL. Le graphique Top Users by Cost (USD) sous Cost Breakdown classe les principaux utilisateurs en termes de dépenses.

Alternativement, query directement les tables système pour voir qui consomme le plus et où. La table que vous query dépend du type de modèle :

query system.billing.usage et joignez system.billing.list_prices pour convertir l'utilisation de DBU en dollars. Le champ identity_metadata.run_by identifie le principal qui a émis chaque requête :

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;

Étape 2 : configurer le suivi de l’utilisation et des dépenses par équipe ou par projet

Les dépenses par utilisateur vous indiquent qui , mais pas quelle équipe ou quel projet . Pour attribuer l’utilisation des jetons à une équipe ou à un projet, étiquetez votre trafic en fonction de la manière dont vos services de modèle sont mappés aux équipes ou aux projets :

  • Balises de service (endpoint) : lorsque chaque équipe ou projet possède son propre service de modèle. La balise s'applique à chaque requête acheminée via ce service de modèle, vous ne la définissez donc qu'une seule fois.
  • Tags de requête : lorsque plusieurs équipes ou projets partagent le même service de modèle. L’appelant définit le tag par requête, ce qui vous permet d’attribuer l’utilisation au sein d’un service partagé.

Ajoutez un tag tel que team ou project au service de modèle. Chaque requête acheminée via celui-ci hérite du tag.

  1. Dans l'interface utilisateur du workspace, accédez à AI Gateway et ouvrez le service de modèle.
  2. Sur la page Overview du service de modèle, dans la section Tags , ajoutez un tag tel que team = ml-platform.

Les tags de service apparaissent dans le champ endpoint_tags dans system.ai_gateway.usage et se propagent vers le champ custom_tags dans system.billing.usage. Pour plus de détails sur la création et la configuration des services de modèle, consultez Créer et gérer des services de modèle.

remarque

Le tag à utiliser pour l'attribution des coûts dépend du modèle :

  • Modèles fournis par Databricks : utilisez des service tags . Seuls les service tags se propagent vers system.billing.usage.
  • Modèles de fournisseur externe : utilisez des tags de service ou de requête . Les deux se propagent vers system.ai_gateway.external_model_spend, qui capture les estimations de dépenses des modèles externes.

Étape 3 : analyser l’utilisation par équipe ou par projet

prompt

Genie Code (mode Agent) peut le faire pour vous. Essayez cet exemple d'invite :

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.

Une fois les tags en place, agrégez l'utilisation dans system.ai_gateway.usage, qui capture les indicateurs de requête et de jeton pour chaque requête acheminée vers les modèles fournis par Databricks et les modèles de fournisseurs externes . Grouper par endpoint_tags['team'] pour les tags de service, ou par request_tags['project'] pour les tags de requête :

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;

Pour explorer l'une ou l'autre répartition sans SQL, utilisez les filtres de tags sur la page d'analyse des coûts.

Étape 4 : Analyser les dépenses en dollars par équipe ou par projet

prompt

Genie Code (mode Agent) peut le faire pour vous. Essayez cet exemple d'invite :

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.

Une fois les tags en place, attribuez les dépenses en USD à une équipe ou à un projet. Pour regrouper les dépenses par tag sans écrire de SQL, accédez à AI Gateway > Govern > Usage Dashboard > Cost analyse et utilisez la section Tag-based Cost analyse . Filtrer par tag d'endpoint ou tag de requête pour voir Cost by Endpoint Tag Groups et Estimated Cost by Request Tag Groups .

Pour attribuer les dépenses avec SQL, la table que vous query dépend du type de modèle :

Les balises de service se propagent vers le champ custom_tags dans system.billing.usage, afin que vous puissiez attribuer les dépenses au prix catalogue en USD à une équipe de la même manière que vous avez classé les utilisateurs à l'étape 1. Joignez system.billing.list_prices pour convertir l'utilisation des DBU en dollars :

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;

Étape 5 : Analyser le coût par jeton par équipe ou par projet

prompt

Genie Code (mode Agent) peut le faire pour vous. Essayez cet exemple d'invite :

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.

Les dépenses totales vous indiquent où le budget a été alloué, mais pas si vous payez un tarif équitable. Le suivi des dépenses d'inférence sous forme de coût par million de jetons vous permet de comparer les modèles de destination, de détecter les régressions après un changement de routage ou de justifier le transfert du trafic vers un modèle moins coûteux. Joignez la table des coûts à system.ai_gateway.usage sur le service de modèle, le modèle de destination et l'équipe. Les deux onglets sont regroupés par le tag de service team, de sorte que les résultats correspondent à l'étape 3 :

Agrégez les dépenses au prix catalogue et les jetons sur toute la fenêtre, puis effectuez une jointure sur le service de modèle, le modèle de destination et l’équipe. Joignez system.billing.list_prices pour convertir l’utilisation de DBU en dollars :

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;
remarque

Unity AI Gateway n’enregistre pas l’utilisation des jetons pour les réponses non-streaming et non-embedding supérieures à 1 Mio ; le coût par jeton peut donc paraître élevé là où ces réponses sont courantes. Comparez les taux au sein d’une même charge de travail plutôt qu’entre des charges sans rapport.

Étapes suivantes