Gestire più modelli a un endpoint model serving
Questo articolo descrive come gestire più modelli a un endpoint di servizio che usa la gestione del modello di Azure Databricks.
Requisiti
Vedere Requisiti per la creazione dell'endpoint di gestione dei modelli.
Per informazioni sulle opzioni di controllo di accesso per il modello che gestisce gli endpoint e linee guida sulle procedure consigliate per la gestione degli endpoint, vedere Gestione degli elenchi di controllo di accesso degli endpoint.
Creare un endpoint e impostare la suddivisione iniziale del traffico
È possibile creare endpoint di gestione dei modelli con l'API di Machine Learning di Databricks. Un endpoint può gestire qualsiasi modello MLflow Python registrato nel Registro modelli.
L'esempio di API seguente crea un singolo endpoint con due modelli e imposta la suddivisione del traffico dell'endpoint tra tali modelli. Il modello servito, current
, ospita la versione 1 di model-A
e ottiene il 90% del traffico dell'endpoint, mentre l'altro modello servito, challenger
, ospita la versione 1 di model-B
e ottiene il 10% del traffico dell'endpoint.
POST /api/2.0/serving-endpoints
{
"name":"multi-model"
"config":{
"served_entities":[
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":{
"routes":[
{
"served_model_name":"current",
"traffic_percentage":"90"
},
{
"served_model_name":"challenger",
"traffic_percentage":"10"
}
]
}
}
}
Aggiornare la suddivisione del traffico tra i modelli serviti
È anche possibile aggiornare la suddivisione del traffico tra i modelli serviti. L'esempio di API seguente imposta il modello servito, current
, per ottenere il 50% del traffico dell'endpoint e l'altro modello, challenger
, per ottenere il 50% rimanente del traffico.
È anche possibile eseguire questo aggiornamento dalla scheda Serve nell'interfaccia utente di Databricks Machine Learning usando il pulsante Modifica configurazione .
PUT /api/2.0/serving-endpoints/{name}/config
{
"served_entities":[
{
"name":"current",
"entity_name":"model-A",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
},
{
"name":"challenger",
"entity_name":"model-B",
"entity_version":"1",
"workload_size":"Small",
"scale_to_zero_enabled":true
}
],
"traffic_config":{
"routes":[
{
"served_model_name":"current",
"traffic_percentage":"50"
},
{
"served_model_name":"challenger",
"traffic_percentage":"50"
}
]
}
}
Eseguire query su singoli modelli dietro un endpoint
In alcuni scenari può essere necessario eseguire query su singoli modelli dietro l'endpoint.
A tale scopo, è possibile usare:
POST /serving-endpoints/{endpoint-name}/served-models/{served-model-name}/invocations
In questo caso viene eseguita una query sul modello servito specifico. Il formato della richiesta equivale all'esecuzione di query sull'endpoint. Durante l'esecuzione di query sul singolo modello servito, le impostazioni del traffico vengono ignorate.
Nel contesto dell'esempio multi-model
di endpoint, se tutte le richieste vengono inviate a /serving-endpoints/multi-model/served-models/challenger/invocations
, tutte le richieste vengono gestite dal challenger
modello servito.
Notebook: creare un pacchetto di più modelli in un modello
Per risparmiare sui costi di calcolo, è anche possibile creare un pacchetto di più modelli in un unico modello.
Creare un pacchetto di più modelli MLflow in un unico notebook del modello MLflow
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per