Ce document explique comment concevoir des clusters Google Kubernetes Engine (GKE) résilients et des stratégies de planification des charges de travail qui vous aident à obtenir des ressources, telles que des GPU, des TPU et des processeurs hautes performances. En utilisant Gemini dansCloud de Confiance by S3NS et Compute Advisor (preview), vous pouvez éviter les pods en attente et améliorer la fiabilité de la planification des charges de travail d'IA.
Ce document est destiné aux architectes cloud, ainsi qu'aux administrateurs et opérateurs de plate-forme qui gèrent l'infrastructure GKE et souhaitent optimiser la planification et la programmation de la capacité.
Présentation de la flexibilité, de l'efficacité et de la disponibilité de la capacité de calcul sur GKE
La planification Kubernetes repose sur les requêtes de ressources déclarées. Lors de la planification d'accélérateurs à grande échelle, tels que des GPU ou des TPU, des requêtes de ressources strictes peuvent entraîner l'échec du scaling à la hausse des clusters si le matériel spécifique n'est pas disponible. Vous pouvez optimiser la disponibilité de la capacité sur GKE à l'aide des fonctionnalités suivantes :
- Création automatique de pools de nœuds : création dynamique de pools de nœuds multifamilles.
- Créations de remplacement au niveau de la charge de travail : tolérances et sélecteurs de nœuds configurés pour accepter un matériel alternatif.
- Planification géographique et régionale : fonctionnalités multizones et multirégionales de GKE.
- Gestion des réservations : consommer la capacité préachetée avant de demander des ressources à la demande.
Bonnes pratiques pour la flexibilité, l'efficacité et la disponibilité de la capacité de calcul sur GKE
Cette section fournit des recommandations pour augmenter la disponibilité de votre capacité lors de la planification de charges de travail sur GKE. Ces bonnes pratiques couvrent des stratégies telles que la conception d'exigences matérielles flexibles, la configuration de la création automatique de pools de nœuds et l'exploitation de la distribution géographique pour s'adapter aux contraintes de ressources. La création automatique de pools de nœuds gère automatiquement les pools de nœuds en fonction des spécifications des pods. Plutôt que de prédéfinir des pools de nœuds, spécifiez les besoins en ressources dans vos fichiers manifestes de pod et laissez GKE créer des nœuds de manière dynamique.
Vous pouvez également découvrir et mettre en œuvre les bonnes pratiques suivantes à l'aide de Compute Advisor (preview). Pour en savoir plus, consultez Utiliser Compute Advisor.
Options pour augmenter la disponibilité de la capacité de calcul
Pour optimiser la disponibilité de la capacité, vous pouvez indiquer à GKE d'éviter de lier des charges de travail à une seule famille de machines statiques ou à un seul type d'accélérateur. Voici des exemples de configuration de pools de nœuds flexibles et de règles d'affinité de pods pour différentes classes de charges de travail. Les alternatives spécifiques que vous choisissez dépendent des besoins en ressources de votre application :
Pools de nœuds de processeur à usage général :
- Exemple principal : N4 (usage général basé sur Intel).
- Exemples d'alternatives : N4D (AMD EPYC à usage général), C4 ou C3 (Intel à usage général), ou C4D ou C3D (AMD EPYC à usage général).
- Modèle d'implémentation : configurez les spécifications de pod avec une ComputeClass personnalisée ou des règles d'affinité de nœuds qui permettent la planification sur plusieurs étiquettes de familles de machines, par exemple
cloud.google.com/machine-familydans["n4", "n4d", "c4", "c4d"]. Cette configuration permet à GKE de provisionner le pool disposant d'une capacité disponible.
Pools de nœuds GPU :
- Exemple principal : série A3 (GPU NVIDIA H100) ou série A4 (GPU NVIDIA B200).
- Exemples d'alternatives : série G2 (GPU NVIDIA L4) ou autres niveaux d'accélérateurs.
- Modèle d'implémentation : configurez des pools de nœuds ou des ComputeClasses distincts pour différents niveaux de GPU. Pour les charges de travail d'inférence ou de diffusion pouvant s'exécuter sur plusieurs générations d'accélérateurs, autorisez les pods à basculer vers des pools de GPU G2 (L4) ou alternatifs si le provisionnement de l'accélérateur principal est limité.
Pools de nœuds TPU :
- Exemple principal : TPU Ironwood (TPU7x).
- Exemples d'alternatives : TPU v6 (Trillium) ou TPU v5 (v5e ou v5p).
- Modèle d'implémentation : le provisionnement des tranches TPU peut être très limité. Concevez des charges de travail d'entraînement avec une flexibilité au niveau du framework (par exemple, des configurations JAX ou PyTorch compatibles avec des topologies de tranches variables) pour les déployer sur des tranches v6 ou v5 lorsque la capacité TPU Ironwood (TPU7x) n'est pas disponible.
Le tableau suivant récapitule les principales sélections et alternatives matérielles pour différents types de charges de travail :
| Type de charge de travail | Exemple de sélection principale | Exemples d'alternatives | Considérations relatives à l'architecture |
|---|---|---|---|
| Charges de travail système ou principales | N4 | N4D, C4, C4D, C3, C3D | Couvre les pools de matériel Intel et AMD modernes pour la création automatique de pools de nœuds. |
| Inférence et traitement par GPU | A3 (H100) ou A4 (B200) | G2 (L4) | Cible de manière flexible les pools de nœuds GPU moins coûteux ou offrant une disponibilité plus élevée. |
| Entraînement de modèles TPU | TPU Ironwood (TPU7x) | TPU v6, TPU v5 (v5e ou v5p) | Utilise des topologies flexibles pour la planification basée sur les tranches. |
Implémenter la création automatique de pools de nœuds et les ComputeClasses
Pour optimiser la disponibilité de la capacité, combinez la création automatique de pools de nœuds avec ComputeClasses. La liste suivante inclut les bonnes pratiques :
Définissez des ComputeClasses : créez des ressources ComputeClass qui spécifient une liste de familles de machines, de types de GPU ou de modèles de provisionnement classés par ordre de priorité. GKE tente de provisionner des nœuds en utilisant la configuration disponible de priorité la plus élevée dans la classe. Une liste de remplacement hiérarchisée vous aide considérablement à obtenir les ressources dont vos charges de travail ont besoin. Par exemple, pour empêcher GKE de revenir à des machines à usage général lorsqu'un accélérateur spécialisé préféré n'est pas disponible, ajoutez le paramètre
whenUnsatisfiable: DoNotScaleUpà votre configuration ComputeClass. Pour en savoir plus, consultez Contrôler les attributs de nœud avec autoscaling à l'aide de ComputeClasses personnalisées.Activez la migration active (
optimizeRulePriority: true) pour les charges de travail sans état ou tolérantes aux interruptions : configurez la migration active dans votre ComputeClass pour que GKE isole, draine et remplace automatiquement les nœuds de remplacement par votre série de machines de priorité supérieure lorsque la capacité est rétablie à cet emplacement.Utilisez des StorageClasses dynamiques pour le remplacement intergénérationnel : dans GKE version 1.35.3-gke.1290000 et ultérieures, lorsqu'une ComputeClass couvre des séries Hyperdisk uniquement (comme C4, C4D et N4) et des séries Persistent Disk (comme N2 et N2D), configurez les charges de travail avec état de sorte que GKE sélectionne dynamiquement un type de disque compatible. Pour ce faire, utilisez une StorageClass avec la sélection automatique du type de disque (
parameters.type: dynamic) et le paramètrevolumeBindingMode: WaitForFirstConsumer.Référencez les ComputeClasses dans les spécifications de pod : dans les spécifications de pod de votre charge de travail, utilisez l'étiquette
cloud.google.com/compute-classpour cibler votre ComputeClass personnalisée au lieu d'une famille de machines ou d'un type de GPU spécifiques. Pour en savoir plus, consultez Demander une ComputeClass dans une charge de travail.Définissez plusieurs tolérances : si vous n'utilisez pas de ComputeClasses, utilisez des règles d'affinité de nœud dans vos spécifications de pod qui autorisent une plage de familles de machines (telles que
cloud.google.com/machine-familydans["n4", "n4d", "c4", "c4d"]). Pour en savoir plus, consultez Configurer la création automatique de pools de nœuds.
Flexibilité géographique et multirégionale sur GKE
Pour augmenter la disponibilité de la capacité, déployez des clusters GKE qui s'étendent sur plusieurs zones ou exécutez des architectures multiclusters :
Clusters multizones : assurez-vous que les pools de nœuds sont configurés pour l'autoscaling dans toutes les zones disponibles d'une région.
Fédération de clusters multirégionaux : pour les jobs asynchrones volumineux (comme l'inférence par lot hors connexion ou l'entraînement distribué), déployez un orchestrateur multicluster (comme Kueue ou Cluster Director) pour mettre en file d'attente les charges de travail de manière globale et les répartir dans une région disposant de capacité disponible.
Pods s'exécutant sur des VM Spot : exécutez des charges de travail interruptibles sur des VM Spot en ajoutant des tolérances et en demandant à GKE de répartir la capacité excédentaire dans différentes zones.
Autres bonnes pratiques pour la flexibilité, l'efficacité et la disponibilité de la capacité de calcul dans GKE
Au-delà de la diversification du matériel, intégrez ces bonnes pratiques GKE pour optimiser le scaling des clusters :
- Utiliser des tampons de capacité : réservez de manière proactive de la capacité de nœud de réserve afin que les charges de travail d'IA à priorité élevée puissent être planifiées immédiatement sans attendre le provisionnement de nouveaux nœuds. Vous pouvez utiliser des tampons de capacité déclaratifs avec la stratégie de tampon actif pour les charges de travail GPU et TPU afin que l'autoscaler de cluster maintienne automatiquement une capacité de réserve.
- Utiliser le démarrage flexible avec le provisionnement en file d'attente : pour les jobs d'entraînement de modèles d'IA et de traitement par lot volumineux, utilisez le démarrage flexible avec le provisionnement en file d'attente, qui s'intègre à Kueue et au programmeur de charge de travail dynamique. Le démarrage flexible avec provisionnement en file d'attente utilise une allocation de nœuds atomique de type tout ou rien, ce qui évite les échecs de scaling à la hausse partiel des clusters. Pour en savoir plus, consultez Exécuter une charge de travail à grande échelle avec le démarrage flexible et le provisionnement en file d'attente.
- Activez le streaming d'images et le préchargement d'images de conteneurs : pour les images de conteneurs d'IA volumineuses (telles que les images PyTorch ou TensorFlow de plus de 10 Go), activez le streaming d'images GKE ou utilisez des disques de démarrage secondaires pour le préchargement d'images. Cette configuration réduit le temps de préchauffage des nœuds, ce qui permet aux nœuds nouvellement provisionnés de commencer à exécuter des charges de travail en quelques secondes. Pour en savoir plus, consultez Utiliser le streaming d'images pour extraire des images de conteneur et Utiliser des disques de démarrage secondaires pour précharger des données ou des images de conteneurs.
- Définissez la règle d'emplacement de l'autoscaler de cluster sur
ANY: configurez les pools de nœuds (en particulier pour les VM Spot ou le démarrage flexible) avec la règle d'emplacementANY. Ce paramètre indique à l'autoscaler de cluster de rechercher la capacité demandée dans toutes les zones spécifiées. L'autoscaler de cluster trouve de la capacité en équilibrant le nombre de nœuds. Pour en savoir plus, consultez la présentation de l'autoscaler de cluster. - Optimisez l'utilisation des accélérateurs avec le partage de GPU : pour les charges de travail qui ne nécessitent pas de GPU dédié, utilisez le temps partagé des GPU, les GPU multi-instances (MIG) ou NVIDIA MPS pour permettre à plusieurs conteneurs de partager un seul accélérateur. Cette approche optimise la capacité effective des pools de nœuds. Pour en savoir plus, consultez À propos des stratégies de partage de GPU dans GKE.
Utiliser Compute Advisor
Compute Advisor est une interface optimisée par l'IA dans la consoleCloud de Confiance , optimisée par Gemini, qui vous aide à concevoir des architectures résilientes et rentables pour GKE.
Compute Advisor fournit des conseils de disponibilité en temps quasi réel pour les VM Flex-start et les VM Spot, tout en vérifiant les règles et les quotas de ressources de votre organisation avant le déploiement. Compute Advisor ne fournit pas de conseils sur la disponibilité pour les charges de travail qui nécessitent des ressources à la demande.
Pour accéder à Gemini dans la console Cloud de Confiance , procédez comme suit :
-
Dans la console Cloud de Confiance , accédez à la page Présentation.
-
Dans la section Concevez votre infrastructure avec Compute Advisor, envoyez un prompt. Gemini commence à générer une réponse.
-
Pour générer des recommandations architecturales, exécutez l'un des exemples de requêtes suivants dans Compute Advisor. Lorsque vous cliquez sur les boutons Exécuter la requête dans Compute Advisor, le chargement de la console Cloud de Confiance peut prendre plus de 15 secondes :
Stratégie générale d'accélérateur :
Cas d'utilisation : utilisez ce prompt pour analyser les signaux de capacité régionaux et recevoir des recommandations sur les types de machines, les zones et les stratégies de planification de remplacement lors de la conception des configurations de cluster.
Configure a GKE cluster to improve chances of obtaining scarce GPU or TPU capacity.Flexibilité géographique et solutions de remplacement :
Cas d'utilisation : utilisez ce prompt lorsque vous concevez des architectures multiclusters ou des systèmes de mise en file d'attente de jobs globaux (par exemple, avec Kueue) pour déplacer l'exécution des charges de travail entre les régions en fonction de la disponibilité des ressources.
Configure multi-region fallbacks and geographic scheduling on GKE to increase GPU availability.Consommation des réservations prioritaires :
Cas d'utilisation : utilisez ce prompt pour générer des modèles de configuration YAML pour l'affinité des pods et les règles d'autoscaling qui priorisent la capacité de réservation.
Configure GKE autoscaling rules and Pod specs to prioritize consuming active reservations before scaling into on-demand pools.ComputeClasses pour la priorisation du remplacement :
Cas d'utilisation : utilisez ce prompt pour générer le fichier manifeste YAML d'une CustomResourceDefinition ComputeClass qui donne la priorité aux GPU hautes performances, mais inclut des remplacements de niveau inférieur pour garantir la planification des charges de travail.
Define a ComputeClass manifest for GKE to prioritize A3 GPU nodes with automatic fallbacks to G2 (L4) GPUs.Création automatique de pools de nœuds pour la diversification :
Cas d'utilisation : utilisez ce prompt pour écrire le fichier manifeste YAML pour les limites de ressources de l'autoscaler de cluster GKE et les règles d'affinité de pod qui permettent au NAP de provisionner automatiquement des nœuds GPU ou CPU alternatifs.
Configure GKE node pool auto-creation to diversify machine families and prevent pending pods when regional accelerator capacity is constrained.
Étapes suivantes
- Concevoir et optimiser des clusters GKE avec Compute Advisor
- Configurer la création automatique de pools de nœuds
- Résoudre les problèmes liés à l'autoscaling horizontal des pods