サービングエンドポイントのルート最適化設定

この記事では、モデルサービングまたはFeature Servingエンドポイントでルート最適化を構成する方法と、それらをクエリする方法について説明します。 ルートが最適化されたサービス エンドポイントにより、オーバーヘッドのレイテンシが大幅に削減され、エンドポイントでサポートされるスループットが大幅に向上します。

ルート最適化は、スループットが高いワークロードやレイテンシに敏感なワークロードに推奨されます。

要件

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

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

モデルサービングエンドポイントでルート最適化を有効にする

ルート最適化用にエンドポイントを構成するには、モデル サービング エンドポイントの作成時に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 Servingエンドポイントでルート最適化を有効にする

機能と関数の提供にルート最適化を使用するには、エンドポイント作成要求を処理するための [ entity_name ] フィールドに機能仕様のフル ネームを指定します。 FeatureSpecsには entity_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トークンを作成する必要があります。 次の手順では、Serving UI でトークンを取得する方法を示します。 プログラムによるワークフローについては、 「プログラムによる OAuth トークンの取得」を参照してください。

  1. ワークスペースのServing UI から OAuth トークンを取得します。

    1. サイドバーの 「配信 」をクリックして、配信 UI を表示します。

    2. [ エンドポイントの提供 ] ページで、ルート最適化エンドポイントを選択してエンドポイントの詳細を表示します。

    3. エンドポイントの詳細ページで、[ Query endpoint ] ボタンをクリックします。

    4. 「トークンの取得」タブを選択します。

    5. 「OAuth トークンの取得」ボタンを選択します。 このトークンは1時間有効です。 現在のトークンの有効期限が切れた場合は、新しいトークンを取得します。

  2. Serving 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トークンを取得する

サービスプリンシパルを使用してDatabricksで認証すると、プログラムでOAuthキーを取得する方法に関するガイダンスが提供されます。 これらのステップに加えて、リクエストでauthorization_detailsを指定する必要があります。

  • <token-endpoint-URL>を前述のトークン エンドポイント URL に置き換えます。

  • <client-id>を、サービスプリンシパルのクライアント ID (アプリケーション ID とも呼ばれます) に置き換えます。

  • <client-secret> を、作成したサービスプリンシパルのOAuthシークレットに置き換えます。

  • <endpoint-id> をルート最適化エンドポイントのエンドポイント ID に置き換えます。エンドポイント URL のホスト名からこれを取得できます。

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

制限事項

  • ルート最適化は、カスタム モデルサービング エンドポイントとFeature Servingポイントでのみ使用できます。 基盤モデルAPIsおよび外部モデルはサポートされていません。

  • ルート最適化でサポートされている認証は、Databricks 社内 OAuth トークンのみです。 個人用アクセストークンはサポートされていません。