建立提供端點的自定義模型
本文說明如何使用 Databricks 模型服務來建立服務端點的模型服務端點。
模型服務提供下列選項來提供端點建立服務:
- 服務UI
- REST API
- MLflow 部署 SDK
如需建立提供產生 AI 基礎模型的端點,請參閱 建立服務端點的基礎模型。
需求
- 您的工作區必須位於 支持的區域中。
- 如果您從私人鏡像伺服器搭配模型使用自定義連結庫或連結庫,請參閱 在建立模型端點之前,使用具有模型服務的 自定義 Python 連結庫。
- 若要使用 MLflow 部署 SDK 建立端點,您必須安裝 MLflow 部署用戶端。 若要安裝它,請執行:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
存取控制
若要瞭解端點管理之模型服務的訪問控制選項,請參閱 管理模型服務端點的許可權。
您也可以新增環境變數來儲存模型服務的認證。 請參閱 設定從服務端點的模型存取資源
建立端點
服務 ui
您可以使用服務 UI 建立模型服務的端點。
按兩下 提要欄位中的 [服務 ] 以顯示 [服務 UI]。
按兩下 [ 建立服務端點]。
針對在工作區模型登錄中註冊的模型,或 Unity 目錄中的模型:
在 [ 名稱] 欄位中,提供端點的名稱。
在 [ 服務實體] 區 段中
- 按兩下 [ 實體] 欄位,以開啟 [ 選取提供的實體 ] 表單。
- 選取您想要提供服務的模型類型。 窗體會根據您的選擇動態更新。
- 選取您想要提供服務的模型和模型版本。
- 選取要路由傳送至您服務模型的流量百分比。
- 選取要使用的計算大小。 您可以針對工作負載使用 CPU 或 GPU 計算。 如需可用 GPU 計算的詳細資訊,請參閱 GPU 工作負載類型 。
- 在 [計算向外延展] 下,選取與此服務模型可以同時處理的要求數目對應的計算相應放大大小。 這個數字應該大致等於 QPS x 模型運行時間。
- 可用大小適用於 0-4 個要求、中型 8-16 要求,以及 16-64 要求的大型。
- 指定端點在不使用時是否應該調整為零。
按一下 [建立]。 [ 服務端點] 頁面隨即出現,並 顯示 [服務端點狀態 ] 顯示為 [未就緒]。
Rest API
您可以使用 REST API 建立端點。 如需端點組態參數,請參閱 POST /api/2.0/service-endpoints 。
下列範例會建立端點,提供模型登錄中註冊的第 ads1
一個模型版本。 若要從 Unity 目錄指定模型,請提供完整的模型名稱,包括父目錄和架構, 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 部署 提供用於建立、更新和刪除工作的 API。 這些工作的 API 接受與 REST API 相同的參數來提供端點。 如需端點組態參數,請參閱 POST /api/2.0/service-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
}
]
}
}
)
您也可以:
- 將您的端點設定為提供多個模型。
- 設定端點以使用 Databricks 秘密存取外部資源。
- 啟用推斷數據表 ,以自動擷取傳入要求,以及向外回應提供端點的模型。
GPU 工作負載類型
GPU 部署與下列套件版本相容:
- Pytorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 - 2.13.0
- MLflow 2.4.0 和更新版本
若要使用 GPU 部署您的模型,workload_type
請在端點建立期間或在端點設定中使用 API 作為端點組態更新期間包含 字段。 若要使用 [服務 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 |
修改自定義模型端點
啟用自訂模型端點之後,您可以視需要更新計算組態。 如果您需要模型的其他資源,此設定特別有用。 工作負載大小和計算組態在配置資源來為您的模型提供服務方面扮演重要角色。
在新的組態準備就緒之前,舊組態會持續提供預測流量。 進行中更新時,無法進行另一個更新。 不過,您可以從服務 UI 取消進行中的更新。
服務 ui
啟用模型端點之後,請選取 [編輯端點 ] 以修改端點的計算組態。
您可以執行下列動作:
- 從幾個工作負載大小中選擇,而且會自動在工作負載大小內設定自動調整。
- 指定您的端點是否應該在不使用時相應減少為零。
- 修改流量百分比以路由傳送至您服務模型。
您可以選取端點詳細數據頁面右上方的 [ 取消更新],以取消進行中的組態更新 。 這項功能只能在服務UI中使用。
Rest API
以下是使用 REST API 的端點組態更新範例。 請參閱 PUT /api/2.0/service-endpoints/{name}/config。
PUT /api/2.0/serving-endpoints/{name}/config
{
"name": "workspace-model-endpoint",
"config":{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "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/service-endpoints/{name}/config 以取得要求和回應架構詳細數據。
下列程式代碼範例會使用 Unity 目錄模型登錄中的模型:
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
}
]
}
}
)
評分模型端點
若要為模型評分,請將要求傳送至服務端點的模型。
其他資源
- 管理服務端點的模型。
- 查詢自定義模型的端點服務。
- 查詢基礎模型。
- Databricks 模型服務中的外部模型。
- 用於監視和偵錯模型的推斷數據表。
- 如果您想要使用 Python,您可以使用 Databricks 實時服務 Python SDK。
筆記本範例
下列筆記本包含不同的 Databricks 註冊模型,可用來啟動並執行服務端點的模型。
您可以遵循匯入筆記本中的指示,將模型範例匯入工作區。 從其中一個範例中選擇並建立模型之後, 請在 MLflow 模型登錄中註冊模型,然後遵循 模型服務的 UI 工作流程 步驟。
訓練和註冊 scikit-learn 模型來提供筆記本的模型
定型和註冊 HuggingFace 模型以用於提供筆記本的模型
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應