メインコンテンツまでスキップ

チュートリアル: ユーザー、チーム、またはプロジェクト別の基盤モデルの支出を追跡する

備考

ベータ版

この機能はベータ版です。アカウント管理者は、アカウント コンソールの [プレビュー] ページからこの機能へのアクセスを管理できます。Databricksのプレビューを管理するを参照してください。

このチュートリアルでは、Unity AIゲートウェイを使用して、基盤モデルの支出要因を分析します。管理対象のモデルサービス全体でユーザーごとにコストを割り当て、システムテーブルを使用してチーム、プロジェクト、またはユースケース別に支出を追跡するためのタグを追加します:

前提条件

注記

このチュートリアルでの米ドル建ての見積もりは、 定価 に基づいています。これらには、交渉による割引や請求クレジットは含まれません。これらを属性付けや傾向分析に使用し、請求明細書を照合するために使用します。

ステップ 1: 支出を発生させているユーザーを確認する

プロンプト

Genie Code(エージェントモード)が、代わりに実行できます。このプロンプト例を試す:

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.

AI Gateway > Govern > Usage Dashboard > Cost Analysis に移動します。ここでは、SQLを記述することなく、Databricks提供または外部プロバイダーのモデル、Endpoint、ユーザーごとに支出の内訳を確認できます。「コストの内訳」の下にある「コスト別トップユーザー (USD)」チャートは、支出の多いユーザーをランク付けします。

あるいは、システムテーブルを直接クエリーして、誰がどこで最も消費しているかを確認することもできます。クエリー対象のテーブルはモデルタイプによって異なります。

system.billing.usageをクエリーし、system.billing.list_pricesを結合してDBU使用量をドルに換算します。identity_metadata.run_byフィールドは、各リクエストを発行したプリンシパルを識別します:

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;

ステップ 2: チームまたはプロジェクト別の使用量と支出の追跡を設定する

ユーザー別の支出では 誰が 使用したかはわかりますが、 どのチームやプロジェクト かはわかりません。トークンの使用量をチームやプロジェクトに帰属させるには、モデルサービスがチームやプロジェクトにどのようにマッピングされるかに基づいてトラフィックにタグを付けます:

  • サービス(Endpoint)タグ :各チームまたはプロジェクトが独自のモデルサービスを持つ場合。このタグは、そのモデルサービスを経由してルーティングされるすべてのリクエストに適用されるため、一度設定するだけで済みます。
  • リクエストタグ :多くのチームやプロジェクトが同じモデルサービスを共有する場合。呼び出し元がリクエストごとにタグを設定するため、共有サービス での利用状況を割り当てることができます。

モデルサービスにteamprojectなどのタグを追加します。それを経由してルーティングされるすべてのリクエストは、そのタグを継承します。

  1. ワークスペースUIで、 AI Gateway に移動し、モデルサービスを開きます。
  2. モデルサービスの 概要 ページで、 タグ セクションの下に team = ml-platform のようなタグを追加します。

サービスタグは system.ai_gateway.usageendpoint_tags フィールドに表示され、system.billing.usagecustom_tags フィールドに伝播します。モデルサービスの作成と設定の詳細については、モデルサービスの作成と管理を参照してください。

注記

コスト配分にどのタグを使用するかは、モデルによって異なります:

  • Databricks 提供モデル : サービス タグ を使用します。サービス タグのみが system.billing.usage に伝播します。
  • 外部プロバイダーモデル : サービスまたはリクエストのタグ を使用します。どちらも system.ai_gateway.external_model_spend に伝播し、そこで外部モデルの推定支出が取得されます。

ステップ 3: チームまたはプロジェクト別の使用状況を分析する

プロンプト

Genie Code(エージェントモード)が、代わりに実行できます。このプロンプト例を試す:

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.

タグを設定すると、system.ai_gateway.usageで利用状況を集計できます。これには、 Databricksが提供するモデルおよび外部プロバイダーのモデルにルーティングされるすべてのリクエスト のリクエストメトリクスとトークンメトリクスが記録されます。サービスタグの場合はendpoint_tags['team']でグループ化し、リクエストタグの場合はrequest_tags['project']でグループ化します:

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;

SQLを使用せずにいずれかの内訳を探索するには、コスト分析ページのタグフィルターを使用します。

ステップ 4:チームまたはプロジェクト別のドル建て支出を分析する

プロンプト

Genie Code(エージェントモード)が、代わりに実行できます。このプロンプト例を試す:

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.

タグを設定することで、USDでの支出をチームまたはプロジェクトに配分できます。SQLを記述せずにタグ別に支出をグループ化するには、 AI Gateway > Govern > Usage Dashboard > Cost Analysis に移動し、 Tag-based Cost Analysis セクションを使用します。Endpointタグまたはリクエストタグでフィルタリングして、 Cost by Endpoint タグ グループ および Estimated Cost by Request タグ グループ を表示します。

SQLを使用して支出を配分する場合、クエリー対象のテーブルはモデルタイプによって異なります。

サービスタグは system.billing.usagecustom_tags フィールドに反映されるため、ステップ 1 でユーザーをランク付けしたのと同じ方法で、リスト価格の USD 支出をチームに割り当てることができます。DBU の使用量をドルに換算するには system.billing.list_prices を結合してください:

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;

ステップ 5: チームまたはプロジェクトごとのトークンあたりのコストを分析する

プロンプト

Genie Code(エージェントモード)が、代わりに実行できます。このプロンプト例を試す:

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.

総支出は予算がどこに使われたかを示しますが、適正な料金を支払っているかどうかまでは示しません。推論の支出を100万トークンあたりのコストとして追跡することで、宛先モデルの比較、ルーティング変更後の回帰の特定、またはより安価なモデルへのトラフィック移行の正当化が可能になります。コストテーブルを、モデルサービス、宛先モデル、およびチームに基づいてsystem.ai_gateway.usageに結合します。両方のtabはteamサービスタグでグループ化されるため、結果はステップ3と一致します:

全期間にわたってリスト価格の支出とトークンを集計し、モデルサービス、宛先モデル、およびチームで結合します。system.billing.list_prices を結合して、DBU 使用量をドルに変換します:

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;
注記

Unity AI Gateway は、1 MiB を超える非ストリーミングかつ非埋め込みのレスポンスに対するトークン使用量を記録しないため、そのようなレスポンスが一般的な環境ではトークンあたりのコストが高く表示される場合があります。関連のないワークロード間ではなく、ワークロード内の料金を比較してください。

次のステップ