Configurar recursos de computación para la inferencia

Vertex AI asigna nodos para gestionar las inferencias online y por lotes. Cuando despliegas un modelo entrenado personalizado o un modelo de AutoML en un Endpointrecurso para ofrecer inferencias online o cuando solicitas inferencias por lotes, puedes personalizar el tipo de máquina virtual que utiliza el servicio de inferencia para estos nodos. También puedes configurar los nodos de inferencia para que usen GPUs.

Los tipos de máquina se diferencian en varios aspectos:

  • Número de CPUs virtuales (vCPUs) por nodo
  • Cantidad de memoria por nodo
  • Precios

Si seleccionas un tipo de máquina con más recursos de computación, puedes ofrecer inferencias con una latencia más baja o gestionar más solicitudes de inferencia al mismo tiempo.

Gestionar costes y disponibilidad

Para ayudar a gestionar los costes o asegurar la disponibilidad de los recursos de las VMs, Vertex AI ofrece lo siguiente:

  • Para asegurarte de que los recursos de VM estén disponibles cuando los necesiten tus tareas de inferencia, puedes usar reservas de Compute Engine. Las reservas ofrecen un alto nivel de garantía a la hora de obtener capacidad para los recursos de Compute Engine. Para obtener más información, consulta Usar reservas con inferencia.

  • Para reducir el coste de ejecutar tus trabajos de inferencia, puedes usar VMs de acceso puntual. Las VMs de aprovisionamiento esporádico son instancias de máquina virtual (VM) que corresponden a la capacidad excedente de Compute Engine. Las Spot VMs tienen descuentos significativos, pero Compute Engine puede detener o eliminar de forma preventiva las Spot VMs para recuperar la capacidad en cualquier momento. Para obtener más información, consulta el artículo sobre cómo usar VMs de acceso puntual con inferencias.

Dónde especificar los recursos de computación

Inferencia online

Si quieres usar un modelo entrenado de forma personalizada o un modelo tabular de AutoML para ofrecer inferencias online, debes especificar un tipo de máquina al desplegar el recurso Model como DeployedModel en un Endpoint. En el caso de otros tipos de modelos de AutoML, Vertex AI configura los tipos de máquina automáticamente.

Especifica el tipo de máquina (y, opcionalmente, la configuración de la GPU) en el campo dedicatedResources.machineSpec de tu DeployedModel.

Consulte cómo desplegar cada tipo de modelo:

Inferencia por lotes

Si quieres obtener inferencias por lotes de un modelo entrenado personalizado o de un modelo tabular de AutoML, debes especificar un tipo de máquina al crear un recurso BatchPredictionJob. Especifica el tipo de máquina (y, opcionalmente, la configuración de la GPU) en el campo dedicatedResources.machineSpec de tu BatchPredictionJob.

Tipos de máquina

En la siguiente tabla se comparan los tipos de máquinas disponibles para ofrecer inferencias de modelos tabulares de AutoML y modelos entrenados personalizados:

Serie E2

