Utilizza un deployment in sequenza per sostituire un modello di cui è stato eseguito il deployment

In un deployment in sequenza, un modello sottoposto a deployment viene sostituito con una nuova versione dello stesso modello. Il nuovo modello riutilizza le risorse di computing del precedente.

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

Altri campi configurabili in DeployedModel (come serviceAccount, disableContainerLogging e enableAccessLogging) sono impostati sugli stessi valori del precedente DeployedModel per impostazione predefinita. Tuttavia, puoi specificare facoltativamente nuovi valori per questi campi.

Quando un modello viene sottoposto a deployment utilizzando un deployment in sequenza, viene creato un nuovo DeployedModel. Il nuovo DeployedModel riceve un nuovo ID diverso da quello precedente. Riceve anche un nuovo valore revisionNumber nel campo rolloutOptions.

Se sono presenti più implementazioni in sequenza che hanno come target le stesse risorse di backend, DeployedModel con il revisionNumber più alto viene trattato come stato finale previsto.

Man mano che l'implementazione in sequenza procede, tutte le repliche esistenti per la precedente DeployedModel vengono sostituite con repliche della nuova DeployedModel. Questo avviene rapidamente e le repliche vengono aggiornate quando l'implementazione ha un numero sufficiente di repliche disponibili o una capacità di picco sufficiente per creare repliche aggiuntive.

Inoltre, man mano che il deployment progressivo avanza, 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 ciascun DeployedModel.

Se le nuove repliche del deployment in sequenza non diventano mai pronte perché il loro percorso di controllo dell'integrità restituisce costantemente un codice di risposta diverso da 200, il traffico non viene inviato a queste repliche non pronte. In questo caso, l'implementazione in sequenza alla fine non riesce e le repliche vengono ripristinate al precedente DeployedModel.

Avviare un deployment in sequenza

Per avviare un deployment progressivo, 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 sostituzioni seguenti:

  • LOCATION_ID: la regione in cui utilizzi Agent Platform.
  • PROJECT_ID: Il tuo [ID progetto](/resource-manager/docs/creating-managing-projects#identifiers). .
  • ENDPOINT_ID: l'ID dell'endpoint.
  • MODEL_ID: l'ID del modello da implementare.
  • PREVIOUS_DEPLOYED_MODEL: l'ID DeployedModel di un modello sullo stesso endpoint. Specifica il DeployedModel le cui risorse di supporto devono essere riutilizzate. 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 ritirate durante il deployment in sequenza.
  • MAX_SURGE_REPLICAS: il numero di repliche del modello aggiuntive che possono essere avviate durante il deployment in sequenza. 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 riuscito (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 sostituzioni seguenti:

  • MAX_UNAVAILABLE_PERCENTAGE: la percentuale di repliche del modello che possono essere rimosse durante il deployment in sequenza.
  • MAX_SURGE_PERCENTAGE: la percentuale di repliche del modello aggiuntive che possono essere attivate durante il deployment in sequenza. 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 riuscito (2xx) e una risposta vuota.

Eseguire il rollback di un deployment in sequenza

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

Per ottenere l'ID DeployedModel per 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 sostituzioni seguenti:

  • LOCATION_ID: la regione in cui utilizzi Agent Platform.
  • PROJECT_ID: Il tuo [ID progetto](/resource-manager/docs/creating-managing-projects#identifiers). .
  • 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 precedente DeployedModel deve trovarsi sullo stesso endpoint del nuovo DeployedModel.
  • Non puoi creare più deployment in sequenza con lo stesso previousDeployedModel.
  • Non puoi creare implementazioni in sequenza sopra un DeployedModel che non è completamente implementato. Eccezione: se previousDeployedModel è a sua volta un deployment rolling in corso, è possibile creare un nuovo deployment rolling sopra. Ciò consente di eseguire il rollback dei deployment che iniziano a non riuscire.
  • I modelli precedenti non vengono ritirati automaticamente dopo il completamento di un deployment progressivo. Puoi ritirare il modello manualmente.
  • Per i deployment in sequenza sugli endpoint pubblici condivisi, i valori di predictRoute e healthRoute per il nuovo modello devono essere uguali a quelli del modello precedente.
  • I deployment graduali non sono compatibili con il co-hosting dei modelli.
  • I deployment in sequenza non possono essere utilizzati per i modelli che richiedono spiegazioni online.