提供エンドポイントでルートの最適化を構成する
この記事では、モデル提供または特徴量提供エンドポイントでルートの最適化を構成する方法と、それらのエンドポイントに対してクエリを実行する方法について説明します。 ルート最適化提供エンドポイントを使用すると、オーバーヘッド待機時間が大幅に短縮され、エンドポイントでサポートされるスループットを大幅に向上できます。
高スループットのワークロードまたは待機時間の影響を受けやすいワークロードには、ルートの最適化をお勧めします。
要件
モデル サービング エンドポイント でルートの最適化を有効にする
モデル サービング エンドポイント の作成時に 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
フィールドに、特徴量の仕様の完全な名前を指定します。 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 トークンを作成する必要があります。 次の手順は、提供 UI でトークンをフェッチする方法を示しています。 プログラムによるワークフローについては、「プログラムで OAuth トークンをフェッチする」を参照してください。
- ワークスペースの [提供] UI から OAuth トークンをフェッチします。
- サイドバーの [Serving] をクリックして、Serving UI を表示します。
- [提供エンドポイント] ページで、ルート最適化エンドポイントを選択してエンドポイントの詳細を表示します。
- エンドポイントの詳細ページで、[エンドポイントのクエリ] ボタンをクリックします。
- [トークンのフェッチ] タブを選択します。
- [OAuth トークンをフェッチする] ボタンを選択します。 このトークンは 1 時間有効です。 現在のトークンの有効期限が切れている場合は、新しいトークンをフェッチします。
- [提供] UI のエンドポイントの詳細ページから、モデル サービング エンドポイント の URL を取得します。
- 手順 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 トークンをフェッチする
OAuth(OAuth M2M)を使用してサービスプリンシパルで Azure Databricks へのアクセスを認証するでは、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 アカウント チームにお問い合わせください。