モデルサービングエンドポイントの管理
この記事では、 Serving UI と REST APIを使用してモデルサービングエンドポイントを管理する方法について説明します。 REST API リファレンスの サービングエンドポイント を参照してください。
モデルサービングエンドポイントを作成するには、次のいずれかを使用します。
モデル エンドポイントの状態を取得する
エンドポイントの状態は、 サービング UI を使用して確認することも、 REST API 、 Databricks Workspace Client、またはMLflow Deployments SDKを使用してプログラムで確認することもできます。
エンドポイントのステータスはReady 、 Ready (Update failed) 、 Not ready (Updating) 、 Not ready (Update failed) 、またはNot ready (Stopped)になります。準備状況は、エンドポイントをクエリできるかどうかを示します。更新失敗は、エンドポイントへの最新の変更が失敗したことを示します。停止はエンドポイントが停止されたことを意味します。
- UI
- REST API
- Databricks Workspace Client
- MLflow Deployments SDK
エンドポイントの詳細ページの上部にある サービスエンドポイントの状態 インジケーター:


GET /api/2.0/serving-endpoints/{name}
次の応答例では、 state.readyフィールドは「READY」であり、エンドポイントがトラフィックを受信する準備ができていることを意味します。更新が正常に完了したため、 state.update_stateフィールドはNOT_UPDATINGであり、 pending_config返されなくなりました。
{
"name": "unity-model-endpoint",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "READY",
"update_state": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "my-ads-model",
"entity_name": "myCatalog.mySchema.my-ads-model",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": false,
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
endpoint = w.serving_endpoints.get(name="my-endpoint")
print(f"Endpoint state: {endpoint.state.ready}")
print(f"Update state: {endpoint.state.config_update}")
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="my-endpoint")
print(f"Endpoint state: {endpoint['state']}")
print(f"Endpoint config: {endpoint['config']}")
モデルサービングエンドポイントの停止
モデルサービング エンドポイントを一時的に停止し、後で開始することができます。 エンドポイントが停止すると:
- プロビジョニングされたリソースはシャットダウンされます。
- エンドポイントは、再起動されるまでクエリを処理できません。
- 停止できるのは、カスタム モデルを提供し、進行中の更新がないエンドポイントのみです。
- 停止されたエンドポイントはリソース クォータにカウントされません。
- 停止されたエンドポイントに送信されたクエリは 400 エラーを返します。
エンドポイントを停止する
- UI
- REST API
右上隅の [ 停止 ] をクリックします。

POST /api/2.0/serving-endpoints/{name}/config:stop
エンドポイントを開始する
エンドポイントを開始すると、停止された既存の構成と同じプロパティを持つ新しい構成バージョンが作成されます。
停止したモデルサービング エンドポイントを開始する準備ができたら、次のようにします。
- UI
- REST API
右上隅の 開始 をクリックします。

POST /api/2.0/serving-endpoints/{name}/config:start
モデルサービングエンドポイントの削除
エンドポイントを削除すると、使用が無効になり、エンドポイントに関連付けられているすべてのデータが削除されます。削除を元に戻すことはできません。
- UI
- REST API
- MLflow Deployments SDK
上部のケバブメニューをクリックして、 削除 を選択します。

DELETE /api/2.0/serving-endpoints/{name}
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")
モデルサービングエンドポイントのデバッグ
エンドポイントの問題のデバッグに役立つ 2 種類のログが利用できます。
- モデル サーバー コンテナー ビルド ログ : コンテナーの作成時にエンドポイントの初期化中に生成されます。これらのログには、モデルのダウンロード、依存関係のインストール、ランタイム環境の構成などのセットアップフェーズが記録されます。これらのログを使用して、エンドポイントが起動に失敗した理由や、展開中に停止した理由をデバッグします。
- モデル サーバー ログ : エンドポイントがアクティブに予測を提供しているランタイム中に生成されます。 これらのログには、モデル コードからの受信リクエスト、モデル推論の実行、ランタイム エラー、アプリケーション レベルのログが記録されます。これらのログを使用して、予測に関する問題をデバッグしたり、クエリの失敗を調査したりします。
両方のログ タイプには、 [ログ] タブの Endpoints UI からもアクセスできます。
コンテナビルドログを取得する
提供されたモデルの ビルド ログ については、次の要求を使用できます。 詳細については、 モデルサービングのデバッグガイド を参照してください。
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
"config_version": 1 // optional
}
モデルサーバーのログを取得する
モデルサービングにおける モデル サーバ ログについては、次の要求を使用できます。
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs
{
"config_version": 1 // optional
}
モデルサービングエンドポイントの権限を管理する
権限を変更するには、少なくともサービスエンドポイントに対する CAN MANAGE 権限が必要です。 アクセス許可レベルの詳細については、サービングエンドポイント ACLを参照してください。
配信エンドポイントのアクセス許可の一覧を取得します。
- UI
- Databricks CLI
UI の右上にある [権限] ボタンをクリックします。

