Configurar recursos de computação para inferência

A Vertex AI aloca nós para processar inferências on-line e em lote. Ao implantar um modelo treinado personalizado ou um modelo do AutoML em um recurso Endpoint para exibir inferências on-line ou ao solicitar inferências em lote, é possível personalizar o tipo de máquina virtual que o serviço de inferência usa nesses nós. Se preferir, configure os nós de inferência para usar GPUs.

Os tipos de máquina são diferentes no seguinte:

  • Número de CPUs virtuais (vCPUs) por nó
  • Quantidade de memória por nó
  • Preços

Ao selecionar um tipo de máquina com mais recursos de computação, é possível fornecer inferências com latência menor ou processar mais solicitações de inferência ao mesmo tempo.

Gerenciar custo e disponibilidade

Para ajudar a gerenciar custos ou garantir a disponibilidade de recursos de VM, a Vertex AI oferece o seguinte:

  • Para que os recursos da VM estejam disponíveis quando os jobs de inferência precisarem deles, use as reservas do Compute Engine. As reservas fornecem um nível alto de garantia da capacidade dos recursos do Compute Engine. Para mais informações, consulte Usar reservas com inferência.

  • Para reduzir o custo da execução dos jobs de inferência, use 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 ou excluir essas VMs para recuperar a capacidade a qualquer momento. Para mais informações, consulte Usar VMs spot com inferência.

Onde especificar recursos de computação

Inferência on-line

Se você quiser usar um modelo treinado personalizado ou um modelo tabular do AutoML para exibir inferências on-line, é necessário especificar um tipo de máquina ao implantar o recurso Model como DeployedModel em um Endpoint. Para outros tipos de modelos do AutoML, a Vertex AI configura os tipos de máquina automaticamente.

Especifique o tipo de máquina (e, opcionalmente, a configuração de GPU) no campo dedicatedResources.machineSpec de DeployedModel.

Aprenda a implantar cada tipo de modelo:

Inferência em lote

Se você quiser receber inferências em lote de um modelo treinado personalizado ou um modelo tabular do AutoML, especifique um tipo de máquina ao criar um recurso BatchPredictionJob. Especifique o tipo de máquina (e, opcionalmente, a configuração de GPU) no campo dedicatedResources.machineSpec do seu BatchPredictionJob.

Tipos de máquina

A tabela a seguir compara os tipos de máquina disponíveis para veicular inferências de modelos treinados e personalizados do AutoML:

Série E2

Nome vCPUs Memória (GB)
e2-standard-2 2 8
e2-standard-4 4 16
e2-standard-8 8 32
e2-standard-16 16 64
e2-standard-32 32 128
e2-highmem-2 2 16
e2-highmem-4 4 32
e2-highmem-8 8 64
e2-highmem-16 16 128
e2-highcpu-2 2 2
e2-highcpu-4 4 4
e2-highcpu-8 8 8
e2-highcpu-16 16 16
e2-highcpu-32 32 32

Série N1

Nome vCPUs Memória (GB)
n1-standard-2 2 7,5
n1-standard-4 4 15
n1-standard-8 8 30
n1-standard-16 16 60
n1-standard-32 32 120
n1-highmem-2 2 13
n1-highmem-4 4 26
n1-highmem-8 8 52
n1-highmem-16 16 104
n1-highmem-32 32 208
n1-highcpu-4 4 3.6
n1-highcpu-8 8 7.2
n1-highcpu-16 16 14,4
n1-highcpu-32 32 28,8

Série N2

