Bereitgestelltes Modell durch Rolling Deployment ersetzen

Bei einem Rolling Deployment wird ein bereitgestelltes Modell durch eine neue Version von demselben Modell ersetzt. Das neue Modell verwendet die Rechenressourcen des vorherigen Modells wieder.

In der Anfrage für das Rolling Deployment sind die Werte für die Trafficaufteilung und dedicatedResources dieselben wie für das vorherige Deployment. Nach Abschluss des Rolling Deployments wird die Trafficaufteilung aktualisiert, um zu zeigen, dass der gesamte Traffic vom vorherigen DeployedModel zum neuen Deployment migriert wurde.

Andere konfigurierbare Felder in DeployedModel (z. B. serviceAccount, disableContainerLogging und enableAccessLogging) werden standardmäßig auf dieselben Werte wie für das vorherige DeployedModel festgelegt. Sie können jedoch optional neue Werte für diese Felder angeben.

Wenn ein Modell mit einem Rolling Deployment bereitgestellt wird, wird ein neues DeployedModel erstellt. Das neue DeployedModel erhält eine neue ID, die sich von der des vorherigen Modells unterscheidet. Außerdem erhält es im Feld rolloutOptions einen neuen Wert für revisionNumber.

Wenn es mehrere Rolling Deployments gibt, die auf dieselben unterstützenden Ressourcen ausgerichtet sind, wird das DeployedModel mit der höchsten revisionNumber als beabsichtigter Endzustand behandelt.

Im Laufe des Rolling Deployments werden alle vorhandenen Replikate für das vorherige DeployedModel durch Replikate des neuen DeployedModel ersetzt. Dies geschieht schnell und Replikate werden aktualisiert, sobald das Deployment genügend verfügbare Replikate oder genügend zusätzliche Kapazität hat, um weitere Replikate zu erstellen.

Außerdem wird im Laufe des Rolling Deployments der Traffic für das alte DeployedModel schrittweise zum neuen DeployedModel migriert. Der Traffic wird entsprechend der Anzahl der bereitgestellten Replikate der einzelnen DeployedModel ausgeglichen.

Wenn die neuen Replikate des Rolling Deployments nie bereit sind, weil ihre Health-Route immer einen Antwortcode zurückgibt, der nicht 200 ist, wird kein Traffic an diese nicht bereiten Replikate gesendet. In diesem Fall schlägt das Rolling Deployment fehl und die Replikate werden auf das vorherige DeployedModel zurückgesetzt.

Rolling Deployment starten

Wenn Sie ein Rolling Deployment starten möchten, fügen Sie das Feld rolloutOptions wie im folgenden Beispiel in die Anfrage für die Modellbereitstellung ein.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Projekt-ID.
  • ENDPOINT_ID: Die ID des Endpunkts.
  • MODEL_ID: Die ID des bereitzustellenden Modells.
  • PREVIOUS_DEPLOYED_MODEL: Die DeployedModel-ID eines Modells am selben Endpunkt. Dadurch wird das DeployedModel angegeben, dessen unterstützende Ressourcen wiederverwendet werden sollen. Sie können GetEndpoint aufrufen, um eine Liste der bereitgestellten Modelle an einem Endpunkt zusammen mit ihren numerischen IDs abzurufen.
  • MAX_UNAVAILABLE_REPLICAS: Die Anzahl der Modellreplikate, die während des Rolling Deployments heruntergefahren werden können.
  • MAX_SURGE_REPLICAS: Die Anzahl der zusätzlichen Modellreplikate, die während des Rolling Deployments erstellt werden können. Wenn dieser Wert auf null gesetzt ist, wird nur die vorhandene Kapazität verwendet.

HTTP-Methode und URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

JSON-Text anfordern:

