Cette page vous aide à envisager les différentes options pour demander des GPU dans Google Kubernetes Engine (GKE), y compris :
- Choisir des ressources GPU et des fonctionnalités d'efficacité pour vos charges de travail GKE
- Choisir votre quota de GPU, c'est-à-dire le nombre maximal de GPU pouvant s'exécuter dans votre projet
- Choisir entre les modes Autopilot et Standard
- Choisir des fonctionnalités pour réduire la quantité de ressources GPU sous-utilisées
- Accéder aux bibliothèques NVIDIA CUDA-X pour les applications CUDA
- Surveiller les métriques de nœuds GPU
- Gérer les perturbations causées par la maintenance des nœuds
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 |
|
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 :
|
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 :/usr/local/cuda-CUDA_VERSION/lib64
: emplacement des bibliothèques NVIDIA CUDA-X sur le nœud. RemplacezCUDA_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./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 :
Accédez à la page Charges de travail dans la console Google Cloud.
Accéder à la page Charges de travail- 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.