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
DeployedModelde um modelo no mesmo endpoint. Isso especifica oDeployedModelcujos recursos de apoio serão reutilizados. ChameGetEndpointpara receber uma lista de modelos implantados em um endpoint, além dos 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
DeployedModelanterior 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
DeployedModelque não esteja totalmente implantado. Exceção: sepreviousDeployedModelfor 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
predictRoutee ohealthRoutedo 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.
- Não é possível usar implantações rotativas em modelos que exigem explicações on-line.