Expressz üzembe helyezések végpontokat kiszolgáló modellhez

Ez az oldal bemutatja, hogyan használhat expressz telepítéseket az Ön modellkiszolgálási végpontjain. Az Express üzembe helyezések csökkentik az üzembe helyezési időt, és a modellkiszolgáló környezetet azonosan tartják a modell betanítási környezetével.

Note

Az Express telepítéseket korábban kiszolgáló nélküli működésre optimalizált telepítéseknek nevezték.

Mik azok a gyorstelepítések?

Az Express üzembe helyezések a modell regisztrálása során becsomagolják és előkészítik a modell-artefaktumokat kiszolgáló nélküli jegyzetfüzet-környezetekben. Ez felgyorsítja a végpontok üzembe helyezését, és konzisztensen tartja a betanítási és kiszolgáló környezeteket.

Nem expressz üzemelő példányokban a modellösszetevők és a környezetek tárolókba vannak csomagolva az üzembe helyezéskor, így előfordulhat, hogy a kiszolgáló környezet nem felel meg a modell betanítása során használtnak.

Standard és expressz telepítések

Az alábbi táblázat egy szabványos és egy expressz üzembe helyezést hasonlít össze.

Tulajdonság Normál üzembe helyezés Expressz üzembe helyezés
Amikor a környezet felépül A konténerkép az üzembe helyezéskor épül fel. A rendszer a modell regisztrálásakor csomagolja az összetevőket és a környezetet.
Betanítási és kiszolgáló környezet Előfordulhat, hogy a kiszolgáló környezet nem egyezik a betanítási környezettel. A kiszolgálókörnyezet megegyezik a regisztrált jegyzetfüzet-környezettel.
Üzembe helyezés sebessége Lassabb. Az üzembe helyezés a konténerkép létrehozására vár. Gyorsabb. Az üzembe helyezés kihagyja a konténerkép felépítését.
Regisztrációs sebesség Szabvány A modelltől és a környezet méretétől függően néhány másodperctől akár egy percig terjedő többletidőt ad a csomagolási időhöz.
Üzembehelyezési eseménynapló A konténerkép létrehozási eseményeit jeleníti meg. Nem jeleníti meg a tárolórendszerkép-létrehozási eseményeket.

Az expressz telepítések az egyszeri csomagolási feladatot a modell regisztrációjára helyezik át, ami a modell és a környezet méretétől függően néhány másodperccel, legfeljebb egy perccel növeli egy register_model hívás idejét. Cserébe az üzembe helyezés jelentősen gyorsabb: teljesen kihagyja a tárolólemezkép-buildet. Ez a build az üzembehelyezési hibák gyakori forrása is (függőségek feloldása, rendszerkép-összeállítási hibák), ezért a kihagyás a problémák egy teljes csoportját eltávolítja. Az expressz modell üzembehelyezési eseménynaplója nem tartalmaz tárolóépítési eseményeket.

Requirements

Az expressz üzembehelyezési végpontok követelményei megegyeznek a végpontot kiszolgáló modell követelményeivel. Lásd: Követelmények.

Ráadásul:

  • A modellnek egyéni modellnek kell lennie
  • A modellt egy kiszolgáló nélküli jegyzetfüzetben kell naplózni és regisztrálni a 3. vagy újabb verzióval
  • A modellt naplózni és regisztrálni kell a mlflow>=3.12 és a databricks-sdk>=0.102.0 segítségével
  • A modellt regisztrálni kell a Unity Katalógusban. A kiszolgáló számítási erőforrásnak meg kell egyeznie azzal a számítási erőforrással, amelyről a modellt regisztrálták. Regisztrálhat egy normál kiszolgáló nélküli jegyzetfüzetből, hogy processzoron szolgáljon, vagy kiszolgáló nélküli GPU-számításból , hogy GPU-n szolgáljon.
  • A modell maximális környezetmérete 200 GB

Note

Ha egyéni LLM-et szeretne kiszolgálni GPU-s számítási kapacitáson Express üzembe helyezésekkel, tekintse meg az Egyéni LLM-ek kiszolgálása egyéni modellkiszolgálással.

Újrarangsoroló telepítése GPU-n

Ez az útmutató bemutatja a BAAI/bge-reranker-base, egy cross-encoder újrarangsoroló üzembe helyezését, amely az alapján pontozza a dokumentumokat, hogy azok mennyire adnak jó választ egy lekérdezésre. Beállítja a környezetet, naplózza és regisztrálja a modellt expressz csomagolással, üzembe helyezi a végpontot, és lekérdezi azt.

