建立自訂模型服務端點
本文說明如何使用 Databricks Model Serving 來建立為自訂模型提供服務的模型服務端點。
Model Serving 提供下列選項來提供端點建立服務:
- 服務 UI
- REST API
- MLflow 部署 SDK
如需建立提供產生 AI 模型的端點,請參閱 建立服務端點的基礎模型。
需求
- 您的工作區必須位於受支援區域。
- 如果在模型中使用來自私人鏡像伺服器的程式庫,則在建立模型端點之前,請參閱搭配使用自訂 Python 程式庫與 Model Serving。
- 若要使用 MLflow 部署 SDK 建立端點,必須安裝 MLflow 部署用戶端。 若要進行安裝,請執行:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
存取控制
若要了解用於端點管理之模型服務端點的存取控制選項,請參閱管理模型服務端點的權限。
您也可以新增環境變數來儲存 credentials,以用於模型服務。 請參閱設定模型服務端點對資源的存取權
建立端點
服務 UI
您可以使用 Serving UI 建立模型服務的端點。
按下側邊欄的 [服務] 可顯示 [服務] UI。
按下 [建立服務端點]。
針對在 Workspace 模型註冊表中註冊的模型,或 Unity Catalog中的模型:
在 [名稱] 欄位中,提供端點的名稱。
在 [服務的實體] 區段中
- 按兩下 [實體] 字段,開啟 Select 服務實體 表單。
- Select 您想要服務的模型類型。 表單會根據您的選擇動態更新。
- Select 您希望提供服務的模型及其版本。
- Select 將流量路由至您提供的模型時所佔的百分比。
- Select 要使用的運算資源大小。 您可以針對工作負載使用 CPU 或 GPU 計算。 如需可用 GPU 計算的詳細資訊,請參閱 GPU 工作負載類型。
- Select 要使用的運算資源大小。 您可以針對工作負載使用 CPU 或 GPU 計算。 如需可用 GPU 計算的詳細資訊,請參閱 GPU 工作負載類型。
- 在 計算擴展下,select 與此服務模型能同時處理的請求數量相對應的計算擴展規模大小。 此數字應大致等於 QPS x 模型執行時間。
- 可用大小包括適用於 0-4 個要求的 [小型]、適用於 8-16 個要求的 [中型],以及適用於16-64 個要求的 [大型]。
- 指定端點在不使用時是否應該調整為零。
按一下 [建立]。 [服務端點] 頁面隨即出現,[服務端點狀態] 顯示為 [未就緒]。
REST API
可以使用 REST API 建立端點。 如需端點組態 ,請參閱 parameters 。
下列範例會建立端點,提供 Unity ads1
模型登錄中註冊的第一個 Catalog 模型版本。 若要從 Unity Catalog指定模型,請提供完整的模型名稱,包括父 catalog 和 schema,例如,catalog.schema.example-model
。
POST /api/2.0/serving-endpoints
{
"name": "uc-model-endpoint",
"config":
{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "catalog.schema.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": "uc-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": "catalog.schema.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": "catalog.schema.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 部署 提供用於建立、update 和刪除工作的 API。 這些任務的 API 接受與 REST API 相同的 parameters,用來支援端點。 如需端點組態 ,請參閱 parameters 。
下列範例會建立端點,以提供 Unity my-ads-model
模型登錄中註冊的第三個 Catalog 模型版本。 您必須提供完整的模型名稱,包括父 catalog 和 schema,例如,catalog.schema.example-model
。
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "catalog.schema.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
}
]
}
}
)
您也可以:
啟用推論功能 tables 自動擷取進入的請求和發送的回應至您的模型提供端點。
GPU 工作負載類型
GPU 部署與下列套件版本相容:
- Pytorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 - 2.13.0
- MLflow 2.4.0 和更新版本
若要使用 GPU 部署模型,請在建立端點 update。 若要使用 服務 UI 設定 GPU 工作負載的端點,請從 [select 類型] 下拉式清單 所需的 GPU 類型。
{
"served_entities": [{
"entity_name": "catalog.schema.ads1",
"entity_version": "2",
"workload_type": "GPU_LARGE",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
下列 table 摘要說明支援的可用 GPU 工作負載類型。
GPU 工作負載類型 | GPU 執行個體 | GPU 記憶體 |
---|---|---|
GPU_SMALL |
1xT4 | 16 GB |
GPU_LARGE |
1xA100 | 80GB |
GPU_LARGE_2 |
2xA100 | 160GB |
修改自訂模型端點
啟用自訂模型端點之後,您可以視需要 update 計算組態。 如果您需要模型的其他資源,此組態特別有用。 工作負載大小和計算組態在配置哪些資源來為您的模型提供服務方面扮演重要角色。
在新的組態準備就緒之前,舊組態會持續為預測流量提供服務。 當 update 正在進行時,無法進行另一個 update。 不過,您可以從「服務界面」取消正在進行中的 update。
服務 UI
啟用模型端點之後,select編輯端點 來修改端點的計算組態。
您可以執行下列動作:
- 從幾個工作負載大小中選擇,而且會自動在工作負載大小內設定自動調整。
- 指定您的端點是否應該在不使用時縮減為零。
- 修改路由至您所服務模型的流量百分比。
您可以在端點詳細資料頁面的右上方選取 update,以取消進行中的設定 。 此功能只能在服務 UI 中使用。
REST API
以下是使用 REST API 的端點組態 update 範例。 請參閱 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 相同的 parameters,請參閱 PUT /api/2.0/service-endpoints/{name}/config 以取得要求和回應 schema 詳細數據。
下列程式代碼範例會使用 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
}
]
}
}
)
對模型端點評分
若要對模型評分,請將要求傳送至模型服務端點。
- 請參閱查詢自訂模型的服務端點。
- 請參閱 基礎模型查詢。
其他資源
- 管理模型服務端點。
- Mosaic AI Model Serving 中的外部模型。
- 如果您更喜歡使用 Python,可以使用 Databricks 即時服務 Python SDK。
筆記本範例
下列筆記本包含不同的 Databricks 註冊模型,您可以使用這些模型來 get 使用服務端點的模型來啟動並執行。 如需其他範例,請參閱 教學課程:部署和查詢自定義模型。
遵循匯入筆記本中的指示,將模型範例匯入工作區。 從其中一個範例中選擇並建立模型之後,在 Unity Catalog中註冊模型,然後遵循模型服務的 UI 工作流程 步驟。