Freigeben über


Bereitstellen mehrerer Modelle für einen Modellbereitstellungsendpunkt

In diesem Artikel wird beschrieben, wie Sie mehrere Modelle auf einem CPU-Bereitstellungsendpunkt bereitstellen, der Azure Databricks Model Serving verwendet.

Informationen zum Bereitstellen mehrerer generativer KI-Modelle, z. B. von durch externe Modellen bereitgestellten, finden Sie unter Bereitstellen mehrerer externer Modelle auf einem Endpunkt.

Anforderungen

Weitere Informationen zum Erstellen von Modellbereitstellungsendpunkten finden Sie unter Voraussetzungen.

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 Bereitstellungs-API oder der Benutzeroberfläche von Databricks Machine Learning 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.