Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Surveiller les superclusters de GPU sur Oracle Cloud Infrastructure avec NVIDIA Data Center GPU Manager, Grafana et Prometheus
Introduction
L'intelligence artificielle (IA) et le machine learning (ML) sur les superclusters de GPU NVIDIA Oracle Cloud Infrastructure (OCI) ont été annoncés plus tôt cette année. Pour de nombreux clients exécutant ce type de charge de travail basée sur GPU à grande échelle, la surveillance peut être un défi. OCI propose d'excellentes solutions de surveillance prêtes à l'emploi, notamment des mesures d'instance de GPU, mais une intégration plus approfondie dans les mesures de GPU pour OCI Superclusters intéresse nos clients.
La configuration de la surveillance GPU est un processus simple. Si vous êtes un client qui utilise déjà la pile HPC Marketplace, la plupart des outils sont déjà inclus dans cette image de déploiement.
Objectifs
- Surveillez les superclusters GPU OCI avec NVIDIA Data Center GPU Manager, Grafana et Prometheus.
Prérequis
Assurez-vous que ces prérequis sont installés sur chaque instance de GPU. La solution de surveillance nécessite ensuite l'installation et l'exécution du conteneur Docker d'exportateur NVIDIA Data Center GPU Manager (DCGM), pour capturer les mesures de sortie à l'aide de Prometheus et enfin afficher les données dans Grafana.
Tâche 1 : installation et exécution du conteneur Docker de l'exportateur NVIDIA DCGM
L'installation et l'exécution du conteneur NVIDIA DCGM sont effectuées avec une commande docker.
-
Exécutez la commande suivante pour un conteneur Docker non persistant. Cette méthode d'exécution ne redémarre pas le conteneur docker en cas d'arrêt du service docker ou de réinitialisation du serveur GPU.
docker run -d --gpus all --rm -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.2.3-3.1.6-ubuntu20.04 -
Si la persistance est souhaitée, cette méthode d'exécution doit être utilisée à la place.
docker run --restart unless-stopped -d --gpus all -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.2.3-3.1.6-ubuntu20.04Remarque : assurez-vous que le service docker est configuré pour se charger à l'initialisation pour que cet exemple soit conservé après les réinitialisations.
Ces deux méthodes exigent que les noeuds GPU disposent d'un accès Internet (la passerelle NAT est la plus courante) afin de télécharger et d'exécuter le conteneur d'exportateur DCGM. Ce conteneur doit être exécuté sur chaque noeud GPU surveillé. Une fois en cours d'exécution, l'étape suivante consiste à configurer Prometheus sur un noeud de calcul distinct, idéalement dans un réseau en périphérie et accessible directement via Internet.
Tâche 2 : installation de Prometheus
L'installation de Prometheus se fait en téléchargeant et en décompressant la dernière version. Mettez à jour cette syntaxe lorsque de nouvelles versions sont disponibles en modifiant les numéros de version, le cas échéant.
-
Extrayez le package.
wget https://github.com/prometheus/prometheus/releases/download/v2.37.9/prometheus-2.37.9.linux-amd64.tar.gz -O /opt/prometheus-2.37.9.linux-amd64.tar.gz -
Modifiez le répertoire.
cd /opt -
Extrayez le package.
tar -zxvf prometheus-2.37.9.linux-amd64.tar.gz -
Une fois déballé, un YAML de configuration Prometheus doit être généré pour gratter les données DCGM des noeuds GPU. Commencez par les en-têtes standard. Dans ce cas, nous effectuons le déploiement vers
/etc/prometheus/prometheus.yaml.sudo mkdir -p /etc/prometheus -
Modifiez le fichier YAML avec l'éditeur de votre choix. La section d'en-tête inclut la configuration globale standard.
# my global config global: scrape_interval: 5s # Set the scrape interval to every 5 seconds. Default is every 1 minute. evaluation_interval: 30s # Evaluate rules every 30 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: -
A présent, pour que les cibles soient supprimées, des entrées doivent être insérées pour chaque hôte GPU. Il peut être généré par programmation et doit utiliser des adresses IP d'hôte ou des noms d'hôte DNS pouvant être résolus.
scrape_configs: - job_name: 'gpu' scrape_interval: 5s static_configs: - targets: ['host1_ip:9400','host2_ip:9400', … ,'host64_ip:9400']Remarque : la section Cibles est abrégée pour cet article et le "host1_ip" utilisé ici doit être une adresse IP ou un nom d'hôte pouvant être résolu pour chaque hôte GPU.
-
Une fois ce fichier en place, un script SystemD doit être créé pour que le service Prometheus puisse être démarré, géré et rendu persistant. Modifiez
/lib/systemd/system/prometheus.serviceavec l'éditeur de votre choix (en tant qu'utilisateur root ou sudo).[Unit] Description=Prometheus daemon After=network.target [Service] User=root Group=root Type=simple ExecStart=/opt/prometheus-2.37.9.linux-amd64/prometheus --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/data \ --storage.tsdb.max-block-duration=2h \ --storage.tsdb.min-block-duration=2h \ --web.enable-lifec PrivateTmp=true [Install] WantedBy=multi-user.target -
Enfin, un répertoire de données doit être créé. Dans l'idéal, un volume de stockage de blocs doit être utilisé ici pour fournir un stockage dédié et résilient pour les données Prometheus. Dans l'exemple ci-dessus, la cible est un volume de blocs monté sur
/datasur le noeud de calcul, comme indiqué dans la directivestorage.tsdb.path. -
Toutes les pièces Prometheus sont maintenant en place et le service peut être démarré.
sudo systemctl start prometheus -
Vérifiez le statut pour vous assurer qu'il est en cours d'exécution à l'aide de la commande suivante.
systemctl status prometheus -
Vérifiez que les données sont présentes.
ls /data/
Tâche 3 : configuration du tableau de bord Grafana
Le dernier élément de cette configuration est le tableau de bord Grafana. L'installation de Grafana nécessite l'activation du référentiel logiciel Grafana. Pour plus de détails, reportez-vous à Documents Grafana.
-
Pour Oracle Enterprise Linux, installez la clé GPG, configurez le référentiel de logiciels, puis exécutez une installation yum pour le serveur Grafana.
-
Démarrez le serveur Grafana et assurez-vous que le VCN dispose d'un port ouvert pour accéder à l'interface graphique. Un tunnel SSH peut également être utilisé si l'accès en périphérie est interdit. De toute façon, le serveur est accessible sur le port TCP 3000.
sudo systemctl start grafana-server -
Connectez-vous à l'interface graphique Grafana, puis le mot de passe administrateur devra être modifié lors de la première étape de connexion. Une fois cela fait, accédez aux sources de données afin de configurer Prometheus en tant que source de données.