A GPU-telepítések gyakran meghiúsulnak a függőségek verzióütközései miatt, például a torch és a CUDA között. Az Express telepítések ezt kétféleképpen oldják meg:

  • A minden szerver nélküli GPU-környezetverzióban előre telepített, rögzített és közzétett kódtárkészlet a kiszolgálás során pontosan ugyanúgy rendelkezésre áll, mint a notebookban – ugyanaz a környezetverzió, ugyanazok a verziók. Ezek a kódtárak nincsenek újracsomagolva.
  • A notebook-munkamenetben telepített minden további függőség (például a(z) %pip install használatával) a regisztráció során becsomagolásra kerül, és kiszolgáláskor visszaállításra kerül.

Mindez azt jelenti, hogy a notebookban futó modell a kiszolgálásra történő telepítés után is tovább működik.

1. lépés: Kiszolgáló nélküli GPU-jegyzetfüzet beállítása

Hozzon létre egy notebookot serverless GPU-számítással egy A10 GPU-val, és válassza ki az 5-ös verziójú AI-környezetet. Az AI-környezet tartalmazza a PyTorchot és a gyakori gépi tanulási kódtárakat (torchtransformersstb.). A pontosan rögzített verziókért lásd: Kiszolgáló nélküli GPU-környezet 5. verziója (előzetes verzió).

Telepítse az expressz üzembe helyezéshez szükséges csomagokat:

# Express deployment requires recent MLflow and Databricks SDK versions.
%pip install "mlflow>=3.12" "databricks-sdk>=0.102.0"
# Install the libraries your model needs. transformers is preinstalled in the
# v5 AI environment; install it explicitly because this model depends on it.
%pip install transformers
%restart_python

A függőségeket kiszolgáló nélküli környezetben is deklarálhatja, de a jegyzetfüzetbe való telepítés a legegyszerűbb útvonal. A környezet rögzített verzióit használva fejlesszen, hogy a jegyzetfüzet-környezet megfeleljen a kiszolgálási környezetnek.

Mivel ez a modell GPU-n van kiszolgálva, egy kiszolgáló nélküli GPU-futtatókörnyezetből kell naplóznia és regisztrálnia. Ha véletlenül jelentkezik be a kiszolgáló nélküli CPU-számításból, a modell processzorfüggőségekkel van csomagolva, és a GPU-kiszolgáló végpontja nem indul el. Adja hozzá a következő ellenőrzést, hogy a folyamat azonnal leálljon, ha a notebook nem GPU-s futtatókörnyezetben fut:

import os

# This model is intended to be served on GPU, so we must log and register from a Serverless GPU runtime.
if not os.environ.get("DATABRICKS_ACCELERATOR"):
    raise RuntimeError(
        "This model MUST be logged+registered from a serverless GPU runtime, otherwise the correct dependencies will not be packaged for serving."
    )

Note

Erre az ellenőrzésre csak azért van szükség, mert a reranker GPU-n fut. A CPU-modelleknek nincs rá szükségük.

2. lépés: A modell naplózása az MLflow használatával

Töltse be az újrarangsorolót text-classification folyamatként, és naplózza a natív mlflow.transformers változattal. A natív változat automatikusan rögzíti a modell pip-függőségeit, és GPU-n fut. Nem kell beállítania sem a pip_requirements elemet, sem a task elemet, sem a belépési pontot.

import mlflow
from transformers import pipeline

# BAAI/bge-reranker-base is a cross-encoder reranker: it scores how well a document answers a query.
pipe = pipeline("text-classification", model="BAAI/bge-reranker-base")

model_info = mlflow.transformers.log_model(
    transformers_model=pipe,
    name="bge_reranker",
    input_example={
        "text": "What is Databricks?",
        "text_pair": "Databricks is a data and AI company.",
    },
)

Important

Ne regisztrálja a modellt a registered_model_name következő argumentummal log_model: . Ez az argumentum nem fogadja el env_pack, ezért nem expressz modellt regisztrál. A gyors üzembe helyezés engedélyezéséhez külön lépésben regisztráljon a(z) register_model használatával (3. lépés), amely elfogadja a(z) env_pack elemet.

3. lépés: A modell regisztrálása a Unity Katalógusba expressz csomagolással

Regisztrálja a modellt a Unity Catalogban, és állítsa be a paramétert az env_pack expressz üzembe helyezés engedélyezéséhez. Ez a csomag a modellösszetevőket és a jegyzetfüzet-munkamenethez a regisztráció során hozzáadott függőségeket csomagolja, így a szolgáltatás újra felhasználja őket a környezeti verzió előre telepített kódtárai fölé.

import mlflow
from mlflow.utils.env_pack import EnvPackConfig

mlflow.set_registry_uri("databricks-uc")

model_version = mlflow.register_model(
    model_uri=model_info.model_uri,
    name="main.default.bge_reranker",
    env_pack=EnvPackConfig(name="databricks_model_serving"),
)

A(z) env_pack="databricks_model_serving" karakterlánc-rövid forma használható a(z) EnvPackConfig(name="databricks_model_serving") helyett. Internethozzáférés nélküli vagy egyéni kódtárakat használó munkaterületek esetén állítsa be a install_dependencies=False értéket (lásd: A env_pack paraméter).

