Végpontokat kiszolgáló egyéni modell létrehozása

Ez a cikk bemutatja, hogyan hozhatók létre olyan modellkiszolgáló végpontok, amelyek egyéni modelleket szolgálnak ki a Databricks modellkiszolgáló használatával.

A modellkiszolgáló a következő lehetőségeket kínálja a végpontlétrehozás kiszolgálásához:

  • A kiszolgáló felhasználói felülete
  • REST API
  • MLflow Deployments SDK

A generatív AI-modelleket kiszolgáló végpontok létrehozásához tekintse meg Végpontokat kiszolgáló alapmodell létrehozásacímű témakört.

Követelmények

  • A munkaterületnek támogatott régióban kell lennie.
  • Ha egyéni könyvtárakat vagy könyvtárakat használ egy privát tükörkiszolgálóról a modellel, tekintse meg a "Egyéni Python könyvtárak használata a Modellek kiszolgálásával" című részt, mielőtt létrehozná a modell végpontot.
  • Ahhoz, hogy végpontokat hozzon létre az MLflow Deployments SDK használatával, telepítenie kell az MLflow Deployment-ügyfelet. A telepítéshez futtassa a következőt:
import mlflow.deployments

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

Hozzáférés-vezérlés

A modellkiszolgálási végpontok hozzáférés-vezérlési beállításainak megismeréséhez a végpontok kezeléséhez tekintse meg a modellvégpont engedélyeinek kezelése című témakört.

Az identitás, amely alatt a végpontot kiszolgáló modell fut, a végpont eredeti létrehozójának nevéhez van kötve. A végpont létrehozása után a társított identitás nem módosítható vagy frissíthető a végponton. Ez az identitás és a hozzá tartozó engedélyek a Unity Catalog-erőforrások üzembe helyezéshez való elérésére szolgálnak. Ha az identitás nem rendelkezik a megfelelő engedélyekkel a szükséges Unity Catalog-erőforrások eléréséhez, törölnie kell a végpontot, és újra létre kell hoznia egy olyan felhasználó vagy szolgáltatásnév alatt, amely hozzáférhet a Unity Catalog erőforrásaihoz.

Környezeti változókat is hozzáadhat a modellkiszolgáló hitelesítő adatainak tárolásához. Lásd: Erőforrásokhoz való hozzáférés konfigurálása végpontokat kiszolgáló modellből

Végpont létrehozása

Felhasználói felület kiszolgálása

Létrehozhat egy végpontot a modell kiszolgálásához a Kiszolgálás felhasználói felület segítségével.

  1. Kattintson az oldalsávon a Kiszolgálás elemre a Kiszolgálás felület megjelenítéséhez.

  2. Kattintson a Kiszolgálóvégpont létrehozása elemre.

    Modellmegjelenítés panel a Databricks felhasználói felületén

