Sdílet prostřednictvím


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")

Ří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 obsluhující model.

Identita, pod kterou běží služební koncový bod modelu, je svázaná s původním tvůrcem koncového bodu. Po vytvoření koncového bodu není možné přidruženou identitu změnit ani aktualizovat v koncovém bodu. Tato identita a její přidružená oprávnění se používají pro přístup k prostředkům katalogu Unity při nasazování. Pokud identita nemá příslušná oprávnění pro přístup k potřebným prostředkům katalogu Unity, musíte koncový bod odstranit a znovu ho vytvořit v rámci uživatele nebo instančního objektu, který má přístup k těmto prostředkům katalogu Unity.

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

    • 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. Další informace o dostupných výpočetních prostředcích GPU najdete v typech ú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 úvod Mosaic AI Gateway.

  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é:

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

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

Typ úlohy GPU GPU instanci Paměť GPU
GPU_SMALL 1xT4 16 GB
GPU_LARGE 1xA100 80 GB
GPU_LARGE_2 2x A100 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.

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

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