Utiliser des VM à démarrage flexible avec l'inférence

Ce guide décrit les avantages et les limites de l'utilisation de VM à démarrage flexible avec l'inférence Vertex AI. Ce guide explique également comment déployer un modèle qui utilise des VM avec démarrage flexible.

Présentation

Vous pouvez réduire le coût d'exécution de vos jobs d'inférence à l'aide de VM à démarrage flexible, qui sont optimisées par Dynamic Workload Scheduler. Les VM à démarrage flexible offrent des remises importantes et sont bien adaptées aux charges de travail de courte durée.

Vous pouvez spécifier la durée pendant laquelle vous avez besoin d'une VM à démarrage flexible, pour une durée maximale de sept jours. Une fois le délai demandé expiré, votre modèle déployé est automatiquement non déployé. Vous pouvez également annuler manuellement le déploiement du modèle avant l'expiration du délai.

Désinstallation automatique

Si vous demandez une VM à démarrage flexible pour une durée spécifique, votre modèle est automatiquement non déployé après cette période. Par exemple, si vous demandez une VM à démarrage flexible pour cinq heures, le modèle est automatiquement supprimé cinq heures après l'envoi. Vous n'êtes facturé que pour la durée d'exécution de votre charge de travail.

Limites et exigences

Tenez compte des limites et des exigences suivantes lorsque vous utilisez des VM à démarrage flexible :

  • Durée maximale : les VM à démarrage flexible ont une durée d'utilisation maximale de sept jours. Toute demande de déploiement pour une durée plus longue sera refusée.
  • Compatibilité avec les TPU : l'utilisation de VM à démarrage flexible avec des pods TPU n'est pas possible.
  • Quota : assurez-vous de disposer d'un quota Vertex AI préemptible suffisant avant de lancer votre job. Pour en savoir plus, consultez Quotas de débit.
  • Provisionnement en file d'attente : l'utilisation de VM Démarrage flexible avec le provisionnement en file d'attente n'est pas prise en charge.
  • Recyclage des nœuds : le recyclage des nœuds n'est pas accepté.

Facturation

Si votre charge de travail s'exécute pendant moins de sept jours, l'utilisation de VM à démarrage flexible peut réduire vos coûts.

Lorsque vous utilisez des VM à démarrage flexible, vous êtes facturé en fonction de la durée de votre job et du type de machine que vous sélectionnez. Vous n'êtes facturé que pour la durée d'exécution active de votre charge de travail. Vous ne payez pas pour le temps pendant lequel le job est en attente ni pour le temps écoulé après la durée demandée.

La facturation est répartie sur deux SKU :

Obtenir des inférences à l'aide de VM de démarrage flexible

Pour utiliser des VM Démarrage flexible lorsque vous déployez un modèle afin d'obtenir des inférences, vous pouvez utiliser l'API REST.

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

  • LOCATION_ID : région dans laquelle vous utilisez Vertex AI.
  • PROJECT_ID : ID de votre projet.
  • ENDPOINT_ID : ID du point de terminaison.
  • 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.
  • ACCELERATOR_TYPE : facultatif. Type d'accélérateur à associer à la machine. En savoir plus
  • ACCELERATOR_COUNT : facultatif. Nombre d'accélérateurs pour chaque instance dupliquée à utiliser.
  • MAX_RUNTIME_DURATION : durée maximale du déploiement à démarrage flexible. Le modèle déployé est automatiquement annulé après cette durée. Spécifiez la durée en secondes, en terminant par s. Par exemple, 3600s pour une heure. La valeur maximale est de 604800s (7 jours).
  • PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "deployedModel": {
    "model": "projects/PROJECT/locations/LOCATION/models/MODEL_ID",
    "displayName": "DEPLOYED_MODEL_NAME",
    "enableContainerLogging": true,
    "dedicatedResources": {
      "machineSpec": {
        "machineType": "MACHINE_TYPE",
        "acceleratorType": "ACCELERATOR_TYPE",
        "acceleratorCount": ACCELERATOR_COUNT
      },
      "flexStart": {
        "maxRuntimeDuration": "MAX_RUNTIME_DURATION"
      },
      "minReplicaCount": 2,
      "maxReplicaCount": 2
    },
  },
}

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

Vous devriez recevoir une réponse JSON de ce type :

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

Étapes suivantes