Vytvoření vlastních modelů obsluhujících koncové body

Tento článek popisuje, jak vytvořit model obsluhující koncové body, které obsluhují vlastní modely pomocí služby Databricks Model Serving.

Obsluha modelu poskytuje následující možnosti pro obsluhu vytváření koncových bodů:

  • Uživatelské rozhraní obsluhy
  • REST API
  • Sada SDK pro nasazení MLflow

Vytváření koncových bodů, které obsluhují modely základu AI, najdete v tématu Vytvoření základního modelu obsluhujícího koncové body.

Požadavky

  • Váš pracovní prostor musí být v podporované oblasti.
  • Pokud ve svém modelu používáte vlastní knihovny nebo knihovny ze serveru privátního zrcadlení, přečtěte si téma Použití vlastních knihoven Pythonu s obsluhou modelů před vytvořením koncového bodu modelu.
  • Pokud chcete vytvářet koncové body pomocí sady SDK pro nasazení MLflow, musíte nainstalovat klienta nasazení MLflow. Pokud ho chcete nainstalovat, spusťte:
import mlflow.deployments

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

Řízení přístupu

Informace o možnostech řízení přístupu pro model obsluhující koncové body pro správu koncových bodů najdete v tématu Správa oprávnění pro koncový bod obsluhy modelu.

Můžete také přidat proměnné prostředí pro uložení přihlašovacích údajů pro obsluhu modelu. Viz Konfigurace přístupu k prostředkům z koncových bodů obsluhujících model

Vytvoření koncového bodu

Obsluha uživatelského rozhraní

Můžete vytvořit koncový bod pro model obsluhující uživatelské rozhraní.

  1. Kliknutím na obsluhu na bočním panelu zobrazte uživatelské rozhraní obsluhy.

  2. Klikněte na Vytvořit koncový bod obsluhy.

    Podokno obsluhy modelu v uživatelském rozhraní Databricks

Pro modely zaregistrované v registru modelů pracovního prostoru nebo modely v katalogu Unity:

  1. Do pole Název zadejte název vašeho koncového bodu.

  2. V části Obsluhované entity

    1. Kliknutím do pole Entita otevřete formulář obsluhované entity Select.
    2. Vyberte typ modelu, který chcete použít. Formulář se dynamicky aktualizuje na základě vašeho výběru.
    3. Vyberte, který model a verzi modelu chcete použít.
    4. Vyberte procento provozu, které se má směrovat do vašeho modelu obsluhy.
    5. Vyberte, jakou velikost výpočetních prostředků chcete použít. Pro své úlohy můžete použít výpočetní výkon procesoru nebo GPU. Další informace o dostupných výpočetních prostředcích GPU najdete v typech úloh GPU.
    6. V části Horizontální navýšení kapacity výpočetních prostředků vyberte velikost škálování výpočetních prostředků, která odpovídá počtu požadavků, které tento obsluhovaný model může zpracovat současně. Toto číslo by se mělo přibližně rovnat době běhu modelu QPS x.
      1. Dostupné velikosti jsou malé pro 0 až 4 požadavky, středně velké 8 až 16 požadavků a velké pro požadavky 16 až 64.
    7. Určete, jestli se má koncový bod při použití škálovat na nulu.
  3. Klikněte na Vytvořit. Stránka Obslužné koncové body se zobrazí se stavemobsluhy koncového bodu, který je zobrazený jako Nepřipravený.

    Vytvoření koncového bodu obsluhy modelu

Rozhraní REST API

Koncové body můžete vytvářet pomocí rozhraní REST API. Parametry konfigurace koncového bodu najdete v tématu POST /api/2.0/serving-endpoints .

Následující příklad vytvoří koncový bod, který slouží první verzi ads1 modelu zaregistrovaného v registru modelu. Pokud chcete zadat model z katalogu Unity, zadejte úplný název modelu včetně nadřazeného katalogu a schématu, catalog.schema.example-modelnapříklad .


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

Následuje příklad odpovědi. Stav koncového bodu config_update je NOT_UPDATING a obsluha modelu je ve READY stavu.

{
  "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
}

Sada SDK pro nasazení Mlflow

