Configurer des ressources de calcul pour l'inférence

Vertex AI alloue des nœuds pour gérer les inférences en ligne et par lot. Lorsque vous déployez un modèle personnalisé ou un modèle AutoML sur une ressource Endpoint pour diffuser des inférences en ligne ou lorsque vous demandez des inférences par lot, vous pouvez personnaliser le type de machine virtuelle utilisé par le service d'inférence pour ces nœuds. Vous pouvez éventuellement configurer les nœuds d'inférence pour utiliser des GPU.

Les types de machines présentent plusieurs différences :

  • Le nombre de processeurs virtuels par nœud.
  • La quantité de mémoire par nœud.
  • Tarifs

Sélectionner un type de machine possédant davantage de ressources de calcul vous permet de diffuser des inférences avec une latence plus faible ou de gérer simultanément davantage de requêtes d'inférence.

Gérer le coût et la disponibilité

Pour vous aider à gérer les coûts ou à assurer la disponibilité des ressources de VM, Vertex AI propose les éléments suivants :

  • Pour vous assurer de ne payer que les ressources de calcul dont vous avez besoin, vous pouvez utiliser l'autoscaling de Vertex AI Inference. Pour en savoir plus, consultez Mettre à l'échelle les nœuds d'inférence pour Vertex AI Inference.

  • Pour vous assurer que des ressources de VM sont disponibles lorsque vos jobs d'inférence en ont besoin, vous pouvez utiliser des réservations Compute Engine. Les réservations offrent un niveau élevé d'assurance pour l'obtention de la capacité des ressources Compute Engine. Pour en savoir plus, consultez Utiliser des réservations avec l'inférence.

  • Pour réduire le coût d'exécution de vos jobs d'inférence, vous pouvez utiliser des VM Spot. Les VM Spot sont des instances de machine virtuelle (VM) qui dépassent la capacité de Compute Engine. Des remises importantes sont accordées sur les VM Spot. Toutefois, Compute Engine peut à tout moment arrêter ou supprimer (de manière préemptive) des VM Spot, afin de récupérer de la capacité. Pour en savoir plus, consultez Utiliser des VM Spot avec l'inférence.

Où spécifier les ressources de calcul

Inférence en ligne

Si vous souhaitez utiliser un modèle entraîné personnalisé ou un modèle tabulaire AutoML pour réaliser des inférences en ligne, vous devez spécifier un type de machine lorsque vous déployez la ressource Model en tant que DeployedModel sur un Endpoint. Pour les autres types de modèles AutoML, Vertex AI configure automatiquement les types de machines.

Spécifiez le type de machine (et éventuellement la configuration de GPU) dans le champ dedicatedResources.machineSpec de votre DeployedModel.

Découvrez comment déployer chaque type de modèle :

Inférence par lot

Si vous souhaitez obtenir des inférences par lot à partir d'un modèle personnalisé ou d'un modèle tabulaire AutoML, vous devez spécifier un type de machine lorsque vous créez une ressource BatchPredictionJob. Spécifiez le type de machine (et éventuellement la configuration de GPU) dans le champ dedicatedResources.machineSpec de votre BatchPredictionJob.

Types de machine

Le tableau suivant compare les types de machines disponibles pour diffuser les inférences à partir de modèles entraînés et de modèles tabulaires AutoML :

Série E2

Nom Processeurs virtuels Mémoire (Go)
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

Nom Processeurs virtuels Mémoire (Go)
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

Nom Processeurs virtuels Mémoire (Go)
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

Nom Processeurs virtuels Mémoire (Go)
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

Nom Processeurs virtuels Mémoire (Go)
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

Nom Processeurs virtuels Mémoire (Go)
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

Nom Processeurs virtuels Mémoire (Go)
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

Nom Processeurs virtuels Mémoire (Go) GPU (NVIDIA A100)
a2-highgpu-1g 12 85 1 (A100 40 Go)
a2-highgpu-2g 24 170 2 (A10 40 Go)
a2-highgpu-4g 48 340 4 (A100 40 Go)
a2-highgpu-8g 96 680 8 (A100 40 Go)
a2-megagpu-16g 96 1360 16 (A100 40 Go)
a2-ultragpu-1g 12 170 1 (A100 80 Go)
a2-ultragpu-2g 24 340 2 (A100 80 Go)
a2-ultragpu-4g 48 680 4 (A100 80 Go)
a2-ultragpu-8g 96 1360 8 (A100 80 Go)

