Ce guide explique comment optimiser le provisionnement de Tensor Processing Unit (TPU) à l'aide de la réservation future en mode Agenda. La réservation future en mode Agenda est un conseiller et un outil de recommandation intégrés à l'agenda qui peuvent vous aider à trouver de la capacité TPU et à planifier à l'avance. Vous pouvez demander de la capacité pour une heure de début et une durée spécifiques, comprises entre 1 et 90 jours. Le système de recommandation vous proposera des dates.
Ce guide est destiné aux ingénieurs en machine learning (ML), aux administrateurs et opérateurs de plate-forme, ainsi qu'aux spécialistes des données et de l'IA qui souhaitent utiliser les fonctionnalités d'orchestration de conteneurs Kubernetes pour exécuter des charges de travail par lot. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez Rôles utilisateur et tâches courantes de GKE.
Pour en savoir plus, consultez À propos des réservations futures en mode Agenda.
Cas d'utilisation
Les réservations futures en mode Agenda sont idéales pour les charges de travail avec des requêtes planifiées, à court terme et à forte demande, comme les modèles d'entraînement ou d'inférence par lot qui nécessitent une haute disponibilité à l'heure de début demandée.
Si votre charge de travail nécessite des ressources provisionnées de façon dynamique selon vos besoins, pendant sept jours maximum, sans réservation à long terme ni gestion complexe des quotas, envisagez d'utiliser l'option de consommation à démarrage flexible. Pour en savoir plus, consultez À propos du provisionnement de GPU et de TPU avec le démarrage flexible.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande
gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
- Assurez-vous de disposer de l'un des éléments suivants :
- un cluster Standard existant exécutant la version 1.28.3-gke.1098000 ou ultérieure.
- un cluster Autopilot existant exécutant la version 1.30.3-gke.1451000 ou ultérieure.
Demander une réservation future en mode Agenda pour les TPU
Pour demander des TPU avec une réservation future en mode Agenda, procédez comme suit :
- Assurez-vous de disposer d'un quota suffisant pour toutes les ressources qui ne font pas partie d'une réservation lorsque des VM sont créées, comme les disques ou les adresses IP. Les demandes de réservations futures en mode Agenda ne nécessitent pas de quota Compute Engine.
- Suivez les étapes de la section Créer une demande en mode Agenda. Voici quelques exemples :
- Affichez la disponibilité future des TPU.
- Créez et envoyez une demande de réservation future en mode Agenda pour les TPU.
- Attendez que Google Cloud approuve votre demande.
- Créez un pool de nœuds TPU qui utilise votre réservation.
Créer un pool de nœuds
Cette section ne s'applique qu'aux clusters Standard, car le mode Autopilot crée automatiquement des nœuds en fonction des charges de travail.
Vous pouvez utiliser votre réservation lorsque vous créez des pools de nœuds de tranche TPU à hôte unique ou multi-hôtes.
Créer un pool de nœuds de tranche TPU à hôte unique
Vous pouvez créer un pool de nœuds de tranche de TPU à hôte unique à l'aide de Google Cloud CLI.
gcloud container node-pools create NODE_POOL_NAME \
--location=CONTROL_PLANE_LOCATION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--reservation-affinity=specific \ This is required
--reservation=RESERVATION
Remplacez les éléments suivants :
NODE_POOL_NAME: nom du nouveau pool de nœuds.CONTROL_PLANE_LOCATION: nom de la zone basé sur la version de TPU que vous souhaitez utiliser. Pour identifier un emplacement disponible, consultez Disponibilité des TPU dans GKE.CLUSTER_NAME: nom du cluster.NODE_ZONES: liste d'une ou de plusieurs zones, séparées par une virgule, dans lesquelles GKE crée le pool de nœuds.MACHINE_TYPE: type de machine à utiliser pour les nœuds. Pour en savoir plus sur les types de machines compatibles avec les TPU, utilisez le tableau de la section Choisir la version de TPU.RESERVATION: nom de la réservation de calendrier à consommer.
Pour obtenir la liste complète de toutes les options que vous pouvez spécifier, consultez la documentation de référence sur gcloud container clusters create.
Une fois que vous avez créé un pool de nœuds avec la réservation d'agenda, vous pouvez déployer votre charge de travail comme n'importe quel autre pool de nœuds TPU. La consommation d'une réservation future en mode Agenda fonctionne de la même manière que pour tout autre type de réservation. Pour en savoir plus, consultez Consommer des ressources zonales réservées.
Créer un pool de nœuds de tranche TPU multi-hôtes
La procédure de création d'un pool de nœuds de tranche TPU multi-hôte diffère selon que vous utilisez Ironwood (TPU7x) ou une version antérieure de TPU.Ironwood (TPU7x)
Vous pouvez créer un pool de nœuds tranche de TPU multi-hôte dans la version Ironwood (TPU7x) à l'aide de Google Cloud CLI ou de Terraform :
gcloud
Pour créer un pool de nœuds de tranche TPU multi-hôte avec Ironwood (TPU7x), vous devez d'abord créer une règle de charge de travail.
Créez une règle de charge de travail :
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=HIGH_THROUGHPUT \ --accelerator-topology=TPU_TOPOLOGY \ --project=PROJECT_ID \ --region=REGIONRemplacez les éléments suivants :
WORKLOAD_POLICY_NAME: nom de votre règle de charge de travail.TPU_TOPOLOGY: topologie TPU Ironwood (TPU7x). Exemple :2x2x2Pour afficher toutes les topologies Ironwood (TPU7x) compatibles, consultez la section Topologie.PROJECT_ID: ID de votre projet Google Cloud .REGION: région de la règle de charge de travail. Une règle de charge de travail est une ressource régionale qui peut être réutilisée dans des pools de nœuds partageant la même topologie.
Créez le pool de nœuds avec la règle de charge de travail :
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=us-central1 \ --node-locations=us-central1-c \ --machine-type=tpu7x-standard-4t \ --reservation-affinity=specific \ --reservation=FUTURE_RESERVATION_NAME \ --placement-policy=WORKLOAD_POLICYRemplacez les éléments suivants :
NODE_POOL_NAME: nom du nouveau pool de nœuds.WORKLOAD_POLICY: nom de la règle de charge de travail que vous avez créée.FUTURE_RESERVATION_NAME: nom de votre réservation future.
Cette commande crée un pool de nœuds nommé NODE_POOL_NAME avec les caractéristiques suivantes :
--machine-type=tpu7x-standard-4tspécifie le type de machine Ironwood (TPU7x).
Terraform
- Assurez-vous d'utiliser la version 4.84.0 ou ultérieure du fournisseur
google. Créez une règle de charge de travail :
resource "google_compute_resource_policy" { name = "WORKLOAD_POLICY_NAME" region = CLUSTER_LOCATION workload_policy { type = "HIGH_THROUGHPUT" accelerator_topology = "TPU_TOPOLOGY" } }Remplacez les éléments suivants :
WORKLOAD_POLICY_NAME: nom de votre règle de charge de travail.CLUSTER_LOCATION: emplacement de calcul du cluster. Nous vous recommandons de disposer d'un cluster régional pour améliorer la fiabilité du plan de contrôle Kubernetes. Vous pouvez également utiliser un cluster zonal. Pour en savoir plus, consultez Sélectionner une version et une topologie de TPU.TPU_TOPOLOGY: topologie TPU Ironwood (TPU7x). Exemple :2x2x2Pour afficher toutes les topologies Ironwood (TPU7x) compatibles, consultez Planifier les TPU.
Pour en savoir plus sur la référence
google_compute_resource_policy, consultez Fournisseur Terraform.Dans votre configuration Terraform, ajoutez le bloc suivant :
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } placement_policy { policy_name = WORKLOAD_POLICY_NAME } }Remplacez les éléments suivants :
NODE_POOL_RESOURCE_NAME: nom de la ressource de pool de nœuds dans le modèle Terraform.PROJECT_ID: ID de votre projet.CLUSTER_NAME: nom du cluster existant auquel ajouter le pool de nœuds.POOL_NAME: nom du pool de nœuds à créerNODE_ZONES: liste d'une ou de plusieurs zones, séparées par une virgule, dans lesquelles GKE crée le pool de nœuds.NUM_NODES: nombre de nœuds dans le pool de nœuds. Doit être égal à zéro ou au produit du nombre de puces TPU divisé par quatre, car dans les tranches de TPU à hôtes multiples, chaque nœud de tranche TPU comporte quatre puces. Par exemple, siTPU_TOPOLOGYest défini sur4x8, il y a 32 puces, ce qui signifie queNUM_NODESdoit être égal à 8. Pour en savoir plus sur les topologies TPU, utilisez le tableau de la section Choisir la version de TPU.TPU_TOPOLOGY: indique la topologie physique sélectionnée pour la tranche de TPU. Le format de la topologie dépend de la version de TPU que vous utilisez. Pour en savoir plus sur les topologies TPU, consultez le tableau de la section Choisir une topologie.
Vous pouvez également utiliser les variables suivantes :
RESERVATION_NAME: si vous utilisez une réservation TPU, fournissez une liste des libellés des ressources de réservation à utiliser lors de la création du pool de nœuds. Pour en savoir plus sur la spécification deRESERVATION_LABEL_VALUESdans le champreservation_affinity, consultez la page Fournisseur Terraform.autoscaling: créez un pool de nœuds avec l'autoscaling activé. Lorsque GKE met à l'échelle un pool de nœuds de tranche TPU multi-hôte, il effectue un scaling de façon atomique du pool de nœuds de zéro à la taille maximale.MAX_NODES: taille maximale du pool de nœuds. La valeur doit être égale au produit des valeurs définies dansTPU_TOPOLOGY({A}x{B}x{C}) divisé par le nombre de puces dans chaque VM. Par exemple, siTPU_TOPOLOGYest2x2x2, le produit est 8. Étant donné que chaque VM detpu7x-standard-4tcomporte quatre puces, le nombre de nœuds est de deux.
spot: pool de nœuds qui utilisera des VM Spot pour les nœuds de tranche TPU. Ce paramètre ne peut pas être modifié après la création du pool de nœuds. Pour en savoir plus, consultez VM Spot.flex_start: pool de nœuds qui utilisera l'option de consommation flex-start. Ce paramètre ne peut pas être défini surtruesispotest activé.
Autres versions de TPU
Vous pouvez créer un pool de nœuds tranche de TPU multi-hôte dans les versions v3, v4, v5p, v5e et Trillium (v6e) à l'aide de Google Cloud CLI, de Terraform ou de la console Google Cloud .
gcloud
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--tpu-topology=TPU_TOPOLOGY \
--reservation-affinity=specific \
--reservation=FUTURE_RESERVATION_NAME
Remplacez les éléments suivants :
NODE_POOL_NAME: nom du nouveau pool de nœuds.CLUSTER_NAME: nom du cluster.CONTROL_PLANE_LOCATION: nom de la zone basé sur la version de TPU que vous souhaitez utiliser. Pour identifier un emplacement disponible, consultez Disponibilité des TPU dans GKE.NODE_ZONES: liste d'une ou de plusieurs zones, séparées par une virgule, dans lesquelles GKE crée le pool de nœuds.MACHINE_TYPE: type de machine à utiliser pour les nœuds. Pour en savoir plus sur les types de machines compatibles avec les TPU, utilisez le tableau de la section Choisir la version de TPU.TPU_TOPOLOGY: topologie du TPU. Exemple :2x2x2Pour afficher toutes les topologies de TPU compatibles, consultez la section Topologie.FUTURE_RESERVATION_NAME: nom de votre réservation future.
Terraform
- Assurez-vous d'utiliser la version 4.84.0 ou ultérieure du fournisseur
google. Ajoutez le bloc suivant à votre configuration Terraform :
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } placement_policy { type = "COMPACT" tpu_topology = TPU_TOPOLOGY } }Remplacez les éléments suivants :
NODE_POOL_RESOURCE_NAME: nom de la ressource de pool de nœuds dans le modèle Terraform.PROJECT_ID: ID de votre projet.CLUSTER_NAME: nom du cluster existant auquel ajouter le pool de nœuds.POOL_NAME: nom du pool de nœuds à créerCLUSTER_LOCATION: emplacement de calcul du cluster. Nous vous recommandons de disposer d'un cluster régional pour améliorer la fiabilité du plan de contrôle Kubernetes. Vous pouvez également utiliser un cluster zonal. Pour en savoir plus, consultez la section Sélectionner une version et une topologie de TPU.NODE_ZONES: liste d'une ou de plusieurs zones, séparées par une virgule, dans lesquelles GKE crée le pool de nœuds.NUM_NODES: nombre de nœuds dans le pool de nœuds. Doit être égal à zéro ou au produit du nombre de puces TPU divisé par quatre, car dans les tranches de TPU à hôtes multiples, chaque nœud de tranche TPU comporte quatre puces. Par exemple, siTPU_TOPOLOGYest défini sur4x8, il y a 32 puces, ce qui signifie queNUM_NODESdoit être égal à 8. Pour en savoir plus sur les topologies TPU, utilisez le tableau de la section Choisir la version de TPU.TPU_TOPOLOGY: indique la topologie physique de la tranche de TPU. Le format de la topologie dépend de la version de TPU que vous utilisez. Pour en savoir plus sur les topologies TPU, consultez le tableau de la section Choisir une topologie.
Vous pouvez également utiliser les variables suivantes :
RESERVATION_NAME: si vous utilisez la réservation TPU, il s'agit de la liste des libellés des ressources de réservation à utiliser lors de la création du pool de nœuds. Pour en savoir plus sur la spécification deRESERVATION_LABEL_VALUESdans le champreservation_affinity, consultez la page Fournisseur Terraform.autoscaling: Ajouter un pool de nœuds avec l'autoscaling activé. Lorsque GKE met à l'échelle un pool de nœuds de tranche TPU multi-hôte, il effectue un scaling de façon atomique du pool de nœuds de zéro à la taille maximale.MAX_NODES: taille maximale du pool de nœuds. Elle doit être égale au produit des valeurs définies dansTPU_TOPOLOGY({A}x{B}x{C}) divisée par le nombre de puces dans chaque VM.
spot: permet au pool de nœuds d'utiliser des VM Spot pour les nœuds de tranche TPU. Ce paramètre ne peut pas être modifié après la création du pool de nœuds. Pour en savoir plus, consultez VM Spot.flex_start: définit le pool de nœuds de sorte qu'il utilise l'option de consommation flex-start. Ne peut pas être défini surtruesispotest activé.
Console
Pour créer un pool de nœuds à l'aide de TPU, exécutez la commande suivante :
Accédez à la page Google Kubernetes Engine dans la console Google Cloud .
Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.
Cliquez sur add_box Ajouter un pool de nœuds.
Dans la section Détails du pool de nœuds, cochez la case Spécifier les emplacements de nœud.
Sélectionnez le nom de la zone en fonction de la version de TPU que vous souhaitez utiliser. Pour identifier un emplacement disponible, consultez Disponibilité des TPU dans GKE.
Dans le volet de navigation, cliquez sur Nœuds.
Dans la section Configuration de la machine, sélectionnez TPU.
Dans le menu déroulant Série, sélectionnez l'une des options suivantes :
- CT3 : TPU v3, appareil à hôte unique
- CT3P : TPU v3, tranche de pod multi-hôte
- CT4P : TPU v4
- CT5LP : TPU v5e
- CT5P : TPU v5p
- CT6E : TPU Trillium (v6e)
Dans le menu déroulant Type de machine, sélectionnez le nom de la machine à utiliser pour les nœuds. Utilisez le tableau Choisir la version du TPU pour apprendre à définir le type de machine et la topologie TPU qui créent un pool de nœuds de tranche TPU multi-hôtes.
Dans le menu déroulant Topologie TPU, sélectionnez la topologie physique de la tranche de TPU.
Dans la boîte de dialogue Modifications requises, cliquez sur Apporter des modifications.
Assurez-vous d'avoir défini le champ Type de disque de démarrage sur Disque persistant standard ou Disque persistant SSD.
Vous pouvez éventuellement cocher la case Activer les nœuds sur les VM Spot afin d'utiliser des VM Spot pour les nœuds du pool de nœuds.
Cliquez sur Créer.
Une fois que vous avez créé un pool de nœuds avec la réservation d'agenda, vous pouvez déployer votre charge de travail comme n'importe quel autre pool de nœuds TPU. La consommation d'une réservation future en mode Agenda fonctionne de la même manière que pour tout autre type de réservation. Pour en savoir plus, consultez Consommer des ressources zonales réservées.
Étapes suivantes
Essayez des exemples de déploiement GKE pour les modèles d'IA générative qui utilisent les ressources TPU que vous avez réservées :
- Diffuser un LLM à l'aide de TPU Trillium sur GKE avec vLLM
- Diffuser un LLM à l'aide de TPU sur GKE avec KubeRay
- Diffuser un LLM à l'aide de TPU sur GKE avec JetStream et PyTorch
- Diffuser Gemma à l'aide de TPU sur GKE avec JetStream
- Diffuser Stable Diffusion XL (SDXL) à l'aide de TPU sur GKE avec MaxDiffusion
- Diffuser des modèles Open Source à l'aide de TPU sur GKE avec Optimum TPU
Explorez des exemples expérimentaux pour exploiter GKE et accélérer vos initiatives d'IA/ML dans GKE AI Labs.