提供エンドポイントでルートの最適化を構成する

この記事では、モデル提供または特徴量提供エンドポイントでルートの最適化を構成する方法と、それらのエンドポイントに対してクエリを実行する方法について説明します。 ルート最適化提供エンドポイントを使用すると、オーバーヘッド待機時間が大幅に短縮され、エンドポイントでサポートされるスループットを大幅に向上できます。

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

要件

  • モデル提供エンドポイントでのルートの最適化の場合、「要件」を参照してください。
  • 特徴量提供エンドポイントでのルートの最適化の場合は、「要件」を参照してください。

モデル提供エンドポイントでルートの最適化を有効にする

モデル提供エンドポイントの作成時に route_optimized パラメーターを指定して、ルートが最適化されるようにエンドポイントを構成します。 このパラメーターはエンドポイントの作成時にのみ指定でき、ルートが最適化されるように既存のエンドポイントを更新することはできません。

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
}

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

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

ノートブックを入手

特徴量提供エンドポイントでルートの最適化を有効にする

Feature & Function Serving にルートの最適化を使用する場合、提供エンドポイントの作成要求の entity_name フィールドに、特徴量の仕様の完全な名前を指定します。 FeatureSpecsentity_version は必要ありません。


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
}

ルート最適化モデル提供エンドポイントのクエリを実行する

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

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

  1. ワークスペースの [提供] UI から OAuth トークンをフェッチします。
    1. サイドバーの [Serving] をクリックして、Serving UI を表示します。
    2. [提供エンドポイント] ページで、ルート最適化エンドポイントを選択してエンドポイントの詳細を表示します。
    3. エンドポイントの詳細ページで、[エンドポイントのクエリ] ボタンをクリックします。
    4. [トークンのフェッチ] タブを選択します。
    5. [OAuth トークンをフェッチする] ボタンを選択します。 このトークンは 1 時間有効です。 現在のトークンの有効期限が切れている場合は、新しいトークンをフェッチします。
  2. [提供] UI のエンドポイントの詳細ページから、モデル提供エンドポイントの URL を取得します。
  3. 手順 1 でフェッチした OAuth トークンと手順 2 で取得した URL を使用して、ルート最適化エンドポイントのクエリを実行する次のコード例を設定します。

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 トークンをフェッチする

「サービス プリンシパルを使用して Azure Databricks(OAuth M2M) による認証を行う」 では、プログラムで 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 を指定できます。

次に例を示します。

      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"'"]}]'

制限事項

  • ルートの最適化は、カスタムのモデル提供エンドポイントと特徴量提供エンドポイントでのみ使用できます。 Foundation Model API および外部モデルはサポートされていません。
  • ルートの最適化でサポートされる認証は、Databricks 社内 OAuth トークンのみです。 個人用アクセス トークンはサポートされません。
  • ルート最適化では、Azure Databricks ワークスペースで構成した Private Link ネットワーク制限は適用されません。 モデル提供トラフィックをこれらの制御によって制限する必要がある場合は、ルートの最適化を有効にしないでください。 このようなネットワーク要件があっても、ルート最適化モデル提供を試したい場合は、Databricks アカウント チームにお問い合わせください。
  • ルートの最適化は、一部のリージョンでは利用できません。 提供 UI に、ルートの最適化を有効にするオプションが表示されない場合は、Databricks アカウント チームにお問い合わせください。