Bei einem Rolling-Deployment wird ein bereitgestelltes Modell durch eine neue Version desselben Modells ersetzt. Für das neue Modell werden die Rechenressourcen des vorherigen Modells wiederverwendet.
In der Anfrage für die kontinuierliche Bereitstellung sind die Werte für die Traffic-Aufteilung und dedicatedResources
mit denen der vorherigen Bereitstellung identisch. Nach Abschluss der schrittweisen Bereitstellung wird die Trafficaufteilung aktualisiert, um anzuzeigen, dass der gesamte Traffic von der vorherigen DeployedModel
auf die neue Bereitstellung migriert wurde.
Andere konfigurierbare Felder in DeployedModel
(z. B. serviceAccount
, disableContainerLogging
und enableAccessLogging
) sind 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 schrittweisen Bereitstellung bereitgestellt wird, wird eine neue DeployedModel
erstellt. Die neue DeployedModel
erhält eine neue ID, die sich von der vorherigen unterscheidet. Außerdem erhält es einen neuen revisionNumber
-Wert im Feld rolloutOptions
.
Wenn es mehrere schrittweise Bereitstellungen gibt, die auf dieselben zugrunde liegenden Ressourcen ausgerichtet sind, wird die DeployedModel
mit der höchsten revisionNumber
als beabsichtigter Endzustand behandelt.
Im Laufe der rollierenden Bereitstellung werden alle vorhandenen Repliken für die vorherige DeployedModel
durch Repliken der neuen DeployedModel
ersetzt. Das geschieht schnell und Replikats werden aktualisiert, sobald die Bereitstellung genügend verfügbare Replikats oder genügend Kapazität für zusätzliche Replikats hat.
Außerdem wird der Traffic für die alte DeployedModel
im Laufe der schrittweisen Bereitstellung nach und nach auf die neue DeployedModel
migriert. Der Traffic wird proportional zur Anzahl der aktiven Replikate jeder DeployedModel
verteilt.
Wenn die neuen Repliken des schrittweisen Deployments nie bereit sind, weil ihr Systemdiagnosepfad immer einen anderen Antwortcode als 200 zurückgibt, wird kein Traffic an diese nicht bereiten Repliken gesendet. In diesem Fall schlägt die schrittweise Bereitstellung schließlich fehl und die Repliken werden auf die vorherige DeployedModel
zurückgesetzt.
Ein Rolling-Release starten
Wenn Sie eine schrittweise Bereitstellung starten möchten, fügen Sie das Feld rolloutOptions
in die Bereitstellungsanfrage für das Modell 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. Hiermit wird dieDeployedModel
angegeben, deren zugrunde liegende Ressourcen wiederverwendet werden sollen. Sie könnenGetEndpoint
aufrufen, um eine Liste der bereitgestellten Modelle an einem Endpunkt zusammen mit ihren numerischen IDs abzurufen. - MAX_UNAVAILABLE_REPLICAS: Die Anzahl der Modellrepliken, die während der schrittweisen Bereitstellung heruntergefahren werden können.
- MAX_SURGE_REPLICAS: Die Anzahl der zusätzlichen Modellreplikate, die während der schrittweisen Bereitstellung gestartet 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.
Sie können 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 Modellrepliken, die während der schrittweisen Bereitstellung heruntergefahren werden können.
- MAX_SURGE_PERCENTAGE: Der Prozentsatz der zusätzlichen Modellrepliken, die während der schrittweisen Bereitstellung gestartet 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 schrittweisen Deployments durchführen
Wenn Sie ein schrittweises Roll-out rückgängig machen möchten, starten Sie ein neues schrittweises Roll-out des vorherigen Modells und verwenden Sie die DeployedModel
-ID des laufenden schrittweisen Roll-outs als previousDeployedModel
.
Wenn Sie die DeployedModel
-ID für eine laufende Bereitstellung 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
- Die vorherige
DeployedModel
muss sich am selben Endpunkt wie die neueDeployedModel
befinden. - Sie können nicht mehrere schrittweise Bereitstellungen mit derselben
previousDeployedModel
erstellen. - Sie können keine schrittweisen Bereitstellungen auf einer
DeployedModel
erstellen, die noch nicht vollständig bereitgestellt wurde. Ausnahme: WennpreviousDeployedModel
selbst ein laufendes Rolling-Update ist, kann darüber ein neues Rolling-Update erstellt werden. So können Bereitstellungen, die fehlschlagen, rückgängig gemacht werden. - Die Bereitstellung früherer Modelle wird nicht automatisch aufgehoben, nachdem eine schrittweise Bereitstellung erfolgreich abgeschlossen wurde. Sie können das Modell manuell entfernen.
- Bei Rolling-Deployments auf freigegebenen öffentlichen Endpunkten müssen
predictRoute
undhealthRoute
für das neue Modell mit den Werten für das vorherige Modell übereinstimmen. - Laufende Bereitstellungen sind nicht mit dem Co-Hosting von Modellen kompatibel.
- Für Modelle, für die Onlineerläuterungen erforderlich sind, können keine schrittweisen Bereitstellungen verwendet werden.