Gestire gli endpoint di gestione del modello
Questo articolo descrive come gestire gli endpoint di gestione del modello usando l'interfaccia utente di servizio e l'API REST. Vedere Gestire gli endpoint nella guida di riferimento all'API REST.
Per creare endpoint di gestione del modello, usare una delle opzioni seguenti:
- Creare endpoint di gestione di modelli personalizzati.
- Creare un modello di base che gestisce gli endpoint.
Recupera lo stato dell'endpoint del modello
Nell'interfaccia utente di gestione è possibile controllare lo stato di un endpoint dall'indicatore di stato dell'endpoint di servizio nella parte superiore della pagina dei dettagli dell'endpoint.
Controllare lo stato e i dettagli di un endpoint a livello di codice usando l'API REST o MLflow Deployments SDK:
REST API
GET /api/2.0/serving-endpoints/{name}
Nell'esempio seguente viene creato un endpoint che gestisce la prima versione del modello di my-ads-model
registrato nel Registro modelli di Catalogo Unity. È necessario specificare il nome completo del modello, incluso il catalogo padre e lo schema, ad esempio, catalog.schema.example-model
.
Nella risposta di esempio seguente il state.ready
campo è "READY", il che significa che l'endpoint è pronto per ricevere il traffico. Il campo state.update_state
è NOT_UPDATING
e pending_config
non viene più restituito perché l'aggiornamento è stato completato correttamente.
{
"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"
}
MLflow Deployments SDK
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",
}
Arrestare un endpoint di gestione di un modello
È possibile arrestare temporaneamente un endpoint di gestione di un modello e avviarlo in un secondo momento. Quando un endpoint viene arrestato, le risorse di cui è stato effettuato il provisioning vengono arrestate e l'endpoint non è in grado di gestire le query finché non viene avviato di nuovo. Solo gli endpoint che gestiscono modelli personalizzati, non sono ottimizzati per la route e non hanno aggiornamenti in corso possono essere arrestati. Gli endpoint arrestati non vengono conteggiati rispetto alla quota di risorse. Le query inviate a un endpoint arrestato restituiscono un errore 400.
È possibile arrestare un endpoint dalla pagina dei dettagli dell'endpoint nell'interfaccia utente di gestione .
- Fare clic sull'endpoint da arrestare.
- Fare clic su Arresta nell'angolo superiore destro.
In alternativa, è possibile arrestare un endpoint di gestione a livello di codice usando l'API REST come indicato di seguito:
POST /api/2.0/serving-endpoints/{name}/config:stop
Quando si è pronti per avviare un endpoint di gestione di un modello arrestato, è possibile farlo dalla pagina dei dettagli dell'endpoint nell'interfaccia utente di gestione .
- Fare clic sull'endpoint da avviare.
- Fare clic su Start nell'angolo superiore destro.
In alternativa, è possibile avviare un endpoint di gestione interrotto a livello di codice usando l'API REST come indicato di seguito:
POST /api/2.0/serving-endpoints/{name}/config:start
Eliminare un endpoint di gestione di un modello
Per disabilitare la gestione per un modello, è possibile eliminare l'endpoint su cui è disponibile.
È possibile eliminare un endpoint dalla pagina dei dettagli dell'endpoint nell'interfaccia utente Di servizio .
- Fare clic su Serve sulla barra laterale.
- Fare clic sull'endpoint da eliminare.
- Fare clic sul menu kebab nella parte superiore e selezionare Elimina.
In alternativa, è possibile eliminare un endpoint di gestione a livello di codice usando l'API REST o MLflow Deployments SDK
REST API
DELETE /api/2.0/serving-endpoints/{name}
MLflow Deployments SDK
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")
Eseguire il debug dell'endpoint di gestione del modello
Per eseguire il debug di eventuali problemi con l'endpoint, è possibile recuperare:
- Log di compilazione dei contenitori del server del modello
- Log del server modello
Questi log sono accessibili anche dall'interfaccia utente endpoint nella scheda Log .
Per i log di compilazione per un modello servito, è possibile usare la richiesta seguente. Per altre informazioni, vedere La guida al debug per La gestione dei modelli.
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
“config_version”: 1 // optional
}
Per i log del server modello per un modello di servizio, è possibile usare la richiesta seguente:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs
{
“config_version”: 1 // optional
}
Gestire le autorizzazioni per l'endpoint di gestione del modello
Per modificare le autorizzazioni, è necessario disporre almeno dell'autorizzazione CAN MANAGE per un endpoint di servizio. Per altre informazioni sui livelli di autorizzazione, vedere Gestione degli ACL degli endpoint.
Ottenere l'elenco delle autorizzazioni sull'endpoint di servizio.
databricks permissions get servingendpoints <endpoint-id>
Concedere all'utente jsmith@example.com
l'autorizzazione CAN QUERY per l'endpoint di gestione.
databricks permissions update servingendpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
È anche possibile modificare le autorizzazioni dell'endpoint di gestione usando l'API Autorizzazioni.
Aggiungere criteri di budget per un endpoint di gestione del modello
Importante
Questa funzionalità è in fase di Anteprima Pubblica e non è disponibile per gli endpoint che servono modelli esterni.
Le politiche di budget consentono all'organizzazione di applicare tag personalizzati all'utilizzo serverless per l'attribuzione granulare della fatturazione. Se l'area di lavoro usa criteri di budget per attribuire l'utilizzo serverless, è possibile aggiungere criteri di budget agli endpoint di gestione del modello. Vedere Utilizzo serverless degli attributi con criteri di budget.
Durante la creazione dell'endpoint di gestione del modello, è possibile selezionare i criteri di budget dell'endpoint dal menu criteri di budget nell'interfaccia utente di Servizio. Se ti è stato assegnato un criterio di budget, tutti gli endpoint che crei avranno assegnato questo criterio di budget, anche se non selezioni un criterio dal menu criteri di budget.
Se si dispone dei permessi MANAGE
per un endpoint esistente, è possibile modificare e aggiungere una politica di budget a tale endpoint dalla pagina Dettagli endpoint nell'UI.
Nota
Se ti è stato assegnato un criterio di budget, i tuoi endpoint esistenti non vengono contrassegnati automaticamente con il tuo criterio. È necessario aggiornare manualmente gli endpoint esistenti se si desidera applicare una politica di budget.
Ottenere uno schema dell'endpoint di gestione di un modello
Importante
Il supporto per la gestione degli schemi di query degli endpoint è disponibile in anteprima pubblica. Questa funzionalità è disponibile nelle aree di gestione dei modelli.
Uno schema di query dell'endpoint di servizio è una descrizione formale dell'endpoint di servizio usando la specifica OpenAPI standard in formato JSON. Contiene informazioni sull'endpoint, inclusi il percorso dell'endpoint, i dettagli per l'esecuzione di query sull'endpoint, ad esempio il formato del corpo della richiesta e della risposta e il tipo di dati per ogni campo. Queste informazioni possono essere utili per scenari di riproducibilità o quando sono necessarie informazioni sull'endpoint, ma non si è l'autore o il proprietario dell'endpoint originale.
Per ottenere lo schema dell'endpoint di gestione del modello, il modello servito deve avere una firma del modello registrata e l'endpoint deve trovarsi in uno stato READY
.
Gli esempi seguenti illustrano come ottenere a livello di codice lo schema dell'endpoint di gestione del modello usando l'API REST. Per informazioni sugli schemi degli endpoint per la gestione delle funzionalità, vedere Informazioni sulla gestione delle funzionalità di Databricks.
Lo schema restituito dall'API è nel formato di un oggetto JSON che segue la specifica 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"
Dettagli della risposta dello Schema
La risposta è una specifica OpenAPI in formato JSON, in genere inclusi campi come openapi
, info
servers
e paths
. Poiché la risposta dello schema è un oggetto JSON, è possibile analizzarla usando linguaggi di programmazione comuni e generare codice client dalla specifica usando strumenti di terze parti.
È anche possibile visualizzare la specifica OpenAPI usando strumenti di terze parti come L'editor Swagger.
I campi principali della risposta includono:
- Il
info.title
campo mostra il nome dell'endpoint di gestione. - Il
servers
campo contiene sempre un oggetto, in genere ilurl
campo che è l'URL di base dell'endpoint. - L'oggetto
paths
nella risposta contiene tutti i percorsi supportati per un endpoint. Le chiavi nell'oggetto sono l'URL del percorso. Ognunopath
può supportare più formati di input. Questi input sono elencati neloneOf
campo .
Di seguito è riportata una risposta dello schema di endpoint di esempio:
{
"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"
}
}
}
}
}
}
}
}
}
}
}
}