Série A3

Nom Processeurs virtuels Mémoire (Go) GPU (NVIDIA H100 ou H200)
a3-highgpu-1g 26 234 1 (H100 80 Go)
a3-highgpu-2g 52 468 2 (H100 80 Go)
a3-highgpu-4g 104 936 4 (H100 80 Go)
a3-highgpu-8g 208 1872 8 (H100 80 G0)
a3-edgegpu-8g 208 1872 8 (H100 80 G0)
a3-ultragpu-8g 224 2952 8 (H200 141 Go)

Série A4X

Nom Processeurs virtuels Mémoire (Go) GPU (NVIDIA GB200)
a4x-highgpu-4g 140 884 4

Série G2

Nom Processeurs virtuels Mémoire (Go) GPU (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

Apprenez-en plus sur la tarification des différents types de machines. Pour en savoir plus sur les spécifications détaillées de ces types de machines, consultez la documentation de Compute Engine sur les types de machines.

Rechercher le type de machine idéal

Inférence en ligne

Pour rechercher le type de machine adapté à votre cas d'utilisation, nous vous recommandons de charger votre modèle sur plusieurs types de machines et de mesurer des caractéristiques telles que la latence, le coût, la simultanéité et le débit.

Pour ce faire, vous pouvez exécuter ce notebook sur plusieurs types de machines et comparer les résultats pour trouver celui qui vous convient le mieux.

Vertex AI réserve environ un processeur virtuel sur chaque instance dupliquée pour exécuter les processus système. Cela signifie que l'exécution du notebook sur un seul type de machine à cœur unique est comparable à l'utilisation d'un type de machine à deux cœurs pour la diffusion des inférences.

Lorsque vous étudiez les coûts d'inférence, n'oubliez pas que bien que les machines plus volumineuses coûtent plus cher, elles peuvent réduire le coût global, car moins d'instances dupliquées sont nécessaires pour diffuser la même charge de travail. C'est particulièrement vrai pour les GPU, qui coûtent généralement plus cher par heure, mais peuvent à la fois offrir une latence inférieure et un coût moins élevé.

Inférence par lot

Pour en savoir plus, consultez la section Choisir le type de machine et le nombre d'instances dupliquées.

Accélérateurs de GPU facultatifs

Certaines configurations, telles que la série A2 et la série G2, disposent d'un nombre fixe de GPU intégrés.

La série A4X (a4x-highgpu-4g) nécessite un nombre minimal de réplicas de 18. Cette machine est achetée par rack et comporte au moins 18 VM.

D'autres configurations, telles que la série N1, vous permettent d'ajouter des GPU pour accélérer chaque nœud d'inférence.

Pour ajouter des accélérateurs de GPU facultatifs, vous devez tenir compte de plusieurs exigences :

  • Vous ne pouvez utiliser des GPU que lorsque votre ressource Model est basée sur un modèle SavedModel TensorFlow ou lorsque vous utilisez un conteneur personnalisé conçu pour tirer parti des GPU. Vous ne pouvez pas utiliser de GPU pour les modèles scikit-learn ou XGBoost.
  • La disponibilité de chaque type de GPU varie en fonction de la région que vous utilisez pour votre modèle. Découvrez les types de GPU disponibles selon les régions.
  • Vous ne pouvez utiliser qu'un seul type de GPU pour votre ressource DeployedModel ou votre BatchPredictionJob, et il existe certaines restrictions sur le nombre de GPU que vous pouvez ajouter suivant le type de machine que vous utilisez. Le tableau suivant décrit ces limitations.

Le tableau suivant illustre les GPU facultatifs qui sont disponibles pour l'inférence en ligne et, pour chaque type de machine Compute Engine, le nombre de GPU de chaque type que vous pouvez utiliser :

Nombre de GPU autorisés pour chaque type de machine
Type de machine 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

Les GPU facultatifs entraînent des coûts supplémentaires.

Coschedule multiple replicas on a single VM

Pour optimiser le coût de votre déploiement, vous pouvez déployer plusieurs répliques du même modèle sur une seule VM équipée de plusieurs accélérateurs matériels GPU, comme la VM a3-highgpu-8g, qui dispose de huit GPU NVIDIA H100. Chaque réplique de modèle peut être attribuée à un ou plusieurs GPU.

Pour les charges de travail plus petites, vous pouvez également partitionner un seul GPU en plusieurs instances plus petites à l'aide des GPU multi-instances (MIG) NVIDIA. Cela vous permet d'attribuer des ressources au niveau du sous-GPU, ce qui maximise l'utilisation de chaque accélérateur. Pour en savoir plus sur les GPU multi-instances, consultez le guide de l'utilisateur sur les GPU multi-instances NVIDIA.

Ces deux fonctionnalités sont conçues pour améliorer l'utilisation des ressources et la rentabilité de vos charges de travail de diffusion.

Limites

Cette fonctionnalité est soumise aux limites suivantes :

  • Toutes les répliques de modèle coscheduled doivent être de la même version de modèle.
  • L'utilisation de pools de ressources de déploiement pour partager des ressources entre les déploiements n'est pas prise en charge.

Types de machines compatibles

Les types de machines suivants sont acceptés. Notez que pour les types de machines qui ne disposent que d'un seul GPU, aucune planification conjointe n'est nécessaire.

Type de machine CoSchedule CoSchedule + MIG
a2-highgpu-1g N/A Oui
a2-highgpu-2g Oui Oui
a2-highgpu-4g Oui Oui
a2-highgpu-8g Oui Oui
a2-highgpu-16g Oui Oui
a2-ultragpu-1g N/A Oui
a2-ultragpu-2g Oui Oui
a2-ultragpu-4g Oui Oui
a2-ultragpu-8g Oui Oui
a3-edgegpu-8g Oui Oui
a3-highgpu-1g N/A Oui
a3-highgpu-2g Oui Oui
a3-highgpu-4g Oui Oui
a3-highgpu-8g Oui Oui
a3-megagpu-8g Oui Oui
a3-ultragpu-8g Oui Oui
a4-highgpu-8g Oui Oui
a4x-highgpu-8g Oui Non

Prérequis

Avant d'utiliser cette fonctionnalité, consultez Déployer un modèle à l'aide de la gcloud CLI ou de l'API Vertex AI.

Déployer les répliques du modèle

Les exemples suivants montrent comment déployer des répliques de modèles coscheduled.

gcloud

Utilisez la commande gcloud suivante pour déployer des répliques de modèle coscheduled sur une 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

Remplacez les éléments suivants :

  • ENDPOINT_ID : ID du point de terminaison.
  • LOCATION_ID : région dans laquelle vous utilisez Vertex AI.
  • MODEL_ID : ID du modèle à déployer.
  • DEPLOYED_MODEL_NAME : nom de l'élément DeployedModel. Vous pouvez également utiliser le nom à afficher du Model pour le DeployedModel.
  • MIN_REPLICA_COUNT : nombre minimal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge d'inférence, dans la limite du nombre maximal de nœuds et sans jamais être inférieur à ce nombre minimal de nœuds.
  • MAX_REPLICA_COUNT : nombre maximal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge d'inférence, dans la limite de ce nombre de nœuds et jamais moins que le nombre minimal de nœuds. . Une VM est requise pour chaque groupe de deux instances répliquées à déployer.
  • MACHINE_TYPE : type de VM à utiliser pour ce déploiement. Doit appartenir à la famille optimisée pour les accélérateurs.
  • ACC_TYPE : type d'accélérateur GPU. Doit correspondre à MACHINE_TYPE. Pour a3-highgpu-8g, utilisez nvidia-h100-80gb.
  • ACC_COUNT : nombre de GPU que chaque réplica peut utiliser. Doit être au moins égal à 1 et ne pas dépasser le nombre total de GPU de la machine.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_NUMBER : numéro du projet.
  • LOCATION_ID : région dans laquelle vous utilisez Vertex AI.
  • MODEL_ID : ID du modèle à déployer.
  • DEPLOYED_MODEL_NAME : nom de l'élément DeployedModel. Vous pouvez également utiliser le nom à afficher du Model pour le DeployedModel.
  • MACHINE_TYPE (facultatif) : Ressources machine utilisées pour chaque nœud de ce déploiement. Le paramètre par défaut est n1-standard-2. En savoir plus sur les types de machines.
  • ACC_TYPE : type d'accélérateur GPU. Doit correspondre à `GPU_PARTITION_SIZE`.
  • GPU_PARTITION_SIZE : taille de la partition GPU. Par exemple, "1g.10gb".
  • ACC_COUNT : nombre de GPU que chaque réplica peut utiliser. Doit être au moins égal à 1 et ne pas dépasser le nombre total de GPU de la machine.
  • MIN_REPLICA_COUNT : nombre minimal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge d'inférence, dans la limite du nombre maximal de nœuds et sans jamais être inférieur à ce nombre minimal de nœuds.
  • MAX_REPLICA_COUNT : nombre maximal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge d'inférence, dans la limite de ce nombre de nœuds et jamais moins que le nombre minimal de nœuds.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "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
        }
      ]
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