{
  "deployedModel": {
    "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
    "rolloutOptions": {
      "previousDeployedModel": "PREVIOUS_DEPLOYED_MODEL",
      "maxUnavailableReplicas": "MAX_UNAVAILABLE_REPLICAS",
      "maxSurgeReplicas": "MAX_SURGE_REPLICAS"
    }
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten einen erfolgreichen Statuscode (2xx) und eine leere Antwort als Ausgabe erhalten.

Optional können Sie maxSurgeReplicas und maxUnavailableReplicas oder beide durch Prozentwerte ersetzen, wie im folgenden Beispiel gezeigt.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • MAX_UNAVAILABLE_PERCENTAGE: Der Prozentsatz der Modellreplikate, die während des Rolling Deployments heruntergefahren werden können.
  • MAX_SURGE_PERCENTAGE: Der Prozentsatz der zusätzlichen Modellreplikate, die während des Rolling Deployments erstellt werden können. Wenn dieser Wert auf null gesetzt ist, wird nur die vorhandene Kapazität verwendet.

HTTP-Methode und URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

JSON-Text anfordern:

{
  "deployedModel": {
    "model": "projects/PROJECT/locations/LOCATION_ID/models/MODEL_ID",
    "rolloutOptions": {
      "previousDeployedModel": "PREVIOUS_DEPLOYED_MODEL",
      "maxUnavailablePercentage": "MAX_UNAVAILABLE_PERCENTAGE",
      "maxSurgePercentage": "MAX_SURGE_PERCENTAGE"
    }
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten einen erfolgreichen Statuscode (2xx) und eine leere Antwort als Ausgabe erhalten.

Rolling Deployment rückgängig machen

Wenn Sie ein Rolling Deployment rückgängig machen möchten, starten Sie ein neues Rolling Deployment des vorherigen Modells und verwenden Sie die DeployedModel-ID des laufenden Rolling Deployments als previousDeployedModel.

Um die DeployedModel-ID für ein laufendes Deployment abzurufen, setzen Sie den Parameter allDeploymentStates=true im Aufruf von GetEndpoint, wie im folgenden Beispiel gezeigt.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Projekt-ID.
  • ENDPOINT_ID: Die ID des Endpunkts.

HTTP-Methode und URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID?allDeploymentStates=true

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID",
  "displayName": "rolling-deployments-endpoint",
  "deployedModels": [
    {
      "id": "2718281828459045",
      "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID@1",
      "displayName": "rd-test-model",
      "createTime": "2024-09-11T21:37:48.522692Z",
      "dedicatedResources": {
        "machineSpec": {
          "machineType": "e2-standard-2"
        },
        "minReplicaCount": 5,
        "maxReplicaCount": 5
      },
      "modelVersionId": "1",
      "state": "BEING_DEPLOYED"
    }
  ],
  "etag": "AMEw9yMs3TdZMn8CUg-3DY3wS74bkIaTDQhqJ7-Ld_Zp7wgT8gsEfJlrCOyg67lr9dwn",
  "createTime": "2024-09-11T21:22:36.588538Z",
  "updateTime": "2024-09-11T21:27:28.563579Z",
  "dedicatedEndpointEnabled": true,
  "dedicatedEndpointDns": "ENDPOINT_ID.LOCATION_ID-PROJECT_ID.prediction.vertexai.goog"
}

Einschränkungen und Grenzwerte

  • Das vorherige DeployedModel muss sich am selben Endpunkt wie das neue DeployedModel befinden.
  • Sie können nicht mehrere Rolling Deployments mit demselben previousDeployedModel erstellen.
  • Sie können keine Rolling Deployments für ein DeployedModel erstellen, das noch nicht vollständig bereitgestellt wurde. Ausnahme: Wenn previousDeployedModel selbst ein laufendes Rolling Deployment ist, kann ein neues Rolling Deployment darauf aufgebaut werden. So können Sie Deployments rückgängig machen, bei denen Fehler auftreten.
  • Vorherige Modelle werden nach Abschluss eines Rolling Deployments nicht automatisch aufgehoben. Sie können die Bereitstellung des Modells manuell aufheben.
  • Bei Rolling Deployments an freigegebenen öffentlichen Endpunkten müssen predictRoute und healthRoute für das neue Modell mit denen des vorherigen Modells übereinstimmen.
  • Rolling Deployments sind nicht mit dem gemeinsamen Hosting von Modellen kompatibel.
  • Rolling Deployments können nicht für Modelle verwendet werden, für die Online-Erklärungen erforderlich sind.