Dela via


Hantera flera modeller till en modellserverslutpunkt

Den här artikeln beskriver hur du hanterar flera modeller till en PROCESSOR-serveringsslutpunkt som använder Azure Databricks-modellservering.

Information om hur du hanterar flera generativa AI-modeller, som de som tillhandahålls av externa modeller, finns i Hantera flera externa modeller till en slutpunkt.

Krav

Se Krav för att skapa en modell som betjänar slutpunkten.

Information om alternativ för åtkomstkontroll för modeller som betjänar slutpunkter och vägledning för bästa praxis för slutpunktshantering finns i Servering av slutpunkts-ACL:er.

Skapa en slutpunkt och ange den inledande trafikdelningen

Du kan skapa modellserverslutpunkter med Databricks Mašinsko učenje som betjänar API:et eller Databricks-Mašinsko učenje användargränssnittet. En slutpunkt kan hantera alla registrerade Python MLflow-modeller som registrerats i modellregistret.

I följande API-exempel skapas en enda slutpunkt med två modeller och slutpunktstrafiken delas upp mellan dessa modeller. Den betjänade modellen, current, är värd för version 1 av model-A och får 90 % av slutpunktstrafiken, medan den andra betjänade modellen, , challengerär värd för version 1 av model-B och får 10 % av slutpunktstrafiken.

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"
            }
         ]
      }
   }
}

Uppdatera trafikdelningen mellan betjänade modeller

Du kan också uppdatera trafikdelningen mellan betjänade modeller. I följande API-exempel anges den betjänade modellen, current, för att få 50 % av slutpunktstrafiken och den andra modellen, challenger, för att få de återstående 50 % av trafiken.

Du kan också göra den här uppdateringen från fliken Servering i Användargränssnittet för Databricks Mašinsko učenje med hjälp av knappen Redigera konfiguration.

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"
         }
      ]
   }
}

Fråga efter enskilda modeller bakom en slutpunkt

I vissa scenarier kanske du vill fråga efter enskilda modeller bakom slutpunkten.

Du kan göra det med hjälp av:

POST /serving-endpoints/{endpoint-name}/served-models/{served-model-name}/invocations

Här efterfrågas den specifika betjänade modellen. Begärandeformatet är detsamma som att köra frågor mot slutpunkten. När du kör frågor mot den enskilda betjänade modellen ignoreras trafikinställningarna.

Om alla begäranden skickas till /serving-endpoints/multi-model/served-models/challenger/invocationsi slutpunktsexemplet multi-model hanteras alla begäranden av den challenger hanterade modellen.