Ce document explique comment déployer et gérer des charges de travail à l'aide de la fonctionnalité Mode pleine capacité TPU dans GKE. Les réservations en mode pleine capacité offrent un contrôle amélioré sur vos ressources TPU, ce qui vous permet de placer vos charges de travail avec un contrôle précis au sein de votre capacité réservée.
Ce document est destiné aux ingénieurs en machine learning (ML), aux administrateurs et aux opérateurs de plate-forme qui souhaitent utiliser l'orchestration de conteneurs Kubernetes avec un contrôle précis sur les déploiements de TPU.
Avant de lire ce document, assurez-vous de bien connaître les éléments suivants :
Qu'est-ce que le mode pleine capacité TPU ?
Le mode pleine capacité TPU, activé par TPU Cluster Director, vous offre un contrôle total sur votre capacité TPU réservée. TPU Cluster Director est un service de gestion qui vous permet de contrôler vos TPU en fonction des réservations.
Contrairement au mode géré précédent, où Google Cloud réserve une partie de votre capacité pour gérer les défaillances matérielles, le mode pleine capacité vous donne accès à l'intégralité de vos ressources TPU réservées. Ce mode offre une visibilité totale sur l'état du matériel, mais vous confie également la responsabilité de la gestion des défaillances de nœuds et de la maintenance planifiée.
Pour en savoir plus sur les principales fonctionnalités du mode pleine capacité, consultez la section Mode pleine capacité dans la présentation de TPU Cluster Director.
Terminologie relative au mode pleine capacité dans GKE
Le tableau suivant inclut les termes et les équivalences définis par la taille d'un bloc, d'un sous-bloc et d'un cube dans la version Ironwood (TPU7x). Un cube est une topologie 4x4x4 de puces TPU interconnectées, qui ne s'applique qu'aux topologies en 3-uplets ({A}x{B}x{C}).
| Ressource TPU | Cœurs | Puces | Hôtes | Cubes |
|---|---|---|---|---|
| 1 puce | 2 | 1 | - | - |
| 1 hôte | 8 | 4 | 1 | - |
| 1 sous-bloc | 128 | 64 | 16 | 1 |
| Un bloc contient 144 sous-blocs | 18432 | 9216 | 2304 | 144 |
Pour en savoir plus sur les topologies autorisées dans un bloc, consultez la section Choisir une topologie.
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 la Google Cloud CLI pour cette tâche, installez et 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 d'un cluster standard existant dans la version 1.34.0-gke.2201000 ou ultérieure. Pour créer un nouveau cluster, consultez la section Créer un cluster régional.
- Assurez-vous de disposer d'un quota suffisant pour les TPU dans la région que vous souhaitez utiliser.
- Installez JobSet v0.2.3 ou version ultérieure.
Limites
Le mode pleine capacité TPU dans GKE n'est compatible qu'avec les versions Ironwood (TPU7x).
Utiliser le mode pleine capacité TPU dans GKE
Cette section décrit le workflow à suivre pour utiliser le mode pleine capacité TPU dans GKE.
- Familiarisez-vous avec TPU Cluster Director.
- Demandez une capacité TPU en mode pleine capacité.
- Affichez la topologie et l'état des réservations en mode pleine capacité.
- Suivez les étapes de ce document :
- Gérez les événements de maintenance avec les TPU en mode pleine capacité.
- Signalez et réparez les hôtes défectueux avec les TPU en mode pleine capacité.
Créer un pool de nœuds dans une réservation en mode pleine capacité
Le mode pleine capacité sur GKE vous permet de créer des pools de nœuds de différentes manières :
- Un pool de nœuds dans lequel GKE sélectionne le bloc ou le sous-bloc de votre réservation en mode pleine capacité TPU.
- Un pool de nœuds qui cible un bloc ou un sous-bloc particulier dans une réservation en mode pleine capacité TPU.
GKE sélectionne le bloc ou le sous-bloc de votre réservation en mode pleine capacité TPU
Dans ce mode, GKE sélectionne l'emplacement du pool de nœuds dans votre réservation en mode pleine capacité TPU. Ce processus est semblable à la création de pools de nœuds avec d'autres options de provisionnement de TPU, telles que les VM à la demande ou Spot.
Pour créer un pool de nœuds, utilisez la commande gcloud container node-pools create avec l'option --reservation.
Spécifiez le nom complet de la ressource de votre réservation TPU comme valeur de l'option --reservation.
Pour obtenir un exemple de commande de création de pool de nœuds, consultez la section Créer manuellement un pool de nœds.
Cibler un bloc ou un sous-bloc dans une réservation
Le mode pleine capacité TPU vous permet de cibler un bloc ou un sous-bloc spécifique dans votre réservation TPU pour les charges de travail parallèles. Cette fonctionnalité est utile pour les charges de travail qui nécessitent une proximité étroite entre les puces TPU afin de réduire la latence.
Consultez les configurations de bloc, de sous-bloc et d'hôte disponibles. Suivez les étapes de la section Afficher la topologie et l'état des réservations en mode pleine capacité.
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 :2x2x2. Pour afficher toutes les topologies Ironwood (TPU7x) compatibles, consultez la section Planifier des TPU dans GKE.PROJECT_ID: ID de votre Google Cloud projet.REGION: région de la règle de charge de travail. Une règle de charge de travail est une ressource régionale et peut être réutilisée dans les pools de nœuds qui partagent la même topologie.
Pour créer un pool de nœuds et cibler un bloc ou un sous-bloc particulier de la réservation, utilisez l'option
--reservationpour spécifier le nom complet de la ressource du bloc ou du sous-bloc cible dans votre réservation.Pour cibler un bloc spécifique dans votre réservation, utilisez la commande suivante :
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --machine-type=tpu7x-standard-4t \ --placement-policy=WORKLOAD_POLICY_NAME \ --zone=ZONE \ --reservation=project/PROJECT/reservation/RESERVATION_NAME/reservationBlocks/BLOCK_NAMEPour cibler un sous-bloc spécifique dans un bloc, utilisez la commande suivante :
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --machine-type=tpu7x-standard-4t \ --placement-policy=WORKLOAD_POLICY_NAME \ --zone=ZONE \ --reservation=project/PROJECT/reservation/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAMERemplacez les éléments suivants :
NODE_POOL_NAME: nom de votre nouveau pool de nœuds.CLUSTER_NAME: nom de votre cluster GKE.WORKLOAD_POLICY_NAME: nom de la règle de charge de travail que vous avez créée.ZONE: zone du pool de nœuds, par exempleus-central1-a.PROJECT: ID de votre Google Cloud projet.RESERVATION_NAME: nom de votre réservation TPU.BLOCK_NAME: bloc spécifique dans votre réservation.SUB_BLOCK_NAME: sous-bloc spécifique dans votre réservation.
Dans les commandes précédentes, vous
Planifier des charges de travail
Une fois que vous avez créé un pool de nœuds avec des VM TPU en mode pleine capacité, vous pouvez déployer votre charge de travail comme n'importe quel autre pool de nœuds TPU. Pour le mode pleine capacité TPU, il n'existe aucune différence supplémentaire dans la planification des charges de travail par rapport aux pools de nœuds qui utilisent des réservations standards avec SLO.
Pour en savoir plus et obtenir des exemples de charges de travail qui utilisent des TPU, consultez les sections Exécuter votre charge de travail sur des nœuds de tranche TPU et Exécuter une charge de travail Multislice.
Gérer les défaillances de nœuds
Les réservations en mode pleine capacité TPU sont des réservations sans retenue. Sans retenue signifie que vous recevez la pleine capacité TPU, y compris la partie qui est Google Cloud généralement conservée pour les basculements en mode de capacité gérée.
En mode pleine capacité TPU, si une VM échoue en raison de problèmes tels qu'une défaillance matérielle, Google Cloud tente de la récupérer sur le même hôte (réparation sur place). Par conséquent, nous vous recommandons de maintenir une capacité de réserve pour permettre la replanification des charges de travail en cas de défaillance de l'infrastructure.
Défaillance et récupération de nœuds
Lorsqu'un nœud échoue dans une réservation en mode pleine capacité TPU, les événements suivants se produisent :
- Google Cloud
lance un événement de réparation pour l'instance de VM Compute Engine défaillante. Ce processus tente de restaurer la VM à l'état
RUNNINGet de rétablir l'état du nœud GKE surREADY. - La VM TPU passe à l'état de réparation et toute charge de travail exécutée sur ce nœud peut échouer, en fonction de sa règle de basculement. L'état du pool de nœuds ne passe pas à
ERROR, même si une ou plusieurs de ses VM rencontrent des défaillances.
Pour surveiller l'état de vos nœuds, procédez comme suit :
Répertoriez les nœuds du pool de nœuds :
kubectl get nodesLes nœuds défaillants ont l'état
NotReady.Surveillez l'état du nœud Compute Engine :
Pour les VM TPU en mode pleine capacité, utilisez
gcloud compute instances describe. Cette commande fournit également l'état physique de la topologie pour trouver les détails de l'hôte, du sous-bloc et du bloc.gcloud compute instances describe VM_NAME \ --format="table[box,title=VM-Position](resourceStatus.physical_host_topology:label=location)" \ --zone=ZONERemplacez les éléments suivants :
VM_NAME: nom de l'instance de VM TPU.ZONE: zone de la VM, par exempleus-central1-a.
Pour en savoir plus sur la récupération des informations de topologie et d'état concernant votre capacité en mode pleine capacité, consultez la section Afficher la topologie et l'état des réservations en mode pleine capacité.
Gérer la maintenance
Pour gérer les interruptions potentielles et vous assurer que vos charges de travail restent résilientes, vous pouvez gérer la maintenance des nœuds individuels à l'aide des règles de maintenance GKE. Pour en savoir plus, consultez les sections Intervalles de maintenance et Exclusions de maintenance.
GKE n'est pas compatible avec la maintenance de groupe pour les VM TPU dans une réservation en mode pleine capacité. Pour effectuer une maintenance de groupe au niveau du sous-bloc, du bloc ou de la réservation, utilisez les API Compute Engine. Pour en savoir plus, consultez la section Gérer les événements de maintenance avec les TPU en mode pleine capacité.
Libérer de l'espace
Pour éviter des frais indésirables sur votre Google Cloud compte, supprimez
les pools de nœuds TPU qui n'ont plus de charges de travail planifiées. Si les charges de travail en cours d'exécution doivent être arrêtées progressivement, utilisez la commande kubectl drain pour nettoyer les charges de travail avant de supprimer le pool de nœuds.
Supprimez un pool de nœuds TPU :
gcloud container node-pools delete NODE_POOL_NAME \ --location=LOCATION \ --cluster=CLUSTER_NAMERemplacez les éléments suivants :
NODE_POOL_NAME: nom du pool de nœuds.CLUSTER_NAME: nom du cluster.LOCATION: emplacement de calcul du cluster.
Étape suivante
- Apprenez-en plus sur les TPU dans GKE.
- Découvrez comment déployer des charges de travail TPU dans GKE Standard.
- En savoir plus sur TPU Cluster Director.