Implante um modelo em um endpoint antes de ele ser usado para exibir previsões on-line. A implantação de um modelo associa recursos físicos ao modelo para que ele possa exibir previsões on-line com baixa latência.
Para ser implantado, o modelo precisa estar visível no Vertex AI Model Registry. Para saber mais sobre o Model Registry, incluindo como importar artefatos de modelo ou criá-los diretamente no Model Registry, consulte Introdução ao Vertex AI Model Registry.
É possível implantar vários modelos em um endpoint ou o mesmo modelo em vários endpoints. Para mais informações sobre opções e casos de uso para implantar modelos, consulte Motivos para implantar mais de um modelo no mesmo endpoint.
Implantar um modelo em um endpoint
Use um dos seguintes métodos para implantar um modelo:
Console do Google Cloud
No Console do Google Cloud, na seção da Vertex AI, acesse a página de Modelos.
Clique no nome e no código da versão do modelo que você quer implantar para abrir a página de detalhes.
Selecione a guia Implantar e testar.
Caso seu modelo já esteja implantado em um endpoint, o endpoint estará listado na seção Implantar seu modelo.
Clique em Implantar no endpoint.
Para implantar o modelo em um novo endpoint, selecione
Criar novo endpoint e dê um nome a ele. Para implantar o modelo em um endpoint atual, selecione Adicionar a um endpoint atual e escolha o endpoint na lista suspensa.É possível implantar vários modelos em um endpoint ou implantar o mesmo modelo em vários endpoints.
Se você implantar o modelo em um endpoint atual que tem um ou mais modelos implantados, é necessário atualizar a porcentagem de divisão de tráfego do modelo que você está implantando, bem como a dos modelos já implantados para que todas as porcentagens totalizem 100%.
Se você estiver implantando seu modelo em um novo endpoint, aceite 100 para a divisão de tráfego. Caso contrário, ajuste os valores de divisão de tráfego para todos os modelos no endpoint para que totalizem 100.
Insira o número mínimo de nós de computação que você quer fornecer ao modelo.
Esse é o número de nós que precisam estar disponíveis para o modelo o tempo todo.
Você é cobrado pelos nós usados, seja para processar a carga de previsão ou por nós de espera (mínimo), mesmo sem tráfego de previsão. Consulte a página de preços.
O número de nós de computação pode aumentar se for necessário para processar o tráfego de previsão, mas nunca ultrapassa o número máximo de nós.
Para usar o escalonamento automático, insira o número máximo de nós de computação que você quer que a Vertex AI escalone verticalmente.
Selecione o Tipo de máquina.
Recursos maiores de máquina aumentarão o desempenho da previsão e os custos. Compare os tipos de máquina disponíveis.
Selecione um Tipo de acelerador e uma Contagem de aceleradores.
Se você ativou o uso do acelerador ao importar ou criar o modelo, essa opção será exibida.
Para ver a contagem de aceleradores, consulte a tabela de GPUs para verificar se há números válidos de GPUs que você pode usar com cada tipo de máquina de CPU. A contagem de aceleradores se refere ao número de aceleradores por nó, e não ao número total de aceleradores na sua implantação.
Se você quiser usar uma conta de serviço personalizada na implantação, selecione uma conta de serviço no menu suspenso Conta de serviço.
Saiba como alterar as configurações padrão para a geração de registros de previsão.
Clique em Concluído no modelo. Quando todas as porcentagens de Divisão de tráfego estiverem corretas, clique em Continuar.
A região onde seu modelo é implantado é exibida. Precisa ser a região em que você criou o modelo.
Clique em Implantar para implantar o modelo no endpoint.
API
Ao implantar um modelo usando a API Vertex AI, siga estas etapas:
Crie um endpoint
Se você estiver implantando um modelo em um endpoint existente, pule esta etapa e acesse Pegar o ID do endpoint. Para testar a visualização do endpoint dedicado, pule para Criar um endpoint dedicado.
gcloud
O exemplo a seguir usa o comando
gcloud ai endpoints create
:
gcloud ai endpoints create \
--region=LOCATION_ID \
--display-name=ENDPOINT_NAME
Substitua:
- LOCATION_ID: a região em que você está usando a Vertex AI.
- ENDPOINT_NAME: o nome de exibição do endpoint.
A ferramenta CLI do Google Cloud pode levar alguns segundos para criar o endpoint.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION_ID: sua região.
- PROJECT_ID: o ID do projeto.
- ENDPOINT_NAME: o nome de exibição do endpoint.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Corpo JSON da solicitação:
{ "display_name": "ENDPOINT_NAME" }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata", "genericMetadata": { "createTime": "2020-11-05T17:45:42.812656Z", "updateTime": "2020-11-05T17:45:42.812656Z" } } }
"done":
true
.
Terraform
O exemplo a seguir usa o recurso google_vertex_ai_endpoint
do Terraform para criar um endpoint.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Criar um endpoint dedicado
Pule a etapa abaixo se você estiver implantando um modelo em um endpoint existente.
Um endpoint dedicado é mais rápido e estável, com suporte para tamanhos de payload maiores e tempos limite de solicitação mais longos.
Para usar um endpoint dedicado durante a visualização, é necessário ativá-lo explicitamente.
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{"display_name": "ENDPOINT_NAME", "dedicatedEndpointEnabled": true}' \
https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Substitua:
- ENDPOINT_NAME: o nome de exibição do endpoint.
- LOCATION_ID: a região em que você está usando a Vertex AI.
- PROJECT_ID: o ID do projeto do seu projeto do Google Cloud.
Python
endpoint = aiplatform.Endpoint.create(
display_name="ENDPOINT_NAME",
dedicated_endpoint_enabled=True,
)
Substitua:
- ENDPOINT_NAME: o nome de exibição do endpoint.
Receber o ID do endpoint
Você precisa do ID do endpoint para implantar o modelo.
gcloud
O exemplo a seguir usa o comando
gcloud ai endpoints list
:
gcloud ai endpoints list \
--region=LOCATION_ID \
--filter=display_name=ENDPOINT_NAME
Substitua:
- LOCATION_ID: a região em que você está usando a Vertex AI.
- ENDPOINT_NAME: o nome de exibição do endpoint.
Anote o número que aparece na coluna ENDPOINT_ID
. Use esse ID na
etapa 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_NAME: o nome de exibição do endpoint.
Método HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints?filter=display_name=ENDPOINT_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "endpoints": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID", "displayName": "ENDPOINT_NAME", "etag": "AMEw9yPz5pf4PwBHbRWOGh0PcAxUdjbdX2Jm3QO_amguy3DbZGP5Oi_YUKRywIE-BtLx", "createTime": "2020-04-17T18:31:11.585169Z", "updateTime": "2020-04-17T18:35:08.568959Z" } ] }
Implantar o modelo
Selecione a guia abaixo para seu idioma ou ambiente:
gcloud
Os exemplos a seguir usam o comando gcloud ai endpoints deploy-model
.
O exemplo a seguir implanta um Model
em um Endpoint
sem usar GPUs
para acelerar a exibição da previsão e sem dividir o tráfego entre vários
recursos DeployedModel
:
Antes de usar os dados do comando abaixo, faça estas substituições:
- ENDPOINT_ID: o ID do endpoint.
- LOCATION_ID: a região em que você está usando a Vertex AI.
- MODEL_ID: o ID do modelo a ser implantado.
-
DEPLOYED_MODEL_NAME: um nome para
DeployedModel
. Também é possível usar o nome de exibição doModel
para oDeployedModel
. - MIN_REPLICA_COUNT: o número mínimo de nós para esta implantação. A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão, até o número máximo de nós e nunca menos que esse número.
-
MAX_REPLICA_COUNT: o número máximo de nós para esta implantação.
A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão,
até esse número de nós e nunca menos que o número mínimo de nós.
Se você omitir a sinalização
--max-replica-count
, o número máximo de nós será definido como o valor de--min-replica-count
.
Execute o comando gcloud ai endpoints deploy-model:
Linux, macOS ou Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100
Divisão de tráfego
A sinalização --traffic-split=0=100
nos exemplos anteriores envia 100% do tráfego de
previsão que Endpoint
recebe para o novo DeployedModel
, que é
representado pelo ID temporário 0
. Se a Endpoint
já tiver outros
recursos DeployedModel
, será possível dividir o tráfego entre o novo
DeployedModel
e os antigos.
Por exemplo, para enviar 20% do tráfego para o novo DeployedModel
e 80% para um mais antigo,
execute o seguinte comando.
Antes de usar os dados do comando abaixo, faça estas substituições:
- OLD_DEPLOYED_MODEL_ID: o ID do
DeployedModel
existente.
Execute o comando gcloud ai endpoints deploy-model:
Linux, macOS ou Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
REST
Implantar o modelo.
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.
-
DEPLOYED_MODEL_NAME: um nome para
DeployedModel
. Também é possível usar o nome de exibição doModel
para oDeployedModel
. -
MACHINE_TYPE: opcional. Os recursos de máquina usados para cada nó
desta implantação. A configuração padrão é
n1-standard-2
. Saiba mais sobre tipos de máquinas. - ACCELERATOR_TYPE: o tipo de acelerador a ser anexado à máquina. Opcional se ACCELERATOR_COUNT não for especificado ou for zero. Não recomendado para modelos AutoML ou modelos treinados personalizados que usem imagens que não sejam de GPU. Saiba mais.
- ACCELERATOR_COUNT: o número de aceleradores a serem usados por cada réplica. Opcional. Deve ser zero ou não especificado para modelos do AutoML ou modelos treinados personalizados que usam imagens que não sejam de GPU.
- MIN_REPLICA_COUNT: o número mínimo de nós para esta implantação. A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão, até o número máximo de nós e nunca menos que esse número. O valor precisa ser maior ou igual a 1.
- MAX_REPLICA_COUNT: o número máximo de nós para esta implantação. A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão, até esse número de nós e nunca menos que o número mínimo de nós.
- TRAFFIC_SPLIT_THIS_MODEL: a porcentagem do tráfego de previsão para esse endpoint que será roteada para o modelo que está sendo implantado com esta operação. O padrão é 100. A soma de todas as porcentagens de tráfego precisam totalizar 100. Saiba mais sobre as divisões de tráfego.
- DEPLOYED_MODEL_ID_N: opcional. Se outros modelos forem implantados nesse endpoint, será necessário atualizar as porcentagens de divisão de tráfego para que todas as porcentagens somem 100.
- TRAFFIC_SPLIT_MODEL_N: o valor da porcentagem da divisão de tráfego para a chave de ID do modelo implantado.
- PROJECT_NUMBER: o número do projeto gerado automaticamente
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Corpo JSON da solicitação:
{ "deployedModel": { "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": "ACCELERATOR_COUNT" }, "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT }, }, "trafficSplit": { "0": TRAFFIC_SPLIT_THIS_MODEL, "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1, "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2 }, }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Saiba como alterar as configurações padrão para a geração de registros de previsão.
Receber status da operação
Algumas solicitações iniciam operações de longa duração que exigem tempo para serem concluídas. Essas solicitações retornam um nome de operação, que pode ser usado para ver o status da operação ou cancelá-la. A Vertex AI oferece métodos auxiliares para realizar chamadas em operações de longa duração. Para mais informações, consulte Como trabalhar com operações de longa duração.
Limitações
- Se o VPC Service Controls estiver ativado, o contêiner do modelo implantado não terá acesso à Internet.
Configurar a implantação do modelo
Durante a implantação do modelo, você toma as seguintes decisões importantes sobre como executar a previsão on-line:
Recurso criado | Configuração especificada na criação de recursos |
---|---|
Endpoint | Local onde executar predições |
Modelo | Contêiner a ser usado (ModelContainerSpec ) |
DeployedModel | Máquinas para usar na previsão on-line |
Não é possível atualizar essas configurações listadas após a criação inicial do modelo ou do endpoint. Não é possível modificá-las na solicitação de previsão on-line. Se você precisar alterar essas configurações, é necessário reimplantar o modelo.
O que acontece quando você implanta um modelo
Ao implantar um modelo em um endpoint, você associa os recursos físicos (máquina) ao modelo para que ele possa exibir previsões on-line. As previsões on-line têm requisitos de baixa latência. Fornecer recursos ao modelo com antecedência reduz a latência.
O tipo de treinamento (AutoML ou personalizado) e dados (AutoML)
do modelo determinam os tipos de recursos físicos disponíveis nele. Após
a implantação do modelo, é possível mutate
alguns desses recursos sem criar uma nova implantação.
O recurso de endpoint fornece o endpoint de serviço (URL) que você usa para solicitar a previsão. Exemplo:
https://us-central1-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/{endpoint}:predict
Motivos para implantar mais de um modelo no mesmo endpoint
A implantação de dois modelos no mesmo endpoint permite substituir gradualmente um modelo por outro. Por exemplo, suponha que você esteja usando um modelo e encontre uma maneira de aumentar a precisão dele com novos dados de treinamento. No entanto, não convém atualizar o aplicativo para apontar para um novo URL de endpoint e você não quer criar alterações repentinas no aplicativo. Você pode adicionar o novo modelo ao mesmo endpoint, exibindo uma pequena porcentagem do tráfego e aumentar gradualmente a divisão de tráfego do novo modelo até que ele exiba 100% do tráfego.
Como os recursos são associados ao modelo em vez do endpoint, é possível implantar modelos de tipos diferentes no mesmo endpoint. No entanto, a prática recomendada é implantar modelos de um tipo específico, como um AutoML tabular, treinamento personalizado, em um endpoint. Essa configuração é mais fácil de gerenciar.
Motivos para implantar um modelo em mais de um endpoint
Pode ser útil implantar os modelos com diferentes recursos para diferentes ambientes de aplicativos, como testes e produção. Você também pode querer oferecer suporte a diferentes SLOs para suas solicitações de previsão. Talvez um dos seus aplicativos tenha necessidades de desempenho muito mais altas do que outros. Nesse caso, é possível implantar esse modelo em um endpoint de desempenho superior com mais recursos de máquina. Para otimizar os custos, também é possível implantar o modelo em um endpoint de desempenho inferior com menos recursos da máquina.
Comportamento de escalonamento
Ao implantar um modelo para previsão on-line como um DeployedModel
, é possível configurar
nós de previsão para serem escalonados automaticamente. Para isso, defina
dedicatedResources.maxReplicaCount
com um
valor maior que dedicatedResources.minReplicaCount
.
Ao configurar um DeployedModel
, você precisa definir dedicatedResources.minReplicaCount
como pelo menos 1. Em outras palavras, não é possível
configurar o DeployedModel
para escalonar para 0 nós de previsão quando ele não é
usado.
Utilização e configuração de valor desejado
Por padrão, se você implantar um modelo sem recursos de GPU dedicados, a Vertex AI fará o escalonamento vertical ou horizontal automático do número de réplicas para que o uso da CPU corresponda ao valor desejado padrão de 60%.
Por padrão, se você implantar um modelo com recursos de GPU dedicados (se
machineSpec.accelerator_count
for maior que 0), a Vertex AI vai escalonar automaticamente o número de réplicas
para que o uso da CPU ou GPU, o que for maior, corresponda ao valor desejado padrão de 60%. Portanto,
se a capacidade de processamento estiver causando alto uso da GPU, mas não alto uso da CPU,
a Vertex AI será escalonada verticalmente, e a utilização da CPU será muito baixa,
o que vai ficar visível no monitoramento. Por outro lado,
se o contêiner personalizado estiver subutilizando a GPU, mas tiver um processo não relacionado
que aumente a utilização da CPU para mais de 60%, a Vertex AI vai ser escalonar verticalmente, mesmo
que isso não seja necessário para atingir as metas de QPS e latência.
É possível substituir o valor desejado e a métrica de limite padrão especificando autoscalingMetricSpecs
.
Se a implantação for configurada para escalonar com base apenas no uso da CPU, ela não será escalonar verticalmente mesmo que o uso da GPU seja alto.
Gerenciar o uso de recursos
É possível monitorar seu endpoint para rastrear métricas como o uso da CPU e do acelerador, o número de solicitações, a latência e o número atual e pretendido de réplicas. Essas informações podem ajudar você a entender o uso de recursos e o comportamento de escalonamento do endpoint.
Lembre-se de que cada réplica executa apenas um contêiner. Isso significa que, se um contêiner de previsão não puder usar totalmente o recurso de computação selecionado, como um código de linha de execução única para uma máquina com vários núcleos ou um modelo personalizado que chame outro serviço como parte da previsão, talvez seus nós não sejam escalonar verticalmente verticalmente.
Por exemplo, se você estiver usando o FastAPI ou qualquer servidor de modelo com um número configurável de workers ou linhas de execução, poderá haver muitos casos em que ter um só worker aumentará a utilização de recursos, o melhorando a capacidade do serviço de escalonar automaticamente o número de réplicas.
Geralmente, recomendamos começar com um só worker ou linha de execução por núcleo. Se você perceber que a utilização da CPU está baixa, especialmente sob carga alta, ou se o modelo não estiver escalonando verticalmente porque a utilização da CPU está baixa, aumente o número de workers. Por outro lado, se você perceber que a utilização está muito alta e suas latências aumentam mais do que o esperado sob carga, tente usar menos workers. Se você já estiver usando apenas um worker, tente usar um tipo de máquina menor.
Comportamento de escalonamento e atraso
A Vertex AI ajusta o número de réplicas a cada 15 segundos usando dados da janela anterior de 5 minutos. Para cada ciclo de 15 segundos, o sistema mede a utilização do servidor e gera um número pretendido de réplicas com base na seguinte fórmula:
target # of replicas = Ceil(current # of replicas * (current utilization / target utilization))
Por exemplo, se você tem duas réplicas que estão sendo usadas em 100%, o valor desejado é 4:
4 = Ceil(3.33) = Ceil(2 * (100% / 60%))
Outro exemplo: se você tiver 10 réplicas e a utilização cair para 1%, o valor desejado é 1:
1 = Ceil(.167) = Ceil(10 * (1% / 60%))
No final de cada ciclo de 15 segundos, o sistema ajusta o número de réplicas para corresponder ao maior valor desejado da janela de cinco minutos anterior. Como o maior valor desejado é escolhido, seu endpoint não vai reduzir escala vertical vertical se houver um pico de utilização durante essa janela de cinco minutos, mesmo que a utilização geral seja muito baixa. Por outro lado, se o sistema precisar ser escalonado verticalmente, ele fará isso em até 15 segundos, já que o valor de destino mais alto é escolhido em vez da média.
Lembre-se de que, mesmo depois que a Vertex AI ajusta o número de réplicas, leva tempo para iniciar ou desativar as réplicas. Portanto, haverá um atraso maior até o endpoint se ajustar ao tráfego. Os principais fatores que contribuem para esse tempo incluem:
- o tempo para provisionar e iniciar as VMs do Compute Engine
- o tempo para fazer o download do contêiner do registro
- o tempo para carregar o modelo do armazenamento
A melhor maneira de entender o comportamento de escalonamento real do seu modelo é executar um teste de carga e otimizar as características importantes para o modelo e o caso de uso. Se o escalonador automático não estiver sendo rápido o suficiente para escalonar verticalmente o
aplicativo, provisione min_replicas
suficientes para lidar com o tráfego de referência
esperado.
Atualizar a configuração de escalonamento
Se você tiver especificado DedicatedResources
ou AutomaticResources
ao implantar o modelo, poderá atualizar a configuração de escalonamento sem reimplantar o modelo chamando mutateDeployedModel
.
Por exemplo, a solicitação a seguir atualiza max_replica
, autoscaling_metric_specs
e desativa o registro de contêiner.
{
"deployedModel": {
"id": "2464520679043629056",
"dedicatedResources": {
"maxReplicaCount": 9,
"autoscalingMetricSpecs": [
{
"metricName": "aiplatform.googleapis.com/prediction/online/cpu/utilization",
"target": 50
}
]
},
"disableContainerLogging": true
},
"update_mask": {
"paths": [
"dedicated_resources.max_replica_count",
"dedicated_resources.autoscaling_metric_specs",
"disable_container_logging"
]
}
}
Observações sobre o uso:
- Não é possível mudar o tipo de máquina ou alternar de
DedicatedResources
paraAutomaticResources
ou vice-versa. Os únicos campos de configuração de escalonamento que podem ser alterados são:min_replica
,max_replica
eAutoscalingMetricSpec
(somenteDedicatedResources
). - É necessário listar todos os campos que você precisa atualizar em
updateMask
. Os campos não listados são ignorados. - O DeployedModel precisa estar no estado
DEPLOYED
. Pode haver no máximo uma operação mutate ativa por modelo implantado. - O
mutateDeployedModel
também permite ativar ou desativar a geração de registros de contêineres. Para mais informações, consulte Geração de registros de previsão on-line.
Cancelar a implantação de um modelo e excluir o endpoint
Use um dos métodos a seguir para desimplantar um modelo e excluir o endpoint.
Console do Google Cloud
Desimplante o modelo da seguinte maneira:
No console do Google Cloud, na seção da Vertex AI, acesse a página Endpoints.
Clique no nome e no ID da versão do modelo que você quer desimplantar para abrir a página de detalhes.
Na linha do modelo, clique em
Ações e em Cancelar a implantação do modelo no endpoint.Na caixa de diálogo Cancelar a implantação do modelo do endpoint, clique em Cancelar a implantação.
Para excluir outros modelos, repita as etapas anteriores.
Opcional: exclua o endpoint de previsão on-line da seguinte maneira:
No console do Google Cloud, na seção Vertex AI, acesse a página Previsão on-line.
Selecione o endpoint.
Para excluir o endpoint, clique em
Ações e, em seguida, clique em Excluir endpoint.
gcloud
Liste os IDs de todos os endpoints no seu projeto:
gcloud ai endpoints list \ --project=PROJECT_ID \ --region=LOCATION_ID
Substitua PROJECT_ID pelo nome do projeto e LOCATION_ID pela região em que você está usando a Vertex AI.
Liste os IDs dos modelos implantados em um endpoint:
gcloud ai endpoints describe ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID
Substitua ENDPOINT_ID pelo ID do endpoint.
Desimplante um modelo do endpoint:
gcloud ai endpoints undeploy-model ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID \ --deployed-model-id=DEPLOYED_MODEL_ID
Substitua DEPLOYED_MODEL_ID pelo ID do modelo.
Opcional: exclua o endpoint de previsão on-line:
gcloud ai endpoints delete ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID
A seguir
- Saiba como receber uma previsão on-line.
- Saiba mais sobre endpoints particulares.