Planifier des TPU dans GKE


Cette page explique comment planifier l'utilisation des unités de traitement Tensor (TPU) dans Google Kubernetes Engine (GKE) afin de réduire le risque de configuration incorrecte des TPU, d'erreurs de non-disponibilité ou d'interruptions dues à un dépassement de quota.

Avant d'utiliser des TPU dans GKE, assurez-vous de bien connaître les définitions et la terminologie des TPU dans GKE.

Planifier la configuration TPU

Pour utiliser des TPU dans des clusters GKE, vous devez planifier leur configuration. Nous vous recommandons d'effectuer les opérations suivantes:

  1. Choisissez un mode de fonctionnement GKE: exécutez vos charges de travail sur des TPU dans un cluster GKE Autopilot ou GKE Standard. Nous vous recommandons d'utiliser un cluster GKE Autopilot pour une expérience Kubernetes entièrement gérée.
  2. Choisissez la version de TPU: les différents types de TPU présentent des caractéristiques différentes, telles que les ratios prix-performances, le débit d'entraînement et la latence de diffusion. Les types de TPU affectent les capacités de processeur et de mémoire disponibles.
  3. Vérifiez la disponibilité des TPU: les TPU sont disponibles dans des régions Google Cloud spécifiques. Pour utiliser un type de TPU dans votre charge de travail GKE, votre cluster doit se trouver dans une région compatible avec ce type.
  4. Choisissez la topologie de TPU: disposition physique des TPU dans une tranche de TPU. Sélectionnez une topologie qui correspond aux exigences de parallélisme de votre modèle.

Nous vous recommandons d'utiliser les tableaux de référence de cette page pour identifier si vos pools de nœuds sont des nœuds de tranche de TPU à hôte unique ou multi-hôte.

Choisir un mode de fonctionnement GKE

Vous pouvez utiliser des TPU dans les modes de fonctionnement GKE disponibles pour les clusters:

  • Mode Autopilot (recommandé) : GKE gère l'infrastructure sous-jacente (configuration des nœuds, autoscaling, mises à niveau automatiques, configurations de sécurité de référence et configuration de mise en réseau de référence, entre autres). Dans Autopilot, vous choisissez un type et une topologie de TPU, puis vous les spécifiez dans votre fichier manifeste Kubernetes. GKE gère le provisionnement des nœuds avec des TPU et la planification de vos charges de travail.
  • Mode standard : vous gérez l'infrastructure sous-jacente, y compris la configuration des nœuds individuels.

Pour choisir le mode de fonctionnement GKE le mieux adapté à vos charges de travail, consultez la section Choisir un mode de fonctionnement GKE.

Choisir la version de TPU

Les VM d'une tranche de TPU présentent les caractéristiques techniques suivantes:

Autopilot

Version du TPU Type de machine Nombre de processeurs virtuels Mémoire (Gio) Nombre de nœuds NUMA Nombre maximal de puces TPU dans un nœud de tranche TPU
TPU v5p
tpu-v5p-slice 208 448 2 6 144
TPU v5e
tpu-v5-lite-podslice Entre 24 et 224 Entre 48 et 384 1 256
TPU v5e (hôte unique uniquement)
tpu-v5-lite-device Entre 24 et 224 Entre 48 et 384 Entre 1 et 2 8
TPU v4
tpu-v4-podslice 240 407 2 4 096

Standard

Version du TPU Type de machine Nombre de processeurs virtuels Mémoire (Gio) Nombre de nœuds NUMA Probabilité de préemption
TPU v5p
ct5p-hightpu-4t 208 448 2
TPU v5e
ct5l-hightpu-1t 24 48 1 Plus élevé
TPU v5e
ct5l-hightpu-4t 112 192 1 Moyenne
TPU v5e
ct5l-hightpu-8t 224 384 2 Plus faible
TPU v5e
ct5lp-hightpu-1t 24 48 1 Plus élevé
TPU v5e
ct5lp-hightpu-4t 112 192 1 Moyenne
TPU v5e
ct5lp-hightpu-8t 224 384 1 Faible
TPU v4
ct4p-hightpu-4t 240 407 2