A Munkaterület-modellregisztrációs adatbázisban vagy a Unity Katalógusban regisztrált modellek esetén:

  1. A Név mezőben adja meg a végpont nevét.

    • A végpontnevek nem használhatják az databricks- előtagot. Ez az előtag a Databricks előre konfigurált végpontjai számára van fenntartva.
  2. A Kiszolgált entitások szakaszban

    1. Kattintson a Entitás mezőbe a Kiszolgált entitás kiválasztása űrlap megnyitásához.
    2. Válassza ki a Saját modellek – Unity Katalógus vagy Saját modellek – Modellregisztrációs adatbázist a modell regisztrálásának helye alapján. Az űrlap a kijelölés alapján dinamikusan frissül.
    3. Válassza ki a kiszolgálni kívánt modellt és modellverziót.
    4. Válassza ki a kiszolgált modellhez irányítandó forgalom százalékos arányát.
    5. Válassza ki, hogy milyen méretű számítási teljesítményt kíván használni. A számítási feladatokhoz processzor- vagy GPU-számításokat is használhat. Az elérhető GPU-számításokkal kapcsolatos további információkért tekintse meg a GPU számítási feladatainak típusait .
    6. A Számítási felskálázásiterületen válassza ki a számítási felskálázás méretét, amely megfelel azon kérések számának, amelyeket a kiszolgált modell egyszerre tud feldolgozni. Ennek a számnak nagyjából egyenlőnek kell lennie a QPS x modell futási idejének. Az ügyfél által definiált számítási beállításokért tekintse meg a modellmegjelenítési korlátokat.
      1. Az elérhető méretek kicsik 0-4, közepes 8-16, 16-64 kérés esetén pedig nagy méretűek.
    7. Adja meg, hogy a végpont nullára legyen-e skálázva, ha nincs használatban. A kapacitás nem garantált, ha nullára van skálázva, így az éles végpontok esetében nem ajánlott nullára skálázni. Amikor egy végpont nullára skálázódik, további késés, más néven hidegindítás tapasztalható, amikor a végpont visszaskálázódik a kérések kiszolgálására.
    8. A Speciális konfiguráció területen az alábbiakat végezheti el:
    9. (Nem kötelező) Ha további kiszolgált entitásokat szeretne hozzáadni a végponthoz, kattintson a Kiszolgált entitás hozzáadása elemre, és ismételje meg a fenti konfigurációs lépéseket. Egyetlen végpontról több modellt vagy modellverziót is kiszolgálhat, és szabályozhatja a köztük lévő forgalom felosztását. További információért tekintse meg a több modell kiszolgálását ismertető témakört.
  3. Az Útvonaloptimalizálás szakaszban engedélyezheti a végpont útvonaloptimalizálását. Az útvonal-optimalizálást magas QPS- és átviteli sebességgel rendelkező végpontok esetében javasoljuk. Lásd : Útvonaloptimalizálás a végpontok kiszolgálására.

  4. Az AI-átjáró szakaszban kiválaszthatja, hogy mely szabályozási funkciókat szeretné engedélyezni a végponton. Lásd: Unity AI Gateway.

  5. Kattintson a Létrehozás. A Kiszolgáló végpontok lap úgy jelenik meg, hogy a kiszolgáló végpont állapota Nincs kész.

    Végpontot kiszolgáló modell létrehozása

REST API

Végpontokat a REST API használatával hozhat létre. A végpontkonfigurációs paraméterekről lásd POST /api/2.0/serving-endpoints.

Az alábbi példa egy végpontot hoz létre, amely a Unity Catalog-modellregisztrációs adatbázisban regisztrált my-ads-model modell harmadik verzióját szolgálja ki. Ha meg szeretne adni egy modellt a Unity Catalogból, adja meg a modell teljes nevét, beleértve a szülőkatalógust és a sémát, például catalog.schema.example-model. Ez a példa egyedileg meghatározott egyidejűséget használ a min_provisioned_concurrency és max_provisioned_concurrency. Az egyidejűségi értékeknek 4 többszörösének kell lenniük.


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

Az alábbiakban egy példaválasz látható. A végpont állapota config_update és a kiszolgált modell NOT_UPDATING állapotban van.

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

MLflow Deployments SDK

MLflow deployments api-t biztosít a létrehozási, frissítési és törlési feladatokhoz. A feladatok API-jai ugyanazokat a paramétereket fogadják el, mint a végpontok kiszolgálására szolgáló REST API-k. A végpontkonfigurációs paraméterekről lásd POST /api/2.0/serving-endpoints.

Az alábbi példa egy végpontot hoz létre, amely a Unity Catalog-modellregisztrációs adatbázisban regisztrált my-ads-model modell harmadik verzióját szolgálja ki. Meg kell adnia a teljes modellnevet, beleértve a szülőkatalógust és a sémát, például catalog.schema.example-model. Ez a példa egyedileg meghatározott egyidejűséget használ a min_provisioned_concurrency és max_provisioned_concurrency. Az egyidejűségi értékeknek 4 többszörösének kell lenniük.

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

Munkahelyi kliens

Az alábbi példa bemutatja, hogyan hozhat létre végpontot a Databricks-munkaterület ügyféloldali SDK-jával.

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

További lehetőségek:

GPU-számítási feladatok típusai

A GPU üzembe helyezése a következő csomagverziókkal kompatibilis:

  • PyTorch 1.13.0 – 2.0.1
  • TensorFlow 2.5.0 – 2.13.0
  • MLflow 2.4.0 vagy újabb

Az alábbi példák bemutatják, hogyan hozhat létre GPU-végpontokat különböző módszerekkel.

Felhasználói felület kiszolgálása

