À propos des GPU dans Google Kubernetes Engine (GKE)


Cette page vous aide à envisager les différentes options pour demander des GPU dans Google Kubernetes Engine (GKE), y compris :

Dans GKE, la façon dont vous demandez du matériel GPU varie selon que vous utilisez les modes Autopilot ou Standard. Dans le mode Autopilot, vous demandez du matériel GPU en spécifiant des ressources GPU dans vos charges de travail. Dans le mode Standard, vous pouvez associer le matériel GPU aux nœuds de vos clusters, puis allouer des ressources GPU à des charges de travail conteneurisées s'exécutant sur ces nœuds. Pour savoir comment associer et utiliser des GPU dans vos charges de travail, consultez les pages Déployer des charges de travail GPU dans Autopilot ou Exécuter des GPU sur des pools de nœuds standards.

Le matériel GPU disponible dans GKE est un sous-ensemble des GPU Compute Engine pour les charges de travail Compute. Le matériel spécifique disponible dépend de la région ou de la zone Compute Engine de votre cluster. Pour plus d'informations sur la disponibilité, consultez la page Régions et zones des GPU.

GKE propose certaines fonctionnalités spécifiques aux GPU pour améliorer l'utilisation efficace des ressources GPU pour les charges de travail exécutées sur vos nœuds, y compris le partage de temps, les GPU multi-instances et les GPU multi-instances avec NVIDIA MPS.

Planifier le quota de GPU

Votre quota de GPU est le nombre maximal de GPU pouvant s'exécuter dans votre projet Google Cloud. Pour utiliser des GPU dans vos clusters GKE, votre projet doit posséder un quota suffisant de GPU.

Votre quota de GPU doit être au moins équivalent au nombre total de GPU que vous avez l'intention d'exécuter dans le cluster. Si vous activez l'autoscaling de cluster, vous devez demander un quota de GPU au moins équivalent au nombre maximal de nœuds du cluster, multiplié par le nombre de GPU par nœud.

Par exemple, si vous prévoyez d'utiliser trois nœuds avec deux GPU chacun, six GPU correspondent au quota de GPU sont requis pour votre projet.

Pour demander un quota de GPU supplémentaire, suivez les instructions de la section Demander une augmentation de limite de quota, en utilisant gpus comme métrique.

Choisir la compatibilité GPU avec les clusters Autopilot ou Standard

Les GPU sont disponibles dans les clusters Autopilot et Standard. Nous vous recommandons d'utiliser les clusters Autopilot pour une expérience Kubernetes entièrement gérée. Dans Autopilot, GKE gère l'installation des pilotes, le scaling des nœuds, l'isolation des pods et le provisionnement des nœuds.

Le tableau suivant présente les différences entre la compatibilité Autopilot et Standard des GPU :

Description Autopilot Standard
Demander du matériel GPU Spécifiez des ressources GPU dans vos charges de travail. Associez le matériel GPU aux nœuds de vos clusters, puis allouez des ressources GPU à des charges de travail conteneurisées s'exécutant sur ces nœuds.
Disponibilité du matériel GPU
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 40 Go
  • NVIDIA A100 80 Go
  • NVIDIA H100 80 Go
Tous les types de GPU compatibles avec Compute Engine
Sélectionner un GPU Vous demandez une quantité et un type de GPU dans la spécification de votre charge de travail. Par défaut, Autopilot installe le pilote par défaut pour cette version de GKE et gère vos nœuds. Pour sélectionner une version de pilote spécifique dans Autopilot, consultez la section Sélection des pilotes NVIDIA pour les pods de GPU Autopilot. Suivez les étapes décrites sur la page Exécuter des GPU sur des pools de nœuds Standard :
  1. Créez un pool de nœuds avec le type de GPU spécifique et le type de machine Compute Engine correspondant, puis choisissez un pilote à installer.
  2. Installez manuellement les pilotes de GPU sur les nœuds si vous n'avez pas utilisé l'installation automatique.
  3. Demandez des quantités de GPU dans la spécification de pod.
Améliorer l'utilisation des GPU
Sécurité GPU avec GKE Sandbox GPU avec GKE Sandbox
Tarification Tarifs des pods GPU Autopilot Tarifs des GPU Compute Engine

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

Optimiser l'utilisation des ressources à l'aide des fonctionnalités des GPU dans GKE

Par défaut, Kubernetes n'accepte que l'attribution de GPU sous forme d'unités entières aux conteneurs, mais GKE fournit des fonctionnalités supplémentaires que vous pouvez utiliser pour optimiser l'utilisation des ressources de vos charges de travail GPU.

Les fonctionnalités suivantes sont disponibles dans GKE pour réduire la quantité de ressources GPU sous-utilisées :

Fonctionnalités des GPU
GPU multi-instances

Disponible sur : Autopilot et Standard

Divisez un seul GPU en sept instances maximum séparées par du matériel, pouvant être attribuées en tant que GPU individuels aux conteneurs d'un nœud. Chaque conteneur attribué obtient les ressources disponibles pour cette instance.

GPU de partage de temps

Disponible sur : Autopilot et Standard

Présenter un seul GPU en tant qu'unités multiples dans plusieurs conteneurs sur un nœud. Le contexte du pilote de GPU bascule et alloue les ressources GPU complètes à chaque conteneur attribué en fonction des besoins au fil du temps.

NVIDIA MPS

Disponibilité : Standard