databricks permissions get serving-endpoints <endpoint-id>
ユーザーに jsmith@example.com 、サービスエンドポイントに対する CAN QUERY 権限を付与します。
databricks permissions update serving-endpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
また、Permissions API を使用して、配信エンドポイントのアクセス許可を変更することもできます。
モデルサービング エンドポイントのサーバレス 予算ポリシー
プレビュー
この機能は パブリック プレビュー 段階であり、 外部モデルを提供するエンドポイントの提供には使用できません。
サーバレス 予算ポリシー を使用すると、組織はサーバレスの使用状況にカスタムタグを適用して、詳細な請求属性を実現できます。 ワークスペースでサーバレス 予算ポリシーを使用してサーバレスの使用状況を属性付けしている場合は、モデルサービング エンドポイントにサーバレス 予算ポリシーを追加できます。 サーバレス 予算ポリシーでの属性の使用を参照してください。
モデルサービングエンドポイントの作成中に、Serving UIの 予算ポリシー メニューからエンドポイントのサーバレス予算ポリシーを選択できます。 サーバレス予算ポリシーが割り当てられている場合、 予算ポリシー メニューからポリシーを選択しなくても、作成するすべてのエンドポイントにそのサーバレス予算ポリシーが割り当てられます。

既存のエンドポイントに対する MANAGE 権限がある場合は、UI の エンドポイントの詳細 ページから、そのエンドポイントにサーバレス 予算ポリシーを編集および追加できます。

サーバレス予算ポリシーが割り当てられている場合、既存のエンドポイントはポリシーで自動的にタグ付けされません。 既存のエンドポイントにサーバレス予算ポリシーをアタッチする場合は、手動で更新する必要があります。
モデルサービング エンドポイント スキーマを取得する
プレビュー
エンドポイント クエリ スキーマの提供のサポートは 、パブリック プレビュー段階です。 この機能は、 モデルサービング地域で使用できます。
サービング エンドポイント クエリ スキーマは、JSON 形式の標準 OpenAPI 仕様を使用したサッピング エンドポイントの正式な記述です。 これには、エンドポイントのパス、エンドポイントのクエリの詳細 (要求と応答の本文の形式など)、各フィールドのデータ型など、エンドポイントに関する情報が含まれています。 この情報は、再現性のシナリオや、エンドポイントに関する情報が必要だが、元のエンドポイントの作成者または所有者ではない場合に便利です。
モデルサービング エンドポイント スキーマを取得するには、提供されるモデルにモデル署名がログに記録され、エンドポイントが READY 状態である必要があります。
次の例は、 REST APIを使用してモデルサービングエンドポイントスキーマをプログラムで取得する方法を示しています。 Feature Servingエンドポイントスキーマについては、「エンドポイントFeature Serving」を参照してください。
API によって返されるスキーマは、OpenAPI 仕様に準拠した JSON オブジェクトの形式です。
ACCESS_TOKEN="<endpoint-token>"
ENDPOINT_NAME="<endpoint name>"
curl "https://example.databricks.com/api/2.0/serving-endpoints/$ENDPOINT_NAME/openapi" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json"
スキーマ応答の詳細
応答は JSON 形式の OpenAPI 仕様であり、通常は 、 openapi、 info、 servers 、 pathsなどのフィールドが含まれます。 スキーマ応答は JSON オブジェクトであるため、一般的なプログラミング言語を使用して解析し、サードパーティのツールを使用して仕様からクライアント コードを生成できます。また、Swagger Editor などのサードパーティ ツールを使用して OpenAPI 仕様を視覚化することもできます。
応答の主なフィールドは次のとおりです。
info.titleフィールドには、サービス エンドポイントの名前が表示されます。serversフィールドには常に1つのオブジェクトが含まれます。通常は、エンドポイントのベースURLであるurlフィールドです。- 応答の
pathsオブジェクトには、エンドポイントでサポートされるすべてのパスが含まれています。 オブジェクトのキーはパスのURLです。 各pathは複数の入力形式をサポートできます。 これらの入力はoneOfフィールドに記載されています。
エンドポイントスキーマのレスポンスの例を次に示します。
{
"openapi": "3.1.0",
"info": {
"title": "example-endpoint",
"version": "2"
},
"servers": [{ "url": "https://example.databricks.com/serving-endpoints/example-endpoint" }],
"paths": {
"/served-models/vanilla_simple_model-2/invocations": {
"post": {
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"dataframe_split": {
"type": "object",
"properties": {
"columns": {
"description": "required fields: int_col",
"type": "array",
"items": {
"type": "string",
"enum": ["int_col", "float_col", "string_col"]
}
},
"data": {
"type": "array",
"items": {
"type": "array",
"prefixItems": [
{
"type": "integer",
"format": "int64"
},
{
"type": "number",
"format": "double"
},
{
"type": "string"
}
]
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
},
"examples": [
{
"columns": ["int_col", "float_col", "string_col"],
"data": [
[3, 10.4, "abc"],
[2, 20.4, "xyz"]
]
}
]
},
{
"type": "object",
"properties": {
"dataframe_records": {
"type": "array",
"items": {
"required": ["int_col", "float_col", "string_col"],
"type": "object",
"properties": {
"int_col": {
"type": "integer",
"format": "int64"
},
"float_col": {
"type": "number",
"format": "double"
},
"string_col": {
"type": "string"
},
"becx_col": {
"type": "object",
"format": "unknown"
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
}
}
]
}
}
}
},
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"predictions": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
}
}
}
}
}
}
}
}
}
}
}