Em uma implantação gradual, um modelo implantado é substituído por uma nova versão do mesmo. O novo modelo reutiliza os recursos de computação do anterior.
Na solicitação de implantação contínua, a divisão de tráfego e os valores de dedicatedResources
são os mesmos da implantação anterior. Depois que a implantação
for concluída, a divisão de tráfego será atualizada para mostrar que todo o tráfego do
DeployedModel
anterior foi migrado para a nova implantação.
Outros campos configuráveis em DeployedModel
(como serviceAccount
,
disableContainerLogging
e enableAccessLogging
) são definidos como os mesmos valores
da DeployedModel
anterior por padrão. No entanto, você pode especificar novos valores para esses campos.
Quando um modelo é implantado usando uma implantação contínua, um novo DeployedModel
é
criado. O novo DeployedModel
recebe um novo ID diferente do
anterior. Ele também recebe um novo valor revisionNumber
no
campo rolloutOptions
.
Se houver várias implantações contínuas com destino aos mesmos recursos de suporte,
o DeployedModel
com o revisionNumber
mais alto será tratado como o
estado final pretendido.
À medida que a implantação progressiva avança, todas as réplicas existentes do DeployedModel
anterior são substituídas por réplicas do novo DeployedModel
. Isso
acontece rapidamente, e as réplicas são atualizadas sempre que a implantação tem réplicas
disponíveis suficientes ou capacidade de pico suficiente para criar réplicas adicionais.
Além disso, à medida que a implantação contínua avança, o tráfego da DeployedModel
antiga é migrado gradualmente para a nova DeployedModel
. O tráfego
é balanceado por carga de acordo com o número de réplicas prontas para uso de cada
DeployedModel
.
Se as novas réplicas do deployment em fases nunca ficarem prontas porque a rota de integridade
retorna consistentemente um código de resposta diferente de 200, o tráfego não será enviado
para essas réplicas não prontas. Nesse caso, a implantação em fases falha
e as réplicas são revertidas para o DeployedModel
anterior.
Iniciar uma implantação gradual
Para iniciar uma implantação gradual, inclua o campo rolloutOptions
na solicitação de implantação de modelo, conforme mostrado no exemplo a seguir.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION_ID: a região em que você está usando a Vertex AI.
- PROJECT_ID: o ID do projeto.
- ENDPOINT_ID: o ID do endpoint.
- MODEL_ID: o ID do modelo a ser implantado.
-
PREVIOUS_DEPLOYED_MODEL: o ID
DeployedModel
de um modelo no mesmo endpoint. Isso especifica oDeployedModel
cujos recursos de suporte serão reutilizados. ChameGetEndpoint
para receber uma lista de modelos implantados em um endpoint com os IDs numéricos deles. - MAX_UNAVAILABLE_REPLICAS: o número de réplicas de modelo que podem ser retiradas durante a implantação contínua.
- MAX_SURGE_REPLICAS: o número de réplicas de modelo adicionais que podem ser ativadas durante a implantação gradual. Se esse valor for definido como zero, apenas a capacidade atual será usada.
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 da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.
Se quiser, substitua maxSurgeReplicas
e maxUnavailableReplicas
,
ou ambos, por valores percentuais, conforme mostrado no exemplo a seguir.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- MAX_UNAVAILABLE_PERCENTAGE: a porcentagem de réplicas de modelos que podem ser retiradas durante a implantação gradual.
- MAX_SURGE_PERCENTAGE: a porcentagem de réplicas de modelos adicionais que podem ser ativadas durante a implantação gradual. Se esse valor for definido como zero, apenas a capacidade atual será usada.
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 da solicitação:
{ "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 a solicitação, expanda uma destas opções:
Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.
Reverter uma implantação contínua
Para reverter uma implantação gradual, inicie uma nova implantação gradual do modelo anterior usando o ID DeployedModel
da implantação gradual em andamento como previousDeployedModel
.
Para receber o ID DeployedModel
de uma implantação em andamento, defina o parâmetro
allDeploymentStates=true
na chamada como GetEndpoint
, conforme mostrado no
exemplo abaixo.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION_ID: a região em que você está usando a Vertex AI.
- PROJECT_ID: o ID do projeto.
- ENDPOINT_ID: o ID do endpoint.
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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 precisa estar no mesmo endpoint que o novoDeployedModel
. - Não é possível criar várias implantações incrementais com o mesmo
previousDeployedModel
. - Não é possível criar implantações incrementais em uma
DeployedModel
que não esteja totalmente implantada. Exceção: sepreviousDeployedModel
for uma implantação gradual em andamento, será possível criar uma nova implantação por cima dela. Isso permite reverter implantações que começam a falhar. - Os modelos anteriores não são desimplantados automaticamente depois que uma implantação em fases é concluída. É possível desinstalar o modelo manualmente.
- Para implantações graduais em endpoints públicos compartilhados, o
predictRoute
e ohealthRoute
do novo modelo precisam ser iguais aos do modelo anterior. - As implantações progressivas não são compatíveis com a co-hospedagem de modelos.
- As implantações graduais não podem ser usadas para modelos que exigem explicações on-line.