Vytvořte vlastní koncové body pro obsluhu modelů

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

Informace o vytváření koncových bodů, které obsluhují modely generující 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")

Identita a přístup

Pokud chcete vytvořit nebo aktualizovat koncový bod obsluhující model, musí volající i autor nahraného koncového bodu:

  • Buďte členem pracovního prostoru.
  • Podržte si workspace-access oprávnění.

Identita tvůrce

Při vytvoření koncového bodu Databricks zaznamená identitu volajícího jako tvůrce koncového bodu. Tato identita – obvykle instanční objekt služby – se používá k přístupu k prostředkům Unity Catalog jménem koncového bodu a po vytvoření ji nelze změnit.

Pokud evidovaný autor nemá požadovaná oprávnění v katalogu Unity nebo byl odebrán z pracovního prostoru, musíte endpoint odstranit a znovu ho vytvořit pod instančním objektem služby, který má požadovaná oprávnění a je stávajícím členem pracovního prostoru.

Aktualizace konfigurace a entity poskytující službu znovu vyhodnotí členství zaznamenaného tvůrce v pracovním prostoru a jeho oprávnění. Aktualizace selžou s PERMISSION_DENIED, pokud evidovaný autor už není členem pracovního prostoru, i v případě, že má volající platná oprávnění.

Granty pro obsluhovanou entitu

Evidovaný tvůrce musí mít u každé obsluhované entity následující oprávnění. Oprávnění ověřovaná při vytváření nebo aktualizaci koncového bodu způsobí selhání požadavku s PERMISSION_DENIED, pokud chybí. Požadovaná oprávnění při dotazu se předem neověřují – chybějící oprávnění způsobují chyby za běhu, když koncový bod zpracovává provoz.

Typ zdroje Požadované udělení Po ověření
Model katalogu Unity v USE CATALOG katalogu, v USE SCHEMA schématu, v EXECUTE modelu Vytvoření nebo aktualizace koncového bodu

Poznámka:

Pokud model v katalogu Unity deklaruje tranzitivní závislosti na funkcích, evidovaný autor také potřebuje EXECUTE k těmto nadřazeným funkcím.

Správa přístupu ke koncovému bodu

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

Vytvoření koncového bodu

Obsluha uživatelského rozhraní

Můžete vytvořit koncový bod pro obsluhu modelu pomocí uživatelského rozhraní Serving.

  1. Klikněte na Serving na bočním panelu pro zobrazení rozhraní Serving UI.

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

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

Pro modely v katalogu Unity (doporučeno) nebo ve starším registru modelů pracovního prostoru:

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

    • Názvy koncových bodů nemůžou používat předponu databricks- . Tato předpona je vyhrazená pro předkonfigurované koncové body Databricks.
  2. V části Obsluhované entity

    1. Klikněte do pole Entita a otevřete formulář Vybrat obsluhovanou entitu.
    2. Vyberte my models – Unity Catalog nebo My models – Registr modelů na základě toho, kde je váš model zaregistrovaný. Formulář se dynamicky aktualizuje na základě vašeho výběru.
    3. Zvolte, který model a kterou verzi modelu chcete nasadit.
    4. Vyberte procento provozu, které chcete směrovat do vašeho obsluhovaného modelu.
    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. Viz Typ výpočetních prostředků pro dostupné typy úloh, včetně CPU_MEDIUM možností a CPU_LARGE možností pro modely, které potřebují více paměti než standardní CPU typ. Příklady kódu GPU najdete v tématu Typy úloh GPU.
    6. V části Škálování výpočetních prostředků vyberte velikost škálování, která odpovídá počtu požadavků, které tento model může zpracovat současně. Toto číslo by se mělo přibližně rovnat době běhu modelu QPS x. Informace o nastavení výpočetních prostředků definovaných zákazníkem najdete v tématu Omezení obsluhy modelu.
      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 nepoužívání škálovat na nulu. Škálování na nulu se nedoporučuje pro produkční koncové body, protože při škálování na nulu není zaručená kapacita. Když se koncový bod škáluje na nulu, je k dispozici další latence, která se označuje také jako studený start, když se koncový bod škáluje zpět tak, aby obsloužil požadavky.
    8. V části Pokročilá konfigurace můžete:
    9. (Volitelné) Pokud chcete do koncového bodu přidat další obsluhované entity, klikněte na Přidat obslouženou entitu a opakujte výše uvedené kroky konfigurace. Můžete obsluhovat více modelů nebo verzí modelu z jednoho koncového bodu a řídit rozdělení provozu mezi nimi. Další informace najdete v tématu Obsluha více modelů .
  3. V části Optimalizace trasy můžete pro koncový bod povolit optimalizaci tras. Optimalizace tras se doporučuje pro koncové body s vysokými požadavky na QPS a propustnost. Viz Optimalizace trasy pro obsluhu koncových bodů.

  4. V části Brána AI můžete vybrat, které funkce zásad správného řízení se mají ve vašem koncovém bodu povolit. Viz zásady správného řízení AI pomocí brány Unity AI.

  5. Klikněte na Vytvořit. Stránka Obslužné koncové body se zobrazí se stavem obsluhy koncového bodu, který je zobrazený jako Není připraveno.

    Vytvořte koncový bod pro obsluhu modelu

