Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come creare endpoint di gestione di modelli che gestiscono modelli personalizzati usando Databricks Model Serving.
La gestione dei modelli offre le opzioni seguenti per la creazione di endpoint:
- Interfaccia utente di servizio
- REST API (Interfaccia di Programmazione delle Applicazioni REST)
- MLflow Deployments SDK
Per la creazione di endpoint che servono modelli di intelligenza artificiale generativi, vedere Creare un modello di base che gestisce gli endpoint.
Requisiti
- L'area di lavoro deve trovarsi in un'area supportata.
- Se si utilizzano librerie personalizzate o librerie da un server mirror privato con il modello, consultare Usare librerie Python personalizzate con Model Serving prima di creare l'endpoint del modello.
- Per creare endpoint con MLflow Deployments SDK, è necessario installare il client di distribuzione MLflow. Per installarlo, eseguire:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Controllo di accesso
Per informazioni sulle opzioni di controllo di accesso per la gestione degli endpoint del modello, vedere Gestire le autorizzazioni per l'endpoint di gestione del modello.
È anche possibile aggiungere variabili di ambiente per archiviare le credenziali per la gestione del modello. Vedere Configurare l'accesso alle risorse dagli endpoint di gestione del modello
Creare un endpoint
Interfaccia utente di gestione
È possibile creare un endpoint per la gestione del modello con l'interfaccia utente Di servizio .
Fare clic su Serve nella barra laterale per visualizzare l'interfaccia utente Di servizio.
Fare clic su Crea endpoint di servizio.
Per i modelli registrati nel Registro modelli dell'area di lavoro o modelli nel Catalogo Unity:
Nel campo Nome specificare un nome per l'endpoint.
Nella sezione Entità servite
- Fare clic nel campo entità per aprire il modulo Seleziona entità servita .
- Selezionare il tipo di modello che si desidera servire. Il modulo viene aggiornato dinamicamente in base alla selezione.
- Selezionare il modello e la versione del modello da servire.
- Selezionare la percentuale di traffico da instradare al modello servito.
- Selezionare la capacità di calcolo da utilizzare. È possibile usare le risorse di calcolo della CPU o della GPU per i carichi di lavoro. Per altre informazioni sui calcoli GPU disponibili, vedere Tipi di carico di lavoro GPU .
- Selezionare la capacità di calcolo da utilizzare. È possibile usare le risorse di calcolo della CPU o della GPU per i carichi di lavoro. Per altre informazioni sui calcoli GPU disponibili, vedere Tipi di carico di lavoro GPU .
- Sotto Scalabilità di calcolo, selezionare la dimensione della scalabilità orizzontale di calcolo che corrisponde al numero di richieste che questo modello servito può elaborare contemporaneamente. Questo numero deve essere approssimativamente uguale al tempo di esecuzione del modello QPS x.
- Le dimensioni disponibili sono Piccole per 0-4 richieste, richieste medio 8-16 e Large per 16-64 richieste.
- Specificare se l’endpoint deve essere ridimensionato su zero quando non è in uso. La scalabilità a zero non è consigliata per gli endpoint di produzione, perché la capacità non è garantita quando viene ridimensionata su zero.
- In Configurazione avanzata è possibile aggiungere variabili di ambiente per connettersi alle risorse dall'endpoint o registrare il dataframe di ricerca delle funzionalità nella tabella di inferenza dell'endpoint. La registrazione del dataframe di ricerca delle funzionalità richiede MLflow 2.14.0 o versione successiva.
Nella sezione Gateway di intelligenza artificiale è possibile selezionare le funzionalità di governance da abilitare nell'endpoint. Vedere Introduzione a Mosaic AI Gateway.
Nella sezione Ottimizzazione del percorso è possibile abilitare l'ottimizzazione del percorso per l'endpoint. Vedere Ottimizzazione della route per la gestione degli endpoint.
Fare clic su Crea. La pagina Gestione degli endpoint viene visualizzata con Lo stato dell'endpoint di servizio visualizzato come Non pronto.
REST API (Interfaccia di Programmazione delle Applicazioni REST)
È possibile creare endpoint usando l'API REST. Vedere POST /api/2.0/serving-endpoints per i parametri di configurazione degli endpoint.
Nell'esempio seguente viene creato un endpoint che gestisce la prima versione del modello di ads1
registrato nel Registro modelli di Catalogo Unity. Per specificare un modello da Unity Catalog, specificare il nome completo del modello, incluso il catalogo padre e lo schema, ad esempio, catalog.schema.example-model
.
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",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "4",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":
{
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
},
{
"served_model_name": "my-ads-model-4",
"traffic_percentage": 20
}
]
}
},
"tags": [
{
"key": "team",
"value": "data science"
}
]
}
Di seguito è riportato un esempio di risposta. Lo stato dell'endpoint config_update
è NOT_UPDATING
e il modello servito è in uno stato READY
.
{
"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-3",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"workload_type": "CPU",
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1700089760000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "catalog.schema.my-ads-model-3",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "data science"
}
],
"id": "e3bd3e471d6045d6b75f384279e4b6ab",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
MLflow Deployments SDK
Le distribuzioni MLflow forniscono un'API per le attività di creazione, aggiornamento ed eliminazione. Le API per queste attività accettano gli stessi parametri dell'API REST per la gestione degli endpoint. Vedere POST /api/2.0/serving-endpoints per i parametri di configurazione degli endpoint.
L'esempio seguente crea un endpoint che gestisce la terza versione del modello di my-ads-model
registrato nel Registro modelli di Unity Catalog. È necessario specificare il nome completo del modello, incluso il catalogo padre e lo schema, ad esempio, catalog.schema.example-model
.
from mlflow.deployments import get_deploy_client
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",
"workload_size": "Small",
"scale_to_zero_enabled": True
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
}
}
)
È anche possibile:
- Configurare l'endpoint per la gestione di più modelli.
- Configurare l'endpoint per l'ottimizzazione della route.
- Abilitare le tabelle di inferenza per acquisire automaticamente le richieste in ingresso e le risposte in uscita agli endpoint di gestione del modello.
- Se nell'endpoint sono abilitate le tabelle di inferenza, è possibile registrare il dataframe di ricerca delle funzionalità nella tabella di inferenza.
Tipi di carico di lavoro GPU
La distribuzione GPU è compatibile con le versioni del pacchetto seguenti:
- Pytorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 - 2.13.0
- MLflow 2.4.0 e versioni successive
Per distribuire i modelli usando le GPU, includere nella configurazione dell'endpoint il campo workload_type
durante la creazione dell'endpoint o come aggiornamento della configurazione dell'endpoint usando l'API. Per configurare l'endpoint per i carichi di lavoro GPU nell'interfaccia utente Serving, selezionare il tipo di GPU desiderato dal menu a discesa Compute Type.
{
"served_entities": [{
"entity_name": "catalog.schema.ads1",
"entity_version": "2",
"workload_type": "GPU_LARGE",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
La tabella seguente riepiloga i tipi di carico di lavoro GPU disponibili supportati.
Tipo di carico di lavoro GPU | Istanze GPU | Memoria GPU |
---|---|---|
GPU_SMALL |
1xT4 | 16 GB |
GPU_LARGE |
1xA100 | 80 GB |
GPU_LARGE_2 |
2xA100 | 160 GB |
Modificare un endpoint modello personalizzato
Dopo aver abilitato un endpoint modello personalizzato, è possibile aggiornare la configurazione di calcolo in base alle esigenze. Questa configurazione è particolarmente utile se sono necessarie risorse aggiuntive per il modello. Le dimensioni del carico di lavoro e la configurazione di calcolo svolgono un ruolo chiave nelle risorse allocate per gestire il modello.
Fino a quando la nuova configurazione non è pronta, la configurazione precedente continua a gestire il traffico di stima. Mentre è in corso un aggiornamento, non è possibile eseguire un altro aggiornamento. Tuttavia, è possibile annullare un aggiornamento in corso dall'interfaccia utente Di servizio.
Interfaccia utente di gestione
Dopo aver abilitato un endpoint del modello, selezionare Modifica endpoint per modificare la configurazione di calcolo dell'endpoint.
Puoi eseguire quanto segue:
- Scegliere tra alcune dimensioni del carico di lavoro e la scalabilità automatica viene configurata automaticamente entro le dimensioni del carico di lavoro.
- Specificare se l'endpoint deve essere ridotto a zero quando non è in uso.
- Modifica la percentuale di traffico da instradare al tuo modello servito.
È possibile annullare un aggiornamento della configurazione in corso selezionando Annulla aggiornamento nella parte superiore destra della pagina dei dettagli dell'endpoint. Questa funzionalità è disponibile solo nell'interfaccia utente Di servizio.
REST API (Interfaccia di Programmazione delle Applicazioni REST)
Di seguito è riportato un esempio di aggiornamento della configurazione dell'endpoint usando l'API REST. Vedere 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
}
]
}
}
}
MLflow Deployments SDK
MLflow Deployments SDK usa gli stessi parametri dell'API REST, vedere PUT /api/2.0/serving-endpoints/{name}/config per i dettagli dello schema di richiesta e risposta.
L'esempio di codice seguente usa un modello dal registro dei modelli del catalogo Unity:
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=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
}
]
}
}
)
Assegnazione di punteggi a un endpoint del modello
Per assegnare un punteggio al modello, inviare richieste all’endpoint di gestione del modello.
Risorse aggiuntive
- Gestire gli endpoint di servizio del modello.
- Modelli esterni in Mosaic AI Model Serving.
- Se si preferisce usare Python, è possibile usare il Databricks SDK per il serving in tempo reale.
Esempi di notebook
I notebook seguenti includono modelli registrati di Databricks diversi che è possibile usare per iniziare a usare i modelli che gestiscono gli endpoint. Per altri esempi, vedere Esercitazione: Distribuire ed eseguire query su un modello personalizzato.
Gli esempi di modello possono essere importati nell'area di lavoro seguendo le istruzioni riportate in Importare un notebook. Dopo aver scelto e creato un modello da uno degli esempi, registrarlo nel catalogo unity e quindi seguire i passaggi del flusso di lavoro dell'interfaccia utente per la gestione del modello.