Share via


建立提供端點的自定義模型

本文說明如何使用 Databricks 模型服務來建立服務端點的模型服務端點。

模型服務提供下列選項來提供端點建立服務:

  • 服務UI
  • REST API
  • MLflow 部署 SDK

如需建立提供產生 AI 基礎模型的端點,請參閱 建立服務端點的基礎模型。

需求

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

存取控制

若要瞭解端點管理之模型服務的訪問控制選項,請參閱 管理模型服務端點的許可權。

您也可以新增環境變數來儲存模型服務的認證。 請參閱 設定從服務端點的模型存取資源

建立端點

服務 ui

您可以使用服務 UI 建立模型服務的端點。

  1. 按兩下 提要欄位中的 [服務 ] 以顯示 [服務 UI]。

  2. 按兩下 [ 建立服務端點]。

    Databricks UI 中的模型服務窗格

針對在工作區模型登錄中註冊的模型,或 Unity 目錄中的模型:

  1. 在 [ 名稱] 欄位中,提供端點的名稱。

  2. 在 [ 服務實體] 區 段中

    1. 按兩下 [ 實體] 欄位,以開啟 [ 選取提供的實體 ] 表單。
    2. 選取您想要提供服務的模型類型。 窗體會根據您的選擇動態更新。
    3. 選取您想要提供服務的模型和模型版本。
    4. 選取要路由傳送至您服務模型的流量百分比。
    5. 選取要使用的計算大小。 您可以針對工作負載使用 CPU 或 GPU 計算。 如需可用 GPU 計算的詳細資訊,請參閱 GPU 工作負載類型
    6. 在 [計算向外延展] 下,選取與此服務模型可以同時處理的要求數目對應的計算相應放大大小。 這個數字應該大致等於 QPS x 模型運行時間。
      1. 可用大小適用於 0-4 個要求、中型 8-16 要求,以及 16-64 要求的大型
    7. 指定端點在不使用時是否應該調整為零。
  3. 按一下 [建立]。 [ 服務端點] 頁面隨即出現,並 顯示 [服務端點狀態 ] 顯示為 [未就緒]。

    建立服務端點的模型

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
                }
            ]
        }
    }
)

您也可以:

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 註冊模型,可用來啟動並執行服務端點的模型。

您可以遵循匯入筆記本中的指示,將模型範例匯入工作區。 從其中一個範例中選擇並建立模型之後, 請在 MLflow 模型登錄中註冊模型,然後遵循 模型服務的 UI 工作流程 步驟。

訓練和註冊 scikit-learn 模型來提供筆記本的模型

取得筆記本

定型和註冊 HuggingFace 模型以用於提供筆記本的模型

取得筆記本