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 spravovat koncové body obsluhující modely pomocí uživatelského rozhraní obsluhy a rozhraní REST API. Podívejte se na Koncové body pro poskytování služeb v referenční příručce REST API.
K vytvoření koncových bodů obsluhy modelu použijte jednu z následujících možností:
- Vytvořte vlastní model obsluhující koncové body.
- Vytvořit základní model pro obsluhu koncových bodů.
Získání stavu koncového bodu modelu
Stav koncového bodu můžete zkontrolovat pomocí uživatelského rozhraní obsluhy nebo programově pomocí rozhraní REST API, klienta pracovního prostoru Databricks nebo sady SDK pro nasazení MLflow.
Stavy koncových bodů mohou být Ready, Ready (Update failed), Not ready (Updating), Not ready (Update failed)nebo Not ready (Stopped). Připravenost odkazuje na to, jestli se koncový bod dá dotazovat nebo ne. Aktualizace selhala, což značí, že poslední změna koncového bodu nebyla úspěšná. Zastaveno znamená, že koncový bod byl zastaven.
uživatelské rozhraní
Indikátor stavu obsluhy koncového bodu v horní části stránky podrobností koncového bodu:
REST API
GET /api/2.0/serving-endpoints/{name}
V následující ukázkové odpovědi je pole state.ready "PŘIPRAVENO", což znamená, že koncový bod je připravený přijímat provoz. Pole state.update_state je NOT_UPDATING a pending_config se už nevrátí, protože aktualizace byla úspěšně dokončena.
{
"name": "unity-model-endpoint",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "READY",
"update_state": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "my-ads-model",
"entity_name": "myCatalog.mySchema.my-ads-model",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": false,
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
Klient pracovního prostoru Databricks
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
endpoint = w.serving_endpoints.get(name="my-endpoint")
print(f"Endpoint state: {endpoint.state.ready}")
print(f"Update state: {endpoint.state.config_update}")
Sada SDK pro nasazení MLflow
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="my-endpoint")
print(f"Endpoint state: {endpoint['state']}")
print(f"Endpoint config: {endpoint['config']}")
Zastavení koncového bodu obsluhy modelu
Dočasně můžete zastavit koncový bod obsluhující model a spustit ho později. Když je koncový bod zastavený:
- Prostředky zřízené pro něj jsou vypnuté.
- Koncový bod nemůže obsluhovat dotazy, dokud se znovu nespustí.
- Zastavit se dají jenom koncové body, které obsluhují vlastní modely a nemají probíhající aktualizace.
- Zastavené koncové body se do kvóty prostředků nezapočítávají.
- Dotazy odeslané do zastaveného koncového bodu vrátí chybu 400.
Zastavení koncového bodu
uživatelské rozhraní
V pravém horním rohu klikněte na Zastavit .
REST API
POST /api/2.0/serving-endpoints/{name}/config:stop
Spuštění koncového bodu
Spuštění koncového bodu vytvoří novou verzi konfigurace se stejnými vlastnostmi jako existující zastavená konfigurace.
Až budete připraveni spustit zastavený koncový bod obsluhy modelu:
uživatelské rozhraní
V pravém horním rohu klikněte na Start .
REST API
POST /api/2.0/serving-endpoints/{name}/config:start
Odstranění koncového bodu obsluhy modelu
Odstranění koncového bodu zakáže použití a odstraní všechna data přidružená ke koncovému bodu. Odstranění nelze vrátit zpět.
uživatelské rozhraní
Klikněte na nabídku kebab v horní části a vyberte Odstranit.
Smažte servisní koncový bod modelu pomocí Serving UI.
REST API
DELETE /api/2.0/serving-endpoints/{name}
Sada SDK pro nasazení MLflow
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")
Ladění koncového bodu obsluhy modelu
K dispozici jsou dva typy protokolů, které vám pomůžou s laděním problémů s koncovými body:
- Protokoly sestavení kontejneru modelu serveru: Vygenerováno během inicializace koncového bodu při vytváření kontejneru. Tyto protokoly zaznamenávají fázi instalace, včetně stažení modelu, instalace závislostí a konfigurace prostředí runtime. Pomocí těchto protokolů můžete ladit, proč se koncovému bodu nepodařilo spustit nebo proč se během nasazování zablokoval.
- Protokoly serveru modelu: Generuje se během běhu, když koncový bod aktivně obsluhuje předpovědi. Tyto protokoly zaznamenávají příchozí požadavky, spouštění odvozování modelů, chyby modulu runtime a protokolování na úrovni aplikace z kódu modelu. Pomocí těchto protokolů můžete řešit problémy s predikcemi nebo zkoumat selhání dotazů.
Oba typy protokolů jsou také přístupné z uživatelského rozhraní koncových bodů na kartě Protokoly .
Získejte protokoly sestavení kontejneru
Pro logy sestavení pro obsluhovaný model můžete použít následující požadavek. Další informace najdete v průvodci laděním pro zpracování modelů.
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
"config_version": 1 // optional
}
Získejte protokoly serveru modelu
Pro protokoly modelového serveru pro nasazení modelu můžete použít následující požadavek:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs
{
"config_version": 1 // optional
}
Správa oprávnění pro koncový bod obsluhující model
K úpravě oprávnění musíte mít alespoň oprávnění CAN MANAGE u obslužného koncového bodu. Další informace o úrovních oprávnění najdete v tématu Obsluha seznamů ACL koncového bodu.
Získejte seznam oprávnění pro koncový bod obsluhy.
uživatelské rozhraní
Klikněte na tlačítko Oprávnění v pravém horním rohu uživatelského rozhraní.
Příkazové rozhraní Databricks
databricks permissions get serving-endpoints <endpoint-id>
Udělte uživateli jsmith@example.com přístup CAN QUERY na obslužný koncový bod.
databricks permissions update serving-endpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
Oprávnění koncového bodu můžete také upravit pomocí rozhraní API pro oprávnění.
Přidání zásady rozpočtu bez serveru pro koncový bod obsluhující model
Důležité
Tato funkce je v Public Preview a není k dispozici pro obsluhu koncových bodů, které obsluhují externí modely.
Bezserverové rozpočtové zásady umožňují vaší organizaci přiřadit vlastní značky k bezserverovému využití pro podrobné rozúčtování nákladů. Pokud váš pracovní prostor používá zásady bezserverového rozpočtu k atributu bezserverového využití, můžete do modelu obsluhující koncové body přidat zásady bezserverového rozpočtu. Viz Využití atributů pomocí zásad bezserverového rozpočtu.
Během vytváření koncového bodu modelu můžete v menu Zásady rozpočtu v rozhraní Serving UI vybrat zásady pro bezserverový režim. Pokud máte přiřazenou bezserverovou zásadu rozpočtu, přiřadí se všem koncovým bodům, které vytvoříte, bezserverové zásady rozpočtu, i když nevyberete zásadu z nabídky Zásady rozpočtu .
Pokud máte MANAGE oprávnění k existujícímu koncovému bodu, můžete upravit a přidat zásadu bezserverového rozpočtu na tento koncový bod ze stránky podrobností o koncovém bodu v uživatelském rozhraní.
Poznámka
Pokud vám byly přiřazeny zásady bezserverového rozpočtu, stávající koncové body nejsou automaticky označeny vašimi zásadami. Pokud k nim chcete připojit zásady bezserverového rozpočtu, musíte stávající koncové body aktualizovat ručně.
Získejte schéma pro koncový bod modelu
Důležité
Podpora obsluhy schémat dotazů koncového bodu je ve verzi Public Preview. Tato funkce je dostupná v oblastech obsluhy modelů.
Obslužné schéma dotazu koncového bodu je formální popis koncového bodu obsluhy pomocí standardní specifikace OpenAPI ve formátu JSON. Obsahuje informace o koncovém bodu, včetně cesty ke koncovému bodu, podrobností pro dotazování koncového bodu, jako je formát textu požadavku a odpovědi, a datový typ pro každé pole. Tyto informace můžou být užitečné pro scénáře reprodukovatelnosti nebo v případě, že potřebujete informace o koncovém bodu, ale nejste původním tvůrcem ani vlastníkem koncového bodu.
Aby bylo možné získat schéma koncového bodu obsluhovaného modelu, musí mít obsluhovaný model protokolovaný podpis modelu a koncový bod musí být v READY stavu.
Následující příklady ukazují, jak programově získat model obsluhující schéma koncového bodu pomocí rozhraní REST API. Informace o funkcích obsluhujících schémata koncových bodů najdete v tématu Koncové body obsluhy funkcí.
Schéma vrácené rozhraním API je ve formátu objektu JSON, který se řídí specifikací OpenAPI.
ACCESS_TOKEN="<endpoint-token>"
ENDPOINT_NAME="<endpoint name>"
curl "https://example.databricks.com/api/2.0/serving-endpoints/$ENDPOINT_NAME/openapi" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json"
Podrobnosti schématu odpovědi
Odpověď je specifikace OpenAPI ve formátu JSON, obvykle včetně polí jako openapi, infoservers a paths. Vzhledem k tomu, že odpověď schématu je objekt JSON, můžete ji analyzovat pomocí běžných programovacích jazyků a vygenerovat kód klienta ze specifikace pomocí nástrojů třetích stran.
Specifikaci OpenAPI můžete vizualizovat také pomocí nástrojů třetích stran, jako je Swagger Editor.
Mezi hlavní pole odpovědi patří:
- Pole
info.titlezobrazuje název obsluhujícího koncového bodu. - Pole
serversvždy obsahuje jeden objekt, obvykleurlpole, které je základní adresou URL koncového bodu. - Objekt
pathsv odpovědi obsahuje všechny podporované cesty pro koncový bod. Klíče v objektu jsou adresa URL cesty. Každý z nichpathmůže podporovat více formátů vstupů. Tyto vstupy jsou uvedeny voneOfpoli.
Následuje příklad odpovědi schématu koncového bodu:
{
"openapi": "3.1.0",
"info": {
"title": "example-endpoint",
"version": "2"
},
"servers": [{ "url": "https://example.databricks.com/serving-endpoints/example-endpoint" }],
"paths": {
"/served-models/vanilla_simple_model-2/invocations": {
"post": {
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"dataframe_split": {
"type": "object",
"properties": {
"columns": {
"description": "required fields: int_col",
"type": "array",
"items": {
"type": "string",
"enum": ["int_col", "float_col", "string_col"]
}
},
"data": {
"type": "array",
"items": {
"type": "array",
"prefixItems": [
{
"type": "integer",
"format": "int64"
},
{
"type": "number",
"format": "double"
},
{
"type": "string"
}
]
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
},
"examples": [
{
"columns": ["int_col", "float_col", "string_col"],
"data": [
[3, 10.4, "abc"],
[2, 20.4, "xyz"]
]
}
]
},
{
"type": "object",
"properties": {
"dataframe_records": {
"type": "array",
"items": {
"required": ["int_col", "float_col", "string_col"],
"type": "object",
"properties": {
"int_col": {
"type": "integer",
"format": "int64"
},
"float_col": {
"type": "number",
"format": "double"
},
"string_col": {
"type": "string"
},
"becx_col": {
"type": "object",
"format": "unknown"
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
}
}
]
}
}
}
},
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"predictions": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
}
}
}
}
}
}
}
}
}
}
}