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

モデルサービングのコスト監視

この記事では、システムテーブルを使用して、Databricksアカウントの Mosaic AI Model Serving エンドポイントのコストを監視する方法の例を示します。

必要条件

  • システムテーブルにアクセスするには、ワークスペースが Unity Catalogに対して有効になっている必要があります。 詳細については、「 Access システムテーブル」を参照してください。

請求使用量システムテーブル SKU

Databricksでのモデルサービング費用は、課金利用 システムテーブルを使用して追跡できます。請求使用量システムテーブルを有効にすると、 Databricks アカウントの最新の使用量がテーブルに自動的に入力されます。 コストは、 system.billing.usage テーブルに表示され、列 sku_name は次のいずれかとして表示されます。

sku_name

説明

<tier>_SERVERLESS_REAL_TIME_INFERENCE_LAUNCH_<region>

この SKU には、エンドポイントが 0 にスケーリングした後に開始したときに発生したすべての DBU が含まれます。

<tier>_SERVERLESS_REAL_TIME_INFERENCE_<region>

他のすべてのモデルサービングコストは、この SKUにまとめられています。 ここで、 tier は Databricks プラットフォーム層に対応し、 region は Databricks デプロイのクラウド リージョンに対応します。

使用状況のクエリと視覚化

system.billing.usageテーブルをクエリして、Mosaic AI Model Servingに関連付けられているすべての DBU (Databricks ユニット) を集計できます。次に、 SQLを使用して過去 30 日間のモデルサービング DBU を 1 日あたりに集計するクエリの例を示します。

SQL

SELECT SUM(usage_quantity) AS model_serving_dbus,
usage_date
FROM system.billing.usage
WHERE sku_name LIKE '%SERVERLESS_REAL_TIME_INFERENCE%'
GROUP BY(usage_date)
ORDER BY usage_date DESC

LIMIT 30

バッチ推論ワークロードの使用量

system.billing.usage テーブルに対してクエリを実行して、バッチ推論ワークロードに使用された DBU (Databricks ユニット) を分離できます。

SQL

SELECT *
FROM system.billing.usage u
WHERE u.workspace_id = <workspace_id>
AND u.billing_origin_product = "MODEL_SERVING"
AND u.product_features.model_serving.offering_type = "BATCH_INFERENCE"

バッチ推論ワークロードを持つすべてのモデルサービングエンドポイントのリストについては、以下を使用します。

SQL

SELECT DISTINCT(usage_metadata.endpoint_name)
FROM system.billing.usage
WHERE u.workspace_id = <workspace_id>
AND u.billing_origin_product = "MODEL_SERVING"
AND u.product_features.model_serving.offering_type = "BATCH_INFERENCE";

その他の例については、「 バッチ推論ワークロードのコストを表示する 」を参照してください。

コスト監視ダッシュボード

モデルサービングコストのモニタリングを開始するには、 GitHubからサンプルのコストアトリビューションダッシュボードをダウンロードしてください。 モデルサービングコストアトリビューションダッシュボードを参照してください。

JSON ファイルをダウンロードしたら、ダッシュボードをワークスペースにインポートします。 ダッシュボードのインポート手順については、「 ダッシュボード ファイルのインポート」を参照してください。

このダッシュボードの使用方法

このダッシュボードは AI/BI を利用しており、システムテーブルにアクセスできる必要があります。 これにより、ワークスペースレベルでのサービングエンドポイントのコストと使用状況の知見が得られます。

次の手順で開始します。

  1. ワークスペース ID を入力します。
  2. 開始日と終了日を選択します。
  3. ダッシュボードをフィルタリングするには、ドロップダウンリストで特定のエンドポイント名を選択します (特定のエンドポイントに関心がある場合)。
  4. エンドポイントにカスタムタグを使用する場合は、タグキーを個別に入力します。
注記

モデルサービングは、ワークスペースにデフォルト制限を適用して、暴走する支出がないことを確認します。 モデルサービングの制限と地域を参照してください。

使用できるグラフ

このダッシュボードには、次のグラフが含まれています。 これらは、モデルサービングコストアトリビューションダッシュボードの独自のカスタマイズバージョンを構築するための出発点となることを目的としています。

  • 過去 7 日間の上位エンドポイント消費量

  • 日次合計$DBU使用量

  • エンドポイントタイプ別のモデルサービングコスト

    • トークンごとの従量課金制
    • CPU/GPU
    • 基盤モデル
  • モデルサービングタイプごとの毎日の消費量

  • 最もコストのかかるエンドポイントトップ10

  • 最もコストがかかっているトークン単位の従量課金エンドポイントトップ10

  • LLM ファインチューニングの過去7日間におけるコスト

  • EメールごとのLLM ファインチューニングのコスト

タグを使用してコストを監視する

最初は、モデルサービングの全体的なコストを観察するには、集計されたコストで十分である場合があります。 ただし、エンドポイントの数が増えると、ユースケース、ビジネスユニット、またはその他のカスタム識別子に基づいてコストを分割したい場合があります。 モデルサービングは、モデルサービングエンドポイントに適用できるカスタムタグの作成をサポートしています。

モデルサービングエンドポイントに適用されたすべてのカスタムタグは、custom_tags列の下のsystem.billing.usageテーブルに伝播され、コストの集計と視覚化に使用できます。Databricks では、正確なコスト追跡のために、各エンドポイントにわかりやすいタグを追加することをお勧めします。

クエリの例

コスト別の上位エンドポイント:

SQL

SELECT
usage_metadata.endpoint_name AS endpoint_name,
SUM(usage_quantity) AS model_serving_dbus
FROM
system.billing.usage
WHERE
sku_name LIKE '%SERVERLESS_REAL_TIME_INFERENCE%'
AND usage_metadata.endpoint_name IS NOT NULL
GROUP BY endpoint_name
ORDER BY model_serving_dbus DESC
LIMIT 30;

タグ("business_unit": "data science")の経時的なコスト:

SQL

SELECT
SUM(usage_quantity) AS model_serving_dbus,
usage_date
FROM
system.billing.usage
WHERE sku_name LIKE '%SERVERLESS_REAL_TIME_INFERENCE%'
AND custom_tags['business_unit'] = 'data science'
GROUP BY usage_date
ORDER BY usage_date DESC

LIMIT 30

追加のリソース

アカウント内のジョブのコストを監視する方法の例については、 システムテーブルを使用してジョブのコストとパフォーマンスを監視するを参照してください。