Ce document explique comment déployer et gérer des charges de travail à l'aide de la fonctionnalité Mode TPU "Toute la capacité" dans GKE. Toutes les réservations en mode 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 dans votre capacité réservée.
Ce document s'adresse aux ingénieurs en machine learning (ML), ainsi qu'aux administrateurs et opérateurs de plate-forme qui souhaitent utiliser l'orchestration de conteneurs Kubernetes avec un contrôle précis des déploiements de TPU.
Avant de lire ce document, assurez-vous de connaître les éléments suivants :
Qu'est-ce que le mode "Toute la capacité TPU" ?
Le mode "Toute la capacité TPU", activé par TPU Cluster Director, vous permet de contrôler entièrement 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 "Toute la 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 "Toute capacité", consultez Mode "Toute capacité" dans la présentation de TPU Cluster Director.
Terminologie liée au mode "Toute la 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 dans les 3-tuples ({A}x{B}x{C}).
| Ressource TPU | Cœurs | Puces | Hôtes | Cubes |
|---|---|---|---|---|
| 1 jeton | 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 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 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 d'un cluster Standard existant dans la version 1.34.0-gke.2201000 ou ultérieure. Pour créer un cluster, consultez la page Créer un cluster régional.
- Assurez-vous de disposer d'un quota de TPU suffisant dans la région que vous souhaitez utiliser.
- Installez JobSet v0.2.3 ou version ultérieure.
Limites
Le mode "Toute capacité" des TPU dans GKE n'est compatible qu'avec les versions Ironwood (TPU7x).
Utiliser le mode "Toute capacité TPU" dans GKE
Cette section décrit le workflow à suivre pour utiliser le mode "Toute capacité" des TPU dans GKE.
- Familiarisez-vous avec TPU Cluster Director.
- Demandez de la capacité de TPU en mode "Toute la capacité".
- Affichez la topologie et l'état des réservations en mode Toute la capacité.
- Suivez la procédure décrite dans ce document :
- Gérer les événements de maintenance avec les TPU en mode "Toute capacité"
- Signaler et réparer les hôtes défectueux avec des TPU en mode "Toute capacité"
Créer un pool de nœuds dans une réservation en mode "Toute capacité"
Le mode "Toute la capacité" sur GKE vous permet de créer des pools de nœuds de différentes manières :
- Pool de nœuds dans lequel GKE sélectionne le bloc ou le sous-bloc de votre réservation TPU All Capacity.
- Pool de nœuds ciblant un bloc ou un sous-bloc spécifique dans une réservation en mode "Toute capacité TPU".
GKE sélectionne le bloc ou le sous-bloc dans votre réservation de capacité totale de TPU.
Dans ce mode, GKE sélectionne l'emplacement du pool de nœuds dans votre réservation de capacité TPU totale. 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 de TPU comme valeur de l'indicateur --reservation.
Pour obtenir un exemple de commande de création de pool de nœuds, consultez Créer manuellement un pool de nœuds.
Cibler un bloc ou un sous-bloc dans une réservation
Le mode "Toute la capacité TPU" vous permet de cibler un bloc ou un sous-bloc spécifique dans votre réservation de TPU pour les charges de travail parallèles. Cette fonctionnalité est utile pour les charges de travail qui nécessitent une proximité entre les puces TPU afin de minimiser la latence.
Consultez les configurations de blocs, de sous-blocs et d'hôtes disponibles. Suivez les étapes décrites dans le document Afficher la topologie et l'état des réservations en mode "Toute la 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 :2x2x2Pour afficher toutes les topologies Ironwood (TPU7x) compatibles, consultez Planifier des TPU dans GKE.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.
Pour créer un pool de nœuds et cibler un bloc ou un sous-bloc particulier de la réservation, utilisez l'indicateur
--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 projet Google Cloud .RESERVATION_NAME: nom de votre réservation de TPU.BLOCK_NAME: bloc spécifique de votre réservation.SUB_BLOCK_NAME: sous-bloc spécifique de 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 "Toute capacité", vous pouvez déployer votre charge de travail comme n'importe quel autre pool de nœuds TPU. En mode TPU "Toute capacité", 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 Exécuter votre charge de travail sur des nœuds de tranche TPU et Exécuter une charge de travail multitranche.
Gérer les défaillances de nœuds
Les réservations en mode "Toute la capacité TPU" sont des réservations sans retenue. Sans réserve signifie que vous recevez la capacité TPU complète, y compris la partie queGoogle Cloud conserve généralement pour les basculements en mode de capacité gérée.
En mode "Toute la capacité du 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 conserver une capacité de réserve pour pouvoir reprogrammer les charges de travail en cas de défaillance de l'infrastructure.
Défaillance et récupération de nœud
Lorsqu'un nœud échoue dans une réservation en mode "Toute la capacité" des TPU, les événements suivants se produisent :
- Google Clouddéclenche 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 stratégie de basculement. L'état du pool de nœuds ne passe pas à
ERROR, même si une ou plusieurs de ses VM rencontrent des échecs.
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 en échec ont l'état
NotReady.Surveillez l'état du nœud Compute Engine :
Pour les VM TPU en mode "Toute 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 savoir comment récupérer des informations sur la topologie et l'état de santé de votre capacité en mode "Toute la capacité", consultez Afficher la topologie et l'état de santé des réservations en mode "Toute la capacité".
Gérer la maintenance
Pour gérer les éventuelles interruptions 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 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 "Toute capacité". Pour effectuer la maintenance groupée au niveau du sous-bloc, du bloc ou de la réservation, utilisez les API Compute Engine. Pour en savoir plus, consultez Gérer les événements de maintenance avec des TPU en mode "Toutes capacités".
Effectuer un nettoyage
Pour éviter que des frais indésirables ne soient facturés sur votre compte Google Cloud , supprimez les pools de nœuds TPU qui n'ont plus de charges de travail programmé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.
Étapes suivantes
- 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