Ce document explique comment utiliser les réservations Compute Engine pour vous assurer que vos tâches d'inférence en ligne disposent des ressources de machines virtuelles (VM) nécessaires à leur exécution.
Les réservations sont une fonctionnalité de Compute Engine. Elles vous permettent de vous assurer que vous disposez des ressources nécessaires pour créer des VM avec le même matériel (mémoire et processeurs virtuels) et les mêmes ressources facultatives (processeurs, GPU, TPU et disques SSD locaux) chaque fois que vous en avez besoin.
Lorsque vous créez une réservation, Compute Engine vérifie que la capacité demandée est disponible dans la zone spécifiée. Si c'est le cas, Compute Engine réserve les ressources, crée la réservation et les événements suivants se produisent :
- Vous pouvez immédiatement utiliser les ressources réservées, qui restent disponibles jusqu'à ce que vous supprimiez la réservation.
- Les ressources réservées vous sont facturées au même tarif à la demande que les VM en cours d'exécution, y compris les remises applicables, jusqu'à ce que la réservation soit supprimée. Une VM qui utilise une réservation n'entraîne pas de frais distincts. Vous n'êtes facturé que pour les ressources qui ne font pas partie de la réservation, comme les disques ou les adresses IP. Pour en savoir plus, consultez les tarifs des réservations.
Limites et exigences
Lorsque vous utilisez des réservations Compute Engine avec Agent Platform, tenez compte des limites et des exigences suivantes :
- Agent Platform ne peut utiliser que des réservations pour les processeurs, les VM avec GPU, ou les TPU (bêta).
- Agent Platform ne peut pas utiliser de réservations de VM auxquelles des disques SSD locaux sont associés manuellement.
- L'utilisation de réservations Compute Engine avec Agent Platform n'est possible que pour l'entraînement sans serveur, l'inférence et Gemini Enterprise Agent Platform Workbench (bêta).
- Pour utiliser la réservation, les propriétés de la VM de la réservation doivent correspondre exactement à celles de votre charge de travail Agent Platform
pour consommer la réservation. Par exemple, si une réservation spécifie un
type de machine
a2-ultragpu-8g, la charge de travail Agent Platform ne peut utiliser la réservation que si elle utilise également un type de machinea2-ultragpu-8g. Consultez les conditions requises. - Pour utiliser une réservation partagée de VM avec GPU ou de TPU, vous devez l'utiliser à l'aide de son projet propriétaire ou d'un projet client avec lequel la réservation est partagée. Consultez la section Fonctionnement des réservations partagées.
- Pour permettre la mise à jour régulière de vos déploiements Agent Platform, nous vous recommandons d'augmenter
le nombre de VM au-delà du nombre total de répliques, comme suit, en fonction du
type de réservation utilisé par votre
DeployedModel:SPECIFIC_RESERVATION: vous devez spécifier au moins une VM supplémentaire. Nous vous recommandons d'en ajouter 10% (mais au moins une). Les modèles déployés qui utilisentSPECIFIC_RESERVATIONne peuvent utiliser que des VM de la réservation. Agent Platform ne peut pas effectuer mises à jour s'il n'y a pas de VM supplémentaire.ANY:- Il n'est pas nécessaire d'avoir des VM supplémentaires, car les modèles déployés qui utilisent la réservation
ANYutilisent des VM à la demande si la capacité de la réservation n'est pas suffisante. Toutefois, sans VM supplémentaires, votre réservation peut ne pas être entièrement utilisée après une mise à niveau. Supposons, par exemple, que vous disposez d'une réservation avec 40 VM et que vous déployez un modèle avec 40 répliques à l'aide de cette réservation. Lors du premier déploiement, les 40 VM de la réservation sont utilisées par leDeployedModel. Après une mise à niveau, seules 36 VM proviennent de la réservation, et 4 VM sont à la demande. - Si vous souhaitez que l'utilisation reste dans la réservation, nous vous recommandons d'avoir au moins une
VM supplémentaire pour chaque
DeployedModelouDeploymentResourcePoolqui utilise la réservation. Si le nombre total de VM du même type dans vosANYréservations est inférieur à 50, nous vous recommandons d'en ajouter 10% (mais au moins une). S'il est supérieur à 50, nous vous recommandons d'en ajouter 25 %. Par exemple :- Si vous prévoyez de déployer des modèles à l'aide de 40 VM A3, vous pouvez disposer d'une réservation A3 avec 44 VM ou de deux réservations A3 : une réservation X avec 30 VM et une réservation Y avec 14 VM (44 au total). Il en va de même pour d'autres nombres de réservations, à condition qu'elles soient toutes partagées avec Agent Platform et que le nombre total de VM dans ces réservations soit d'au moins 44.
- Si vous prévoyez de déployer des modèles à l'aide de 100 VM A3, le nombre total de VM dans toutes les réservations A3 partagées avec Agent Platform doit être d'au moins 125.
- Si vous prévoyez de déployer deux modèles à l'aide de 10 VM, le nombre total de VM dans toutes les réservations A3
partagées avec Agent Platform doit être d'au moins
12. Le nombre de VM est inférieur à 50, mais le nombre de VM supplémentaires est de 2
(une par
DeployedModel).
- Pour utiliser une réservation
SPECIFIC_RESERVATION, accordez le rôle IAM Lecteur de Compute au compte de service Agent Platform dans le projet propriétaire des réservations (service-${PROJECT_NUMBER}@gcp-sa-aiplatform.iam.gserviceaccount.com, où PROJECT_NUMBER est le numéro de projet du projet qui utilise la réservation).
Facturation
Lorsque vous utilisez des réservations Compute Engine, vous êtes facturé pour les éléments suivants :
- Tarifs Compute Engine pour les ressources Compute Engine, y compris les remises sur engagement d'utilisation applicables. Consultez la page Tarifs de Compute Engine.
- Des frais de gestion de l'inférence en ligne Agent Platform s'ajoutent à votre infrastructure usage. Consultez les tarifs des prédictions.
Avant de commencer
- Consultez les exigences et restrictions applicables aux réservations.
- Consultez les exigences relatives aux quotas et les restrictions applicables aux réservations partagées.
Autoriser l'utilisation d'une réservation
Avant d'utiliser une réservation de processeurs, de VM avec GPU ou de TPU, vous devez définir sa règle de partage pour autoriser Agent Platform à utiliser la réservation. Pour ce faire, utilisez l'une des méthodes suivantes :
- Autoriser la consommation lors de la création d'une réservation
- Autoriser la consommation dans une réservation existante
Autoriser la consommation lors de la création d'une réservation
Lorsque vous créez une réservation à projet unique ou partagée de VM avec GPU, vous pouvez autoriser Agent Platform à utiliser la réservation comme suit :
- Si vous utilisez la Google Cloud console, sélectionnez Partager la réservation dans la section Services Google Cloud.
- Si vous utilisez Google Cloud CLI, incluez le
--reservation-sharing-policyflag défini surALLOW_ALL. - Si vous utilisez l'API REST, incluez le champ
serviceShareTypedéfini surALLOW_ALLdans le corps de la requête.
Autoriser la consommation d'une réservation existante
Vous ne pouvez modifier une réservation créée automatiquement de VM avec GPU ou de TPU pour une réservation future qu'après l'heure de début de la réservation.
Pour autoriser Agent Platform à utiliser une réservation existante, utilisez l'une des méthodes suivantes :
Autoriser la consommation de plusieurs réservations spécifiques
Vous pouvez autoriser la consommation de plusieurs réservations spécifiques en spécifiant deux réservations ou plus, par ordre de priorité, dans la liste des noms de réservation du champ values
de la spécification d'affinité de réservation. Vous devez les lister par ordre de priorité.
Chaque réservation doit être partagée avec Vertex, et la zone de la réservation doit se trouver dans la région du point de terminaison. Sinon, vous pouvez combiner des réservations dans plusieurs projets sources et plusieurs zones.
Vérifier qu'une réservation est utilisée
Pour vérifier que la réservation est utilisée, consultez la section Vérifier la consommation des réservations dans la documentation Compute Engine.Obtenir des inférences en ligne à l'aide d'une réservation
Pour créer un déploiement de modèle qui utilise une réservation Compute Engine de VM avec GPU, utilisez l'API REST ou le SDK Agent Platform pour Python.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région dans laquelle vous utilisez Agent Platform.
- PROJECT_ID : projet dans lequel la réservation a été créée. Pour utiliser une réservation partagée à partir d'un autre projet, vous devez partager la réservation avec ce projet. Pour en savoir plus, consultez la section Modifier les projets clients dans une réservation partagée.
- 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 duModelpour leDeployedModel. - MACHINE_TYPE : type de machine à utiliser pour chaque nœud de ce déploiement. Le paramètre par défaut
est
n1-standard-2. Pour en savoir plus sur les types de machines compatibles, consultez la section Configurer des ressources de calcul pour la prédiction. - ACCELERATOR_TYPE : type d'accélérateur à associer à la machine. Pour en savoir plus sur le type de GPU compatible avec chaque type de machine, consultez la section GPU pour les charges de travail de calcul.
- ACCELERATOR_COUNT : nombre d'accélérateurs à associer à la machine.
- RESERVATION_AFFINITY_TYPE : La valeur doit être
ANY,SPECIFIC_RESERVATIONouNONE.ANYsignifie que les VM de votrecustomJobpeuvent automatiquement utiliser toute réservation avec des propriétés correspondantes.SPECIFIC_RESERVATIONsignifie que les VM de votrecustomJobpeuvent utiliser que les réservations que les VM ciblent spécifiquement par leur nom.NONEsignifie que les VM de votrecustomJobne peuvent utiliser aucune réservation. SpécifierNONEa le même effet que d'omettre une spécification d'affinité de réservation.
- ZONE : zone dans laquelle la réservation a été créée.
- RESERVATION_NAME_N : noms de vos réservations, par ordre de priorité. Chacun doit être le nom de ressource complet de la réservation ou du bloc de réservation.
- 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. Cette valeur doit être supérieure ou égale à 1.
- 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 maximal de nœuds, et sans jamais être inférieur au nombre minimal de nœuds.
- TRAFFIC_SPLIT_THIS_MODEL : pourcentage du trafic de prédiction dirigé vers ce point de terminaison à acheminer vers le modèle déployé avec cette opération. La valeur par défaut est 100. La somme des pourcentages de trafic doit être égale à 100. En savoir plus sur la répartition du trafic
- DEPLOYED_MODEL_ID_N : facultatif. Si d'autres modèles sont déployés sur ce point de terminaison, vous devez modifier les pourcentages de répartition du trafic pour que le total des pourcentages soit égal à 100.
- TRAFFIC_SPLIT_MODEL_N : valeur en pourcentage de la répartition du trafic pour la clé de l'ID de modèle déployé.
- PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet.
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Corps JSON de la requête :
{
"deployedModel": {
"model": "projects/PROJECT/locations/LOCATION_ID/models/MODEL_ID",
"displayName": "DEPLOYED_MODEL_NAME",
"dedicatedResources": {
"machineSpec": {
"machineType": "MACHINE_TYPE",
"acceleratorType": "ACCELERATOR_TYPE",
"acceleratorCount": ACCELERATOR_COUNT,
"reservationAffinity": {
"reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
"key": "compute.googleapis.com/reservation-name",
"values": [
"projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME_1",
"projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME_2"
]
}
},
"minReplicaCount": MIN_REPLICA_COUNT,
"maxReplicaCount": MAX_REPLICA_COUNT
},
},
"trafficSplit": {
"0": TRAFFIC_SPLIT_THIS_MODEL,
"DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1,
"DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_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_ID/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"
}
}
}
Python
Pour savoir comment installer ou mettre à jour le SDK Agent Platform pour Python, consultez la page Installer le SDK Agent Platform pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Agent Platform pour Python.
Avant d'exécuter l'un des scripts suivants, effectuez les remplacements suivants :
- DEPLOYED_NAME : nom du modèle déployé.
- TRAFFIC_SPLIT : valeur en pourcentage de la répartition du trafic pour la clé de l'ID de modèle déployé.
- MACHINE_TYPE : machine utilisée pour chaque nœud de ce
déploiement. Le paramètre par défaut est
n1-standard-2. Apprenez-en plus sur les types de machines. - ACCELERATOR_TYPE : type d'accélérateur à associer à la machine. Pour en savoir plus sur le type de GPU compatible avec chaque type de machine, consultez la section GPU pour les charges de travail de calcul.
- ACCELERATOR_COUNT : nombre d'accélérateurs à associer à la machine.
- PROJECT_ID : projet dans lequel la réservation a été créée. Pour utiliser une réservation partagée à partir d'un autre projet, vous devez partager la réservation avec ce projet. Pour en savoir plus, consultez la section Modifier les projets clients dans une réservation partagée.
- ZONE : zone où se trouve la réservation.
- RESERVATION_NAME_N : noms de vos réservations, par ordre de priorité. Chacun doit être le nom de ressource complet de la réservation ou du bloc de réservation.
- 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. Cette valeur doit être supérieure ou égale à 1.
- 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 maximal de nœuds, et sans jamais être inférieur au nombre minimal de nœuds.
Selon le type de réservation que vous souhaitez utiliser, effectuez l'une des opérations suivantes :
- Pour utiliser une ou plusieurs réservations spécifiques :
endpoint5.deploy( model = model, deployed_model_display_name=DEPLOYED_NAME, traffic_split=TRAFFIC_SPLIT, machine_type="MACHINE_TYPE", accelerator_type="ACCELERATOR_TYPE", accelerator_count=ACCELERATOR_COUNT, reservation_affinity_type="SPECIFIC_RESERVATION", reservation_affinity_key="compute.googleapis.com/reservation-name", reservation_affinity_values=[ "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME_1", "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME_2" ], min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, sync=True )
- Pour utiliser une réservation consommée automatiquement :
endpoint5.deploy( model = model, deployed_model_display_name=DEPLOYED_NAME, traffic_split=TRAFFIC_SPLIT, machine_type="MACHINE_TYPE", accelerator_type="ACCELERATOR_TYPE", accelerator_count=ACCELERATOR_COUNT, reservation_affinity_type="ANY_RESERVATION", min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, sync=True )
Étape suivante
- Découvrir les réservations de ressources zonales Compute Engine .
- Découvrez comment utiliser des réservations avec Agent Platform l'inférence par lot.
- Découvrez comment utiliser des réservations avec l'entraînement Agent Platform formation.
- Découvrez comment afficher vos réservations.
- Découvrez comment surveiller la consommation des réservations.