REST API

Koncové body můžete vytvářet pomocí rozhraní REST API. Další informace o parametrech konfigurace koncového bodu naleznete v části POST /api/2.0/serving-endpoints.

Následující příklad vytvoří koncový bod, který slouží třetí verzi modelu my-ads-model, který je zaregistrovaný v registru modelu Katalogu Unity. Pokud chcete zadat model z katalogu Unity, zadejte úplný název modelu včetně nadřazeného katalogu a schématu, například catalog.schema.example-model. Tento příklad používá vlastní definovanou souběžnost s min_provisioned_concurrency a max_provisioned_concurrency. Hodnoty souběžnosti musí být násobky 4.


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",
        "min_provisioned_concurrency": 4,
        "max_provisioned_concurrency": 12,
        "scale_to_zero_enabled": false
      }
    ]
  }
}

Následuje příklad odpovědi. Stav koncového bodu config_update je NOT_UPDATING a servírovaný model je ve READY stavu.

{
  "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",
        "entity_version": "3",
        "min_provisioned_concurrency": 4,
        "max_provisioned_concurrency": 12,
        "scale_to_zero_enabled": false,
        "workload_type": "CPU",
        "state": {
          "deployment": "DEPLOYMENT_READY",
          "deployment_state_message": ""
        },
        "creator": "user@email.com",
        "creation_timestamp": 1700089760000
      }
    ],
    "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 vytváření, aktualizaci a mazání úloh. Rozhraní API pro tyto úlohy přijímají stejné parametry jako rozhraní REST API pro obsluhu koncových bodů. Další informace o parametrech konfigurace koncového bodu naleznete v části POST /api/2.0/serving-endpoints.

Následující příklad vytvoří koncový bod, který slouží třetí verzi modelu my-ads-model, který je zaregistrovaný v registru modelu Katalogu Unity. Je nutné zadat úplný název modelu včetně nadřazeného katalogu a schématu, například catalog.schema.example-model. Tento příklad používá vlastní definovanou souběžnost s min_provisioned_concurrency a max_provisioned_concurrency. Hodnoty souběžnosti musí být násobky 4.

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="unity-catalog-model-endpoint",
    config={
        "served_entities": [
            {
                "name": "ads-entity",
                "entity_name": "catalog.schema.my-ads-model",
                "entity_version": "3",
                "min_provisioned_concurrency": 4,
                "max_provisioned_concurrency": 12,
                "scale_to_zero_enabled": False
            }
        ]
    }
)

Klient pracovního prostoru

Následující příklad ukazuje, jak vytvořit koncový bod pomocí klientské sady SDK pracovního prostoru Databricks.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

w = WorkspaceClient()

w.serving_endpoints.create(
    name="uc-model-endpoint",
    config=EndpointCoreConfigInput(
        served_entities=[
            ServedEntityInput(
                name="ads-entity",
                entity_name="catalog.schema.my-ads-model",
                entity_version="3",
                workload_size="Small",
                scale_to_zero_enabled=False
            )
        ]
    )
)

Můžete také:

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

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šší

Následující příklady ukazují, jak vytvářet koncové body GPU pomocí různých metod.

Obsluha uživatelského rozhraní

