Dela via


Skapa anpassade modellserverslutpunkter

Den här artikeln beskriver hur du skapar modellserverslutpunkter som hanterar anpassade modeller med databricks-modellservering.

Modellservern innehåller följande alternativ för att skapa slutpunkter:

  • Användargränssnittet för servering
  • REST-API
  • SDK för MLflow-distributioner

Information om hur du skapar slutpunkter som hanterar generativa AI-modeller finns i Skapa grundmodell som betjänar slutpunkter.

Krav

  • Din arbetsyta måste finnas i en region som stöds.
  • Om du använder anpassade bibliotek eller bibliotek från en privat speglingsserver med din modell kan du läsa Använda anpassade Python-bibliotek med modellservern innan du skapar modellslutpunkten.
  • Om du vill skapa slutpunkter med MLflow Deployments SDK måste du installera MLflow-distributionsklienten. Installera den genom att köra:
import mlflow.deployments

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

Åtkomstkontroll

Information om alternativ för åtkomstkontroll för modell som betjänar slutpunkter för slutpunktshantering finns i Hantera behörigheter för en modell som betjänar slutpunkten.

Identiteten som en modell som betjänar slutpunktskörningar under är kopplad till slutpunktens ursprungliga skapare. När slutpunkten har skapats kan den associerade identiteten inte ändras eller uppdateras på slutpunkten. Den här identiteten och dess associerade behörigheter används för att komma åt Unity Catalog-resurser för distributioner. Om identiteten inte har rätt behörighet för att komma åt de nödvändiga Unity Catalog-resurserna måste du ta bort slutpunkten och återskapa den under en användare eller tjänsthuvudnamn som kan komma åt de Unity Catalog-resurserna.

Du kan också lägga till miljövariabler för att lagra autentiseringsuppgifter för modellservering. Se Konfigurera åtkomst till resurser från modellserverslutpunkter

Skapa en slutpunkt

Serveringsgränssnitt

Du kan skapa en slutpunkt för modell som betjänar med användargränssnittet för servering .

  1. Klicka på Servering i sidopanelen för att visa användargränssnittet för servering.

  2. Klicka på Skapa serverdelsslutpunkt.

    Modellvisningsfönstret i Databricks-användargränssnittet

För modeller som registrerats i arbetsytans modellregister eller modeller i Unity Catalog:

  1. I fältet Namn anger du ett namn för slutpunkten.

    • Slutpunktsnamn kan inte använda prefixet databricks- . Det här prefixet är reserverat för förkonfigurerade Databricks-slutpunkter.
  2. I avsnittet Serverade entiteter

    1. Klicka i fältet Entitet för att öppna formuläret Välj hanterad entitet.
    2. Välj antingen Mina modeller – Unity Catalog eller Mina modeller – Modellregister baserat på var din modell är registrerad. Formuläret uppdateras dynamiskt baserat på ditt val.
    3. Välj vilken modell och modellversion du vill tillhandahålla.
    4. Välj procentandelen trafik som ska dirigeras till din betjänade modell.
    5. Välj vilken storleksberäkning som ska användas. Du kan använda CPU- eller GPU-beräkningar för dina arbetsbelastningar. Mer information om tillgängliga GPU-beräkningar finns i GPU-arbetsbelastningstyper .
    6. Under Beräkna utskalningväljer du storleken på beräkningsskalningen som motsvarar antalet begäranden som den här hanterade modellen kan bearbeta samtidigt. Det här talet ska vara ungefär lika med QPS x modellkörningstid. För kunddefinierade beräkningsinställningar, se gränser för modellservering.
      1. Tillgängliga storlekar är Små för 0–4 begäranden, Mellan 8–16 begäranden och Stor för 16–64 begäranden.
    7. Ange om slutpunkten ska skalas till noll när den inte används. Skala till noll rekommenderas inte för produktionsslutpunkter eftersom kapaciteten inte garanteras när den skalas till noll. När en slutpunkt skalas till noll finns det ytterligare svarstid, även kallad kallstart, när slutpunkten skalar upp igen för att hantera begäranden.
    8. Under Avancerad konfiguration kan du:
      • Byt namn på den betjänade entiteten för att anpassa hur den visas i slutpunkten.
      • Lägg till miljövariabler för att ansluta till resurser från slutpunkten eller logga funktionssökningen DataFrame till slutpunktens slutsatsdragningstabell. För att logga funktionssökningen kräver DataFrame MLflow 2.14.0 eller senare.
    9. (Valfritt) Om du vill lägga till ytterligare betjänade entiteter i slutpunkten klickar du på Lägg till entitet som hanteras och upprepar konfigurationsstegen ovan. Du kan hantera flera modeller eller modellversioner från en enda slutpunkt och styra trafikdelningen mellan dem. Mer information finns i Hantera flera modeller .
  3. I avsnittet Routningsoptimering kan du aktivera routningsoptimering för slutpunkten. Routningsoptimering rekommenderas för slutpunkter med höga krav på QPS och dataflöde. Se Ruttoptimering på serverändpunkter.

  4. I avsnittet AI Gateway kan du välja vilka styrningsfunktioner som ska aktiveras på slutpunkten. Se introduktionen till Mosaic AI Gateway.

  5. Klicka på Skapa. Sidan Serveringsslutpunkter visas med tillståndet Serveringsslutpunkt som visas som Inte redo.

    Skapa en modell som betjänar slutpunkten

