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.
Tento článek popisuje, jak vytvořit model obsluhující koncové body, které obsluhují vlastní modely pomocí služby Databricks Model Serving.
Obsluha modelu poskytuje následující možnosti pro obsluhu vytváření koncových bodů:
- Uživatelské rozhraní obsluhy
- REST API
- Sada SDK pro nasazení MLflow
Informace o vytváření koncových bodů, které obsluhují modely generující AI, najdete v tématu Vytvoření základního modelu obsluhujícího koncové body.
Požadavky
- Váš pracovní prostor musí být v podporované oblasti.
- Pokud ve svém modelu používáte vlastní knihovny nebo knihovny ze serveru privátního zrcadlení, přečtěte si téma Použití vlastních knihoven Pythonu s obsluhou modelů před vytvořením koncového bodu modelu.
- Pokud chcete vytvářet koncové body pomocí sady SDK pro nasazení MLflow, musíte nainstalovat klienta nasazení MLflow. Pokud ho chcete nainstalovat, spusťte:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Identita a přístup
Pokud chcete vytvořit nebo aktualizovat koncový bod obsluhující model, musí volající i autor nahraného koncového bodu:
- Buďte členem pracovního prostoru.
- Podržte si
workspace-accessoprávnění.
Identita tvůrce
Při vytvoření koncového bodu Databricks zaznamená identitu volajícího jako tvůrce koncového bodu. Tato identita – obvykle instanční objekt služby – se používá k přístupu k prostředkům Unity Catalog jménem koncového bodu a po vytvoření ji nelze změnit.
Pokud evidovaný autor nemá požadovaná oprávnění v katalogu Unity nebo byl odebrán z pracovního prostoru, musíte endpoint odstranit a znovu ho vytvořit pod instančním objektem služby, který má požadovaná oprávnění a je stávajícím členem pracovního prostoru.
Aktualizace konfigurace a entity poskytující službu znovu vyhodnotí členství zaznamenaného tvůrce v pracovním prostoru a jeho oprávnění. Aktualizace selžou s PERMISSION_DENIED, pokud evidovaný autor už není členem pracovního prostoru, i v případě, že má volající platná oprávnění.
Granty pro obsluhovanou entitu
Evidovaný tvůrce musí mít u každé obsluhované entity následující oprávnění. Oprávnění ověřovaná při vytváření nebo aktualizaci koncového bodu způsobí selhání požadavku s PERMISSION_DENIED, pokud chybí. Požadovaná oprávnění při dotazu se předem neověřují – chybějící oprávnění způsobují chyby za běhu, když koncový bod zpracovává provoz.
| Typ zdroje | Požadované udělení | Po ověření |
|---|---|---|
| Model katalogu Unity | v USE CATALOG katalogu, v USE SCHEMA schématu, v EXECUTE modelu |
Vytvoření nebo aktualizace koncového bodu |
Poznámka:
Pokud model v katalogu Unity deklaruje tranzitivní závislosti na funkcích, evidovaný autor také potřebuje EXECUTE k těmto nadřazeným funkcím.
Správa přístupu ke koncovému bodu
Informace o možnostech řízení přístupu pro koncové body obsluhy modelu najdete v tématu Správa oprávnění pro koncový bod obsluhy modelu.
Vytvoření koncového bodu
Obsluha uživatelského rozhraní
Můžete vytvořit koncový bod pro obsluhu modelu pomocí uživatelského rozhraní Serving.
Klikněte na Serving na bočním panelu pro zobrazení rozhraní Serving UI.
Klikněte na Vytvořit koncový bod obsluhy.
Pro modely v katalogu Unity (doporučeno) nebo ve starším registru modelů pracovního prostoru:
Do pole Název zadejte název vašeho koncového bodu.
- Názvy koncových bodů nemůžou používat předponu
databricks-. Tato předpona je vyhrazená pro předkonfigurované koncové body Databricks.
- Názvy koncových bodů nemůžou používat předponu
V části Obsluhované entity
- Klikněte do pole Entita a otevřete formulář Vybrat obsluhovanou entitu.
- Vyberte my models – Unity Catalog nebo My models – Registr modelů na základě toho, kde je váš model zaregistrovaný. Formulář se dynamicky aktualizuje na základě vašeho výběru.
- Ne všechny modely jsou vlastní modely. Modely můžou být základní modely nebo funkce pro obsluhu funkcí.
- Zvolte, který model a kterou verzi modelu chcete nasadit.
- Vyberte procento provozu, které chcete směrovat do vašeho obsluhovaného modelu.
- Vyberte, jakou velikost výpočetních prostředků chcete použít. Pro své úlohy můžete použít výpočetní výkon procesoru nebo GPU. Viz Typ výpočetních prostředků pro dostupné typy úloh, včetně
CPU_MEDIUMmožností aCPU_LARGEmožností pro modely, které potřebují více paměti než standardníCPUtyp. Příklady kódu GPU najdete v tématu Typy úloh GPU. - V části Škálování výpočetních prostředků vyberte velikost škálování, která odpovídá počtu požadavků, které tento model může zpracovat současně. Toto číslo by se mělo přibližně rovnat době běhu modelu QPS x. Informace o nastavení výpočetních prostředků definovaných zákazníkem najdete v tématu Omezení obsluhy modelu.
- Dostupné velikosti jsou malé pro 0 až 4 požadavky, středně velké 8 až 16 požadavků a velké pro požadavky 16 až 64.
- Určete, jestli se má koncový bod při nepoužívání škálovat na nulu. Škálování na nulu se nedoporučuje pro produkční koncové body, protože při škálování na nulu není zaručená kapacita. Když se koncový bod škáluje na nulu, je k dispozici další latence, která se označuje také jako studený start, když se koncový bod škáluje zpět tak, aby obsloužil požadavky.
- V části Pokročilá konfigurace můžete:
- Přejmenujte obsluhovanou entitu a přizpůsobte si, jak se zobrazuje v koncovém bodu.
- Přidejte proměnné prostředí pro připojení k prostředkům ze svého koncového bodu nebo zaznamenejte vyhledávací datový rámec funkce do tabulky odvozování koncového bodu. Protokolování datového rámce pro vyhledávání funkcí vyžaduje MLflow 2.14.0 nebo vyšší.
- (Volitelné) Pokud chcete do koncového bodu přidat další obsluhované entity, klikněte na Přidat obslouženou entitu a opakujte výše uvedené kroky konfigurace. Můžete obsluhovat více modelů nebo verzí modelu z jednoho koncového bodu a řídit rozdělení provozu mezi nimi. Další informace najdete v tématu Obsluha více modelů .
V části Optimalizace trasy můžete pro koncový bod povolit optimalizaci tras. Optimalizace tras se doporučuje pro koncové body s vysokými požadavky na QPS a propustnost. Viz Optimalizace trasy pro obsluhu koncových bodů.
V části Brána AI můžete vybrat, které funkce zásad správného řízení se mají ve vašem koncovém bodu povolit. Viz zásady správného řízení AI pomocí brány Unity AI.
Klikněte na Vytvořit. Stránka Obslužné koncové body se zobrazí se stavem obsluhy koncového bodu, který je zobrazený jako Není připraveno.
REST API
Koncové body můžete vytvářet pomocí rozhraní REST API. Další informace o parametrech konfigurace koncového bodu naleznete v části POST /api/2.0/serving-endpoints.
Následující příklad vytvoří koncový bod, který slouží třetí verzi modelu my-ads-model, který je zaregistrovaný v registru modelu Katalogu Unity. Pokud chcete zadat model z katalogu Unity, zadejte úplný název modelu včetně nadřazeného katalogu a schématu, například catalog.schema.example-model. Tento příklad používá vlastní definovanou souběžnost s min_provisioned_concurrency a max_provisioned_concurrency. Hodnoty souběžnosti musí být násobky 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
}
]
}
}
Následuje příklad odpovědi. Stav koncového bodu config_update je NOT_UPDATING a servírovaný model je ve READY stavu.
{
"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
}
Sada SDK pro nasazení MLflow
Nasazení MLflow poskytuje rozhraní API pro vytváření, aktualizaci a mazání úloh. Rozhraní API pro tyto úlohy přijímají stejné parametry jako rozhraní REST API pro obsluhu koncových bodů. Další informace o parametrech konfigurace koncového bodu naleznete v části POST /api/2.0/serving-endpoints.
Následující příklad vytvoří koncový bod, který slouží třetí verzi modelu my-ads-model, který je zaregistrovaný v registru modelu Katalogu Unity. Je nutné zadat úplný název modelu včetně nadřazeného katalogu a schématu, například catalog.schema.example-model. Tento příklad používá vlastní definovanou souběžnost s min_provisioned_concurrency a max_provisioned_concurrency. Hodnoty souběžnosti musí být násobky 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
}
]
}
)
Klient pracovního prostoru
Následující příklad ukazuje, jak vytvořit koncový bod pomocí klientské sady SDK pracovního prostoru Databricks.
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
)
]
)
)
Můžete také:
- Povolte odvozování tabulek , aby automaticky zaznamenávaly příchozí požadavky a odchozí odpovědi do modelu obsluhující koncové body.
- Pokud máte na koncovém bodu povolené tabulky odvozování, můžete do tabulky odvozování založit datový rámec vyhledávání funkcí .
Můžete také přidat proměnné prostředí pro uložení přihlašovacích údajů pro obsluhu modelu. Viz Konfigurace přístupu k prostředkům z koncových bodů obsluhujících model
Typy úloh GPU
Nasazení GPU je kompatibilní s následujícími verzemi balíčků:
- PyTorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 – 2.13.0
- MLflow 2.4.0 a vyšší
Následující příklady ukazují, jak vytvářet koncové body GPU pomocí různých metod.
Obsluha uživatelského rozhraní
Pokud chcete nakonfigurovat koncový bod pro úlohy GPU pomocí uživatelského rozhraní obsluhy , vyberte požadovaný typ GPU z rozevíracího seznamu Typ výpočetního prostředí při vytváření koncového bodu. Postupujte stejně jako v části Vytvoření koncového bodu, ale místo procesoru vyberte typ úlohy GPU.
REST API
Pokud chcete nasadit modely pomocí GPU, zahrňte pole v konfiguraci koncového bodu workload_type.
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
}]
}
}
Sada SDK pro nasazení MLflow
Následující příklad ukazuje, jak vytvořit koncový bod GPU pomocí sady SDK pro nasazení MLflow.
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 pracovního prostoru
Následující příklad ukazuje, jak vytvořit koncový bod GPU pomocí klientské sady SDK pracovního prostoru Databricks.
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
)
]
)
)
Dostupné typy úloh GPU závisí na vašem poskytovateli cloudu, jak je shrnuto v následující tabulce.
| Typ úlohy GPU | GPU instanci | Paměť GPU |
|---|---|---|
GPU_SMALL |
1xT4 | 16 GB |
GPU_LARGE |
1xA100 | 80 GB |
GPU_LARGE_2 |
2x A100 | 160 GB |
GPU_LARGE_4 |
4xA100 | 320 GB |
U koncových bodů GPU hodnota souběžnosti určuje počet replik přidělených pro obsluhu modelu. Počet replik se rovná hodnotě souběžnosti dělené hodnotou 4. Například nastavení min_provisioned_concurrency na 12 zajistí 3 repliky.
Úprava vlastního koncového bodu modelu
Po povolení vlastního koncového bodu modelu můžete podle potřeby aktualizovat konfiguraci výpočetních prostředků. Tato konfigurace je užitečná zejména v případě, že potřebujete další prostředky pro váš model. Velikost úloh a konfigurace výpočetních prostředků hrají klíčovou roli v tom, jaké prostředky se přidělují pro poskytování modelu.
Poznámka:
Aktualizace konfigurace a obsluhovaných entit znovu ověřují zaznamenané členství tvůrce koncového bodu v pracovním prostoru a oprávnění pro jednotlivé obsluhované entity. Před odesláním aktualizace potvrďte, že oba stále platí; viz Identita a přístup.
Abyste se vyhnuli chybám aktualizace:
- Jako autora koncového bodu použijte instanční objekt služby s dlouhou životností vlastněný vaším týmem.
- Nepoužívejte osobní uživatelský účet, který se může později deaktivovat nebo odebrat z pracovního prostoru.
- Evidovaný autor musí po celou dobu existence koncového bodu zůstat členem pracovního prostoru.
Poznámka:
Aktualizace konfigurace koncového bodu můžou selhat. Pokud dojde k selhání, stávající aktivní konfigurace zůstane efektivní, jako kdyby k aktualizaci nedošlo.
Zkontrolujte stav koncového bodu a ověřte, že se aktualizace úspěšně nainstalovala.
Dokud nebude nová konfigurace připravená, stará konfigurace bude dál obsluhovat predikční provoz. Zatímco probíhá aktualizace, nelze provést jinou aktualizaci. Probíhající aktualizaci ale můžete zrušit z uživatelského rozhraní obsluhy.
Obsluha uživatelského rozhraní
Po povolení koncového bodu modelu vyberte Upravit koncový bod a upravte výpočetní konfiguraci koncového bodu.
Většinu aspektů konfigurace koncového bodu můžete změnit s výjimkou názvu koncového bodu a určitých neměnných vlastností.
Probíhající aktualizaci konfigurace můžete zrušit výběrem možnosti Zrušit aktualizaci na stránce podrobností koncového bodu.
REST API
Následuje příklad aktualizace konfigurace koncového bodu pomocí rozhraní REST API. Viz 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
}
]
}
}
}
Sada SDK pro nasazení MLflow
Sada SDK pro nasazení MLflow používá stejné parametry jako rozhraní REST API, viz PUT /api/2.0/serving-endpoints/{name}/config pro podrobnosti schématu požadavků a odpovědí.
Následující ukázka kódu používá model z registru modelů katalogu Unity:
import mlflow
from mlflow.deployments import get_deploy_client
mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")
endpoint = client.update_endpoint_config(
endpoint=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
}
]
}
}
)
Vyhodnocení koncového bodu modelu
Pokud chcete model vyhodnotit, odešlete požadavky do koncového bodu obsluhy modelu.
Další materiály
- Správa koncových bodů pro obsluhu modelů
- Externí modely v Model Serving
- Pokud dáváte přednost použití Pythonu, můžete použít Python SDK pro reálné časové spouštění Databricks.
Příklady poznámkových bloků
Následující poznámkové bloky zahrnují různé registrované modely Databricks, které můžete použít k rychlému spuštění s rozhraními pro obsluhu modelů. Další příklady najdete v tématu Kurz: Nasazení a dotazování vlastního modelu.
Příkladové modely je možné importovat do pracovního prostoru podle pokynů v Import poznámkového bloku. Jakmile vyberete a vytvoříte model z některého z příkladů, zaregistrujte ho v katalogu Unity a pak postupujte podle kroků pracovního postupu uživatelského rozhraní pro obsluhu modelu.