建立自訂模型服務端點
本文說明如何使用 Databricks Model Serving 來建立為自訂模型提供服務的模型服務端點。
Model Serving 提供下列選項來提供端點建立服務:
- 服務 UI
- REST API
- MLflow 部署 SDK
如需建立服務於生成式 AI 模型的端點,請參閱建立生成式 AI 模型服務端點。
需求
- 您的工作區必須位於受支援區域。
- 如果在模型中使用來自私人鏡像伺服器的程式庫,則在建立模型端點之前,請參閱搭配使用自訂 Python 程式庫與 Model Serving。
- 若要使用 MLflow 部署 SDK 建立端點,必須安裝 MLflow 部署用戶端。 若要進行安裝,請執行:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
存取控制
若要了解用於端點管理之模型服務端點的存取控制選項,請參閱管理模型服務端點的權限。
也可以新增環境變數來儲存模型服務的認證。 請參閱設定模型服務端點對資源的存取權
建立端點
服務 UI
您可以使用 Serving UI 建立模型服務的端點。
按下側邊欄的 [服務] 可顯示 [服務] UI。
按下 [建立服務端點]。
對於已在工作區模型登錄中註冊的模型或 Unity Catalog 中的模型:
在 [名稱] 欄位中,提供端點的名稱。
在 [服務的實體] 區段中
- 按一下 [實體] 欄位,以開啟 [選取服務實體] 窗體。
- 選取您想要服務的模型類型。 表單會根據您的選擇動態更新。
- 選取您想要服務的模型和模型版本。
- 選取要路由傳送至您服務模型的流量百分比。
- 選取要使用的計算大小。 您可以針對工作負載使用 CPU 或 GPU 計算。 如需可用 GPU 計算的詳細資訊,請參閱 GPU 工作負載類型。
- 選取要使用的計算大小。 您可以針對工作負載使用 CPU 或 GPU 計算。 如需可用 GPU 計算的詳細資訊,請參閱 GPU 工作負載類型。
- 在 [計算向外延展] 下,選取與此服務模型可以同時處理的要求數目對應的計算向外延展大小。 此數字應大致等於 QPS x 模型執行時間。
- 可用大小包括適用於 0-4 個要求的 [小型]、適用於 8-16 個要求的 [中型],以及適用於16-64 個要求的 [大型]。
- 指定端點在不使用時是否應該調整為零。
按一下 [建立]。 [服務端點] 頁面隨即出現,[服務端點狀態] 顯示為 [未就緒]。
REST API
可以使用 REST API 建立端點。 如需端點組態參數,請參閱 POST /api/2.0/serving-endpoints。
下列範例會建立端點,它為在模型登錄中註冊的 ads1
模型的第一個版本提供服務。 若要從 Unity Catalog 指定模型,請提供完整的模型名稱,包括父目錄和結構描述,例如 catalog.schema.example-model
。
POST /api/2.0/serving-endpoints
{
"name": "workspace-model-endpoint",
"config":
{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "my-ads-model",
"entity_version": "4",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":
{
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
},
{
"served_model_name": "my-ads-model-4",
"traffic_percentage": 20
}
]
}
},
"tags": [
{
"key": "team",
"value": "data science"
}
]
}
以下是回覆範例。 端點的 config_update
狀態為 NOT_UPDATING
,且所服務的模型處於 READY
狀態。
{
"name": "workspace-model-endpoint",
"creator": "user@email.com",
"creation_timestamp": 1700089637000,
"last_updated_timestamp": 1700089760000,
"state": {
"ready": "READY",
"config_update": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "ads-entity",
"entity_name": "my-ads-model-3",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"workload_type": "CPU",
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1700089760000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "data science"
}
],
"id": "e3bd3e471d6045d6b75f384279e4b6ab",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
MLflow 部署 SDK
MLflow Deployments 提供可建立、更新和刪除工作的 API。 這些工作的 API 接受與服務端點的 REST API 相同的參數。 如需端點組態參數,請參閱 POST /api/2.0/serving-endpoints。
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="workspace-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
}
}
)
您也可以:
啟用推斷資料表,將傳入要求和傳出回應自動擷取至模型服務端點。
GPU 工作負載類型
GPU 部署與下列套件版本相容:
- Pytorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 - 2.13.0
- MLflow 2.4.0 和更新版本
若要使用 GPU 部署您的模型,請在端點建立期間將 workload_type
欄位包含在端點組態中,或使用 API 作為端點組態更新。 若要使用 Serving UI 設定 GPU 工作負載的端點,請從 [計算類型] 下拉式清單中選取所需的 GPU 類型。
{
"served_entities": [{
"name": "ads1",
"entity_version": "2",
"workload_type": "GPU_LARGE",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
下表摘要說明支援的可用 GPU 工作負載類型。
GPU 工作負載類型 | GPU 執行個體 | GPU 記憶體 |
---|---|---|
GPU_SMALL |
1xT4 | 16 GB |
GPU_LARGE |
1xA100 | 80GB |
GPU_LARGE_2 |
2xA100 | 160GB |
修改自訂模型端點
啟用自訂模型端點之後,您可以視需要更新計算組態。 如果您需要模型的其他資源,此組態特別有用。 工作負載大小和計算組態在配置哪些資源來為您的模型提供服務方面扮演重要角色。
在新的組態準備就緒之前,舊組態會持續為預測流量提供服務。 正在進行更新時,無法進行另一個更新。 不過,您可以從 Serving UI 中取消正在進行的更新。
服務 UI
啟用模型端點之後,請選取 [編輯端點] 以修改端點的計算組態。
您可以執行下列動作:
- 從幾個工作負載大小中選擇,而且會自動在工作負載大小內設定自動調整。
- 指定您的端點是否應該在不使用時縮減為零。
- 修改路由至您所服務模型的流量百分比。
選取端點詳細資料頁面右上方的 [取消更新],可取消正在進行的組態更新。 此功能只能在服務 UI 中使用。
REST API
以下是使用 REST API 的端點組態更新範例。 請參閱 PUT /api/2.0/serving-endpoints/{name}/config。
PUT /api/2.0/serving-endpoints/{name}/config
{
"name": "unity-catalog-model-endpoint",
"config":
{
"served_entities": [
{
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "5",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":
{
"routes": [
{
"served_model_name": "my-ads-model-5",
"traffic_percentage": 100
}
]
}
}
}
MLflow 部署 SDK
MLflow 部署 SDK 使用與 REST API 相同的參數,請參閱 PUT /api/2.0/serving-endpoints/{name}/config 以取得要求和回應結構描述詳細資料。
下列程式碼範例使用 Unity Catalog 模型登錄中的模型:
import mlflow
from mlflow.deployments import get_deploy_client
mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name=f"{endpointname}",
config={
"served_entities": [
{
"entity_name": f"{catalog}.{schema}.{model_name}",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": True
}
],
"traffic_config": {
"routes": [
{
"served_model_name": f"{model_name}-1",
"traffic_percentage": 100
}
]
}
}
)
對模型端點評分
若要對模型評分,請將要求傳送至模型服務端點。
- 請參閱查詢自訂模型的服務端點。
- 請參閱 查詢產生 AI 模型。
其他資源
- 管理模型服務端點。
- Mosaic AI Model Serving 中的外部模型。
- 如果您更喜歡使用 Python,可以使用 Databricks 即時服務 Python SDK。
筆記本範例
下列筆記本包含不同的 Databricks 註冊模型,可用來啟動並執行模型服務端點。
遵循匯入筆記本中的指示,將模型範例匯入工作區。 從其中一個範例中選擇並建立模型之後, 請在 Unity 目錄中註冊模型,然後遵循 模型服務的 UI 工作流程 步驟。