設定服務端點的路由最佳化

本文說明如何在您的模型服務特徵服務端點上設定路由最佳化,以及如何予以查詢。 路由最佳化的服務端點可大幅降低額外負荷延遲,並允許大幅改善端點支援的輸送量。

建議針對高輸送量或延遲敏感性工作負載使用路由最佳化。

需求

  • 有關模型服務端點的路由最佳化,請參閱需求
  • 有關特徵服務端點的路由最佳化,請參閱需求

在模型服務端點上啟用路由最佳化

在建立模型服務端點期間指定 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 權杖

  1. 從工作區的 [服務] UI 中擷取 OAuth 權杖。
    1. 按下側邊欄的 [服務] 可顯示 [服務] 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 權杖

驗證使用服務主體透過 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"'"]}]'

限制

  • 路由最佳化僅適用於自訂模型服務端點和特徵服務端點。 不支援基礎模型 API外部模型
  • Databricks 內部 OAuth 權杖是唯一支援的路由最佳化驗證。 不支援個人存取權杖。
  • 路由最佳化不會強制執行您在 Azure Databricks 工作區中設定的任何私人連結網路限制。 如果您需要模型服務流量受這些控制器的約束,請勿啟用路由最佳化。 如果您有這類網路需求,但仍想要嘗試路由最佳化的模型服務,請連絡您的 Databricks 客戶團隊。
  • 某些區域無法使用路由最佳化。 如果您在服務 UI 中未看到啟用路由最佳化的選項,請連絡您的 Databricks 客戶團隊。