Em uma implantação gradual, um modelo implantado é substituído por uma nova versão de o mesmo modelo. O novo modelo reutiliza os recursos de computação do anterior.
Na solicitação de implantação gradual, os valores de divisão de tráfego e dedicatedResources são os mesmos da implantação anterior. Depois que a implantação gradual é concluída, a divisão de tráfego é atualizada para mostrar que todo o tráfego do DeployedModel anterior migrou para a nova implantação.
Outros campos configuráveis em DeployedModel (como serviceAccount, disableContainerLogging e enableAccessLogging) são definidos como os mesmos valores do DeployedModel anterior por padrão. No entanto, você pode 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 graduais direcionadas aos mesmos recursos de apoio, o DeployedModel com o revisionNumber mais alto será tratado como o estado final pretendido.
À medida que a implantação gradual 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 pico 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 em proporção 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 verificação 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 acaba falhando, 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. Você pode chamarGetEndpointpara receber uma lista de modelos implantados em um endpoint com os IDs numéricos. - MAX_UNAVAILABLE_REPLICAS: o número de réplicas de 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 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 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 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 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árias implantações graduais com o mesmo
previousDeployedModel. - Não é possível criar implantações graduais 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 desativados automaticamente após a conclusão de uma implantação gradual. Você pode desativar o modelo manualmente.
- Para implantações graduais em endpoints públicos compartilhados, o
predictRoutee ohealthRoutedo novo modelo precisam ser os mesmos do modelo anterior. - As implantações graduais não são compatíveis com a hospedagem conjunta de modelos.
- As implantações graduais não podem ser usadas para modelos que exigem explicações on-line.