Em uma implantação gradual, um modelo implantado é substituído por uma nova versão do mesmo modelo. O novo modelo reutiliza os recursos de computação do anterior.
Na solicitação de implantação gradual, a divisão de tráfego e os valores de dedicatedResources
são os mesmos da implantação anterior. Depois que a implantação
concluída, a divisão de tráfego é 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 com os mesmos valores da DeployedModel
anterior por padrão. No entanto, é possível especificar novos valores para esses campos.
Quando um modelo é implantado usando uma implantação gradual, um novo DeployedModel
é
criado. O novo DeployedModel
recebe um ID diferente do anterior. Ele também recebe um novo valor revisionNumber
no campo
rolloutOptions
.
Se houver várias implantações rotativas segmentando os mesmos recursos de suporte, o DeployedModel
com o revisionNumber
mais alto será tratado como o estado final pretendido.
À medida que a implantação contínua avança, todas as réplicas atuais 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 expansão suficiente para criar mais réplicas.
Além disso, à medida que a implantação gradual avança, o tráfego do DeployedModel
antigo é migrado gradualmente para o novo DeployedModel
. O tráfego é balanceado por carga proporcionalmente ao número de réplicas prontas para veiculação de cada DeployedModel
.
Se as novas réplicas da implantação gradual 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 gradual 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 do 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 apoio 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 do modelo que podem ser desativadas durante a implantação gradual.
- MAX_SURGE_REPLICAS: o número de réplicas de modelo adicionais que podem ser criadas durante a implantação gradual. Se esse valor for 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 de porcentagem, 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 do modelo que podem ser desativadas durante a implantação gradual.
- MAX_SURGE_PERCENTAGE: a porcentagem de réplicas de modelo adicionais que podem ser criadas durante a implantação gradual. Se esse valor for 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 gradual
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 para GetEndpoint
, 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.
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ários implantações rotativas com o mesmo
previousDeployedModel
. - Não é possível criar implantações rotativas em um
DeployedModel
que não esteja totalmente implantado. Exceção: sepreviousDeployedModel
for uma implantação gradual em andamento, uma nova implantação gradual poderá ser criada sobre ela. Isso permite reverter implantações que começam a falhar. - Os modelos anteriores não são removidos automaticamente após a conclusão de uma implantação gradual. Você pode remover a implantação do 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 graduais não são compatíveis com a co-hospedagem de modelos.
- Não é possível usar implantações rotativas em modelos que exigem explicações on-line.