Consultez les spécifications et les tarifs des TPU dans la documentation sur les tarifs de Cloud TPU pour choisir la configuration de TPU à utiliser.

Limites

Tenez compte des limites suivantes lorsque vous choisissez le TPU à utiliser:

  • La répartition des coûts et la mesure de l'utilisation de GKE n'incluent aucune donnée sur l'utilisation ou les coûts des TPU v4 réservés.
  • Les TPU v5p et v5e ne sont pas compatibles avec le streaming de flux d'images/Riptide dans us-east5.
  • L'autoscaling TPU v5p est compatible avec les clusters GKE dont les plans de contrôle exécutent au moins la version 1.29.2-gke.1035000 ou 1.28.7-gke.1020000.
  • Pour les réservations de capacité, utilisez une réservation spécifique.

Valider la disponibilité des TPU dans GKE

Les TPU sont disponibles dans des régions Google Cloud spécifiques. Pour utiliser un type de TPU dans votre cluster GKE, celui-ci doit se trouver dans une région compatible avec ce type.

Autopilot

Consultez la section Régions et zones TPU dans la documentation Cloud TPU.

Standard

Le tableau suivant indique la disponibilité des TPU pour chaque version et type de machine:

Version du TPU Type de machine commençant par Version GKE minimum Disponibilité Zone
TPU v5e ct5l- 1.27.2-gke.2100 Disponibilité générale europe-west4-b
us-central1-a
TPU v5e ct5lp- 1.27.2-gke.2100 Disponibilité générale europe-west4-a1
us-central1-a1
us-east1-c
us-east5-b1
us-west1-c
us-west4-a
us-west4-b1
TPU v5p ct5p- 1.28.3-gke.1024000 Disponibilité générale us-east1-d
us-east5-a
us-east5-c
TPU v4 ct4p- 1.26.1-gke.1500 Disponibilité générale us-central2-b
  1. Vous pouvez créer un pool de nœuds TPU v5e à hôte unique avec un type de machine commençant par ct5lp-, mais pas par ct5l- dans certaines zones (europe-west4-a, us-east5-b et us-west4-b). Vous pouvez utiliser ct5lp-hightpu-4t avec une topologie d'au moins 2x4 ou plus dans ces zones. Pour créer un TPU v5e à hôte unique dans la région us-west4, choisissez la zone us-west4-a et utilisez des types de machines commençant par ct5lp-, comme ct5lp-hightpu-1t. Pour créer un TPU v5e à hôte unique dans les autres régions listées dans le tableau précédent, utilisez des types de machines commençant par ct5l- (comme ct5l-hightpu-1t, ct5l-hightpu-4t ou ct5l-hightpu-8t). Notez que les types de machines commençant par ct5l- nécessitent un quota différent de celui des types de machines commençant par ct5lp-.

Choisir une topologie

Après avoir choisi une version de TPU, sélectionnez une topologie compatible avec ce type de TPU. En fonction du type de TPU, la topologie est bidimensionnelle ou tridimensionnelle. Les exigences de parallélisme de votre modèle vous aident à choisir une topologie. Vous pouvez identifier le nombre de puces TPU dans la tranche en calculant le produit de chaque taille dans la topologie. Exemple :

  • 2x2x2 est une tranche de TPU multi-hôte v4 à huit puces
  • 2x2 est une tranche de TPU v5e à hôte unique à quatre puces

Si une topologie spécifique est compatible avec les nœuds de tranche TPU à hôte unique et multi-hôte, le type d'hôte est déterminé par le nombre de puces TPU demandées par votre charge de travail.