Nome vCPUs Memória (GB)
n2-standard-2 2 8
n2-standard-4 4 16
n2-standard-8 8 32
n2-standard-16 16 64
n2-standard-32 32 128
n2-standard-48 48 192
n2-standard-64 64 256
n2-standard-80 80 320
n2-standard-96 96 384
n2-standard-128 128 512
n2-highmem-2 2 16
n2-highmem-4 4 32
n2-highmem-8 8 64
n2-highmem-16 16 128
n2-highmem-32 32 256
n2-highmem-48 48 384
n2-highmem-64 64 512
n2-highmem-80 80 640
n2-highmem-96 96 768
n2-highmem-128 128 864
n2-highcpu-2 2 2
n2-highcpu-4 4 4
n2-highcpu-8 8 8
n2-highcpu-16 16 16
n2-highcpu-32 32 32
n2-highcpu-48 48 48
n2-highcpu-64 64 64
n2-highcpu-80 80 80
n2-highcpu-96 96 96

Série N2D

Nome vCPUs Memória (GB)
n2d-standard-2 2 8
n2d-standard-4 4 16
n2d-standard-8 8 32
n2d-standard-16 16 64
n2d-standard-32 32 128
n2d-standard-48 48 192
n2d-standard-64 64 256
n2d-standard-80 80 320
n2d-standard-96 96 384
n2d-standard-128 128 512
n2d-standard-224 224 896
n2d-highmem-2 2 16
n2d-highmem-4 4 32
n2d-highmem-8 8 64
n2d-highmem-16 16 128
n2d-highmem-32 32 256
n2d-highmem-48 48 384
n2d-highmem-64 64 512
n2d-highmem-80 80 640
n2d-highmem-96 96 768
n2d-highcpu-2 2 2
n2d-highcpu-4 4 4
n2d-highcpu-8 8 8
n2d-highcpu-16 16 16
n2d-highcpu-32 32 32
n2d-highcpu-48 48 48
n2d-highcpu-64 64 64
n2d-highcpu-80 80 80
n2d-highcpu-96 96 96
n2d-highcpu-128 128 128
n2d-highcpu-224 224 224

Série C2

Nome vCPUs Memória (GB)
c2-standard-4 4 16
c2-standard-8 8 32
c2-standard-16 16 64
c2-standard-30 30 120
c2-standard-60 60 240

Série C2D

Nome vCPUs Memória (GB)
c2d-standard-2 2 8
c2d-standard-4 4 16
c2d-standard-8 8 32
c2d-standard-16 16 64
c2d-standard-32 32 128
c2d-standard-56 56 224
c2d-standard-112 112 448
c2d-highcpu-2 2 4
c2d-highcpu-4 4 8
c2d-highcpu-8 8 16
c2d-highcpu-16 16 32
c2d-highcpu-32 32 64
c2d-highcpu-56 56 112
c2d-highcpu-112 112 224
c2d-highmem-2 2 16
c2d-highmem-4 4 32
c2d-highmem-8 8 64
c2d-highmem-16 16 128
c2d-highmem-32 32 256
c2d-highmem-56 56 448
c2d-highmem-112 112 896

Série C3

Nome vCPUs Memória (GB)
c3-highcpu-4 4 8
c3-highcpu-8 8 16
c3-highcpu-22 22 44
c3-highcpu-44 44 88
c3-highcpu-88 88 176
c3-highcpu-176 176 352

Série A2

Nome vCPUs Memória (GB) GPUs (NVIDIA A100)
a2-highgpu-1g 12 85 1 (A100 40GB)
a2-highgpu-2g 24 170 2 (A100 40GB)
a2-highgpu-4g 48 340 4 (A100 40GB)
a2-highgpu-8g 96 680 8 (A100 40GB)
a2-megagpu-16g 96 1360 16 (A100 40GB)
a2-ultragpu-1g 12 170 1 (A100 80GB)
a2-ultragpu-2g 24 340 2 (A100 80GB)
a2-ultragpu-4g 48 680 4 (A100 80GB)
a2-ultragpu-8g 96 1360 8 (A100 80GB)

Série A3

Nome vCPUs Memória (GB) GPUs (NVIDIA H100 ou H200)
a3-highgpu-1g 26 234 1 (H100 80GB)
a3-highgpu-2g 52 468 2 (H100 80GB)
a3-highgpu-4g 104 936 4 (H100 80GB)
a3-highgpu-8g 208 1872 8 (H100 80GB)
a3-edgegpu-8g 208 1872 8 (H100 80GB)
a3-ultragpu-8g 224 2952 8 (H200 141GB)