Pokud chcete nakonfigurovat koncový bod pro úlohy GPU pomocí uživatelského rozhraní obsluhy , vyberte požadovaný typ GPU z rozevíracího seznamu Typ výpočetního prostředí při vytváření koncového bodu. Postupujte stejně jako v části Vytvoření koncového bodu, ale místo procesoru vyberte typ úlohy GPU.

REST API

Pokud chcete nasadit modely pomocí GPU, zahrňte pole v konfiguraci koncového bodu workload_type.

POST /api/2.0/serving-endpoints

{
  "name": "gpu-model-endpoint",
  "config": {
    "served_entities": [{
      "entity_name": "catalog.schema.my-gpu-model",
      "entity_version": "1",
      "workload_type": "GPU_SMALL",
      "workload_size": "Small",
      "scale_to_zero_enabled": false
    }]
  }
}

Sada SDK pro nasazení MLflow

Následující příklad ukazuje, jak vytvořit koncový bod GPU pomocí sady SDK pro nasazení MLflow.

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="gpu-model-endpoint",
    config={
        "served_entities": [{
            "entity_name": "catalog.schema.my-gpu-model",
            "entity_version": "1",
            "workload_type": "GPU_SMALL",
            "workload_size": "Small",
            "scale_to_zero_enabled": False
        }]
    }
)

Klient pracovního prostoru

Následující příklad ukazuje, jak vytvořit koncový bod GPU pomocí klientské sady SDK pracovního prostoru Databricks.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

w = WorkspaceClient()

w.serving_endpoints.create(
    name="gpu-model-endpoint",
    config=EndpointCoreConfigInput(
        served_entities=[
            ServedEntityInput(
                entity_name="catalog.schema.my-gpu-model",
                entity_version="1",
                workload_type="GPU_SMALL",
                workload_size="Small",
                scale_to_zero_enabled=False
            )
        ]
    )
)

Dostupné typy úloh GPU závisí na vašem poskytovateli cloudu, jak je shrnuto v následující tabulce.

Typ úlohy GPU GPU instanci Paměť GPU
GPU_SMALL 1xT4 16 GB
GPU_LARGE 1xA100 80 GB
GPU_LARGE_2 2x A100 160 GB
GPU_LARGE_4 4xA100 320 GB

U koncových bodů GPU hodnota souběžnosti určuje počet replik přidělených pro obsluhu modelu. Počet replik se rovná hodnotě souběžnosti dělené hodnotou 4. Například nastavení min_provisioned_concurrency na 12 zajistí 3 repliky.

Ú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.

Poznámka:

Aktualizace konfigurace a obsluhovaných entit znovu ověřují zaznamenané členství tvůrce koncového bodu v pracovním prostoru a oprávnění pro jednotlivé obsluhované entity. Před odesláním aktualizace potvrďte, že oba stále platí; viz Identita a přístup.

Abyste se vyhnuli chybám aktualizace:

  • Jako autora koncového bodu použijte instanční objekt služby s dlouhou životností vlastněný vaším týmem.
  • Nepoužívejte osobní uživatelský účet, který se může později deaktivovat nebo odebrat z pracovního prostoru.
  • Evidovaný autor musí po celou dobu existence koncového bodu zůstat členem pracovního prostoru.

Poznámka:

Aktualizace konfigurace koncového bodu můžou selhat. Pokud dojde k selhání, stávající aktivní konfigurace zůstane efektivní, jako kdyby k aktualizaci nedošlo.

Zkontrolujte stav koncového bodu a ověřte, že se aktualizace úspěšně nainstalovala.

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.

Tlačítko Upravit koncový bod

Většinu aspektů konfigurace koncového bodu můžete změnit s výjimkou názvu koncového bodu a určitých neměnných vlastností.

Probíhající aktualizaci konfigurace můžete zrušit výběrem možnosti Zrušit aktualizaci na stránce podrobností koncového bodu.

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

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.update_endpoint_config(
  endpoint=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
            }
        ]
    }
  }
)

Vyhodnocení 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 rychlému spuštění s rozhraními pro obsluhu modelů. Další příklady najdete v tématu Kurz: Nasazení a dotazování vlastního modelu.

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

Trénování a registrace modelu scikit-learn pro obsluhu modelů v poznámkovém bloku

Získejte poznámkový blok

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

Získejte poznámkový blok