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

プロビジョニング済みスループット 基盤モデル API

この記事では、基盤モデルAPI プロビジョニング済みスループットを使用してモデルをデプロイする方法について説明します。Databricks では、本番運用ワークロードのプロビジョニング済みスループットを推奨し、パフォーマンスが保証された基盤モデルに最適化された推論を提供します。

プロビジョニングされたスループットとは

プロビジョニング スループット モデルサービング エンドポイントを作成するときは、 Databricksで専用の推論容量を割り当てて、 スループット 提供する基盤モデルの一贯性を確保します。 基盤モデルを提供するモデルサービングエンドポイントは、 モデルユニットのチャンクでプロビジョニングを行うことができます。 割り当てたモデルユニットの数により、本番運用 GenAI アプリケーションを確実にサポートするために必要なスループットを正確に購入できます。

注記

モデルサービング 次のモデルファミリーのモデルを提供するエンドポイント トークン /秒バンドに基づく プロビジョニング推論能力:

  • Meta Llama 3.3
  • Meta Llama 3.2 3B
  • Meta Llama 3.2 1B
  • Meta Llama 3.1
  • GTE v1.5 (英語)
  • BGE v1.5 (英語)
  • DeepSeek R1 (Unity Catalog では使用できません)
  • Meta Llama 3
  • Meta Llama 2
  • DBRX
  • Mistral
  • Mixtral
  • MPT

プロビジョニングされたスループットのモデル単位

モデル単位は、エンドポイントが 1 分あたりに処理できる作業量を決定するスループットの単位です。新しいプロビジョニング スループット エンドポイントを作成するときは、提供されるモデルごとにプロビジョニングするモデル単位の数を指定します。

エンドポイントへの各リクエストを処理するために必要な作業量は、入力と生成された出力の両方のサイズによって異なります。入出力トークンの数が増えると、要求の処理に必要な作業量も増加します。出力トークンの生成は、入力トークンの処理よりもリソースを大量に消費します。各リクエストに必要な作業は、入力または出力トークンの数が増えるにつれて非線形に増加し、エンドポイントが次のいずれかを処理できるモデルユニットの特定の量について、次のいずれかを処理できることを意味します。

  • 一度 に複数の小さな要求
  • 実行が容量を超えるまでの時間の 長いコンテキスト要求が少なくなります

または、より具体的な例として、3500 個の入力トークンと 300 個の出力トークンを持つ中規模のワークロードの場合、特定の数のモデル ユニットの 1 秒あたりのトークン スループットを見積もることができます。

モデル

モデル単位

推定トークン数/秒

Llama 4 マーベリック

50

3250

次のモデルでは、 モデルユニット を使用して推論容量をプロビジョニングします。

  • OpenAI GPT OSS 120B
  • OpenAI GPT OSS 20B
  • Google Gemma 3 12B
  • Meta Llama 4 Maverick

必要条件

要件を参照してください。ファインチューンされた基盤モデルのデプロイについては、「 ファインチューンされた基盤モデルのデプロイ」を参照してください。

[推奨]Unity Catalog から基盤モデルをデプロイする

備考

プレビュー

この機能は パブリック プレビュー段階です。

Databricks では、Unity Catalog にプレインストールされている基盤モデルを使用することをお勧めします。 これらのモデルは、スキーマai (system.ai) のカタログsystemの下にあります。

基盤モデルをデプロイするには:

  1. カタログエクスプローラで system.ai に移動します。
  2. デプロイするモデルの名前をクリックします。
  3. モデル ページで、 このモデルをサービング ボタンをクリックします。
  4. サービングエンドポイントの作成 ページが表示されます。 UI を使用してプロビジョニングされたスループットエンドポイントを作成するを参照してください。
注記

Unity Catalog の system.ai から Meta Llama モデルをデプロイするには、該当する Instruct バージョンを選択する必要があります。Meta Llama モデルの基本バージョンは、Unity Catalog からのデプロイではサポートされていません。サポートされている Meta Llama モデルのバリアントについては、 Databricks でホストされている基盤モデル を参照してください。

Databricks Marketplace からの基盤モデルのデプロイ

または、 Databricks Marketplace から Unity Catalog に基盤モデルをインストールすることもできます。

モデルファミリーを検索し、モデルページから アクセスを取得 を選択し、ログイン資格情報を入力して、モデルを Unity Catalog にインストールできます。

モデルを Unity Catalogにインストールしたら、サービング UI を使用してモデルサービングエンドポイントを作成できます。

ファインチューンされた基盤モデルをデプロイする

system.ai スキーマのモデルを使用できない場合、または Databricks Marketplace からモデルをインストールできない場合は、Unity Catalog にログを記録することで、ファインチューンされた基盤モデルをデプロイできます。このセクションと次のセクションでは、 MLflow モデルを Unity Catalog にログに記録し、UI または REST APIを使用してプロビジョニング スループット エンドポイントを作成するようにコードを設定する方法について説明します。

必要条件

  • ファインチューンされた基盤モデルのデプロイは、MLflow 2.11 以降でのみサポートされています。 Databricks Runtime 15.0 ML 以降では、互換性のある MLflow バージョンがプレインストールされています。
  • Databricks では、大規模なモデルのアップロードとダウンロードを高速化するために、Unity Catalog のモデルを使用することをお勧めします。

カタログ、スキーマ、モデル名の定義

ファインチューンされた基盤モデルをデプロイするには、ターゲットの Unity Catalog カタログ、スキーマ、および任意のモデル名を定義します。

Python
mlflow.set_registry_uri('databricks-uc')
CATALOG = "catalog"
SCHEMA = "schema"
MODEL_NAME = "model_name"
registered_model_name = f"{CATALOG}.{SCHEMA}.{MODEL_NAME}"