Partagez un seul GPU NVIDIA physique sur plusieurs conteneurs. NVIDIA MPS est une autre implémentation de l'API CUDA compatible binaire, conçue pour permettre aux applications CUDA coopératives multiprocessus de s'exécuter simultanément sur un seul appareil GPU de manière transparente.

Accéder aux bibliothèques NVIDIA CUDA-X pour les applications CUDA

CUDA est la plate-forme informatique parallèle et le modèle de programmation NVIDIA pour les GPU. Pour utiliser des applications CUDA, l'image que vous utilisez doit disposer des bibliothèques. Pour ajouter les bibliothèques NVIDIA CUDA-X, utilisez l'une des méthodes suivantes :

  • Recommandé : Utilisez une image sur laquelle les bibliothèques NVIDIA CUDA-X sont préinstallées. Vous pouvez par exemple utiliser des Conteneurs de deep learning. Ces conteneurs préinstallent les principaux frameworks de data science, les bibliothèques NVIDIA CUDA-X et les outils. L'image NVIDIA CUDA ne contient que les bibliothèques NVIDIA CUDA-X.
  • Créez et utilisez votre propre image. Dans ce cas, incluez les valeurs suivantes dans la variable d'environnement LD_LIBRARY_PATH dans la spécification de votre conteneur :
    1. /usr/local/cuda-CUDA_VERSION/lib64 : emplacement des bibliothèques NVIDIA CUDA-X sur le nœud. Remplacez CUDA_VERSION par la version d'image CUDA-X que vous avez utilisée. Certaines versions contiennent également des utilitaires de débogage dans /usr/local/nvidia/bin. Pour en savoir plus, consultez la page image NVIDIA CUDA sur DockerHub.
    2. /usr/local/nvidia/lib64 : emplacement des pilotes d'appareils NVIDIA.

Pour vérifier la version minimale du pilote de GPU requise pour votre version de CUDA, consultez les versions de pilote compatibles avec CUDA Toolkit. Assurez-vous que la version du correctif GKE exécutée sur vos nœuds inclut une version du pilote de GPU compatible avec la version CUDA choisie. Pour obtenir la liste des versions de pilotes de GPU associées à la version de GKE, consultez la page "Container-Optimized OS" correspondante indiquée dans le tableau des versions actuelles de GKE.

Dans les clusters Autopilot, GKE gère la sélection et l'installation des versions de pilotes.

Surveiller des nœuds GPU

Si les métriques système sont activées dans votre cluster GKE, les métriques suivantes sont disponibles dans Cloud Monitoring pour surveiller les performances des charges de travail des GPU :

  • Cycle d'utilisation (container/accelerator/duty_cycle) : durée exprimée en pourcentage de la dernière période d'échantillonnage (10 secondes) pendant laquelle l'accélérateur a été en mode de traitement actif. Entre 1 et 100.
  • Utilisation de la mémoire (container/accelerator/memory_used) : quantité de mémoire d'accélérateur allouée, en octets.
  • Capacité de mémoire (container/accelerator/memory_total) : mémoire totale de l'accélérateur, en octets.

Vous pouvez utiliser des tableaux de bord prédéfinis pour surveiller vos clusters avec des nœuds GPU. Pour en savoir plus, consultez la page Afficher les métriques d'observabilité. Pour obtenir des informations générales sur la surveillance de vos clusters et de leurs ressources, consultez la page Observabilité pour GKE.

Afficher les métriques d'utilisation des charges de travail

Pour afficher les métriques d'utilisation des GPU de vos charges de travail, vous devez accéder au tableau de bord Charges de travail dans la console Google Cloud.

Pour afficher l'utilisation des GPU des charges de travail, procédez comme suit :

  1. Accédez à la page Charges de travail dans la console Google Cloud.

    Accéder à la page Charges de travail
  2. Sélectionner une charge de travail

Le tableau de bord "Charges de travail" affiche les graphiques sur l'utilisation et la capacité de la mémoire des GPU, ainsi que leur cycle de travail.

Afficher les métriques du gestionnaire de GPU NVIDIA Data Center (DCGM)

Vous pouvez collecter et visualiser des métriques NVIDIA DCGM à l'aide de Google Cloud Managed Service pour Prometheus. Pour les clusters standards, vous devez installer les pilotes NVIDIA. Pour les clusters Autopilot, GKE installe les pilotes.

Pour obtenir des instructions sur le déploiement de DCGM et de l'exportateur DCGM de Prometheus, consultez la page NVIDIA Data Center GPU Manager (DCGM) dans la documentation sur l'observabilité de Google Cloud.

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

Les nœuds GKE qui hébergent les GPU sont soumis à des événements de maintenance ou à d'autres perturbations pouvant entraîner l'arrêt des nœuds.

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.

Vous pouvez configurer GKE pour envoyer un signal SIGTERM aux pods sur les nœuds sur le point d'être arrêtés, ce qui leur donne un délai de grâce pour terminer toute tâche en cours avant l'éviction. Dans le champ spec.terminationGracePeriodSeconds du fichier manifeste de votre pod, spécifiez un nombre de secondes allant jusqu'à un maximum de 3600 secondes (une heure). GKE fait de son mieux pour arrêter ces pods correctement et exécuter l'action d'arrêt que vous définissez, telle que l'enregistrement d'un état d'entraînement.

GKE respecte toute configuration de 60 minutes maximum pour les paramètres PodDisruptionBudget ou terminationGracePeriodSeconds. Pour en savoir plus, y compris sur l'interaction entre ces deux paramètres, consultez la section Configurer l'arrêt optimal des nœuds GPU.

Étapes suivantes