Par exemple, les TPU v5e (tpu-v5-lite-podslice) acceptent la topologie 2x4 en tant que TPU unique et multi-hôte. Plusieurs situations sont possibles :

  • Si vous demandez quatre puces dans votre charge de travail, vous obtenez un nœud multi-hôte avec quatre puces TPU.
  • Si vous demandez huit puces dans votre charge de travail, vous obtenez un nœud à hôte unique avec huit puces TPU.

Utilisez le tableau suivant pour choisir le type de machine et la topologie TPU pour votre cas d'utilisation:

  • Pour l'entraînement ou l'inférence de modèles à petite échelle, utilisez des TPU v4 ou des TPU v5e avec des pools de nœuds de tranche de pod TPU à hôte unique.
  • Pour l'entraînement ou l'inférence de modèles à grande échelle, utilisez des TPU v4 ou des TPU v5e avec des pools de nœuds de tranche de pod TPU à hôtes multiples.

Autopilot

Version du TPU Type de machine Topologie Nombre de puces TPU dans une tranche Nombre de nœuds Type de pool de nœuds
TPU v5p tpu-v5p-slice 2x2x1 4 1 Un seul hôte
2x2x2 8 2 Hôte multiple
2x2x4 16 4 Hôte multiple
2x4x4 32 8 Hôte multiple
4x4x4 64 16 Hôte multiple
{A}x{B}x{C} A*B*C (A*B*C/4)1 Hôte multiple
TPU v5e tpu-v5-lite-podslice2 1x1 1 1 Un seul hôte
2x2 4 1
2x4 8 1
2x4 2 1 Hôte multiple
4x4 16 4
4x8 32 8
8x8 64 16
8x16 128 32
16x16 256 64
TPU v5e (hôte unique uniquement) tpu-v5-lite-device 1x1 1 1 Un seul hôte
2x2 4 1
2x4 8 1
TPU v4 tpu-v4-podslice2 2x2x1 4 1 Un seul hôte
2x2x2 8 2 Hôte multiple
2x2x4 16 4 Hôte multiple
2x4x4 32 8 Hôte multiple
4x4x4 64 16 Hôte multiple
{A}x{B}x{C} A*B*C (A*B*C/4)1 Hôte multiple
  1. Calcul effectué en divisant le produit de topologie par quatre.

    Les topologies personnalisées pour plus de 64 puces sont acceptées. Les conditions suivantes s'appliquent :

    • Pour plus de 64 puces, {A}, {B} et {C} doivent être des multiples de 4.
    • La topologie la plus grande est 16x16x24
    • Les valeurs doivent être {A}{B}{C}, par exemple 8x12x16.
  2. Les topologies personnalisées ne sont pas acceptées.

Après avoir choisi un type et une topologie de TPU, spécifiez-les dans le fichier manifeste de votre charge de travail. Pour obtenir des instructions, consultez la page Déployer des charges de travail TPU sur GKE Autopilot.

Standard

Version du TPU Type de machine Topologie Nombre de puces TPU Nombre de VM Type de pool de nœuds
TPU v5p ct5p-hightpu-4t 2x2x1 4 1 Un seul hôte
2x2x2 8 2 Hôte multiple
2x2x4 16 4 Hôte multiple
2x4x4 32 8 Hôte multiple
{A}x{B}x{C} A*B*C (A*B*C/4)1 Hôte multiple
TPU v5e ct5l-hightpu-1t 1x1 1 1 Un seul hôte
ct5l-hightpu-4t 2x2 4 1 Un seul hôte
ct5l-hightpu-8t 2x4 8 1 Un seul hôte
ct5lp-hightpu-1t 1x1 1 1 Un seul hôte
ct5lp-hightpu-4t 2x2 4 1 Un seul hôte
ct5lp-hightpu-8t 2x4 8 1 Un seul hôte
ct5lp-hightpu-4t 2x4 8 2 Hôte multiple
4x4 16 4 Hôte multiple
4x8 32 8 Hôte multiple
8x8 64 16 Hôte multiple
8x16 128 32 Hôte multiple
16x16 256 64 Hôte multiple
TPU v4 ct4p-hightpu-4t 2x2x1 4 1 Un seul hôte
2x2x2 8 2 Hôte multiple
2x2x4 16 4 Hôte multiple
2x4x4 32 8 Hôte multiple
{A}x{B}x{C} A*B*C (A*B*C/4)1 Hôte multiple
  1. Calcul effectué en divisant le produit de topologie par quatre.

