Surveiller l'utilisation des GPU sur OVHcloud Managed Kubernetes Service
Découvrez comment exposer, visualiser et surveiller les métriques GPU sur OVHcloud Managed Kubernetes Service
Objectif
Ce tutoriel vous montre comment surveiller une application GPU sur un cluster OVHcloud Managed Kubernetes.
Les GPU fournissent la puissance de calcul nécessaire pour exécuter des tâches d'IA/ML et de Deep Learning impliquant des calculs intensifs, comme la reconnaissance d'images/d'objets, le traitement du langage naturel (NLP), ainsi que d'autres tâches gourmandes en calcul telles que le transcodage vidéo et le traitement d'images. L'utilisation des GPU avec Kubernetes permet d'étendre la scalabilité de Kubernetes aux applications d'IA/ML. Il est cependant toujours important de garder à l'esprit le coût des GPU. Si chaque application utilise un GPU dédié dans des scénarios de prédiction de modèles, les ressources de calcul peuvent être gaspillées. Il est donc important de surveiller l'utilisation des GPU afin de pouvoir réagir rapidement, prendre les bonnes décisions et optimiser leur utilisation.
Avant de commencer
Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel, ainsi que de connaissances de base sur son fonctionnement. Pour en savoir plus sur ces sujets, consultez le guide Démarrer avec OVHcloud Managed Kubernetes Service.
Vous devez également avoir installé Helm sur votre poste de travail et sur votre cluster ; consultez le tutoriel Comment installer Helm sur OVHcloud Managed Kubernetes Service.
Vous devez également suivre le tutoriel Déployer une application GPU sur OVHcloud Managed Kubernetes pour installer l'opérateur GPU NVIDIA et configurer correctement votre cluster avec les composants nécessaires pour ce guide.
En pratique
Dans ce guide, vous allez :
- installer l'opérateur Prometheus (il installera Prometheus et Grafana)
- utiliser le Data Center GPU Manager (DCGM) de NVIDIA pour exposer les métriques GPU à Prometheus
- déployer une application pour démontrer l'inférence accélérée par GPU et générer du trafic
- visualiser les métriques
DCGM et DCGM Exporter
NVIDIA Data Center GPU Manager (DCGM) est un ensemble d'outils permettant de gérer et de surveiller les GPU NVIDIA dans des environnements de cluster. Il s'agit d'une suite d'outils légère qui assure diverses fonctions sur chaque système hôte, notamment la surveillance active de l'état de santé, le diagnostic, la validation du système, les politiques, la gestion de l'alimentation et de l'horloge, ainsi que la configuration et la comptabilisation des groupes.
Pour collecter la télémétrie GPU dans Kubernetes, l'opérateur GPU NVIDIA déploie dcgm-exporter, qui repose sur DCGM pour exposer les métriques GPU à Prometheus et permettre leur visualisation avec Grafana.
dcgm-exporter est conçu pour tirer parti de la KubeletPodResources API et expose les métriques GPU dans un format que Prometheus peut scraper.
Comme vous avez déjà suivi le tutoriel Déployer une application GPU sur OVHcloud Managed Kubernetes, dcgm-exporter devrait déjà être en cours d'exécution dans votre cluster.
Opérateur Prometheus
L'opérateur Prometheus fournit un déploiement et une gestion natifs Kubernetes de Prometheus et des composants de monitoring associés.
L'objectif de ce projet est de simplifier et d'automatiser la configuration d'une stack de monitoring basée sur Prometheus pour les clusters Kubernetes. L'opérateur Prometheus déploie également un tableau de bord Grafana, pour visualiser vos métriques de manière conviviale.
Si l'opérateur vous intéresse, n'hésitez pas à consulter la documentation officielle de l'opérateur Prometheus.
Installer l'opérateur Prometheus
Pour ce tutoriel, nous utilisons le chart Helm de l'opérateur Prometheus disponible sur le dépôt Prometheus Community.
Ajoutez le dépôt Helm Prometheus :
Cela ajoutera le dépôt Prometheus et mettra à jour tous vos dépôts :
Vous devez modifier certains paramètres. Pour cela, vous allez inspecter le chart afin de récupérer ces valeurs dans un fichier :
Ouvrez le fichier /tmp/kube-prometheus-stack.values dans votre éditeur préféré.
Ensuite, dans ce fichier, recherchez additionalScrapeConfigs (la valeur doit être vide [] par défaut). Vous allez ajouter une ConfigMap à cette section.
Avant :
Après :
Ne fermez pas ce fichier avant d'avoir récupéré ou modifié la clé adminPassword.
Par défaut, le mot de passe Grafana devrait ressembler à ceci :
Copiez le mot de passe administrateur Grafana, vous l'utiliserez plus tard dans ce tutoriel.
Vous êtes maintenant prêt à installer Prometheus et Grafana.
Comme vous pouvez le voir, un nouveau namespace prometheus sera créé, et nous avons spécifié que nous souhaitons déployer un LoadBalancer afin d'accéder facilement à Prometheus et Grafana depuis l'extérieur.
Vous devriez obtenir un résultat similaire à celui-ci :
Vous pouvez également vérifier en consultant les Pods dans le nouveau namespace prometheus avec la commande kubectl get pods -n prometheus :
Vous pouvez aussi vérifier que Prometheus et Grafana disposent d'une IP externe :
Si ce n'est pas le cas, veuillez attendre que les Load Balancers soient correctement créés.
Visualiser les métriques
Vous pouvez maintenant récupérer les URL de Prometheus et Grafana grâce aux commandes suivantes :
Vous devriez obtenir le résultat suivant :
Ouvrez votre navigateur et accédez à l'interface Prometheus.
Comme vous avez déjà déployé DCGM avec l'opérateur GPU NVIDIA, DCGM devrait déjà avoir commencé à publier des métriques vers Prometheus. La disponibilité des métriques peut être vérifiée en saisissant DCGM_FI_DEV_GPU_UTIL dans la barre de recherche. Cliquez sur le bouton Execute pour déterminer si les métriques GPU sont visibles :
Vous pouvez vérifier l'utilisation des GPU avec plusieurs métriques dans Prometheus :
DCGM_FI_DEV_GPU_UTIL: utilisation du GPU.DCGM_FI_DEV_SM_CLOCK: fréquence d'horloge SM (en MHz).DCGM_FI_DEV_MEM_CLOCK: fréquence d'horloge mémoire (en MHz).DCGM_FI_DEV_MEMORY_TEMP: température mémoire (en °C).
Vous trouverez la liste complète des métriques exportées par DCGM-exporter sur le site de NVIDIA.
Vous pouvez également accéder à l'interface Grafana. Ouvrez votre navigateur et accédez à l'adresse http://$GRAFANA_URL en utilisant les identifiants ci-dessous :
- Identifiant :
admin - Mot de passe :
prom-operator(par défaut)
Tableau de bord DCGM dans Grafana
Vous disposez maintenant de Prometheus et Grafana en cours d'exécution ; vous devez à présent ajouter un tableau de bord pour DCGM.
Pour cela, vous pouvez utiliser un tableau de bord standard publié par NVIDIA, qui peut également être personnalisé.
Pour ajouter le tableau de bord, dans la barre latérale de Grafana, cliquez sur + -> Import :
Importez le tableau de bord NVIDIA depuis https://grafana.com/grafana/dashboards/12239, puis cliquez sur le bouton Load :
Choisissez ensuite Prometheus comme source de données dans le menu déroulant, puis cliquez sur le bouton Import :
Vous devriez maintenant voir votre nouveau tableau de bord :
Si vous avez suivi le tutoriel Déployer une application GPU sur OVHcloud Managed Kubernetes, vous devriez voir des métriques similaires à notre exemple.
Vous pouvez cliquer sur le menu déroulant instance afin de visualiser les métriques GPU d'un autre nœud, par exemple :
Visualiser les métriques pour des applications en cours d'exécution
Maintenant que vous disposez d'une stack de monitoring fonctionnelle et d'un tableau de bord pour visualiser vos données, il est temps d'exécuter une application afin de récupérer des métriques GPU et de visualiser des données intéressantes.
Comme exemple d'application complexe et intéressante utilisant le GPU, vous pouvez utiliser la démo standard DeepStream Intelligent Video Analytics disponible sur le registre NVIDIA NGC.
Il s'agit d'une démo d'analyse vidéo facile à déployer qui permet de démontrer l'analyse vidéo accélérée par GPU. Le conteneur repose sur le conteneur NVIDIA DeepStream et exploite son SEnet intégré avec un backend resnet18.
La démo Intelligent Video Analytics :
- est une démo facile à utiliser pour démontrer l'inférence accélérée par GPU
- repose sur le
NGC Deepstream Container - s'appuie sur
Kubernetes,Helm,NGCetDeepStream - ne nécessite pas de
Video Management System (VMS)
Vous pouvez déployer l'application via le chart Helm NVIDIA :
Vous devriez obtenir un résultat similaire à celui-ci :
Vous pouvez vérifier que l'application fonctionne correctement :
Les Pods video-analytics-demo-* et video-analytics-demo-*-webui-* sont en cours d'exécution.
La démo peut être consultée dans le navigateur en accédant à l'adresse fournie par les instructions suivantes :
Résultat :
Ouvrez l'URL de l'application dans votre navigateur :
Cliquez sur le bouton play (le bouton avec un triangle) pour démarrer l'application :
Comme vous pouvez le constater, l'application, qui peut être utilisée pour des cas d'usage de villes intelligentes, exploite la puissance du GPU pour détecter des objets tels que des personnes et des voitures.
Vous pouvez maintenant vérifier les métriques dans Grafana et observer l'évolution des graphiques :
Ces captures d'écran montrent l'utilisation du GPU et l'allocation mémoire sur le GPU pendant l'exécution de l'application.
Vous pouvez fermer l'application une fois vos tests terminés afin d'arrêter la consommation du GPU.
Suppression (nettoyage)
Exécutez d'abord la commande helm list dans tous les namespaces (avec l'option -A) de votre cluster Kubernetes pour voir ce que vous avez installé.
Vous pouvez maintenant supprimer ce que vous avez installé dans ce tutoriel, grâce aux commandes helm uninstall :
Vous devriez obtenir un résultat similaire à celui-ci :
Aller plus loin
Prometheus et Grafana sont des outils de monitoring très puissants, qui disposent également de systèmes d'alerte. N'hésitez pas à approfondir le sujet afin de créer des alertes, par exemple.
Pour en savoir plus sur l'utilisation pratique de votre cluster Kubernetes, nous vous invitons à consulter notre documentation OVHcloud Managed Kubernetes.
-
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.
-
Échangez avec notre communauté d'utilisateurs.