設定服務端點的路由最佳化
本文說明如何在您的模型服務或特徵服務端點上設定路由最佳化,以及如何予以查詢。 路由最佳化的服務端點可大幅降低額外負荷延遲,並允許大幅改善端點支援的輸送量。
建議針對高輸送量或延遲敏感性工作負載使用路由最佳化。
需求
在模型服務端點上啟用路由最佳化
在建立模型服務端點期間指定 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 筆記本建立路由最佳化服務端點
在特徵服務端點上啟用路由最佳化
若要對特徵與函式服務使用路由最佳化,請在 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 權杖。
- 按下側邊欄的 [服務] 可顯示 [服務] 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 中的主機名稱進行擷取。 - 將
<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"'"]}]'