REST-API

Du kan skapa slutpunkter med hjälp av REST-API:et. Se POST /api/2.0/serving-endpoints för slutpunktskonfigurationsparametrar.

I följande exempel skapas en slutpunkt som hanterar den tredje versionen av my-ads-model modell som är registrerad i Unity Catalog-modellregistret. Om du vill ange en modell från Unity Catalog anger du det fullständiga modellnamnet, inklusive den överordnade katalogen och schemat, till exempel catalog.schema.example-model. I det här exemplet används anpassad samtidighet med min_provisioned_concurrency och max_provisioned_concurrency. Samtidighetsvärdena måste vara multiplar av 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
      }
    ]
  }
}

Följande är ett exempelsvar. Slutpunktens config_update tillstånd är NOT_UPDATING och den betjänade modellen är i ett READY tillstånd.

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

SDK för MLflow-distributioner

MLflow-distributioner tillhandahåller ett API för att skapa, uppdatera och ta bort uppgifter. API:erna för dessa uppgifter accepterar samma parametrar som REST-API:et för att betjäna slutpunkter. Se POST /api/2.0/serving-endpoints för slutpunktskonfigurationsparametrar.

I följande exempel skapas en slutpunkt som hanterar den tredje versionen av my-ads-model modell som är registrerad i Unity Catalog-modellregistret. Du måste ange det fullständiga modellnamnet inklusive överordnad katalog och schema, till exempel catalog.schema.example-model. I det här exemplet används anpassad samtidighet med min_provisioned_concurrency och max_provisioned_concurrency. Samtidighetsvärdena måste vara multiplar av 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
            }
        ]
    }
)

Arbetsytaklient

I följande exempel visas hur du skapar en slutpunkt med hjälp av Databricks Workspace Client SDK.

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

Du kan även:

  • Aktivera slutsatsdragningstabeller för att automatiskt samla in inkommande begäranden och utgående svar till din modell som betjänar slutpunkter.
  • Om du har aktiverat inferenstabeller på din slutpunkt kan du logga din funktionssökning DataFrame till inferenstabellen.

GPU-arbetsbelastningstyper

GPU-distributionen är kompatibel med följande paketversioner:

  • PyTorch 1.13.0 - 2.0.1
  • TensorFlow 2.5.0 - 2.13.0
  • MLflow 2.4.0 och senare

I följande exempel visas hur du skapar GPU-slutpunkter med olika metoder.