Configurations avancées

Les sections suivantes décrivent les bonnes pratiques de planification pour les configurations avancées de TPU.

Réservation TPU

Les réservations TPU sont disponibles lors de la souscription d'un engagement. Toute réservation TPU peut être utilisée avec GKE.

Lorsque vous créez un pool de nœuds tranche TPU, utilisez les options --reservation et --reservation-affinity=specific pour consommer une instance TPU réservée.

Autoscaling des TPU dans GKE

GKE est compatible avec les TPU (Tensor Processing Units) pour accélérer les charges de travail de machine learning. Le pool de nœuds de tranche TPU à hôte unique et le pool de nœuds de tranche TPU multi-hôte sont tous deux compatibles avec l'autoscaling et le provisionnement automatique.

Avec l'option --enable-autoprovisioning sur un cluster GKE, GKE crée ou supprime des pools de nœuds de tranche TPU à hôte unique ou multi-hôte avec une version et une topologie de TPU qui répondent aux exigences des charges de travail en attente.

Lorsque vous utilisez --enable-autoscaling, GKE procède au scaling du pool de nœuds en fonction de son type, comme suit :

  • Pool de nœuds de tranche TPU à hôte unique : GKE ajoute ou supprime des nœuds TPU dans le pool de nœuds existant. Le pool de nœuds peut contenir un nombre de nœuds TPU compris entre zéro et la taille maximale du pool de nœuds, tel que déterminé par les options --max-nodes et --total-max-nodes. Lorsque le pool de nœuds effectue un scaling, tous les nœuds TPU du pool de nœuds ont le même type de machine et la même topologie. Pour en savoir plus sur la création d'un pool de nœuds de tranche TPU à hôte unique, consultez la section Créer un pool de nœuds.

  • Pool de nœuds de tranche TPU multi-hôte : GKE effectue un scaling du pool de nœuds de façon atomique, de zéro jusqu'au nombre de nœuds requis pour satisfaire la topologie TPU. Par exemple, pour un pool de nœuds TPU avec un type de machine ct5lp-hightpu-4t et une topologie 16x16, le pool de nœuds contient 64 nœuds. L'autoscaler GKE s'assure que ce pool de nœuds comporte exactement 0 ou 64 nœuds. Lors d'un nouveau scaling à la baisse, GKE supprime tous les pods planifiés et draine l'intégralité du pool de nœuds jusqu'à zéro. Pour en savoir plus sur la création d'un pool de nœuds de tranche TPU multi-hôte, consultez la section Créer un pool de nœuds.

Processeur pour les clusters standards

Cette section ne s'applique pas aux clusters Autopilot, car GKE place chaque tranche TPU sur son propre nœud. Pour en savoir plus, consultez Fonctionnement des TPU en mode Autopilot.

Pour les clusters standards, tenez compte des bonnes pratiques de planification suivantes.

Pour planifier une charge de travail non TPU sur une VM dans un nœud de tranche de TPU, assurez-vous que votre pod GKE peut tolérer le rejet google.com/tpu. Si vous souhaitez que la charge de travail soit déployée sur des nœuds spécifiques, utilisez des sélecteurs de nœuds.

