Freigeben über


Bereitstellen mehrerer Modelle für einen Modellbereitstellungsendpunkt

In diesem Artikel wird beschrieben, wie Sie mehrere Modelle für einen Bereitstellungsendpunkt bereitstellen, der die Modellbereitstellung von Azure Databricks verwendet.

Anforderungen

Weitere Informationen zum Erstellen von Modellbereitstellungsendpunkten finden Sie unter Anforderungen.

Weitere Informationen zu den Zugriffsteuerungsoptionen für Modellbereitstellungsendpunkte und einen Best Practices-Leitfaden für die Endpunktverwaltung finden Sie unter Zugriffssteuerungslisten für Bereitstellungsendpunkte.

Erstellen eines Endpunkts und Festlegen der anfänglichen Datenverkehrsaufteilung

Sie können Modellbereitstellungsendpunkte mit der Databricks Machine Learning-API erstellen. Ein Endpunkt kann ein beliebiges, in der Modellregistrierung registriertes Python-MLflow-Modell bereitstellen.

Im folgenden API-Beispiel wird ein einzelner Endpunkt mit zwei Modellen erstellt und der Endpunktdatenverkehr auf diese Modelle aufgeteilt. Auf dem bereitgestellten Modell, current, wird Version 1 von model-A gehostet, und 90 % des Endpunktdatenverkehrs werden damit abgerufen. Auf dem anderen bereitgestellten Modell, challenger, wird Version 1 von model-B gehostet. Es erhält 10 % des Endpunktdatenverkehrs.

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

Aktualisieren der Datenverkehrsaufteilung zwischen bereitgestellten Modellen

Sie können auch die Datenverkehrsaufteilung zwischen bereitgestellten Modellen aktualisieren. Im folgenden API-Beispiel wird das bereitgestellte Modell,current, festgelegt, um 50 % des Endpunktdatenverkehrs abzurufen. Das andere Modell, challenger, erhält die verbleibenden 50 %.

Sie können dieses Update auch über die Registerkarte Bereitstellung auf der Databricks Machine Learning-Benutzeroberfläche vornehmen, indem Sie die Schaltfläche Konfiguration bearbeiten verwenden.

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

Abfragen einzelner Modelle hinter einem Endpunkt

In einigen Szenarios fragen Sie einzelne Modelle hinter dem Endpunkt.

Sie können dazu Folgendes verwenden:

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

Hier wird das spezifische bereitgestellte Modell abgefragt. Das Anforderungsformat entspricht dem Abfragen des Endpunkts. Beim Abfragen eines einzelnen bereitgestellten Modells werden die Datenverkehrseinstellungen ignoriert.

Wenn im Kontext des Endpunktbeispiels multi-model alle Anforderungen an /serving-endpoints/multi-model/served-models/challenger/invocations gesendet werden, werden alle Anforderungen vom bereitgestellten Modell challenger verarbeitet.

Notebook: Packen von mehreren Modellen in ein Modell

Um Computekosten zu sparen, können Sie auch mehrere Modelle in Modell packen.

Packen mehrerer MLflow-Modelle in ein MLflow-Modellnotebook

Notebook abrufen