Utilisez la commande Python suivante pour déployer des répliques de modèle coscheduled sur une 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
)

Remplacez les éléments suivants :

  • MODEL : objet de modèle renvoyé par l'appel d'API suivant :

    model = aiplatform.Model(model_name=model_name)
    
  • MACHINE_TYPE : type de VM à utiliser pour ce déploiement. Doit appartenir à la famille optimisée pour les accélérateurs. Dans l'aperçu, seul a3-highgpu-8g est pris en charge.

  • MIN_REPLICA_COUNT : nombre minimal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge d'inférence, dans la limite du nombre maximal de nœuds et sans jamais être inférieur à ce nombre minimal de nœuds.

  • MAX_REPLICA_COUNT : nombre maximal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge d'inférence, dans la limite de ce nombre de nœuds et jamais moins que le nombre minimal de nœuds.

  • ACC_TYPE : type d'accélérateur GPU. Doit correspondre à GPU_PARTITION_SIZE.

  • GPU_PARTITION_SIZE : taille de la partition GPU. Exemple : "1g.10gb". Pour obtenir la liste complète des tailles de partitions compatibles pour chaque type de GPU, consultez Partitions de GPU multi-instances.

  • ACC_COUNT : nombre de GPU que chaque réplica peut utiliser. Doit être au moins égal à 1 et ne pas dépasser le nombre total de GPU de la machine. Pour a3-highgpu-8g, spécifiez une valeur comprise entre 1 et 8.