Nasazení MLflow poskytuje rozhraní API pro úlohy vytváření, aktualizace a odstraňování. Rozhraní API pro tyto úlohy přijímají stejné parametry jako rozhraní REST API pro obsluhu koncových bodů. Parametry konfigurace koncového bodu najdete v tématu 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
                }
            ]
        }
    }
)

Můžete také:

Typy úloh GPU

Nasazení GPU je kompatibilní s následujícími verzemi balíčků:

  • Pytorch 1.13.0 - 2.0.1
  • TensorFlow 2.5.0 – 2.13.0
  • MLflow 2.4.0 a vyšší

Pokud chcete nasadit modely pomocí GPU, zahrnují workload_type pole v konfiguraci koncového bodu během vytváření koncového bodu nebo jako aktualizaci konfigurace koncového bodu pomocí rozhraní API. Pokud chcete nakonfigurovat koncový bod pro úlohy GPU pomocí uživatelského rozhraní obsluhy , v rozevíracím seznamu Typ výpočetního prostředí vyberte požadovaný typ GPU.

{
  "served_entities": [{
    "name": "ads1",
    "entity_version": "2",
    "workload_type": "GPU_LARGE",
    "workload_size": "Small",
    "scale_to_zero_enabled": false,
  }]
}

Následující tabulka shrnuje podporované typy úloh GPU.

Typ úlohy GPU Instance GPU Paměť GPU
GPU_SMALL 1xT4 16 GB
GPU_LARGE 1xA100 80 GB
GPU_LARGE_2 2xA100 160 GB

Úprava vlastního koncového bodu modelu

Po povolení vlastního koncového bodu modelu můžete podle potřeby aktualizovat konfiguraci výpočetních prostředků. Tato konfigurace je užitečná zejména v případě, že potřebujete další prostředky pro váš model. Velikost úloh a konfigurace výpočetních prostředků hrají klíčovou roli v tom, jaké prostředky se přidělují pro poskytování modelu.

Dokud nebude nová konfigurace připravená, stará konfigurace bude dál obsluhovat predikční provoz. Zatímco probíhá aktualizace, nelze provést jinou aktualizaci. Probíhající aktualizaci ale můžete zrušit z uživatelského rozhraní obsluhy.

Obsluha uživatelského rozhraní

Po povolení koncového bodu modelu vyberte Upravit koncový bod a upravte výpočetní konfiguraci koncového bodu.

Můžete udělat toto:

  • Vyberte si z několika velikostí úloh a automatické škálování se automaticky nakonfiguruje v rámci velikosti úlohy.
  • Určete, jestli se má koncový bod při použití vertikálně snížit na nulu.
  • Upravte procento provozu tak, aby se směroval do vašeho obsluhovaného modelu.

Probíhající aktualizaci konfigurace můžete zrušit výběrem možnosti Zrušit aktualizaci v pravém horním rohu stránky podrobností koncového bodu. Tato funkce je k dispozici pouze v uživatelském rozhraní obsluhy.

Rozhraní REST API

Následuje příklad aktualizace konfigurace koncového bodu pomocí rozhraní REST API. Viz PUT /api/2.0/serving-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
        }
      ]
    }
  }
}

Sada SDK pro nasazení Mlflow

Sada SDK pro nasazení MLflow používá stejné parametry jako rozhraní REST API, viz PUT /api/2.0/serving-endpoints/{name}/config pro podrobnosti schématu požadavků a odpovědí.

Následující ukázka kódu používá model z registru modelů katalogu 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
            }
        ]
    }
  }
)

Bodování koncového bodu modelu

Pokud chcete model vyhodnotit, odešlete požadavky do koncového bodu obsluhy modelu.

Další materiály

Příklady poznámkových bloků

Následující poznámkové bloky zahrnují různé registrované modely Databricks, které můžete použít k vytvoření a spuštění s koncovými body obsluhy modelu.

Příklady modelu je možné importovat do pracovního prostoru podle pokynů v části Import poznámkového bloku. Jakmile vyberete a vytvoříte model z některého z příkladů, zaregistrujte ho v registru modelů MLflow a pak postupujte podle kroků pracovního postupu uživatelského rozhraní pro obsluhu modelu.

Trénování a registrace modelu scikit-learn pro model obsluhující poznámkový blok

Získat poznámkový blok

Trénování a registrace modelu HuggingFace pro model obsluhující poznámkový blok

Získat poznámkový blok