Utilizzare un deployment incrementale per sostituire un modello di cui è stato eseguito il deployment

In un deployment incrementale, un modello di cui è stato eseguito il deployment viene sostituito con una nuova versione dello stesso modello. Il nuovo modello riutilizza le risorse di calcolo del precedente.

Nella richiesta di implementazione graduale, la suddivisione del traffico e i valori di dedicatedResources sono gli stessi del deployment precedente. Al termine del deployment graduale, la suddivisione del traffico viene aggiornata per mostrare che tutto il traffico proveniente dal DeployedModel precedente è stato migrato al nuovo deployment.

Per impostazione predefinita, gli altri campi configurabili in DeployedModel (ad esempio serviceAccount, disableContainerLogging e enableAccessLogging) sono impostati sugli stessi valori del DeployedModel precedente. Tuttavia, se vuoi, puoi specificare nuovi valori per questi campi.

Quando un modello viene implementato utilizzando un deployment incrementale, viene creato un nuovo DeployedModel. Il nuovo DeployedModel riceve un nuovo ID diverso da quello del precedente. Riceve anche un nuovo valore revisionNumber nel rolloutOptions campo.

Se sono presenti più implementazioni incrementali che hanno come target le stesse risorse di supporto, DeployedModel con il valore revisionNumber più elevato viene considerato come stato finale previsto.

Man mano che l'implementazione graduale procede, tutte le repliche esistenti per il DeployedModel precedente vengono sostituite con repliche del nuovo DeployedModel. Questo avviene rapidamente e le repliche vengono aggiornate ogni volta che il deployment dispone di repliche disponibili o di una capacità di picco sufficiente per avviarne altre.

Inoltre, man mano che il deployment graduale procede, il traffico per il vecchio DeployedModel viene gradualmente migrato al nuovo DeployedModel. Il traffico viene bilanciato in base al numero di repliche pronte per la pubblicazione di ciascunDeployedModel.

Se le nuove repliche del deployment incrementale non diventano mai pronte perché il relativo percorso di monitoraggio restituisce costantemente un codice di risposta diverso da 200, il traffico non viene inviato a queste repliche non pronte. In questo caso, l'implementazione graduale alla fine non va a buon fine e le repliche tornano alla versione DeployedModel precedente.

Avvia un deployment in sequenza

Per avviare un deployment graduale, includi il campo rolloutOptions nella richiesta di deployment del modello, come mostrato nell'esempio seguente.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui utilizzi Vertex AI.
  • PROJECT_ID: il tuo ID progetto.
  • ENDPOINT_ID: l'ID dell'endpoint.
  • MODEL_ID: l'ID del modello da implementare.
  • PREVIOUS_DEPLOYED_MODEL: l'ID DeployedModel di un modello nello stesso endpoint. Questo specifica il DeployedModel di cui devono essere riutilizzate le risorse di supporto. Puoi chiamare GetEndpoint per ottenere un elenco dei modelli di cui è stato eseguito il deployment su un endpoint, insieme ai relativi ID numerici.
  • MAX_UNAVAILABLE_REPLICAS: il numero di repliche del modello che possono essere interrotte durante il deployment graduale.
  • MAX_SURGE_REPLICAS: il numero di repliche del modello aggiuntive che possono essere avviate durante il deployment incrementale. Se questo valore è impostato su zero, viene utilizzata solo la capacità esistente.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere un codice di stato di operazione riuscita (2xx) e una risposta vuota.

Se vuoi, puoi sostituire maxSurgeReplicas e maxUnavailableReplicas o entrambi con valori percentuali, come mostrato nell'esempio seguente.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • MAX_UNAVAILABLE_PERCENTAGE: la percentuale di repliche del modello che possono essere rimosse durante il deployment incrementale.
  • MAX_SURGE_PERCENTAGE: la percentuale di repliche del modello aggiuntive che possono essere avviate durante il deployment graduale. Se questo valore è impostato su zero, viene utilizzata solo la capacità esistente.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere un codice di stato di operazione riuscita (2xx) e una risposta vuota.

Esegui il rollback di un deployment in sequenza

Per eseguire il rollback di un deployment incrementale, avvia un nuovo deployment incrementale del modello precedente utilizzando l'ID DeployedModel del deployment incrementale in corso come previousDeployedModel.

Per ottenere l'ID DeployedModel di un deployment in corso, imposta il parametro allDeploymentStates=true nella chiamata a GetEndpoint, come mostrato nell'esempio seguente.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione in cui utilizzi Vertex AI.
  • PROJECT_ID: il tuo ID progetto.
  • ENDPOINT_ID: l'ID dell'endpoint.

Metodo HTTP e URL:

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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

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

Vincoli e limiti

  • Il DeployedModel precedente deve trovarsi nello stesso endpoint del nuovo DeployedModel.
  • Non puoi creare più implementazioni graduali con lo stesso previousDeployedModel.
  • Non puoi creare implementazioni graduali su un DeployedModel non completamente implementato. Eccezione: se previousDeployedModel è un deployment graduale in corso, è possibile crearne uno nuovo sopra. In questo modo è possibile eseguire il rollback dei deployment che iniziano a non riuscire.
  • I modelli precedenti non vengono disinstallati automaticamente al termine di un deployment graduale. Puoi eseguire il rollback del deployment del modello manualmente.
  • Per i deployment incrementali su endpoint pubblici condivisi, predictRoute e healthRoute per il nuovo modello devono essere uguali a quelli per il modello precedente.
  • I deployment incrementali non sono compatibili con il co-hosting dei modelli.
  • I deployment incrementali non possono essere utilizzati per i modelli che richiedono spiegazioni online.