Condividi tramite


Gestire più modelli in un endpoint Model Serving

Questo articolo descrive come gestire più modelli a un endpoint di gestione della CPU che usa Model Serving di Azure Databricks.

Per gestire più modelli di IA generativa, come quelli forniti da modelli esterni, vedere Gestire molteplici modelli esterni a un endpoint.

Requisiti

Vedere Requisiti per la creazione di endpoint Model Serving.

Per informazioni sulle opzioni di controllo di accesso per gli endpoint Model Serving e per materiale sussidiario sulle procedure consigliate, consultare ACL per endpoint di gestione.

Creare un endpoint e impostare la suddivisione iniziale del traffico

È possibile creare endpoint Model Serving con l'API di gestione di Databricks Mosaic AI o l'interfaccia utente di Databricks Mosaic AI. Un endpoint può servire qualsiasi modello MLflow Python registrato nel Registro modelli.

L'esempio di API seguente crea un unico endpoint con due modelli e imposta la suddivisione del traffico dell'endpoint tra tali modelli. Il modello gestito, current, ospita la versione 1 di model-A e ottiene il 90% del traffico dell'endpoint, mentre l'altro modello gestito, 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 gestiti

È anche possibile aggiornare la suddivisione del traffico tra i modelli gestiti. L'esempio di API seguente imposta il modello gestito, 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 Servizio nell'interfaccia utente di Databricks Mosaic AI 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 utile 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 gestito specifico. Il formato della richiesta equivale all'esecuzione di query sull'endpoint. Durante l'esecuzione di query sul singolo modello gestito, 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, allora tutte le richieste vengono gestite dal modello gestito challenger.