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

APIを使用してモデルサービング エンドポイントで推論テーブルを有効にする

重要

このドキュメントは廃止されており、更新されない可能性があります。 このコンテンツに記載されている製品、サービス、またはテクノロジはサポートされなくなりました。

Databricksは、カスタムモデル、基盤モデル、およびエージェントサービスエンドポイントで利用できるため、 AI Gateway対応の推論テーブルを推奨しています。AI Gateway対応推論テーブルへの移行手順については、「AI Gateway推論テーブルへの移行」を参照してください。

この記事では、 Databricks APIを使用してモデルサービング エンドポイントの推論テーブルを有効にする方法について説明します。 Databricks UI を使用して推論テーブルを有効にする方法など、推論テーブルの使用に関する一般情報については、 「モニタリング モデルとデバッグ モデルの推論テーブル」を参照してください。

推論テーブルは、新しいエンドポイントを作成する際、または既存のエンドポイントで有効にすることができます。Databricksでは、エンドポイントを作成したユーザーがワークスペースから削除された場合でも推論テーブルに影響が出ないように、サービスプリンシパルを使用してエンドポイントを作成することを推奨しています。

推論テーブルの所有者は、エンドポイントを作成したユーザーです。テーブル上のすべてのアクセス制御リスト(ACL)は、標準のUnity Catalog権限に従い、テーブルの所有者によって変更できます。

要件

  • ワークスペースはUnity Catalogが有効になっていなければなりません。
  • エンドポイントの作成者と変更者の両方が、エンドポイントに対する 「管理可能 」権限を持っている必要があります。アクセス制御リストを参照してください。
  • エンドポイントの作成者と変更者は、Unity Catalogで以下の権限を持っている必要があります。
    • USE CATALOG 指定されたカタログに対する権限。
    • USE SCHEMA 指定されたスキーマに対する権限。
    • CREATE TABLE スキーマ内の権限。

APIを使用してエンドポイント作成時に推論テーブルを有効にする

APIを使用してエンドポイントを作成する際に、エンドポイントの推論テーブルを有効にすることができます。エンドポイントの作成方法については、 「カスタムモデルサービングエンドポイントの作成」を参照してください。

APIでは、リクエストボディにauto_capture_configを指定して以下を指定します。

  • Unity Catalogカタログ: テーブルを格納するカタログを表します
  • Unity Catalogスキーマ: テーブルを格納するスキーマを表します
  • (オプション)テーブルプレフィックス:推論テーブル名のプレフィックスとして使用される文字列。これが指定されていない場合は、エンドポイント名が使用されます。
  • (オプション) enabled: 推論テーブル Boolean 有効または無効にするために使用される値。 これはデフォルトで当てはまります。

カタログ、スキーマ、およびオプションでテーブルプレフィックスを指定した後、 <catalog>.<schema>.<table_prefix>_payloadにテーブルが作成されます。このテーブルはUnity Catalogマネージドテーブルを自動的に作成します。 テーブルの所有者は、エンドポイントを作成したユーザーです。

注記

推論テーブルはエンドポイントの作成時または更新時に常に自動的に作成されるため、既存のテーブルを指定することはサポートされていません。

警告

推論テーブルは、以下のいずれかの操作を行った場合に破損する可能性があります。

  • テーブルスキーマを変更します。
  • テーブル名を変更します。
  • テーブルを削除します。
  • Unity Catalogカタログまたはスキーマに対する権限を失います。

この場合、エンドポイントステータスのauto_capture_configは、ペイロードテーブルのFAILED状態を示します。この場合は、推論テーブルを引き続き使用するには、新しいエンドポイントを作成する必要があります。

以下の例は、エンドポイント作成時に推論テーブルを有効にする方法を示しています。

Bash
POST /api/2.0/serving-endpoints

{
"name": "feed-ads",
"config":
{
"served_entities": [
{
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config":
{
"catalog_name": "ml",
"schema_name": "ads",
"table_name_prefix": "feed-ads-prod"
}
}
}

応答は次のようになります。

JSON
{
"name": "feed-ads",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "NOT_READY",
"config_update": "IN_PROGRESS"
},
"pending_config": {
"start_time": 1666718879000,
"served_entities": [
{
"name": "ads1-1",
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"state": {
"deployment": "DEPLOYMENT_CREATING",
"deployment_state_message": "Creating"
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"config_version": 1,
"traffic_config": {
"routes": [
{
"served_model_name": "ads1-1",
"traffic_percentage": 100
}
]
},
"auto_capture_config": {
"catalog_name": "ml",
"schema_name": "ads",
"table_name_prefix": "feed-ads-prod",
"state": {
"payload_table": {
"name": "feed-ads-prod_payload"
}
},
"enabled": true
}
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}

推論テーブルへのログ記録が有効になったら、エンドポイントの準備が整うまでお待ちください。そうすれば、それを呼び始めることができます。

推論テーブルを作成した後、スキーマ進化とデータの追加はシステムによって処理される必要があります。

以下の操作はテーブルの整合性に影響を与えません。

  • テーブルに対してOPTIMIZE 、ANALYZE、およびvacuumを実行します。
  • 古い未使用データを削除します。

auto_capture_configを指定しない場合、デフォルトでは以前の構成バージョンの設定構成が再利用されます。例えば、推論テーブルが既に有効になっている場合は、次回のエンドポイント更新時にも同じ設定が使用されます。また、推論テーブルが無効になっている場合は、引き続き無効のままになります。

JSON
{
"served_entities": [
{
"name": "current",
"entity_name": "model-A",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config": {
"enabled": false
}
}

APIを使用して既存のエンドポイントで推論テーブルを有効にする

API を使用すれば、既存のエンドポイントで推論テーブルを有効にすることもできます。推論テーブルを有効にした後も、推論テーブルを引き続き使用するには、今後の更新エンドポイントAPI呼び出しで同じauto_capture_configボディを指定し続けてください。

注記

推論テーブルを有効にした後にテーブルの場所を変更することはサポートされていません。

Bash
PUT /api/2.0/serving-endpoints/{name}/config

{
"served_entities": [
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":{
"routes": [
{
"served_model_name":"current",
"traffic_percentage":"50"
},
{
"served_model_name":"challenger",
"traffic_percentage":"50"
}
]
},
"auto_capture_config":{
"catalog_name": "catalog",
"schema_name": "schema",
"table_name_prefix": "my-endpoint"
}
}

推論テーブルを無効にする

推論テーブルを無効にする場合、カタログ、スキーマ、またはテーブルプレフィックスを指定する必要はありません。必須項目はenabled: falseです。

Bash
POST /api/2.0/serving-endpoints

{
"name": "feed-ads",
"config":{
"served_entities": [
{
"entity_name": "ads1",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"auto_capture_config":{
"enabled": false
}
}
}

無効化された推論テーブルを再度有効にするには、 「既存のエンドポイントで推論テーブルを有効にする」の手順に従ってください。同じテーブルを使用することも、新しいテーブルを指定することもできます。

次のステップ

推論テーブルを有効にすると、データプロファイリングを使用してモデルサービング エンドポイントで提供されるモデルを監視できるようになります。 詳細については、 「ワークフロー: 推論テーブルを使用してモデルのパフォーマンスを監視する」を参照してください。