Ha a gpu-számítási feladatok végpontját a kiszolgálói felhasználói felülettel szeretné konfigurálni, válassza ki a kívánt GPU-típust a számítási típus legördülő listából a végpont létrehozásakor. Kövesse ugyanazokat a lépéseket a Végpont létrehozása szakaszban, de cpu helyett válasszon GPU-számítási feladattípust.

REST API

Ha GPU-k használatával szeretné üzembe helyezni a modelleket, vegye fel a mezőt a workload_type végpontkonfigurációba.

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

MLflow Deployments SDK

Az alábbi példa bemutatja, hogyan hozhat létre GPU-végpontot az MLflow Deployments SDK használatával.

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

Munkahelyi kliens

Az alábbi példa bemutatja, hogyan hozhat létre GPU-végpontot a Databricks-munkaterület ügyféloldali SDK-jával.

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

Az alábbi táblázat a támogatott GPU-számítási feladatok típusait foglalja össze.

GPU-számítási feladat típusa GPU-példány GPU-memória
GPU_SMALL 1xT4 16 GB
GPU_LARGE 1xA100 80 GB
GPU_LARGE_2 2xA100 160 GB

Egyéni modellvégpont módosítása

Az egyéni modellvégpont engedélyezése után igény szerint frissítheti a számítási konfigurációt. Ez a konfiguráció különösen hasznos, ha további erőforrásokra van szüksége a modellhez. A számítási feladatok mérete és a számítási konfiguráció kulcsfontosságú szerepet játszik abban, hogy milyen erőforrások vannak lefoglalva a modell kiszolgálásához.

Megjegyzés:

A végpontkonfiguráció frissítése sikertelen lehet. Hibák esetén a meglévő aktív konfiguráció úgy működik, mintha a frissítés nem történt volna meg.

Ellenőrizze, hogy a frissítés sikeresen alkalmazva lett-e a végpont állapotának áttekintésével.

Amíg az új konfiguráció nem áll készen, a régi konfiguráció továbbra is az előrejelzési forgalmat szolgálja ki. Amíg folyamatban van egy frissítés, egy másik frissítés nem végezhető el. A folyamatban lévő frissítéseket azonban megszakíthatja a kiszolgáló felhasználói felületén.

Felhasználói felület kiszolgálása

A modellvégpont engedélyezése után válassza Végpont szerkesztése lehetőséget a végpont számítási konfigurációjának módosításához.

Végpont szerkesztése gomb

A végpontkonfiguráció legtöbb aspektusát módosíthatja, kivéve a végpont nevét és bizonyos nem módosítható tulajdonságokat.

A folyamatban lévő konfigurációs frissítés megszakításához kattintson az Frissítés megszakítása gombra a végpont részletek lapján.

REST API

Az alábbiakban egy végpontkonfigurációs frissítési példát mutatunk be a REST API használatával. Lásd: 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
        }
      ]
    }
  }
}

MLflow Deployments SDK

Az MLflow Deployments SDK ugyanazokat a paramétereket használja, mint a REST API, lásd PUT /api/2.0/serving-endpoints/{name}/config a kérés- és válaszséma részleteiért.

A következő kódminta a Unity Catalog-modellregisztrációs adatbázisból származó modellt használja:

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

Modellvégpont kiértékelése

A modell pontozásához küldjön kéréseket a végpontot kiszolgáló modellnek.

További erőforrások

Jegyzetfüzet-példák

Az alábbi jegyzetfüzetek különböző Databricks-regisztrált modelleket tartalmaznak, amelyek segítenek elindulni a modellkiszolgáló végpontokkal. További példákért lásd oktatóanyagot: Egyéni modell üzembe helyezése és lekérdezése.

A modell példái a jegyzetfüzet importálása című témakörben ismertetett útmutatást követve importálhatók a munkaterületre. Miután kiválasztotta és létrehozta a modellt az egyik példából, regisztrálja a Unity Catalog-ban, majd kövesse a felhasználói felület munkafolyamatának lépéseit a modellkiszolgáláshoz.

Scikit-learn modell betanítása és regisztrálása egy modellkiszolgáló notebookhoz

Jegyzetfüzet lekérése

A HuggingFace-modell betanítása és regisztrálása modellkiszolgáló notebookhoz

Jegyzetfüzet lekérése