-
Dans ce cas, l'entrée source Prometheus utilise localhost:9090 en sélectionnant "+ Ajouter une nouvelle source de données", sélectionnez Prometheus, puis remplissez la section URL HTTP.

-
Une fois cette opération terminée, faites défiler la page vers le bas et cliquez sur Enregistrer et tester, puis validez la connexion. Enfin, le tableau de bord DCGM de NVIDIA peut être importé. Accédez au menu Tableaux de bord.

-
Choisissez Nouveau et Importer.

-
Entrez l'ID de tableau de bord de l'exportateur NVIDIA DCGM "12239", cliquez sur Charger, sélectionnez Prometheus comme source de données dans la liste déroulante, puis cliquez sur Importer.


Une fois importé, le tableau de bord NVIDIA DCGM affiche les informations GPU pour les hôtes de cluster ciblés par Prometheus. Prêt à l'emploi, le tableau de bord contient des informations précieuses pour une plage de dates/heures donnée.
Exemples :
-
Température

-
Power

-
Horloge SM

-
Utilisation

Ces données de surveillance peuvent être précieuses pour les clients qui souhaitent obtenir des informations plus approfondies sur leur infrastructure tout en exécutant des workloads d'IA/ML sur les superclusters de GPU OCI. Si vous disposez de workloads basés sur des GPU IA/ML qui nécessitent un réseau de cluster ultra-rapide, envisagez OCI pour son évolutivité leader du secteur à un prix bien supérieur à celui des autres fournisseurs cloud.
Liens connexes
Accusés de réception
Auteur - Zachary Smith (membre principal du personnel technique, OCI IaaS - Engagement produit et client)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Monitor GPU Superclusters on Oracle Cloud Infrastructure with NVIDIA Data Center GPU Manager, Grafana and Prometheus
F87825-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.