Série A4X

Nome vCPUs Memória (GB) GPUs (NVIDIA GB200)
a4x-highgpu-4g 140 884 4

Série G2

Nome vCPUs Memória (GB) GPUs (NVIDIA L4)
g2-standard-4 4 16 1
g2-standard-8 8 32 1
g2-standard-12 12 48 1
g2-standard-16 16 64 1
g2-standard-24 24 96 2
g2-standard-32 32 128 1
g2-standard-48 48 192 4
g2-standard-96 96 384 8

Saiba mais sobre os preços de cada tipo de máquina. Leia mais sobre as especificações detalhadas desses tipos de máquina na documentação do Compute Engine sobre tipos de máquinas.

Encontre o tipo de máquina ideal

Inferência on-line

Para encontrar o tipo de máquina ideal para seu caso de uso, recomendamos carregar o modelo em vários tipos de máquinas e medir características como latência, custo, simultaneidade e capacidade de processamento.

Uma maneira de fazer isso é executar este notebook em vários tipos de máquinas e comparar os resultados para encontrar aquele que funciona melhor para você.

A Vertex AI reserva aproximadamente 1 vCPU em cada réplica para executar processos do sistema. Isso significa que a execução do notebook em um único tipo de máquina de núcleo seria comparável ao uso de um tipo de máquina de dois núcleos para exibir inferências.

Ao considerar os custos de inferência, lembre-se de que máquinas maiores custam mais, mas podem reduzir o custo geral, porque menos réplicas são necessárias para atender a mesma carga de trabalho. Isso é particularmente evidente para GPUs, que tendem a custar mais por hora, mas podem fornecer menor latência e menor custo geral.

Inferência em lote

Para mais informações, consulte Escolher o tipo de máquina e a contagem de réplicas.

Aceleradores de GPU opcionais

Algumas configurações, como as séries A2 e G2, têm um número fixo de GPUs integradas.

A série A4X (a4x-highgpu-4g) exige uma contagem mínima de réplicas de 18. Essa máquina é comprada por rack e tem um mínimo de 18 VMs.

Outras configurações, como a série N1, permitem adicionar GPUs para acelerar cada nó de inferência.

Para adicionar aceleradores de GPU opcionais, você precisa considerar vários requisitos:

  • Você só pode usar GPUs quando seuModel recurso é baseado em umaTensorFlow SavedModel ou quando você usar um contêiner personalizado. que foi projetada para aproveitar as GPUs. Não é possível usar GPUs para modelos scikit-learn ou XGBoost.
  • A disponibilidade de cada tipo de GPU varia de acordo com a região usada para o modelo. Saiba quais tipos de GPUs estão disponíveis em quais regiões.
  • Só é possível usar um tipo de GPU no seu recurso DeployedModel ou BatchPredictionJob, e há limitações no número de GPUs a serem adicionadas dependendo do tipo de máquina que você está usando. A tabela a seguir descreve essas limitações.

Confira na tabela a seguir as GPUs opcionais disponíveis para inferência on-line e quantas de cada tipo é possível usar com cada tipo de máquina do Compute Engine:

Números válidos de GPUs para cada tipo de máquina
Tipo de máquina NVIDIA Tesla P100 NVIDIA Tesla V100 NVIDIA Tesla P4 NVIDIA Tesla T4
n1-standard-2 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-standard-4 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-standard-8 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-standard-16 1, 2, 4 2, 4, 8 1, 2, 4 1, 2, 4
n1-standard-32 2, 4 4, 8 2, 4 2, 4
n1-highmem-2 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-highmem-4 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-highmem-8 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-highmem-16 1, 2, 4 2, 4, 8 1, 2, 4 1, 2, 4
n1-highmem-32 2, 4 4, 8 2, 4 2, 4
n1-highcpu-2 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-highcpu-4 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-highcpu-8 1, 2, 4 1, 2, 4, 8 1, 2, 4 1, 2, 4
n1-highcpu-16 1, 2, 4 2, 4, 8 1, 2, 4 1, 2, 4
n1-highcpu-32 2, 4 4, 8 2, 4 2, 4

