Visão geral
É possível reduzir o custo da execução dos jobs de previsão usando VMs spot. As VMs spot são instâncias de máquina virtual (VM) que excedem a capacidade do Compute Engine. Elas têm descontos significativos, mas o Compute Engine pode forçar a interrupção (preempção) ou excluir essas VMs para recuperar a capacidade a qualquer momento.
Para saber mais, consulte VMs spot.
Limitações e requisitos
Considere as seguintes limitações e requisitos ao usar VMs spot com a Vertex AI:
- Todas as limitações de VMs spot se aplicam ao usar VMs spot com a Vertex AI.
- O uso de VMs spot com a Vertex AI é permitido apenas para treinamento e previsão personalizados.
- Não é possível usar VMs spot com pods de TPU.
- Não é possível enviar o job pelo console do Google Cloud.
Faturamento
Se as cargas de trabalho forem tolerantes a falhas e resistentes a possíveis preempções de VMs, as VMs spot poderão reduzir significativamente os custos de computação. Quando algumas dessas VMs são interrompidas durante o processamento, o job fica lento, mas não para por completo. As VMs spot concluem as tarefas de processamento em lote sem colocar carga extra nas VMs atuais e sem exigir que você pague o preço total de VMs padrão adicionais. Consulte Como lidar com a preempção.
Ao usar VMs spot, você recebe uma cobrança pela duração do job e pelo tipo de máquina. Você não paga pelo tempo em que o job está na fila ou está interrompido à força.
Como lidar com preempções
As VMs spot podem ser recuperadas pelo Compute Engine a qualquer momento.
Quando as VMs spot são interrompidas, o job de previsão
falha com um erro STOCKOUT
e o Compute Engine tenta reiniciar o job até
seis vezes. Para saber como aproveitar ao máximo as VMs spot, consulte
Práticas recomendadas
para VMs spot.
Receber previsões usando VMs spot
Para usar VMs spot ao implantar um modelo para receber previsões, use a API REST ou o SDK da Vertex AI para Python.
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.
-
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: opcional. O tipo de acelerador a ser anexado à máquina. Saiba mais.
- ACCELERATOR_COUNT: opcional. O número de aceleradores a serem usados por cada réplica.
- 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:
{ "acceleratorCount": 1}, "spot": true, "minReplicaCount": 1, "maxReplicaCount": 1}}, "trafficSplit": {"0": 100}}' \ "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel" "deployedModel": { "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "enableContainerLogging": true, "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": ACCELERATOR_COUNT }, "spot": true, "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.v1beta1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Python
Para saber como instalar ou atualizar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API do SDK da Vertex AI para Python.
endpoint5.deploy( model = model, deployed_model_display_name=DEPLOYED_NAME, traffic_split=TRAFFIC_SPLIT, machine_type="MACHINE_TYPE", accelerator_type="ACCELERATOR_TYPE", accelerator_count=ACCELERATOR_COUNT, min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, spot=True, sync=True )
A seguir
- Saiba mais sobre VMs spot.
- Para saber mais sobre VMs do Compute Engine em geral, leia a documentação Instâncias de máquina virtual.
- Para saber como criar VMs spot, confira Criar e usar VMs spot.
- Usar VMs spot com o treinamento da Vertex AI.