Configure recursos de computação para inferência

O Vertex AI atribui nós para processar inferências online e em lote. Quando implementa um modelo treinado personalizado ou um modelo do AutoML num Endpointrecurso para publicar inferências online ou quando pede inferências em lote, pode personalizar o tipo de máquina virtual que o serviço de inferência usa para estes nós. Opcionalmente, pode configurar nós de inferência para usar GPUs.

Os tipos de máquinas diferem de algumas formas:

  • 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, pode publicar inferências com menor latência ou processar mais pedidos de inferência em simultâneo.

Faça a gestão do custo e da disponibilidade

Para ajudar a gerir os custos ou garantir a disponibilidade dos recursos de VMs, o Vertex AI oferece o seguinte:

  • Para garantir que os recursos de VM estão disponíveis quando as tarefas de inferência os precisam, pode usar as reservas do Compute Engine. As reservas oferecem um elevado nível de garantia na obtenção de capacidade para recursos do Compute Engine. Para mais informações, consulte o artigo Use reservas com inferência.

  • Para reduzir o custo de execução dos seus trabalhos de inferência, pode usar VMs de capacidade instantânea. As VMs do Spot são instâncias de máquinas virtuais (VMs) que representam capacidade excedentária do Compute Engine. As VMs do Spot têm descontos significativos, mas o Compute Engine pode parar ou eliminar preventivamente as VMs do Spot para reclamar a capacidade em qualquer altura. Para mais informações, consulte o artigo Use VMs do Spot com inferência.

Onde especificar os recursos de computação

Inferência online

Se quiser usar um modelo preparado personalizado ou um modelo tabular do AutoML para publicar inferências online, tem de especificar um tipo de máquina quando implementar o recurso Model como um DeployedModel num Endpoint. Para outros tipos de modelos do AutoML, o Vertex AI configura automaticamente os tipos de máquinas.

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

Saiba como implementar cada tipo de modelo:

Inferência em lote

Se quiser obter inferências em lote a partir de um modelo preparado personalizado ou de um modelo tabular do AutoML, tem de especificar um tipo de máquina quando criar um recurso BatchPredictionJob. Especifique o tipo de máquina (e, opcionalmente, a configuração da GPU) no campo dedicatedResources.machineSpec do seu BatchPredictionJob.

Tipos de máquinas

A tabela seguinte compara os tipos de máquinas disponíveis para publicar inferências de modelos com preparação personalizada e modelos tabulares 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

N1 Series

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

N2 Series

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

C2 Series

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)

A3 Series

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)

A4X Series

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

G2 Series

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 acerca das especificações detalhadas destes tipos de máquinas na documentação do Compute Engine sobre tipos de máquinas.

Encontre o tipo de máquina ideal

Inferência online

Para encontrar o tipo de máquina ideal para o seu exemplo de utilização, recomendamos que carregue o seu modelo em vários tipos de máquinas e meça características como a latência, o custo, a simultaneidade e o débito.

Uma forma de o fazer é executar este bloco de notas em vários tipos de máquinas e comparar os resultados para encontrar o que funciona melhor para si.

A Vertex AI reserva aproximadamente 1 vCPU em cada réplica para executar processos do sistema. Isto significa que a execução do bloco de notas num tipo de máquina de núcleo único seria comparável à utilização de um tipo de máquina de 2 núcleos para publicar inferências.

Ao considerar os custos de inferência, lembre-se de que, embora as máquinas maiores custem mais, podem reduzir o custo geral porque são necessárias menos réplicas para publicar a mesma carga de trabalho. Isto é particularmente evidente para as GPUs, que tendem a custar mais por hora, mas podem oferecer uma latência mais baixa e custar menos no geral.

Inferência em lote

Para mais informações, consulte o artigo Escolha o tipo de máquina e o número de réplicas.

Aceleradores de GPU opcionais

Algumas configurações, como a série A2 e a série G2, têm um número fixo de GPUs incorporadas.

A série A4X (a4x-highgpu-4g) requer um número mínimo de réplicas de 18. Esta máquina é comprada por rack e tem um mínimo de 18 VMs.

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

.

Para adicionar aceleradores de GPU opcionais, tem de ter em conta vários requisitos:

  • Só pode usar GPUs quando o seu recurso Model se baseia num TensorFlow SavedModel ou quando usa um contentor personalizado que foi concebido para tirar partido das GPUs. Não pode usar GPUs para modelos scikit-learn ou XGBoost.
  • A disponibilidade de cada tipo de GPU varia consoante a região que usa para o seu modelo. Saiba que tipos de GPUs estão disponíveis em que regiões.
  • Só pode usar um tipo de GPU para o seu recurso DeployedModel ou BatchPredictionJob, e existem limitações no número de GPUs que pode adicionar, consoante o tipo de máquina que estiver a usar. A tabela seguinte descreve estas limitações.

A tabela seguinte mostra as GPUs opcionais que estão disponíveis para a inferência online e quantas de cada tipo de GPU pode 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 implicam custos adicionais.

Agende várias réplicas numa única VM

Para otimizar o custo da sua implementação, pode implementar várias réplicas do mesmo modelo numa ú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 do modelo pode ser atribuída a uma ou mais GPUs.