As GPUs opcionais geram custos adicionais.

Agendar várias réplicas em uma única VM

Para otimizar o custo da implantação, é possível implantar várias réplicas do mesmo modelo em uma única VM equipada com vários aceleradores de hardware de GPU, como a VM a3-highgpu-8g, que tem oito GPUs NVIDIA H100. Cada réplica de modelo pode ser atribuída a uma ou mais GPUs.

Para cargas de trabalho menores, também é possível particionar uma única GPU em várias instâncias menores usando GPUs NVIDIA com várias instâncias (MIG). Isso permite atribuir recursos em um nível de sub-GPU, maximizando a utilização de cada acelerador. Para mais informações sobre GPUs de várias instâncias, consulte o Guia do usuário de GPUs NVIDIA com várias instâncias.

Esses dois recursos foram criados para oferecer um uso mais eficiente dos recursos e maior custo-benefício para suas cargas de trabalho de serviço.

Limitações

Este recurso está sujeito às seguintes limitações:

  • Todas as réplicas de modelo programadas juntas precisam ser da mesma versão.
  • Não é possível usar pools de recursos de implantação para compartilhar recursos entre implantações.

Tipos de máquina compatíveis

Os seguintes tipos de máquina são compatíveis. Para tipos de máquinas com apenas uma GPU, não é necessário fazer o coscheduling.

Tipo de máquina Coschedule Coschedule + MIG
a2-highgpu-1g N/A Sim
a2-highgpu-2g Sim Sim
a2-highgpu-4g Sim Sim
a2-highgpu-8g Sim Sim
a2-highgpu-16g Sim Sim
a2-ultragpu-1g N/A Sim
a2-ultragpu-2g Sim Sim
a2-ultragpu-4g Sim Sim
a2-ultragpu-8g Sim Sim
a3-edgegpu-8g Sim Sim
a3-highgpu-1g N/A Sim
a3-highgpu-2g Sim Sim
a3-highgpu-4g Sim Sim
a3-highgpu-8g Sim Sim
a3-megagpu-8g Sim Sim
a3-ultragpu-8g Sim Sim
a4-highgpu-8g Sim Sim
a4x-highgpu-8g Sim Não

Pré-requisitos

Antes de usar esse recurso, leia Implantar um modelo usando a CLI gcloud ou a API Vertex AI.

Como implantar as réplicas do modelo

Os exemplos a seguir demonstram como implantar réplicas de modelos com agendamento conjunto.

gcloud

Use o seguinte comando gcloud para implantar réplicas de modelo coscheduleadas em uma VM:

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 \
  --machine-type=MACHINE_TYPE \
  --accelerator=type=ACC_TYPE,count=ACC_COUNT \
  --traffic-split=0=100

