Use uma implementação contínua para substituir um modelo implementado

Numa implementação contínua, um modelo implementado é substituído por uma nova versão do mesmo modelo. O novo modelo reutiliza os recursos de computação do modelo anterior.

No pedido de implementação contínua, a divisão de tráfego e os valores de dedicatedResources são os mesmos que na implementação anterior. Após a conclusão da implementação gradual, a divisão do tráfego é atualizada para mostrar que todo o tráfego da implementação anterior DeployedModel foi migrado para a nova implementação.

Outros campos configuráveis em DeployedModel (como serviceAccount, disableContainerLogging e enableAccessLogging) são definidos com os mesmos valores que os do DeployedModel anterior por predefinição. No entanto, pode especificar opcionalmente novos valores para estes campos.

Quando um modelo é implementado através de uma implementação gradual, é criado um novo DeployedModel. O novo DeployedModel recebe um novo ID diferente do do anterior. Também recebe um novo valor revisionNumber no campo rolloutOptions.

Se existirem várias implementações contínuas a segmentar os mesmos recursos de apoio, a DeployedModel com o revisionNumber mais elevado é tratada como o estado final pretendido.

À medida que a implementação contínua progride, todas as réplicas existentes da versão anterior DeployedModel são substituídas por réplicas da nova versão DeployedModel. Este processo é rápido e as réplicas são atualizadas sempre que a implementação tem réplicas disponíveis suficientes ou capacidade de pico suficiente para criar réplicas adicionais.

Além disso, à medida que a implementação contínua progride, o tráfego do antigo DeployedModel é gradualmente migrado para o novo DeployedModel. O tráfego é equilibrado em função do número de réplicas prontas a serem publicadas de cada DeployedModel.

Se as novas réplicas da implementação gradual nunca ficarem prontas porque o respetivo percurso de verificação do estado devolve sempre um código de resposta diferente de 200, o tráfego não é enviado para essas réplicas não preparadas. Neste caso, a implementação contínua acaba por falhar e as réplicas são revertidas para a versão anterior DeployedModel.

Inicie uma implementação contínua

Para iniciar uma implementação gradual, inclua o campo rolloutOptions no pedido de implementação do modelo, conforme mostrado no exemplo seguinte.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu ID do projeto.
  • ENDPOINT_ID: o ID do ponto final.
  • MODEL_ID: o ID do modelo a implementar.
  • PREVIOUS_DEPLOYED_MODEL: o ID DeployedModel de um modelo no mesmo ponto final. Isto especifica o DeployedModel cujos recursos subjacentes devem ser reutilizados. Pode chamar GetEndpoint para obter uma lista de modelos implementados num ponto final, juntamente com os respetivos IDs numéricos.
  • MAX_UNAVAILABLE_REPLICAS: o número de réplicas do modelo que podem ser desativadas durante a implementação contínua.
  • MAX_SURGE_REPLICAS: o número de réplicas do modelo adicionais que podem ser apresentadas durante a implementação gradual. Se esta opção estiver definida como zero, só é usada a capacidade existente.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "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 o seu pedido, expanda uma destas opções:

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Se quiser, pode substituir maxSurgeReplicas e maxUnavailableReplicas, ou ambos, por valores percentuais, conforme mostrado no exemplo seguinte.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • MAX_UNAVAILABLE_PERCENTAGE: a percentagem de réplicas do modelo que podem ser desativadas durante a implementação contínua.
  • MAX_SURGE_PERCENTAGE: a percentagem de réplicas do modelo adicionais que podem ser apresentadas durante a implementação contínua. Se esta opção estiver definida como zero, só é usada a capacidade existente.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "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 o seu pedido, expanda uma destas opções:

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Reverta uma implementação contínua

Para reverter uma implementação contínua, inicie uma nova implementação contínua do modelo anterior, usando o ID DeployedModel da implementação contínua em curso como previousDeployedModel.

Para obter o ID DeployedModel de uma implementação em curso, defina o parâmetro allDeploymentStates=true na chamada para GetEndpoint, conforme mostrado no exemplo seguinte.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu ID do projeto.
  • ENDPOINT_ID: o ID do ponto final.

Método HTTP e URL:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

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

Restrições e limitações

  • O DeployedModel anterior tem de estar no mesmo ponto final que o novo DeployedModel.
  • Não pode criar várias implementações contínuas com o mesmo previousDeployedModel.
  • Não pode criar implementações contínuas sobre uma DeployedModel que não esteja totalmente implementada. Exceção: se previousDeployedModel for, em si, uma implementação contínua em curso, pode criar uma nova implementação contínua com base nela. Isto permite reverter implementações que começam a falhar.
  • Os modelos anteriores não são anulados automaticamente após a conclusão bem-sucedida de uma implementação gradual. Pode anular a implementação do modelo manualmente.
  • Para implementações contínuas em pontos finais públicos partilhados, os valores de predictRoute e healthRoute para o novo modelo têm de ser iguais aos do modelo anterior.
  • As implementações contínuas não são compatíveis com a coapresentação de modelos.
  • Não é possível usar implementações progressivas para modelos que requerem explicações online.