Para cargas de trabalho mais pequenas, também pode dividir uma única GPU em várias instâncias mais pequenas através das GPUs multi-instância (MIG) da NVIDIA. Isto permite-lhe atribuir recursos ao nível da sub-GPU, maximizando a utilização de cada acelerador. Para mais informações sobre GPUs multi-instância, consulte o manual do utilizador de GPUs multi-instância da NVIDIA.

Ambas as capacidades foram concebidas para oferecer uma utilização de recursos mais eficiente e uma maior rentabilidade para as suas cargas de trabalho de publicação.

Limitações

Esta funcionalidade está sujeita às seguintes limitações:

  • Todas as réplicas do modelo agendadas em conjunto têm de ser a mesma versão do modelo.
  • A utilização de pools de recursos de implementação para partilhar recursos entre implementações não é suportada.

Tipos de máquinas suportados

São suportados os seguintes tipos de máquinas. Tenha em atenção que, para tipos de máquinas que só têm uma GPU, não é necessária a programação conjunta.

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 esta funcionalidade, leia o artigo Implemente um modelo através da CLI gcloud ou da API Vertex AI.

Implementar as réplicas do modelo

Os exemplos seguintes demonstram como implementar réplicas de modelos agendadas em conjunto.

gcloud

Use o seguinte comando gcloud para implementar réplicas de modelos agendadas em conjunto numa 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 o seguinte:

  • ENDPOINT_ID: o ID do ponto final.
  • LOCATION_ID: a região onde está a usar o Vertex AI.
  • MODEL_ID: o ID do modelo a implementar.
  • DEPLOYED_MODEL_NAME: um nome para o DeployedModel. Também pode usar o nome a apresentar do Model para o DeployedModel.
  • MIN_REPLICA_COUNT: o número mínimo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até ao número máximo de nós e nunca inferior a este número de nós.
  • MAX_REPLICA_COUNT: o número máximo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até este número de nós e nunca inferior ao número mínimo de nós. . É necessária uma VM para cada 2 réplicas a implementar.
  • MACHINE_TYPE: o tipo de VM a usar para esta implementação. Tem de ser da família otimizada pelo acelerador.
  • ACC_TYPE: o tipo de acelerador de GPU. Deve 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. Tem de ser, pelo menos, 1 e não pode exceder o número total de GPUs no computador.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_NUMBER: o número do projeto.
  • LOCATION_ID: a região onde está a usar o Vertex AI.
  • MODEL_ID: o ID do modelo a implementar.
  • DEPLOYED_MODEL_NAME: um nome para o DeployedModel. Também pode usar o nome a apresentar do Model para o DeployedModel.
  • MACHINE_TYPE: opcional. Os recursos da máquina usados para cada nó desta implementação. A predefinição é n1-standard-2. Saiba mais sobre os tipos de máquinas.
  • ACC_TYPE: o tipo de acelerador de GPU. Deve corresponder a `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. Tem de ser, no mínimo, 1 e, no máximo, o número total de GPUs no computador.
  • MIN_REPLICA_COUNT: o número mínimo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até ao número máximo de nós e nunca inferior a este número de nós.
  • MAX_REPLICA_COUNT: o número máximo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até este número de nós e nunca inferior ao 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 do pedido:

{
  "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 o seu pedido, expanda uma destas opções:

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

Use o seguinte comando Python para implementar réplicas de modelos agendadas em conjunto numa 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 o seguinte:

  • MODEL: o objeto do modelo devolvido pela seguinte chamada API:

    model = aiplatform.Model(model_name=model_name)
    
  • MACHINE_TYPE: o tipo de VM a usar para esta implementação. Tem de ser da família otimizada pelo acelerador. Na pré-visualização, apenas a3-highgpu-8g é suportado.

  • MIN_REPLICA_COUNT: o número mínimo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até ao número máximo de nós e nunca inferior a este número de nós.

  • MAX_REPLICA_COUNT: o número máximo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até este número de nós e nunca inferior ao número mínimo de nós.

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

  • GPU_PARTITION_SIZE: o tamanho da partição da GPU. Por exemplo, "1g.10gb". Para ver uma lista abrangente dos tamanhos de partições suportados para cada tipo de GPU, consulte o artigo Partições de GPU multi-instância.

  • ACC_COUNT: o número de GPUs que cada réplica pode usar. Tem de ser, pelo menos, 1 e não pode exceder o número total de GPUs no computador. Para a3-highgpu-8g, especifique entre 1 e 8.

Monitorize a utilização de VMs

Use as instruções seguintes para monitorizar a quantidade real de máquinas das réplicas implementadas no explorador de métricas.

  1. Na Google Cloud consola, aceda à página Explorador de métricas.

    Aceder ao Explorador de métricas

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

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

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

  5. Selecione a categoria de métricas Ponto final do Vertex AI > Previsão. Em Métricas ativas, selecione Quantidade de máquinas.

  6. Clique em Aplicar.

Faturação

A faturação baseia-se no número de VMs usadas e não no número de GPUs. Pode monitorizar a utilização da VM através do Explorador de métricas.

Alta disponibilidade

Uma vez que está a ser agendada mais do que uma réplica na mesma VM, a inferência da Vertex AI não pode distribuir a sua implementação por várias VMs e, por isso, por várias zonas, até que a contagem de réplicas exceda o nó de VM único. Para fins de elevada disponibilidade, a Google recomenda a implementação em, pelo menos, dois nós (VMs).

O que se segue?