Substitua:

  • 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 do Model para o DeployedModel.
  • 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 inferência, 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 inferência, até esse número de nós e nunca menos que o número mínimo de nós. . Uma VM é necessária para cada duas réplicas a serem implantadas.
  • MACHINE_TYPE: o tipo de VM a ser usado para esta implantação. Precisa ser da família otimizada para aceleradores.
  • ACC_TYPE: o tipo de acelerador de GPU. Precisa corresponder ao MACHINE_TYPE. Para a3-highgpu-8g, use nvidia-h100-80gb.
  • ACC_COUNT: o número de GPUs que cada réplica pode usar. Precisa ser pelo menos 1 e não mais que o número total de GPUs na máquina.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_NUMBER: o número do projeto.
  • 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 do Model para o DeployedModel.
  • 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.
  • ACC_TYPE: o tipo de acelerador de GPU. Precisa corresponder ao `GPU_PARTITION_SIZE`.
  • GPU_PARTITION_SIZE: o tamanho da partição da GPU. Por exemplo, "1g.10gb".
  • ACC_COUNT: o número de GPUs que cada réplica pode usar. Precisa ser pelo menos 1 e no máximo o número total de GPUs na máquina.
  • 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 inferência, 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 inferência, até esse número de nós e nunca menos que o número mínimo de nós.

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_NUMBER/locations/LOCATION_ID/models/MODEL_ID",
    "displayName": "DEPLOYED_MODEL_NAME",
    "dedicatedResources": {
      "machineSpec": {
        "machineType": "MACHINE_TYPE",
        "acceleratorType": "ACC_TYPE",
        "gpuPartitionSize": "GPU_PARTITION_SIZE",
        "acceleratorCount": "ACC_COUNT""
      },
      "minReplicaCount": MIN_REPLICA_COUNT,
      "maxReplicaCount": MAX_REPLICA_COUNT,
      "autoscalingMetricSpecs": [
        {
          "metricName": "aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle",
          "target": 70
        }
      ]
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

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.

Use o comando Python a seguir para implantar réplicas de modelo com agendamento conjunto em uma VM.

endpoint.deploy(
    model=<var>MODEL</var>,
    machine_type=MACHINE_TYPE,
    min_replica_count=MIN_REPLICA_COUNT,
    max_replica_count=MAX_REPLICA_COUNT,
    accelerator_type=ACC_TYPE,
    gpu_partition_size=GPU_PARTITION_SIZE,
    accelerator_count=ACC_COUNT
)

Substitua:

  • MODEL: o objeto de modelo retornado pela seguinte chamada de API:

    model = aiplatform.Model(model_name=model_name)
    
  • MACHINE_TYPE: o tipo de VM a ser usado para esta implantação. Precisa ser da família otimizada para aceleradores. Na prévia, apenas a3-highgpu-8g é compatível.

  • 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 inferência, 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 inferência, até esse número de nós e nunca menos que o número mínimo de nós.

  • ACC_TYPE: o tipo de acelerador de GPU. Precisa corresponder ao GPU_PARTITION_SIZE.

  • GPU_PARTITION_SIZE: o tamanho da partição da GPU. Por exemplo, "1g.10gb". Para uma lista completa de tamanhos de partição compatíveis com cada tipo de GPU, consulte Partições de GPU com várias instâncias.

  • ACC_COUNT: o número de GPUs que cada réplica pode usar. Precisa ser pelo menos 1 e não mais que o número total de GPUs na máquina. Para a3-highgpu-8g, especifique um valor entre 1 e 8.

Monitorar o uso da VM

Use as instruções a seguir para monitorar a contagem real de máquinas das réplicas implantadas no Metrics Explorer.

  1. No console Google Cloud , acesse a página Metrics Explorer.

    Acesse o Metrics Explorer

  2. Selecione o projeto para o qual você quer ver as métricas.

  3. No menu suspenso Métrica, clique em Selecionar uma métrica.

  4. Na barra de pesquisa Filtrar por nome do recurso ou da métrica, digite Vertex AI Endpoint.

  5. Selecione a categoria de métrica Endpoint da Vertex AI > Previsão. Em Métricas ativas, selecione Contagem de máquinas.

  6. Clique em Aplicar.

Faturamento

O faturamento é baseado no número de VMs usadas, não no número de GPUs. É possível monitorar o uso da VM com o Metrics Explorer.

Alta disponibilidade

Como mais de uma réplica está sendo agendada na mesma VM, a inferência da Vertex AI não pode distribuir sua implantação em várias VMs e, portanto, em várias zonas até que a contagem de réplicas exceda o nó de VM única. Para fins de alta disponibilidade, o Google recomenda a implantação em pelo menos dois nós (VMs).

A seguir