Nombre vCPUs Memoria (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

Serie N1

Nombre vCPUs Memoria (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

Serie N2

Nombre vCPUs Memoria (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 17.
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

Serie N2D

Nombre vCPUs Memoria (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 17.
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

Serie C2

Nombre vCPUs Memoria (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

Serie C2D

Nombre vCPUs Memoria (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

Serie C3

Nombre vCPUs Memoria (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

Serie A2

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

Serie A3

Nombre vCPUs Memoria (GB) GPUs (NVIDIA H100 o H200)
a3-highgpu-1g 26 234 1 (H100 80 GB)
a3-highgpu-2g 52 468 2 (H100 80 GB)
a3-highgpu-4g 104 936 4 (H100 80 GB)
a3-highgpu-8g 208 1872 8 (H100 80 GB)
a3-edgegpu-8g 208 1872 8 (H100 80 GB)
a3-ultragpu-8g 224 2952 8 (H200 141 GB)

A4X Series

Nombre vCPUs Memoria (GB) GPUs (NVIDIA GB200)
a4x-highgpu-4g 140 884 4

Serie G2

Nombre vCPUs Memoria (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

Consulta los precios de cada tipo de máquina. Para obtener más información sobre las especificaciones detalladas de estos tipos de máquinas, consulta la documentación de Compute Engine sobre tipos de máquinas.

Encontrar el tipo de máquina ideal

Inferencia online

Para encontrar el tipo de máquina ideal para tu caso de uso, te recomendamos que cargues tu modelo en varios tipos de máquina y midas características como la latencia, el coste, la simultaneidad y el rendimiento.

Una forma de hacerlo es ejecutar este cuaderno en varios tipos de máquinas y comparar los resultados para encontrar el que mejor se adapte a tus necesidades.

Vertex AI reserva aproximadamente 1 vCPU en cada réplica para ejecutar procesos del sistema. Esto significa que ejecutar el cuaderno en un tipo de máquina de un solo núcleo sería comparable a usar un tipo de máquina de dos núcleos para servir inferencias.

Al tener en cuenta los costes de inferencia, recuerda que, aunque las máquinas más grandes cuestan más, pueden reducir el coste total porque se necesitan menos réplicas para servir la misma carga de trabajo. Esto es especialmente evidente en las GPUs, que suelen costar más por hora, pero pueden ofrecer una latencia más baja y costar menos en general.

Inferencia por lotes

Para obtener más información, consulta Elegir el tipo de máquina y el número de réplicas.

Aceleradores de GPU opcionales

Algunas configuraciones, como las series A2 y G2, tienen un número fijo de GPUs integradas.

La serie A4X (a4x-highgpu-4g) requiere un número mínimo de réplicas de 18. Esta máquina se compra por rack y tiene un mínimo de 18 VMs.

Otras configuraciones, como la serie N1, te permiten añadir GPUs de forma opcional para acelerar cada nodo de inferencia.

.

Para añadir aceleradores de GPU opcionales, debes tener en cuenta varios requisitos:

  • Solo puedes usar GPUs cuando tu recurso Model se basa en un SavedModel de TensorFlow o cuando usas un contenedor personalizado que se ha diseñado para aprovechar las GPUs. No puedes usar GPUs para modelos de scikit-learn ni XGBoost.
  • La disponibilidad de cada tipo de GPU varía en función de la región que uses para tu modelo. Consulta qué tipos de GPUs están disponibles en cada región.
  • Solo puedes usar un tipo de GPU para tu recurso DeployedModel o BatchPredictionJob, y hay limitaciones en el número de GPUs que puedes añadir en función del tipo de máquina que utilices. En la siguiente tabla se describen estas limitaciones.

En la siguiente tabla se muestran las GPUs opcionales que están disponibles para la inferencia online y cuántas GPUs de cada tipo puedes usar con cada tipo de máquina de Compute Engine:

Número válido 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

Las GPUs opcionales conllevan costes adicionales.

Programar varias réplicas en una sola VM

Para optimizar el coste de tu implementación, puedes implementar varias réplicas del mismo modelo en una sola VM equipada con varios aceleradores de hardware de GPU, como la VM a3-highgpu-8g, que tiene ocho GPUs NVIDIA H100. Cada réplica del modelo se puede asignar a una o varias GPUs.

Para cargas de trabajo más pequeñas, también puedes particionar una sola GPU en varias instancias más pequeñas mediante GPUs de varias instancias (MIG) de NVIDIA. De esta forma, puedes asignar recursos a nivel de sub-GPU, lo que maximiza la utilización de cada acelerador. Para obtener más información sobre las GPUs con varias instancias, consulta la guía del usuario de GPUs con varias instancias de NVIDIA.

Ambas funciones están diseñadas para ofrecer un uso más eficiente de los recursos y una mayor rentabilidad para tus cargas de trabajo de servicio.

Limitaciones

Esta función está sujeta a las siguientes limitaciones:

  • Todas las réplicas del modelo programadas conjuntamente deben ser de la misma versión del modelo.
  • No se admite el uso de grupos de recursos de implementación para compartir recursos entre implementaciones.

Tipos de máquinas admitidos

Se admiten los siguientes tipos de máquinas. Ten en cuenta que, en el caso de los tipos de máquinas que solo tienen una GPU, no es necesario programar conjuntamente.

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

Requisitos previos

Antes de usar esta función, consulta el artículo Desplegar un modelo con la CLI de gcloud o la API de Vertex AI.

Desplegar las réplicas del modelo

En los siguientes ejemplos se muestra cómo desplegar réplicas de modelos programadas conjuntamente.

gcloud

Usa el siguiente comando gcloud para desplegar réplicas de modelos programadas conjuntamente en una 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

Haz los cambios siguientes:

  • ENDPOINT_ID: ID del endpoint.
  • LOCATION_ID: la región en la que usas Vertex AI.
  • MODEL_ID: ID del modelo que se va a implementar.
  • DEPLOYED_MODEL_NAME: nombre del DeployedModel. También puedes usar el nombre visible de la Model para la DeployedModel.
  • MIN_REPLICA_COUNT: número mínimo de nodos de esta implementación. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta el número máximo de nodos y nunca por debajo de este número.
  • MAX_REPLICA_COUNT: número máximo de nodos de este despliegue. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta este número de nodos y nunca por debajo del número mínimo de nodos. . Se necesita una máquina virtual por cada dos réplicas que se vayan a implementar.
  • MACHINE_TYPE: el tipo de VM que se va a usar en esta implementación. Debe pertenecer a la familia optimizada para aceleradores.
  • ACC_TYPE: el tipo de acelerador de GPU. Debe corresponderse con el MACHINE_TYPE. En el caso de a3-highgpu-8g, usa nvidia-h100-80gb.
  • ACC_COUNT: número de GPUs que puede usar cada réplica. Debe ser al menos 1 y no superar el número total de GPUs de la máquina.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_NUMBER: número de proyecto.
  • LOCATION_ID: la región en la que usas Vertex AI.
  • MODEL_ID: ID del modelo que se va a implementar.
  • DEPLOYED_MODEL_NAME: nombre del DeployedModel. También puedes usar el nombre visible de la Model para la DeployedModel.
  • MACHINE_TYPE: opcional. Los recursos de la máquina que se usan en cada nodo de esta implementación. Su ajuste predeterminado es n1-standard-2. Más información sobre los tipos de máquinas
  • ACC_TYPE: el tipo de acelerador de GPU. Debe corresponderse con `GPU_PARTITION_SIZE`.
  • GPU_PARTITION_SIZE: tamaño de la partición de la GPU. Por ejemplo, "1g.10gb".
  • ACC_COUNT: número de GPUs que puede usar cada réplica. Debe ser al menos 1 y no superar el número total de GPUs de la máquina.
  • MIN_REPLICA_COUNT: número mínimo de nodos de esta implementación. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta el número máximo de nodos y nunca por debajo de este número.
  • MAX_REPLICA_COUNT: número máximo de nodos de este despliegue. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta este número de nodos y nunca por debajo del número mínimo de nodos.

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, despliega una de estas opciones:

Deberías recibir un código de estado que indique que la operación se ha realizado correctamente (2xx) y una respuesta vacía.

Python

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.

Usa el siguiente comando de Python para desplegar réplicas de modelos programadas conjuntamente en una 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
)

Haz los cambios siguientes:

  • MODEL: el objeto de modelo devuelto por la siguiente llamada a la API:

    model = aiplatform.Model(model_name=model_name)
    
  • MACHINE_TYPE: el tipo de VM que se va a usar en esta implementación. Debe pertenecer a la familia optimizada para aceleradores. En la vista previa, solo se admite a3-highgpu-8g.

  • MIN_REPLICA_COUNT: número mínimo de nodos de esta implementación. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta el número máximo de nodos y nunca por debajo de este número.

  • MAX_REPLICA_COUNT: número máximo de nodos de este despliegue. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta este número de nodos y nunca por debajo del número mínimo de nodos.

  • ACC_TYPE: el tipo de acelerador de GPU. Debe corresponderse con el GPU_PARTITION_SIZE.

  • GPU_PARTITION_SIZE: tamaño de la partición de la GPU. Por ejemplo, "1g.10gb". Para ver una lista completa de los tamaños de partición admitidos para cada tipo de GPU, consulta Particiones de GPU multiinstancia.

  • ACC_COUNT: número de GPUs que puede usar cada réplica. Debe ser al menos 1 y no superar el número total de GPUs de la máquina. En el caso de a3-highgpu-8g, especifica un valor entre 1 y 8.

Monitorizar el uso de las VMs

Sigue estas instrucciones para monitorizar el número real de máquinas de tus réplicas implementadas en el explorador de métricas.

  1. En la Google Cloud consola, ve a la página Explorador de métricas.

    Ir a Explorador de métricas

  2. Selecciona el proyecto cuyas métricas quieras ver.

  3. En el menú desplegable Métrica, haga clic en Seleccionar una métrica.

  4. En la barra de búsqueda Filtrar por nombre de recurso o métrica, introduce Vertex AI Endpoint.

  5. Seleccione la categoría de métrica Endpoint de Vertex AI > Predicción. En Métricas activas, seleccione Número de máquinas.

  6. Haz clic en Aplicar.

Facturación

La facturación se basa en el número de máquinas virtuales que se usan, no en el número de GPUs. Puedes monitorizar el uso de tus VMs con el explorador de métricas.

Alta disponibilidad

Como se van a programar más de una réplica en la misma VM, la inferencia de Vertex AI no puede distribuir tu despliegue en varias VMs y, por lo tanto, en varias zonas, hasta que el número de réplicas supere el nodo de una sola VM. Para conseguir una alta disponibilidad, Google recomienda implementar en al menos dos nodos (máquinas virtuales).

Siguientes pasos