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
DeployedModelde um modelo no mesmo ponto final. Isto especifica oDeployedModelcujos recursos subjacentes devem ser reutilizados. Pode chamarGetEndpointpara 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
DeployedModelanterior 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
DeployedModelque não esteja totalmente implementada. Exceção: sepreviousDeployedModelfor, 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
predictRouteehealthRoutepara 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.