La gestion et la priorité des ressources Kubernetes traitent les VM sur les TPU de la même manière que les autres types de VM. Pour attribuer aux pods nécessitant des TPU une priorité de planification sur les autres pods des mêmes nœuds, demandez la quantité maximale de processeurs ou de mémoire de ces tranches de TPU. Les segments de TPU de faible priorité doivent effectuer les opérations suivantes:

  1. Définissez un nombre faible de demandes de ressources mémoire et de processeur pour vous assurer que le nœud dispose de suffisamment de ressources pouvant être allouées aux charges de travail TPU. Pour en savoir plus, consultez la section Comment Kubernetes applique les demandes et les limites de ressources.
  2. Ne définissez aucune limite de processeur (illimité) pour vous assurer que les pods peuvent s'étendre et utiliser tous les cycles inutilisés.
  3. Définissez des limites de mémoire appropriées pour que les pods fonctionnent correctement sans risquer d'éviction en cas de pression sur le nœud.

Si un pod Kubernetes ne demande pas de ressources processeur et de mémoire (même s'il demande des TPU), Kubernetes le considère comme un pod "best effort", et rien ne garantit qu'il ait besoin de processeur et de mémoire. Seuls les pods qui demandent explicitement des ressources de processeur et de mémoire disposent de ces garanties. Pour une planification Kubernetes spécifique, configurez les besoins du pod avec une requête de processeur et de mémoire explicite. Pour en savoir plus, consultez Gestion des ressources pour les pods et les conteneurs.

Pour en savoir plus sur les bonnes pratiques, consultez Bonnes pratiques Kubernetes: demandes de ressources et limites.

Réduire les interruptions de la charge de travail

Si vous utilisez des TPU pour entraîner un modèle de machine learning et que votre charge de travail est interrompue, tous les travaux effectués depuis le dernier point de contrôle sont perdus. Pour réduire la probabilité d'interruption de votre charge de travail, procédez comme suit :

  • Définissez une priorité plus élevée pour cette tâche que pour toutes les autres tâches : si les ressources sont peu nombreuses, le programmeur GKE préempte les tâches de priorité inférieure pour planifier une tâche de priorité supérieure. Cela garantit également que votre charge de travail prioritaire reçoit toutes les ressources dont elle a besoin (jusqu'à la quantité totale de ressources disponibles dans le cluster). Pour en savoir plus, consultez Priorité et préemption des pods.
  • Configurez l'exclusion de maintenance : une exclusion de maintenance est une période non récurrente pendant laquelle la maintenance automatique est interdite. Pour en savoir plus, consultez la section Exclusions de maintenance.
  • Utilisez des pods à durée d'exécution prolongée dans Autopilot : utilisez des pods à durée d'exécution prolongée pendant un délai de grâce allant jusqu'à sept jours avant que GKE n'arrête vos pods pour effectuer des scalings à la baisse ou les mises à niveau de nœuds.

Gérer les perturbations dues à la maintenance des nœuds

Les nœuds GKE qui hébergent les TPU sont soumis à des événements de maintenance ou à d'autres perturbations susceptibles d'entraîner l'arrêt du nœud. Dans les clusters GKE dont le plan de contrôle exécute les versions 1.29.1-gke.1425000 et ultérieures, vous pouvez réduire les perturbations sur les charges de travail en configurant GKE pour qu'il arrête correctement vos charges de travail.

Pour comprendre, configurer et surveiller les événements d'interruption pouvant se produire sur les nœuds GKE exécutant des charges de travail d'IA/ML, consultez la section Gérer les interruptions des nœuds GKE pour les GPU et les TPU.

Maximiser l'utilisation du TPU

Pour optimiser votre investissement dans les TPU, planifiez une combinaison de priorités de tâches et mettez-les en file d'attente afin de maximiser le temps de fonctionnement de vos TPU. Pour la planification et la préemption au niveau des tâches, vous devez utiliser un module complémentaire de Kubernetes qui organise les tâches en files d'attente. Nous vous recommandons d'utiliser Kueue pour ce cas d'utilisation.

Étapes suivantes