Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka popisuje, jak používat expresní nasazení v modelu obsluhující koncové body. Rychlá nasazení zkracují dobu nasazení a zachovávají prostředí pro provoz modelu stejné jako prostředí pro trénování modelu.
Note
Expresní nasazení se dříve označovala jako bezserverová optimalizovaná nasazení.
Co jsou expresní nasazení?
Balíčky nasazení Express a artefakty modelu fáze v prostředí bezserverových poznámkových bloků během registrace modelu Tím se urychlí nasazení endpointů a zajistí se konzistence prostředí pro trénování i produkční nasazení.
V jiných než expresních nasazeních se artefakty modelu a prostředí zabalí do kontejnerů v době nasazení, takže obslužné prostředí nemusí odpovídat prostředí použitému během trénování modelu.
Standardní a expresní nasazení
Následující tabulka porovnává standardní nasazení a expresní nasazení.
| Aspect | Standardní nasazení | Expresní nasazení |
|---|---|---|
| Když je prostředí vytvořeno | Image kontejneru se sestaví v době nasazení. | Artefakty a prostředí jsou zabaleny při registraci modelu. |
| Prostředí pro trénování a nasazení | Obslužné prostředí nemusí odpovídat trénovacímu prostředí. | Prostředí pro nasazení je totožné s prostředím notebooku, ze kterého jste jej zaregistrovali. |
| Rychlost nasazení | Pomalejší. Nasazení čeká na vytvoření obrazu kontejneru. | Rychlejší. Nasazení přeskočí sestavení obrazu kontejneru. |
| Rychlost registrace | Standardní. | Přidá sekundy na minutu pro balení v závislosti na velikosti modelu a prostředí. |
| Protokol událostí nasazení | Zobrazuje události vytváření imagí kontejneru. | Nezobrazuje události vytváření imagí kontejneru. |
Rychlá nasazení přesouvají jednorázovou práci spojenou se zabalením do registrace modelu, což prodlouží volání register_model o několik sekund až minutu v závislosti na velikosti modelu a prostředí. Na oplátku je nasazení výrazně rychlejší: zcela přeskočí sestavení bitové kopie kontejneru. Tento build je také běžným zdrojem selhání nasazení (problémy při vyhodnocování závislostí, chyby při sestavování imagí), takže jeho vynechání odstraní celou skupinu problémů. Protokol událostí nasazení pro expresní model neobsahuje žádné události sestavení kontejneru.
Requirements
Koncové body nasazení Express mají stejné požadavky jako koncový bod obsluhující model. Viz Požadavky.
Kromě toho:
- Musí jít o vlastní model
- Model musí být zalogován a zaregistrován v bezserverovém poznámkovém bloku pomocí verze 3 nebo novější.
- Model musí být protokolován a registrován s
mlflow>=3.12adatabricks-sdk>=0.102.0 - Model musí být zaregistrovaný v katalogu Unity. Výpočetní prostředky pro nasazení musí odpovídat výpočetním prostředkům, ze kterých byl model zaregistrován. Můžete registrovat z běžného bezserverového notebooku pro nasazení na CPU nebo z bezserverového výpočetního prostředí GPU pro nasazení na GPU.
- Maximální velikost prostředí modelu je 200 GB.
Note
Pokud chcete nasadit vlastní LLM na výpočetní infrastruktuře GPU pomocí Express Deployments, viz Nasazení vlastních LLM pomocí služby Custom Model Serving.
Nasaďte reranker na GPU
V tomto návodu nasadíte BAAI/bge-reranker-base, cross-encoder reranker, který vyhodnocuje, jak dobře dokument odpovídá na zadaný dotaz. Nastaví prostředí, zaznamená a zaregistruje model pomocí funkce Express packaging, nasadí koncový bod a odešle na něj dotaz.
Nasazení GPU často selhává kvůli konfliktům mezi verzemi závislostí, například mezi torch a CUDA. Expresní nasazení to řeší dvěma způsoby:
- Pevně daná publikovaná sada knihoven předinstalovaných v každé verzi bezserverového prostředí GPU je při obsluze k dispozici přesně ve stejné podobě jako v notebooku — stejná verze prostředí, stejné verze knihoven. Tyto knihovny nejsou znovu zabalené.
- Všechny další závislosti, které nainstalujete v relaci poznámkového bloku (například s
%pip install), se zabalí během registrace a během obsluhy se obnoví.
To dohromady znamená, že model, který běží ve vašem notebooku, funguje i po nasazení.
Krok 1: Nastavte bezserverový poznámkový blok s GPU
Vytvořte notebook pro bezserverové výpočty GPU s GPU A10 a vyberte verzi prostředí 5, prostředí AI. Prostředí AI zahrnuje PyTorch a běžné knihovny strojového učení (torchtransformersa další). Přesné připnuté verze najdete v tématu Bezserverové prostředí GPU verze 5 (Preview).
Nainstalujte balíčky, které expresní nasazení vyžaduje:
# 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
Závislosti můžete deklarovat také prostřednictvím bezserverového prostředí, ale instalace v poznámkovém bloku je nejjednodušší cesta. Vyvíjejte s pevně připnutými verzemi prostředí, aby prostředí poznámkového bloku odpovídalo produkčnímu prostředí.
Protože je tento model nasazován na GPU, musíte ho zalogovat a zaregistrovat z bezserverového běhového prostředí GPU. Pokud omylem zalogujete model z bezserverového výpočetního prostředí CPU, model se zabalí se závislostmi pro CPU a koncový bod pro obsluhu na GPU se nepodaří spustit. Přidejte následující kontrolu, aby došlo k okamžitému selhání, pokud notebook neběží ve spuštění GPU:
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
Tato kontrola je potřeba jen proto, že reranker běží na GPU. Model procesoru ho nepotřebuje.
Krok 2: Protokolování modelu pomocí MLflow
Načtěte reranker jako text-classification pipeline a zalogujte ho s nativní příchutí mlflow.transformers. Nativní příchuť automaticky zachycuje závislosti pip modelu a spouští se na GPU. Nemusíte nastavovat pip_requirements, task ani vstupní bod.
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
Neregistrujte model pomocí argumentu registered_model_name u log_model. Tento argument nepřijímá env_pack, takže zaregistruje model non-express. Pokud chcete povolit expresní nasazení, zaregistrujte se v samostatném kroku register_model (krok 3), který přijímá env_pack.
Krok 3: Registrace modelu do katalogu Unity pomocí expresního balení
Zaregistrujte model do katalogu Unity a nastavte env_pack parametr tak, aby umožňoval expresní nasazení. Tím se zabalí artefakty modelu a závislosti, které jste během registrace přidali do relace notebooku, takže je obsluha znovu využije vedle knihoven předinstalovaných v dané verzi prostředí.
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"),
)
Místo env_pack="databricks_model_serving" můžete použít zkrácený zápis řetězce EnvPackConfig(name="databricks_model_serving"). Pracovní prostory bez přístupu k internetu nebo s vlastními knihovnami nastavte install_dependencies=False (viz Parametrenv_pack).
Registrace vyžaduje databricks-sdk>=0.102.0. Starší verze mohou při nahrávání velkých artefaktů modelu vypršet.
Krok 4: Vytvořte koncový bod pro obsluhu
Nasaďte zaregistrovaný model pomocí sady Azure Databricks SDK. Tento krok nasazení je stejný jako u jakéhokoli vlastního modelu – pouze krok registrace (Krok 3) se u Express liší.
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 blokuje, dokud koncový bod není připravený.
GPU_SMALL postačuje pro tento model pro přehodnocení pořadí. Protože nasazení znovu používá stejnou verzi prostředí a obnovuje závislosti, které jste přidali v poznámkovém bloku, nasazený model běží se stejnými verzemi knihoven, které jste při vývoji používali, bez ohledu na typ GPU.
Když se koncový bod nasadí, otevřete kartu Události koncového bodu v uživatelském rozhraní obsluhy. Vzhledem k tomu, že se jedná o expresní nasazení, protokol událostí nezobrazuje události vytváření imagí kontejneru (standardní nasazení ukazuje Container image creation initiated následované Container image creation finished successfully). Po dokončení koncového bodu se jeho stav zobrazí Připraveno.
Krok 5: Dotaz na koncový bod
Křížový kodér vyhodnocuje relevanci dotazu vůči dokumentu, proto odešlete pole text a text_pair. Dotazujte se programově pomocí sady Databricks SDK nebo curl.
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
Koncový bod vrátí skóre relevance pro každou dvojici dokumentů dotazu; vyšší skóre značí lepší shodu. Pomocí těchto skóre můžete znovu zařadit kandidátské dokumenty.
Příklad notebooku
Importujte následující poznámkový blok, abyste mohli projít tento postup od začátku do konce.
Úvodní notebook pro Express Reranker
Parametr env_pack
Výše uvedený rychlý start ukazuje expresní nasazení modelu GPU. Rychlá nasazení fungují i u modelů CPU. V každém případě povolíte expresní nasazení předáním env_pack do register_model:
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 zabalí a připraví artefakty modelu a závislosti, které jste přidali do relace poznámkového bloku v době registrace, což je důvod, proč registrace trvá déle než volání bez env_pack.
EnvPackConfig
install_dependencies přijímá parametr (Trueve výchozím nastavení). Pokud True, jsou závislosti modelu nainstalovány v aktuálním prostředí, aby se potvrdilo, že je prostředí platné.
Note
Registrace může selhat v pracovních prostorech bez přístupu k internetu nebo pokud model závisí na vlastních knihovnách, pokud install_dependencies je True. V těchto případech nastavte install_dependencies na False.
Řetězec "databricks_model_serving" můžete jako zkrácený zápis nahradit za EnvPackConfig(...). Je ekvivalentní EnvPackConfig(name="databricks_model_serving", install_dependencies=True).