Condividi tramite


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

Ottenere il notebook