En février 2022, Amazon Web Services a ajouté prise en charge des métriques GPU NVIDIA dans Amazon CloudWatch, permettant de pousser les métriques du Agent Amazon Cloud Watch à Amazon Cloud Watch et surveillez votre code pour une utilisation optimale du GPU. Depuis lors, cette fonctionnalité a été intégrée à bon nombre de nos Amazon Machine Images (AMI) gérées, telles que AMI d'apprentissage en profondeur et les terres parsemées de AMI AWS ParallelCluster. Pour obtenir des métriques d'utilisation du GPU au niveau de l'instance, vous pouvez utiliser Packer ou Amazon ImageBuilder pour amorcer votre propre AMI personnalisée et l'utiliser dans diverses offres de services gérés telles que Lot AWS, Service de conteneur élastique Amazon (Amazon ECS), ou Service Amazon Elastic Kubernetes (Amazon EKS). Toutefois, pour de nombreuses offres de services et charges de travail basées sur des conteneurs, il est idéal de capturer les métriques d'utilisation au niveau du conteneur, du pod ou de l'espace de noms.
Cet article explique comment configurer des métriques GPU basées sur des conteneurs et fournit un exemple de collecte de ces métriques à partir des pods EKS.
Vue d'ensemble de la solution
Pour démontrer les métriques GPU basées sur des conteneurs, nous créons un cluster EKS avec g5.2xlarge
instances; cependant, cela fonctionnera avec n'importe quelle famille d'instances accélérées NVIDIA prise en charge.
Nous déployons l'opérateur NVIDIA GPU pour permettre l'utilisation des ressources GPU et le Exportateur NVIDIA DCGM pour activer la collecte de métriques GPU. Nous explorons ensuite deux architectures. Le premier connecte les métriques de NVIDIA DCGM Exporter à CloudWatch via un agent CloudWatch, comme indiqué dans le diagramme suivant.
La deuxième architecture (voir le schéma suivant) connecte les métriques de DCGM Exporter à Prométhée, alors on utilise un grafana tableau de bord pour visualiser ces métriques.
Pré-requis
Pour simplifier la reproduction de l'intégralité de la pile à partir de cet article, nous utilisons un conteneur sur lequel tous les outils requis (aws cli, eksctl, helm, etc.) sont déjà installés. Afin de cloner le projet de conteneur de GitHub, Tu auras besoin de jet. Pour créer et exécuter le conteneur, vous aurez besoin Docker. Pour déployer l'architecture, vous aurez besoin Informations d'identification AWS. Pour activer l'accès aux services Kubernetes à l'aide de la redirection de port, vous aurez également besoin kubectl.
Ces prérequis peuvent être installés sur votre machine locale, Instance EC2 comprenant NICE DCVou AWSCloud9. Dans cet article, nous utiliserons un c5.2xlarge
Instance Cloud9 avec un 40GB
volume de stockage local. Lorsque vous utilisez Cloud9, veuillez désactiver les informations d'identification temporaires gérées par AWS en visitant Cloud9->Preferences->AWS Settings
comme le montre la capture d'écran ci-dessous.
Créez et exécutez le conteneur aws-do-eks
Ouvrez un shell de terminal dans votre environnement préféré et exécutez les commandes suivantes :
Le résultat est le suivant:
Vous disposez désormais d'un shell dans un environnement de conteneur doté de tous les outils nécessaires pour effectuer les tâches ci-dessous. Nous l’appellerons « shell aws-do-eks ». Vous exécuterez les commandes des sections suivantes dans ce shell, sauf indication contraire spécifique.
Créer un cluster EKS avec un groupe de nœuds
Ce groupe comprend une famille d'instances GPU de votre choix ; dans cet exemple, nous utilisons le g5.2xlarge
type d'instance.
Le projet aws-do-eks est livré avec une collection de configurations de cluster. Vous pouvez définir la configuration de cluster souhaitée avec une seule modification de configuration.
- Dans le shell du conteneur, exécutez
./env-config.sh
puis définissezCONF=conf/eksctl/yaml/eks-gpu-g5.yaml
- Pour vérifier la configuration du cluster, exécutez
./eks-config.sh
Vous devriez voir le manifeste de cluster suivant :
- Pour créer le cluster, exécutez la commande suivante dans le conteneur
La sortie est la suivante:
- Pour vérifier que votre cluster est créé avec succès, exécutez la commande suivante
Le résultat est similaire à ce qui suit :
Dans cet exemple, nous avons une instance m5.xlarge et une instance g5.2xlarge dans notre cluster ; par conséquent, nous voyons deux nœuds répertoriés dans la sortie précédente.
Pendant le processus de création du cluster, le plugin de périphérique NVIDIA sera installé. Vous devrez le supprimer après la création du cluster car nous utiliserons le Opérateur GPU NVIDIA à la place.
- Supprimez le plugin avec la commande suivante
Nous obtenons la sortie suivante :
Installez le dépôt NVIDIA Helm
Installez le dépôt NVIDIA Helm avec la commande suivante :
Déployer l'exportateur DCGM avec l'opérateur NVIDIA GPU
Pour déployer l'exportateur DCGM, procédez comme suit :
- Préparer la configuration des métriques GPU de l'exportateur DCGM
Vous avez la possibilité de modifier le dcgm-metrics.csv
déposer. Vous pouvez ajouter ou supprimer des métriques selon vos besoins.
- Créez l'espace de noms de l'opérateur GPU et l'exportateur DCGM ConfigMap
La sortie est la suivante:
- Appliquer l'opérateur GPU au cluster EKS
La sortie est la suivante:
- Confirmez que le pod d'exportateur DCGM est en cours d'exécution
La sortie est la suivante:
Si vous inspectez les journaux, vous devriez voir le “Starting webserver”
message:
La sortie est la suivante:
NVIDIA DCGM Exporter expose un point de terminaison de métriques Prometheus, qui peut être ingéré par l'agent CloudWatch. Pour voir le point de terminaison, utilisez la commande suivante :
Nous obtenons la sortie suivante :
- Pour générer une certaine utilisation du GPU, nous déployons un pod qui exécute le GPU-graver binaire
La sortie est la suivante:
Ce déploiement utilise un seul GPU pour produire un modèle continu d'utilisation à 100 % pendant 20 secondes suivi d'une utilisation à 0 % pendant 20 secondes.
- Pour vous assurer que le point de terminaison fonctionne, vous pouvez exécuter un conteneur temporaire qui utilise curl pour lire le contenu de
http://nvidia-dcgm-exporter:9400/metrics
Nous obtenons la sortie suivante :
Configurer et déployer l'agent CloudWatch
Pour configurer et déployer l'agent CloudWatch, procédez comme suit :
- Téléchargez le fichier YAML et modifiez-le
Le fichier contient un cwagent configmap
et prometheus configmap
. Pour cet article, nous modifions les deux.
- Modifiez le
prometheus-eks.yaml
filet
Ouvrez le prometheus-eks.yaml
fichier dans votre éditeur préféré et remplacez le cwagentconfig.json
section avec le contenu suivant :
- Dans le
prometheus
section config, ajoutez la définition de travail suivante pour l'exportateur DCGM
- Enregistrez le fichier et appliquez le
cwagent-dcgm
configuration à votre cluster
Nous obtenons la sortie suivante :
- Confirmez que le pod de l'agent CloudWatch est en cours d'exécution
Nous obtenons la sortie suivante :
Visualisez les métriques sur la console CloudWatch
Pour visualiser les métriques dans CloudWatch, procédez comme suit :
- Sur la console CloudWatch, sous Métrique dans le volet de navigation, choisissez Toutes les métriques
- Dans le Espaces de noms personnalisés section, choisissez la nouvelle entrée pour ContainerInsights/Prométhée
Pour plus d'informations sur la ContainerInsights/Prométhée espace de noms, reportez-vous à Supprimer des sources Prometheus supplémentaires et importer ces métriques.
- Accédez aux noms de métriques et choisissez
DCGM_FI_DEV_GPU_UTIL
- Sur le Graphiques métriques onglet, définir Période à en 5 secondes
- Définir l'intervalle de rafraîchissement sur 10 secondes
Vous verrez les métriques collectées par l'exportateur DCGM qui visualisent le gpu-burn
motif activé et désactivé toutes les 20 secondes.
Sur le Explorer , vous pouvez voir les données, y compris le nom du pod pour chaque métrique.
Les métadonnées de l'API EKS ont été combinées avec les données des métriques DCGM, ce qui a donné lieu aux métriques GPU basées sur les pods fournies.
Ceci conclut la première approche d'exportation des métriques DCGM vers CloudWatch via l'agent CloudWatch.
Dans la section suivante, nous configurons la deuxième architecture, qui exporte les métriques DCGM vers Prometheus, et nous les visualisons avec Grafana.
Utilisez Prometheus et Grafana pour visualiser les métriques GPU de DCGM
Effectuez les étapes suivantes:
- Ajouter le graphique de barre de la communauté Prometheus
Cette carte déploie à la fois Prometheus et Grafana. Nous devons apporter quelques modifications au graphique avant d'exécuter la commande d'installation.
- Enregistrez les valeurs de configuration du graphique dans un fichier dans
/tmp
- Modifier le fichier de configuration char
Modifiez le fichier enregistré (/tmp/kube-prometheus-stack.values
) et définissez l'option suivante en recherchant le nom du paramètre et en définissant la valeur :
- Ajoutez le ConfigMap suivant au
additionalScrapeConfigs
- Déployez la pile Prometheus avec les valeurs mises à jour
Nous obtenons la sortie suivante :
- Confirmez que les pods Prometheus sont en cours d'exécution
Nous obtenons la sortie suivante :
Les pods Prometheus et Grafana sont dans le Running
Etat.
Ensuite, nous validons que les métriques DCGM affluent vers Prometheus.
- Transférer le port de l'interface utilisateur de Prometheus
Il existe différentes manières d'exposer l'interface utilisateur Prometheus exécutée dans EKS aux requêtes provenant de l'extérieur du cluster. Nous utiliserons kubectl port-forwarding
. Jusqu'à présent, nous avons exécuté des commandes à l'intérieur du aws-do-eks
récipient. Pour accéder au service Prometheus exécuté dans le cluster, nous allons créer un tunnel depuis l'hôte. Ici le aws-do-eks
Le conteneur s'exécute en exécutant la commande suivante en dehors du conteneur, dans un nouveau shell de terminal sur l'hôte. Nous appellerons cela « shell hôte ».
- Ouvrez l'interface utilisateur de Prometheus
- Si vous utilisez Cloud9, veuillez accéder à
Preview->Preview Running Application
pour ouvrir l'interface utilisateur de Prometheus dans un onglet de l'IDE Cloud9, puis cliquez sur le bouton icône dans le coin supérieur droit de l’onglet pour apparaître dans une nouvelle fenêtre. - Si vous êtes sur votre hôte local ou connecté à une instance EC2 via un bureau à distance, ouvrez un navigateur et visitez l'URL
http://localhost:8080
.
- Si vous utilisez Cloud9, veuillez accéder à
- Entrer
DCGM
pour voir les métriques DCGM qui affluent vers Prometheus - Sélectionnez
DCGM_FI_DEV_GPU_UTIL
, choisissez Exécution, puis accédez au Graphique onglet pour voir le modèle d'utilisation du GPU attendu
- Arrêtez le processus de redirection de port Prometheus
Exécutez la ligne de commande suivante dans votre shell hôte :
Nous pouvons désormais visualiser les métriques DCGM via Grafana Dashboard.
- Récupérer le mot de passe pour vous connecter à l'interface utilisateur Grafana
- Transférer le port du service Grafana
Exécutez la ligne de commande suivante dans votre shell hôte :
- Connectez-vous à l'interface utilisateur de Grafana
Accédez à l'écran de connexion de l'interface utilisateur Grafana de la même manière que vous avez accédé à l'interface utilisateur Prometheus précédemment. Si vous utilisez Cloud9, sélectionnez Preview->Preview Running Application
, puis apparaît dans une nouvelle fenêtre. Si vous utilisez votre hôte local ou une instance EC2 avec l'URL de visite du bureau à distance http://localhost:8080
. Connectez-vous avec le nom d'utilisateur admin et le mot de passe que vous avez récupéré précédemment.
- Dans le volet de navigation, choisissez Tableaux de bord
- Selectionnez Nouveauté et les L’
Nous allons importer le tableau de bord DCGM Grafana par défaut décrit dans Tableau de bord de l'exportateur NVIDIA DCGM.
- Sur le terrain
import via grafana.com
, Entrer12239
et choisissez Charge - Selectionnez Prométhée comme source de données
- Selectionnez L’
Vous verrez un tableau de bord similaire à celui de la capture d'écran suivante.
Pour démontrer que ces métriques sont basées sur des pods, nous allons modifier le Utilisation du GPU volet de ce tableau de bord.
- Choisissez le volet et le menu d'options (trois points)
- Élargir la Options section et modifiez le La Légende champ
- Remplacez-y la valeur par
Pod {{pod}}
, Puis choisissez Épargnez
La légende montre désormais le gpu-burn
nom du pod associé à l'utilisation du GPU affichée.
- Arrêtez la redirection de port du service Grafana UI
Exécutez ce qui suit dans votre shell hôte :
Dans cet article, nous avons démontré l'utilisation de Prometheus et Grafana open source déployés sur le cluster EKS. Si vous le souhaitez, ce déploiement peut être remplacé par Service géré Amazon pour Prometheus et les Grafana géré par Amazon.
Nettoyer
Pour nettoyer les ressources que vous avez créées, exécutez le script suivant à partir du aws-do-eks
coque du conteneur :
Conclusion
Dans cet article, nous avons utilisé NVIDIA DCGM Exporter pour collecter des métriques GPU et les visualiser avec CloudWatch ou Prometheus et Grafana. Nous vous invitons à utiliser les architectures démontrées ici pour activer la surveillance de l'utilisation du GPU avec NVIDIA DCGM dans votre propre environnement AWS.
Ressources additionnelles
À propos des auteurs
Amr Ragab est un ancien architecte de solutions principal, EC2 Accelerated Computing chez AWS. Il se consacre à aider les clients à exécuter des charges de travail informatiques à grande échelle. Dans ses temps libres, il aime voyager et trouver de nouvelles façons d’intégrer la technologie dans la vie quotidienne.
Alex Yankoulski est architecte de solutions principal pour l'apprentissage automatique autogéré chez AWS. C'est un ingénieur logiciel et infrastructure full-stack qui aime effectuer un travail approfondi et pratique. Dans son rôle, il se concentre sur l'aide aux clients dans la conteneurisation et l'orchestration des charges de travail de ML et d'IA sur les services AWS basés sur des conteneurs. Il est également l'auteur du logiciel open source faire un cadre et un capitaine Docker qui aime appliquer les technologies de conteneurs pour accélérer le rythme de l'innovation tout en résolvant les plus grands défis du monde. Au cours des 10 dernières années, Alex a travaillé à la démocratisation de l'IA et du ML, à la lutte contre le changement climatique et à rendre les voyages plus sûrs, les soins de santé meilleurs et l'énergie plus intelligente.
Keïta Watanabe est architecte de solutions senior pour les solutions Frameworks ML chez Amazon Web Services, où il contribue au développement des meilleures solutions d'apprentissage automatique autogérées basées sur le cloud du secteur. Son expérience est dans la recherche et le développement de l’apprentissage automatique. Avant de rejoindre AWS, Keita travaillait dans le secteur du commerce électronique. Keita est titulaire d'un doctorat. en sciences de l'Université de Tokyo.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Automobile / VE, Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- PlatoHealth. Veille biotechnologique et essais cliniques. Accéder ici.
- GraphiquePrime. Élevez votre jeu de trading avec ChartPrime. Accéder ici.
- Décalages de bloc. Modernisation de la propriété des compensations environnementales. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/enable-pod-based-gpu-metrics-in-amazon-cloudwatch/
- :possède
- :est
- :ne pas
- :où
- $UP
- 01
- 06
- 07
- 08
- 09
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 15%
- 16
- 160
- 17
- 20
- 2022
- 2023
- 22
- 224
- 23
- 24
- 25
- 27
- 29
- 30
- 32
- 40
- 50
- 51
- 54
- 7
- 70
- 8
- 80
- 9
- a
- Capable
- A Propos
- accélérer
- accéléré
- accès
- accédé
- Action
- infection
- ajouter
- ajoutée
- Supplémentaire
- admin
- Après
- âge
- Agent
- AI
- alex
- Tous
- Alpha
- déjà
- aussi
- Amazon
- Amazon Web Services
- an
- et les
- et infrastructure
- tous
- api
- Appliquer
- Application
- une approche
- applications
- architecture
- SONT
- AS
- Associé(e)
- associé
- At
- auteur
- autorisation
- automatiquement
- AWS
- RETOUR
- fond
- Bande passante
- basé
- BE
- car
- devenez
- était
- before
- ci-dessous
- LES MEILLEURS
- Améliorée
- Le plus grand
- Bootstrap
- tous les deux
- navigateur
- construire
- Développement
- bus
- by
- CAN
- capturer
- CD
- globaux
- Change
- Graphique
- vérifier
- le choix
- Selectionnez
- cliquez
- Climat
- Changement climatique
- horloge
- le cloud
- Cloud9
- Grappe
- code
- recueillir
- Collecte
- collection
- COM
- combiné
- vient
- Communautés
- complet
- informatique
- configuration
- connecté
- connecte
- Console
- consommation
- Contenant
- contient
- contenu
- continu
- des bactéries
- Coin
- Counter
- services
- engendrent
- créée
- La création
- création
- Lettres de créance
- Customiser
- Clients
- Cut/Taille
- cycles
- Tous les jours
- tableau de bord
- tableaux de bord
- données
- Date
- journée
- profond
- Réglage par défaut
- définition
- Démocratiser
- démontrer
- démontré
- déployer
- déployé
- déployer
- déploiement
- déploie
- décrit
- voulu
- à poser
- détails
- développer
- Développement
- dispositif
- différent
- dimensions
- dans
- do
- Docker
- fait
- down
- dessiner
- pendant
- e
- e-commerce
- chacun
- Plus tôt
- éditeur
- non plus
- permettre
- activé
- Endpoint
- énergie
- Consommation d'énergie
- Moteur
- ingénieur
- Entrer
- Tout
- entités
- entrée
- Environment
- erreur
- Erreurs
- etc
- exemple
- exécution
- existe
- attendu
- explorez
- exportations
- Échoué
- Chute
- non
- famille
- loin
- Favori
- Fonctionnalité
- Février
- champ
- Déposez votre dernière attestation
- trouver
- Prénom
- Écoulement
- se concentre
- suivi
- Abonnement
- suit
- Pour
- Ancien
- cadres
- gratuitement ici
- La fréquence
- De
- jauge
- générer
- obtenez
- GitHub
- Go
- aller
- GPU
- graphique
- Réservation de groupe
- hands-on
- Vous avez
- he
- têtes
- la médecine
- vous aider
- aider
- aide
- ici
- hh
- sa
- détient
- hôte
- Comment
- How To
- Cependant
- HTML
- http
- HTTPS
- ICON
- ID
- idéal
- if
- satellite
- importer
- l'importation
- in
- inclus
- inclut
- Y compris
- industrie
- de l'industrie
- d'information
- Infrastructure
- Innovation
- à l'intérieur
- installer
- Installé
- installer
- instance
- plutôt ;
- Des instructions
- intégrer
- des services
- Interfaces
- interne
- développement
- nous invitons les riders XCO et DH à rouler sur nos pistes haute performance, et leurs supporters à profiter du spectacle. Pour le XNUMXe anniversaire, nous visons GRAND ! Vous allez vouloir être là ! Nous accueillerons la légendaire traversée de l'étant avec de la musique en direct ! Nous aurons également des divertissements pour les jeunes et les jeunes de cœur pendant l'après-midi. Vous ne voudrez pas manquer ça !
- vous aider à faire face aux problèmes qui vous perturbent
- IT
- SES
- lui-même
- Emploi
- joindre
- jpg
- json
- XNUMX éléments à
- Genre
- Nom
- apprentissage
- au
- Niveau
- Licence
- VIE
- comme
- aime
- Gamme
- LINK
- Listé
- charge
- locales
- enregistrer
- enregistrement
- vous connecter
- recherchez-
- aime
- click
- machine learning
- Entrée
- a prendre une
- Fabrication
- gérés
- de nombreuses
- Mai..
- Mémoire
- Menu
- message
- Métadonnées
- métrique
- Métrique
- ML
- modifier
- Surveiller
- Stack monitoring
- Mois
- PLUS
- prénom
- noms
- NAVIGUER
- Navigation
- Besoin
- nécessaire
- n'allons jamais
- Nouveauté
- next
- aucune
- nœud
- nœuds
- Notes
- maintenant
- nombre
- Nvidia
- obtenir
- of
- de rabais
- Offrandes
- on
- ONE
- ouvert
- open source
- réalisés
- opérateur
- optimaux
- Option
- Options
- or
- orchestration
- de commander
- originaire
- autrement
- nos
- ande
- sortie
- au contrôle
- plus de
- propre
- Rythme
- pain
- Parallèle
- Mot de Passe
- passé
- Patron de Couture
- /
- période
- pipe
- pipeline
- Platon
- Intelligence des données Platon
- PlatonDonnées
- veuillez cliquer
- plug-in
- pop
- possible
- Post
- power
- préféré
- conditions préalables
- Aperçu
- Directeur
- Avant
- Privé
- processus
- produire
- Projet
- protocole
- à condition de
- de voiture.
- fournit
- public
- Push
- Tarif
- rapport
- Lire
- solutions
- reçu
- recevoir
- reportez-vous
- regex
- région
- éloigné
- supprimez
- remplacer
- remplacement
- demandes
- conditions
- un article
- Recherche et développement
- Resources
- redémarré
- résultat
- résultant
- Rôle
- rôle
- Courir
- pour le running
- fonctionne
- s
- plus sûre
- même
- Escaliers intérieurs
- programme
- Sciences
- pour écran
- scénario
- Deuxièmement
- secondes
- secret
- Section
- les sections
- sur le lien
- envoi
- supérieur
- service
- Services
- set
- mise
- coquillage
- devrait
- montré
- Spectacles
- similaires
- simplifier
- depuis
- unique
- plus intelligents
- So
- jusqu'à présent
- Logiciels
- Solutions
- Résoudre
- quelques
- Sources
- spécifiquement
- spécifié
- empiler
- Commencez
- Région
- Statut
- Étapes
- storage
- sous-réseaux
- Avec succès
- tel
- suite
- Appareils
- sûr
- Interrupteur
- SYS
- combustion propre
- Tâche
- tâches
- Les technologies
- Technologie
- modèle
- temporaire
- terminal
- tester
- qui
- Le
- Les
- puis
- Là.
- donc
- Ces
- this
- ceux
- trois
- fiable
- à
- tokyo
- Boîte à outils
- les outils
- Total
- Voyage
- Voyages
- oui
- Essai
- tunnel
- deux
- type
- ui
- sous
- université
- Université de Tokyo
- a actualisé
- URL
- utilisé
- d'utiliser
- Utilisateur
- Usages
- en utilisant
- UTC
- utilisé
- v1
- VALIDER
- Plus-value
- Valeurs
- divers
- vérifier
- version
- via
- Visiter
- visualiser
- le volume
- W
- attendez
- Attendre
- était
- Façon..
- façons
- we
- web
- services Web
- ont été
- quand
- que
- qui
- tout en
- WHO
- sera
- fenêtre
- comprenant
- activités principales
- travaillé
- de travail
- vos contrats
- monde
- yaml
- années
- Vous n'avez
- Votre
- zéphyrnet