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 oDeployedModel
cujos recursos subjacentes devem ser reutilizados. Pode chamarGetEndpoint
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 novoDeployedModel
. - 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: sepreviousDeployedModel
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
ehealthRoute
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.