モデルを記録する

モデル エンドポイントのプロビジョニングされたスループットを有効にするには、MLflow transformers フレーバーを使用してモデルをログに記録し、 task 引数を "llm/v1/embeddings"で指定する必要があります。

この引数は、モデルサービング エンドポイントに使用される API シグネチャを指定します。 llm/v1/embeddings タスクとそれに対応する入力スキーマと出力スキーマの詳細については、MLflow のドキュメントを参照してください。

以下は、プロビジョニングされたスループットで提供できるように、モデル Alibaba-NLP/gte-large-en-v1.5 をログに記録する方法の例です。

Python
model = AutoModel.from_pretrained("Alibaba-NLP/gte-large-en-v1.5")
tokenizer = AutoTokenizer.from_pretrained("Alibaba-NLP/gte-large-en-v1.5")
with mlflow.start_run():
components = {
"model": model,
"tokenizer": tokenizer,
}
mlflow.transformers.log_model(
transformers_model=components,
artifact_path="model",
task="llm/v1/embeddings",
registered_model_name=registered_model_name,
# model_type is required for logging a fine-tuned BGE models.
metadata={
"model_type": "gte-large"
}
)

モデルが Unity Catalogにログインしたら、 UI を使用してプロビジョニング スループット エンドポイントを作成する に進み、プロビジョニング スループットを使用してモデルサービング エンドポイントを作成します。

UI を使用してプロビジョニングされたスループットエンドポイントを作成する

記録済みモデルが Unity Catalogになったら、次の手順でプロビジョニング スループット サービング エンドポイントを作成します。

  1. ワークスペースの サービング UI に移動します。
  2. サービング エンドポイントの作成 を選択します。
  3. エンティティ フィールドで、Unity Catalog からモデルを選択します。対象モデルの場合、提供されるエンティティの UI には プロビジョニングされたスループット 画面が表示されます。
  4. 最大 ドロップダウンでは、エンドポイントの 1 秒あたりの最大トークンスループットを構成できます。
    1. プロビジョニングされたスループットエンドポイントは自動的にスケーリングされるため、 変更 を選択して、エンドポイントがスケールダウンできる 1 秒あたりの最小トークン数を表示できます。

プロビジョニング済みスループット

REST API を使用してプロビジョニングされたスループットエンドポイントを作成する

REST API を使用してプロビジョニングされたスループット モードでモデルをデプロイするには、リクエストで min_provisioned_throughput フィールドと max_provisioned_throughput フィールドを指定する必要があります。 Python を使用する場合は、 MLflow デプロイ SDK を使用してエンドポイントを作成することもできます。

モデルに適したプロビジョニング済みスループットの範囲を特定するには、 プロビジョニング済みスループットを段階的に取得するを参照してください。

Python
import requests
import json

# Set the name of the MLflow endpoint
endpoint_name = "prov-throughput-endpoint"

# Name of the registered MLflow model
model_name = "ml.llm-catalog.foundation-model"

# Get the latest version of the MLflow model
model_version = 3

# Get the API endpoint and token for the current notebook context
API_ROOT = "<YOUR-API-URL>"
API_TOKEN = "<YOUR-API-TOKEN>"

headers = {"Context-Type": "text/json", "Authorization": f"Bearer {API_TOKEN}"}

optimizable_info = requests.get(
url=f"{API_ROOT}/api/2.0/serving-endpoints/get-model-optimization-info/{model_name}/{model_version}",
headers=headers)
.json()

if 'optimizable' not in optimizable_info or not optimizable_info['optimizable']:
raise ValueError("Model is not eligible for provisioned throughput")

chunk_size = optimizable_info['throughput_chunk_size']

# Minimum desired provisioned throughput
min_provisioned_throughput = 2 * chunk_size

# Maximum desired provisioned throughput
max_provisioned_throughput = 3 * chunk_size

# Send the POST request to create the serving endpoint
data = {
"name": endpoint_name,
"config": {
"served_entities": [
{
"entity_name": model_name,
"entity_version": model_version,
"min_provisioned_throughput": min_provisioned_throughput,
"max_provisioned_throughput": max_provisioned_throughput,
}
]
},
}

response = requests.post(
url=f"{API_ROOT}/api/2.0/serving-endpoints", json=data, headers=headers
)

print(json.dumps(response.json(), indent=4))

プロビジョニングされたスループットを段階的に取得

プロビジョニングされたスループットは、1 秒あたりのトークンの増分で使用でき、特定の増分はモデルによって異なります。 ニーズに適した範囲を特定するために、Databricks では、プラットフォーム内でモデル最適化情報 API を使用することをお勧めします。

Bash
GET api/2.0/serving-endpoints/get-model-optimization-info/{registered_model_name}/{version}

API からの応答の例を次に示します。

ノートブックの例

次のノートブックは、プロビジョニング スループット 基盤モデル APIを作成する方法の例を示しています。

GTE モデル のプロビジョニングされたスループットノートブック

Open notebook in new tab

BGE モデル用のプロビジョニング済みスループットノートブック

Open notebook in new tab

制限

  • GPU 容量の問題により、モデルのデプロイが失敗する場合があり、その結果、エンドポイントの作成または更新中にタイムアウトが発生します。 Databricksアカウントチームに連絡して解決してください。
  • 基盤モデル API のオートスケーリングは、CPUモデルサービングよりも遅くなります。 Databricks では、要求のタイムアウトを回避するために、オーバープロビジョニングをお勧めします。
  • GTE v1.5 (English) では、正規化されたエンベディングは生成されません。