Share via


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-alapmodelleket kiszolgáló végpontok létrehozásáról a végpontokat kiszolgáló alapmodell létrehozása című témakörben olvashat.

Követelmények

  • A munkaterületnek támogatott régióban kell lennie.
  • Ha egyéni kódtárakat vagy tárakat használ egy privát tükörkiszolgálóról a modellel, a modellvégpont létrehozása előtt tekintse meg az egyéni Python-kódtárak használata a Modellszolgáltatás szolgáltatással című témakört.
  • 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 végpontok végpontjait kiszolgáló modell hozzáférés-vezérlési beállításainak megismeréséhez tekintse meg a modellvégpont engedélyeinek kezelése című témakört.

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

Kiszolgáló felhasználói felület

Létrehozhat végpontot a kiszolgáló felhasználói felülettel kiszolgáló modellhez.

  1. Kattintson az oldalsávOn a Kiszolgálás gombra a kiszolgáló felhasználói felületének 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.

  2. A Kiszolgált entitások szakaszban

    1. Kattintson az Entitás mezőbe a Kiszolgált entitás kiválasztása űrlap megnyitásához.
    2. Válassza ki a kiszolgálni kívánt modell típusát. 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 a használni kívánt méretet. 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ás csoportban válassza ki a számítási felskálázás méretét, amely megfelel azon kérelmek 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.
      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.
  3. Kattintson a Létrehozás gombra. A Végpontok kiszolgálása lap úgy jelenik meg , hogy a kiszolgálóvégpont állapota nem áll készen.

    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 modellnek a ads1 modellregisztrációs adatbázisban regisztrált első verzióját szolgálja ki. Ha meg szeretne adni egy modellt a Unity Katalógusbó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.


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

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

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

Mlflow deployments sdk

Az MLflow-környezetek api-t biztosítanak 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.


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

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

A modellek GPU-k használatával történő üzembe helyezéséhez használja a workload_type végpontkonfigurációban szereplő mezőt a végpont létrehozásakor vagy az API-val végzett végpontkonfigurációs frissítésként. Ha a gpu-számítási feladatok végpontját a kiszolgáló 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.

{
  "served_entities": [{
    "name": "ads1",
    "entity_version": "2",
    "workload_type": "GPU_LARGE",
    "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.

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.

Kiszolgáló felhasználói felület

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

A következőket teheti:

  • Válasszon néhány számítási feladat közül, és az automatikus skálázás automatikusan konfigurálva van a számítási feladat méretében.
  • Adja meg, hogy a végpont nullára legyen-e skálázva, ha nincs használatban.
  • Módosítsa a forgalom százalékát a kiszolgált modellre való átirányításhoz.

A folyamatban lévő konfigurációs frissítés megszakításához válassza a Mégse frissítést a végpont részletes lapjának jobb felső sarkában. Ez a funkció csak a kiszolgáló felhasználói felületén érhető el.

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

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 pontozása

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, amelyekkel a végpontokat kiszolgáló modellekkel ismerkedhet meg és futtatható.

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álasztott és létrehozott egy modellt az egyik példából, regisztrálja az MLflow modellregisztrációs adatbázisában, majd kövesse a felhasználói felület munkafolyamatának lépéseit a modell kiszolgálásához.

Scikit-learn modell betanítása és regisztrálása a notebookot kiszolgáló modellhez

Jegyzetfüzet beszerzése

HuggingFace-modell betanítása és regisztrálása a modellmegjelenítési jegyzetfüzethez

Jegyzetfüzet beszerzése