Serveringsgränssnitt

Om du vill konfigurera slutpunkten för GPU-arbetsbelastningar med användargränssnittet för servering väljer du önskad GPU-typ i listrutan Beräkningstyp när du skapar slutpunkten. Följ samma steg i Skapa en slutpunkt, men välj en GPU-arbetsbelastningstyp i stället för CPU.

REST-API

Om du vill distribuera dina modeller med hjälp av GPU:er inkluderar du fältet workload_type i slutpunktskonfigurationen.

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

SDK för MLflow-distributioner

I följande exempel visas hur du skapar en GPU-slutpunkt med MLflow Deployments SDK.

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 för arbetsyta

I följande exempel visas hur du skapar en GPU-slutpunkt med hjälp av Databricks Workspace Client SDK.

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

I följande tabell sammanfattas de tillgängliga GPU-arbetsbelastningstyper som stöds.

GPU-arbetsbelastningstyp GPU-instans GPU-minne
GPU_SMALL 1xT4 16 GB
GPU_LARGE 1xA100 80 GB
GPU_LARGE_2 2xA100 160 GB

Ändra en anpassad modellslutpunkt

När du har aktiverat en slutpunkt för en anpassad modell kan du uppdatera beräkningskonfigurationen efter behov. Den här konfigurationen är särskilt användbar om du behöver ytterligare resurser för din modell. Arbetsbelastningens storlek och beräkningskonfiguration spelar en viktig roll i vilka resurser som allokeras för att betjäna din modell.

Anmärkning

Uppdateringar av slutpunktskonfigurationen kan misslyckas. När fel inträffar förblir den befintliga aktiva konfigurationen effektiv som om uppdateringen inte inträffade.

Kontrollera att uppdateringen har tillämpats genom att granska statusen för slutpunkten.

Tills den nya konfigurationen är klar fortsätter den gamla konfigurationen att betjäna förutsägelsetrafik. Det pågår en uppdatering, men det går inte att göra någon annan uppdatering. Du kan dock avbryta en pågående uppdatering från användargränssnittet för servering.

Serveringsgränssnitt

När du har aktiverat en modellslutpunkt väljer du Redigera slutpunkt för att ändra beräkningskonfigurationen för slutpunkten.

Redigera slutpunktsknappen

Du kan ändra de flesta aspekter av slutpunktskonfigurationen, förutom slutpunktsnamnet och vissa oföränderliga egenskaper.

Du kan avbryta en pågående konfigurationsuppdatering genom att välja Avbryt uppdatering på slutpunktens informationssida.

REST-API

Följande är ett exempel på en slutpunktskonfigurationsuppdatering med hjälp av REST-API:et. Se 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
        }
      ]
    }
  }
}

SDK för MLflow-distributioner

SDK:n för MLflow-distributioner använder samma parametrar som REST-API:et, se PUT /api/2.0/serving-endpoints/{name}/config för information om begäran och svarsschema.

Följande kodexempel använder en modell från Unity Catalog-modellregistret:

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

Bedömning av en modellslutpunkt

Skicka begäranden till den modell som betjänar slutpunkten för att bedöma din modell.

Ytterligare resurser

Notebook-exempel

Följande notebook-filer innehåller olika Databricks-registrerade modeller som du kan använda för att komma igång med modellserverslutpunkter. Ytterligare exempel finns i Självstudie: Distribuera och utföra en förfrågan på en anpassad modell.

Modellexemplen kan importeras till arbetsytan genom att följa anvisningarna i Importera en notebook-fil. När du har valt och skapat en modell från ett av exemplen registrera den i Unity Catalogoch följ sedan arbetsflödet för användargränssnitt steg för modellservering.

Träna och registrera en scikit-learn-modell för modell som betjänar notebook-filer

Hämta anteckningsbok

Träna och registrera en HuggingFace-modell för modell som betjänar notebook-filen

Hämta anteckningsbok