Správa koncových bodů obsluhy modelu
Tento článek popisuje, jak spravovat koncové body obsluhující modely pomocí uživatelského rozhraní obsluhy a rozhraní REST API. Viz Poskytování koncových bodů v referenčních informacích k rozhraní REST API.
K vytvoření koncových bodů obsluhy modelu použijte jednu z následujících možností:
Získání stavu koncového bodu modelu
V uživatelském rozhraní obsluhy můžete zkontrolovat stav koncového bodu pomocí indikátoru stavu obsluhy v horní části stránky podrobností koncového bodu.
Stav a podrobnosti koncového bodu můžete použít programově pomocí rozhraní REST API nebo sady SDK pro nasazení MLflow.
Rozhraní REST API
GET /api/2.0/serving-endpoints/{name}
Následující příklad získá podrobnosti o koncovém bodu, který slouží první verzi ads1
modelu zaregistrovaného v registru modelu. Pokud chcete zadat model z katalogu Unity, zadejte úplný název modelu včetně nadřazeného katalogu a schématu, catalog.schema.example-model
například .
V následující ukázkové odpovědi je pole PŘIPRAVENO, což znamená, state.ready
že koncový bod je připravený přijímat provoz. Pole state.update_state
se už nevrácelo NOT_UPDATING
pending_config
, protože aktualizace byla úspěšně dokončena.
{
"name": "workspace-model-endpoint",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "READY",
"update_state": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "ads1-1",
"entity_name": "ads1",
"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": "ads1-1",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
Sada SDK pro nasazení Mlflow
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="chat")
assert endpoint == {
"name": "chat",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
Odstranění koncového bodu obsluhy modelu
Pokud chcete zakázat poskytování pro model, můžete odstranit koncový bod, na který se obsluhuje.
Koncový bod můžete odstranit ze stránky podrobností koncového bodu v uživatelském rozhraní obsluhy.
- Klikněte na obsluhu na bočním panelu.
- Klikněte na koncový bod, který chcete odstranit.
- Klikněte na nabídku kebabu v horní části a vyberte Odstranit.
Alternativně můžete prostřednictvím kódu programu odstranit obslužný koncový bod pomocí rozhraní REST API nebo sady SDK pro nasazení MLflow.
Rozhraní 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
Pokud chcete ladit všechny problémy s koncovým bodem, můžete načíst:
- Protokoly sestavení kontejneru modelu serveru
- Protokoly serveru modelu
Tyto protokoly jsou také přístupné z uživatelského rozhraní koncových bodů na kartě Protokoly.
Pro protokoly sestavení pro obsluha modelu můžete použít následující požadavek:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
“config_version”: 1 // optional
}
Pro protokoly serveru modelu pro obsluhu 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.
databricks permissions get servingendpoints <endpoint-id>
Udělte uživateli jsmith@example.com
oprávnění CAN QUERY pro obsluhující koncový bod.
databricks permissions update servingendpoints <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í.
Získání modelu obsluhujícího schéma koncového bodu
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 nejsou původním tvůrcem ani vlastníkem koncového bodu.
Pokud chcete získat schéma koncového bodu obsluhovaného modelu, musí mít obsluhovaný model protokolovaný podpis modelu a koncový bod musí být ve 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 Co je služba funkcí Databricks?.
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 odpovědi schématu
Odpověď je specifikace OpenAPI ve formátu JSON, obvykle včetně polí jako openapi
, info
servers
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.title
zobrazuje název obsluhujícího koncového bodu. - Pole
servers
vždy obsahuje jeden objekt, obvykleurl
pole, které je základní adresou URL koncového bodu. - Objekt
paths
v odpovědi obsahuje všechny podporované cesty pro koncový bod. Klíče v objektu jsou adresa URL cesty. Každý z nichpath
může podporovat více formátů vstupů. Tyto vstupy jsou uvedeny voneOf
poli.
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"
}
}
}
}
}
}
}
}
}
}
}
}