A regisztrációhoz databricks-sdk>=0.102.0 szükséges. A korábbi verziók időtúllépést okozhatnak a nagy modellösszetevők feltöltésekor.

4. lépés: Kiszolgálóvégpont létrehozása

Telepítse a regisztrált modellt a Azure Databricks SDK-val. Ez az üzembe helyezési lépés ugyanaz, mint bármely egyéni modell esetében – csak a regisztrációs lépés (3. lépés) különbözik az expressztől.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import (
    EndpointCoreConfigInput,
    ServedEntityInput,
    ServingModelWorkloadType,
)

ENDPOINT_NAME = "bge-reranker-endpoint"

w = WorkspaceClient()
w.serving_endpoints.create_and_wait(
    name=ENDPOINT_NAME,
    config=EndpointCoreConfigInput(
        name=ENDPOINT_NAME,
        served_entities=[
            ServedEntityInput(
                name="bge-reranker",
                entity_name=model_version.name,
                entity_version=model_version.version,
                workload_type=ServingModelWorkloadType.GPU_SMALL,
                workload_size="Small",
                scale_to_zero_enabled=False,
            )
        ],
    ),
)

create_and_wait blokkol, amíg a végpont készen nem áll. GPU_SMALL elegendő ehhez a rangsorolóhoz. Mivel a kiszolgáló ugyanazt a környezeti verziót használja, és visszaállítja a jegyzetfüzetben hozzáadott függőségeket, a kiszolgált modell a GPU típusától függetlenül ugyanazokon a kódtárverziókon fut, mint az ön által kifejlesztett.

Amíg a végpont üzembe van helyezve, nyissa meg a végpont Események lapját a Kiszolgáló felhasználói felületén. Mivel ez egy expressz üzembe helyezés, az eseménynapló nem jeleníti meg a tárolólemezkép létrehozási eseményeit (egy szabványos üzembe helyezésnél a Container image creation initiated után a Container image creation finished successfully következik). Amikor a végpont befejeződik, az állapota Kész állapotú lesz.

5. lépés: A végpont lekérdezése

A keresztkódoló egy lekérdezést egy dokumentummal összevetve pontoz, ezért küldje el a text és text_pair mezőket. Lekérdezés programozott módon a Databricks SDK vagy a curl használatával.

Databricks SDK

w.serving_endpoints.query(
    name=ENDPOINT_NAME,
    dataframe_records=[
        {"text": "What is Databricks?", "text_pair": "Databricks is a data and AI company."},
    ],
)

curl

curl -X POST \
  -u "token:$DATABRICKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"dataframe_records":[{"text":"What is Databricks?","text_pair":"Databricks is a data and AI company."}]}' \
  https://<workspace-url>/serving-endpoints/bge-reranker-endpoint/invocations

A végpont minden lekérdezés-dokumentum párhoz egy relevanciapontot ad vissza; a magasabb pontszámok jobb egyezést jeleznek. Ezekkel a pontszámokkal rangsorolja újra a dokumentumjelölteket.

Példajegyzetfüzet

Importálja a következő jegyzetfüzetet, hogy az útmutatót az elejétől a végéig végrehajthassa.

Express reranker kezdő jegyzetfüzet

Jegyzetfüzet szerezz

A env_pack paraméter

A fenti rövid útmutató egy GPU-modell expressz üzembe helyezését mutatja be. Az expressz üzembe helyezések processzormodellekhez is működnek. A gyors üzembe helyezést minden esetben úgy engedélyezheti, hogy a(z) env_pack elemet átadja a(z) register_model elemnek:

import mlflow
from mlflow.utils.env_pack import EnvPackConfig

mlflow.register_model(
    model_info.model_uri,
    model_name,
    env_pack=EnvPackConfig(name="databricks_model_serving"),
)

env_pack becsomagolja és előkészíti a modellartifaktumokat, valamint a regisztráció időpontjában a jegyzetfüzet munkamenetéhez hozzáadott függőségeket, ezért a regisztráció tovább tart, mint egy env_pack nélküli hívás.

EnvPackConfig elfogad egy paramétert install_dependencies (True alapértelmezés szerint). Amikor True, a modell függőségei az aktuális környezetbe települnek annak megerősítésére, hogy a környezet érvényes.

Note

A regisztráció sikertelen lehet internethozzáférés nélküli munkaterületeken, illetve akkor, ha a modell egyéni függvénytáraktól függ, és a(z) install_dependencies értéke True. Ezekben az esetekben állítsa be install_dependencies:False.

A(z) "databricks_model_serving" karakterláncot a(z) EnvPackConfig(...) helyett használhatja rövidítésként. Ez egyenértékű a EnvPackConfig(name="databricks_model_serving", install_dependencies=True).