Bereitgestelltes Modell durch eine schrittweise Bereitstellung ersetzen

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

In der Anfrage für das stufenweise Deployment sind die Werte für die Aufteilung des Traffics und dedicatedResources dieselben wie beim vorherigen Deployment. Nach Abschluss des fortlaufenden Deployments wird die Trafficaufteilung aktualisiert, um zu zeigen, dass der gesamte Traffic von der vorherigen DeployedModel zur neuen Bereitstellung migriert wurde.

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

Wenn ein Modell mit einer fortlaufenden Bereitstellung bereitgestellt wird, wird eine neue DeployedModel erstellt. Das neue DeployedModel erhält eine neue ID, die sich von der des vorherigen unterscheidet. Außerdem wird ein neuer revisionNumber-Wert im Feld rolloutOptions empfangen.

Wenn es mehrere fortlaufende Bereitstellungen gibt, die auf dieselben zugrunde liegenden Ressourcen ausgerichtet sind, wird die DeployedModel mit dem höchsten revisionNumber als beabsichtigter Endzustand behandelt.

Im Laufe der fortlaufenden Bereitstellung werden alle vorhandenen Replikate für die vorherige DeployedModel durch Replikate der neuen DeployedModel ersetzt. Das geht schnell und Replikate werden aktualisiert, sobald die Bereitstellung genügend verfügbare Replikate oder genügend Pufferkapazität hat, um zusätzliche Replikate zu starten.

Außerdem wird der Traffic für die alte DeployedModel im Laufe der fortlaufenden Bereitstellung nach und nach zur neuen DeployedModel migriert. Der Traffic wird proportional zur Anzahl der bereitgestellten Replikate der einzelnen DeployedModel verteilt.

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

Rolling Deployment starten

Wenn Sie eine rollierende Bereitstellung starten möchten, fügen Sie das Feld rolloutOptions in die Anfrage für die Modellbereitstellung ein, 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.
  • MODEL_ID: Die ID des bereitzustellenden Modells.
  • PREVIOUS_DEPLOYED_MODEL: Die DeployedModel-ID eines Modells am selben Endpunkt. Damit wird die DeployedModel angegeben, deren 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 der laufenden Bereitstellung heruntergefahren werden können.
  • MAX_SURGE_REPLICAS: Die Anzahl der zusätzlichen Modellreplikate, die während der laufenden Bereitstellung hochgefahren 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.

Bei Bedarf können Sie maxSurgeReplicas und/oder maxUnavailableReplicas 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 der fortlaufenden Bereitstellung heruntergefahren werden können.
  • MAX_SURGE_PERCENTAGE: Der Prozentsatz der zusätzlichen Modellreplikate, die während der fortlaufenden Bereitstellung hochgefahren 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.

Rollback eines fortlaufenden Deployments durchführen

Wenn Sie ein Rolling Deployment zurücksetzen möchten, starten Sie ein neues Rolling Deployment des vorherigen Modells und verwenden Sie die DeployedModel-ID des laufenden Rolling Deployments als previousDeployedModel.

Wenn Sie die DeployedModel-ID für ein laufendes Deployment abrufen möchten, legen Sie den Parameter allDeploymentStates=true im Aufruf von GetEndpoint fest, 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 fortlaufende Bereitstellungen mit demselben previousDeployedModel erstellen.
  • Sie können keine Rolling Deployments auf einer DeployedModel erstellen, die nicht vollständig bereitgestellt ist. Ausnahme: Wenn previousDeployedModel selbst eine laufende Rolling Deployment-Bereitstellung ist, kann eine neue Rolling Deployment-Bereitstellung darauf aufgesetzt werden. So können Bereitstellungen, bei denen Fehler auftreten, rückgängig gemacht werden.
  • Die Bereitstellung von vorherigen Modellen wird nach Abschluss einer fortlaufenden Bereitstellung nicht automatisch aufgehoben. Sie können die Bereitstellung des Modells manuell entfernen.
  • Bei Rolling Deployments für gemeinsam genutzte öffentliche Endpunkte müssen predictRoute und healthRoute für das neue Modell mit denen des vorherigen Modells übereinstimmen.
  • Rolling Deployments sind nicht mit Model Co-Hosting kompatibel.
  • Rolling Deployments können nicht für Modelle verwendet werden, für die Online-Erklärungen erforderlich sind.