Surveiller l'utilisation des VM

Suivez les instructions ci-dessous pour surveiller le nombre réel de machines pour vos répliques déployées dans l'explorateur de métriques.

  1. Dans la console Google Cloud , accédez à la page Explorateur de métriques.

    Accéder à "Explorateur de métriques"

  2. Sélectionnez le projet pour lequel vous souhaitez afficher les métriques.

  3. Dans le menu déroulant Métrique, cliquez sur Sélectionner une métrique.

  4. Dans la barre de recherche Filtrer par nom de ressource ou de métrique, saisissez Vertex AI Endpoint.

  5. Sélectionnez la catégorie de métrique Point de terminaison Vertex AI > Prédiction. Sous Métriques actives, sélectionnez Nombre de machines.

  6. Cliquez sur Appliquer.

Facturation

La facturation est basée sur le nombre de VM utilisées, et non sur le nombre de GPU. Vous pouvez surveiller l'utilisation de vos VM à l'aide de l'explorateur de métriques.

Haute disponibilité

Étant donné que plusieurs répliques sont coscheduled sur la même VM, Vertex AI Inference ne peut pas répartir votre déploiement sur plusieurs VM et donc sur plusieurs zones tant que le nombre de répliques ne dépasse pas le nœud de VM unique. Pour une haute disponibilité, Google recommande de déployer sur au moins deux nœuds (VM).

Étapes suivantes