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

サービスを提供するエンドポイントでルート最適化を設定してください

この記事では、 モデルサービング または Feature Serving エンドポイントでルート最適化を設定する方法と、それらをクエリする方法について説明します。 ルート最適化型サービスエンドポイントは、オーバーヘッドレイテンシーを劇的に削減し、エンドポイントがサポートするスループットの大幅な改善を可能にします。

ルートの最適化は、高スループットまたは待機時間の影響を受けやすいワークロードに推奨されます。

必要条件

  • モデルサービングエンドポイントでのルート最適化については、 要件を参照してください。
  • Feature Servingエンドポイントでのルート最適化については、「要件」を参照してください。

モデルサービングエンドポイントでのルート最適化の有効化

モデルサービングエンドポイントの作成時に route_optimized パラメーターを指定して、ルート最適化のエンドポイントを設定します。 このパラメーターはエンドポイントの作成時にのみ指定でき、既存のエンドポイントをルート最適化に更新することはできません。

Bash
POST /api/2.0/serving-endpoints

{
"name": "my-endpoint",
"config":{
"served_entities": [{
"entity_name": "ads1",
"entity_version": "1",
"workload_type": "CPU",
"workload_size": "Small",
"scale_to_zero_enabled": true,
}],
},
"route_optimized": true
}

エンドポイントのルート最適化は、Serving UI で有効にできます。 Python を使用する場合は、次のノートブックを使用して、ルート最適化サービング エンドポイントを作成できます。

Python ノートブックを使用してルート最適化サービング エンドポイントを作成する

Open notebook in new tab

Feature Servingエンドポイントでのルート最適化の有効化

Feature and Function Serving のルート最適化を使用するには、エンドポイント作成要求を処理するための entity_name フィールドに機能仕様の完全な名前を指定します。 entity_versionFeatureSpecsには必要ありません。

Bash

POST /api/2.0/serving-endpoints

{
"name": "my-endpoint",
"config": {
"served_entities": [
{
"entity_name": "catalog_name.schema_name.feature_spec_name",
"workload_type": "CPU",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
]
},
"route_optimized": true
}

Query route optimized モデルサービング endpoints

次の手順は、ルート最適化モデルサービング エンドポイントをテストクエリする方法を示しています。

本番運用で使用する場合、たとえば、アプリケーションでルート最適化エンドポイントを使用する場合は、 OAuth トークンを作成する必要があります。 次の手順は、Serving UI でトークンをフェッチする方法を示しています。 プログラムによるワークフローについては、「 プログラムによる OAuth トークンのフェッチ」を参照してください。

  1. ワークスペースの Serving UI から OAuth トークンをフェッチします。

    1. サイドバーの 「Serving 」をクリックして、Serving UIを表示します。
    2. [配信エンドポイント] ページで、ルート最適化エンドポイントを選択してエンドポイントの詳細を表示します。
    3. エンドポイントの詳細ページで、 エンドポイントのクエリボタンをクリックします
    4. [トークンの取得 ] タブを選択します。
    5. [OAuth トークンの取得 ] ボタンを選択します。このトークンは1時間有効です。 現在のトークンの有効期限が切れた場合は、新しいトークンをフェッチします。
  2. モデルサービングエンドポイントURLは、 Serving UIのエンドポイント詳細ページから取得します。

  3. ステップ 1 の OAuth トークンとステップ 2 のエンドポイント URL を使用して、ルート最適化エンドポイントをクエリする次のコード例を設定します。

Bash

url="your-endpoint-url"
OAUTH_TOKEN=xxxxxxx

curl -X POST -H 'Content-Type: application/json' -H "Authorization: Bearer $OAUTH_TOKEN" -d@data.json $url

Python SDK でルート最適化エンドポイントのクエリを実行するには、Databricks アカウント チームにお問い合わせください。

プログラムで OAuth トークンをフェッチする

Databricks「サービスプリンシパルを使用して リソースへの無人アクセスを承認OAuth OAuthする」では プログラムで トークンをフェッチする方法に関するガイダンスを提供します。これらの手順に加えて、要求で authorization_details を指定する必要があります。

  • <token-endpoint-URL>を前述のトークンエンドポイントのURLに置き換えます。
  • <client-id>をサービスプリンシパルのクライアントID(アプリケーションIDとも呼ばれます)に置き換えます。
  • <client-secret>を、作成したサービスプリンシパルのOAuthシークレットに置き換えます。
  • <endpoint-id> をルート最適化エンドポイントのエンドポイント ID に置き換えてください。 これはエンドポイントURLのHostNameから取得できます。
  • <action> を、サービスプリンシパルに付与されたアクション権限に置き換えます。アクションは query_inference_endpoint または manage_inference_endpointにすることができます。

例えば:

Bash
      export CLIENT_ID=<client-id>
export CLIENT_SECRET=<client-secret>
export ENDPOINT_ID=<endpoint-id>
export ACTION=<action>

curl --request POST \
--url <token-endpoint-URL> \
--user "$CLIENT_ID:$CLIENT_SECRET" \
--data 'grant_type=client_credentials&scope=all-apis'
--data-urlencode 'authorization_details=[{"type":"workspace_permission","object_type":"serving-endpoints","object_path":"'"/serving-endpoints/$ENDPOINT_ID"'","actions": ["'"$ACTION"'"]}]'

制限

  • ルート最適化は、カスタムモデルサービングエンドポイントと Feature Serving エンドポイントでのみ使用できます。 基盤モデル APIs外部モデルはサポートされていません。
  • Databricks の社内 OAuth トークンは、ルート最適化でサポートされている唯一の認証です。 個人用アクセス トークンはサポートされていません。