Usa una implementación continua para reemplazar un modelo implementado

En una implementación progresiva, un modelo implementado se reemplaza por una versión nueva de l mismo modelo. El modelo nuevo reutiliza los recursos de procesamiento del anterior.

En la solicitud de implementación progresiva, los valores de división del tráfico y dedicatedResources son los mismos que para la implementación anterior. Una vez que se completa la implementación progresiva, se actualiza la división del tráfico para mostrar que todo el tráfico del DeployedModel anterior migró a la nueva implementación.

Otros campos configurables en DeployedModel (como serviceAccount, disableContainerLogging y enableAccessLogging) se establecen en los mismos valores que para el DeployedModel anterior de forma predeterminada. Sin embargo, puedes especificar valores nuevos para estos campos de forma opcional.

Cuando se implementa un modelo con una implementación progresiva, se crea un DeployedModel nuevo. El DeployedModel nuevo recibe un ID nuevo que es diferente del anterior. También recibe un nuevo valor revisionNumber en el campo rolloutOptions.

Si hay varias implementaciones progresivas que segmentan los mismos recursos de respaldo, el DeployedModel con el revisionNumber más alto se trata como el estado final previsto.

A medida que avanza la implementación progresiva, todas las réplicas existentes para el DeployedModel anterior se reemplazan por réplicas del DeployedModel nuevo. Esto sucede rápidamente y las réplicas se actualizan cuando la implementación tiene suficientes réplicas disponibles o capacidad de aumento suficiente para generar réplicas adicionales.

Además, a medida que avanza la implementación progresiva, el tráfico del DeployedModel anterior se migra de forma gradual al DeployedModel nuevo. El tráfico se balancea en proporción a la cantidad de réplicas listas para entregar de cada DeployedModel.

Si las réplicas nuevas de la implementación progresiva nunca están listas porque su ruta de verificación de estado muestra de forma coherente un código de respuesta que no es 200, no se envía tráfico a esas réplicas no listas. En este caso, la implementación progresiva falla y las réplicas se revierten al DeployedModel anterior.

Inicia una implementación progresiva

Para iniciar una implementación progresiva, incluye el campo rolloutOptions en la solicitud de implementación del modelo, como se muestra en el siguiente ejemplo.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:

  • LOCATION_ID: la región en la que usas Vertex AI.
  • PROJECT_ID: El ID del proyecto.
  • ENDPOINT_ID: Es el ID del extremo.
  • MODEL_ID: El ID del modelo que se implementará.
  • PREVIOUS_DEPLOYED_MODEL: El ID de DeployedModel de un modelo en el mismo extremo. Esto especifica el DeployedModel cuyos recursos de respaldo se reutilizarán. Puedes llamar a GetEndpoint para obtener una lista de los modelos implementados en un extremo junto con sus IDs numéricos.
  • MAX_UNAVAILABLE_REPLICAS: La cantidad de réplicas de modelos que se pueden quitar durante la implementación progresiva.
  • MAX_SURGE_REPLICAS: La cantidad de réplicas de modelos adicionales que se pueden generar durante la implementación progresiva. Si se establece en cero, solo se usa la capacidad existente.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.

Si lo deseas, puedes reemplazar maxSurgeReplicas y maxUnavailableReplicas, o ambos, por valores porcentuales, como se muestra en el siguiente ejemplo.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:

  • MAX_UNAVAILABLE_PERCENTAGE: El porcentaje de réplicas de modelos que se pueden quitar durante la implementación progresiva.
  • MAX_SURGE_PERCENTAGE: El porcentaje de réplicas de modelos adicionales que se pueden generar durante la implementación progresiva. Si se establece en cero, solo se usa la capacidad existente.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.

Revierte una implementación progresiva

Para revertir una implementación progresiva, inicia una nueva implementación progresiva del modelo anterior con el ID de DeployedModel de la implementación progresiva en curso como previousDeployedModel.

Para obtener el ID de DeployedModel para una implementación en curso, establece el parámetro allDeploymentStates=true en la llamada a GetEndpoint, como se muestra en el siguiente ejemplo.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:

  • LOCATION_ID: la región en la que usas Vertex AI.
  • PROJECT_ID: El ID del proyecto.
  • ENDPOINT_ID: Es el ID del extremo.

Método HTTP y URL:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

Restricciones y limitaciones

  • El DeployedModel anterior debe estar en el mismo extremo que el DeployedModel nuevo.
  • No puedes crear varias implementaciones progresivas con el mismo previousDeployedModel.
  • No puedes crear implementaciones progresivas sobre un DeployedModel que no esté completamente implementado. Excepción: Si previousDeployedModel es en sí mismo una implementación progresiva en curso, se puede crear una nueva implementación progresiva sobre él. Esto permite revertir las implementaciones que comienzan a fallar.
  • Los modelos anteriores no se anulan automáticamente después de que se completa correctamente una implementación progresiva. Puedes anular la implementación del modelo de forma manual.
  • Para las implementaciones progresivas en extremos públicos compartidos, el predictRoute y el healthRoute del modelo nuevo deben ser los mismos que para el modelo anterior.
  • Las implementaciones progresivas no son compatibles con el alojamiento conjunto de modelos.
  • Las implementaciones progresivas no se pueden usar para modelos que requieren explicaciones en línea.