Exercice - Empaqueter une application NVIDIA DeepStream Graph Composer dans une charge de travail conteneurisée
Vous avez vu comment NVIDIA DeepStream Graph Composer peut vous aider à développer des applications IVA. Nous allons maintenant vous montrer comment des outils supplémentaires permettent de distribuer ces applications dans les centres de données et les environnements de périphérie.
La conteneurisation offre également de nombreux avantages lors des phases de développement et de test. Voici quelques exemples :
- Cohérence du comportement lorsque vous exécutez une charge de travail sur du matériel homogène.
- Mises à jour incrémentielles grâce à la superposition des systèmes de fichiers, ce qui peut réduire le temps de déploiement.
- Documentation claire des dépendances en raison de la nature de l’auto-documentation.
Pour obtenir ces avantages, vous utiliserez l'outil container-builder pour empaqueter l'exemple précédent en tant que conteneur.
Avant de commencer, vous devez configurer un compte avec le service de conteneurs de NVIDIA GPU (NGC). Ce service constitue le référentiel officiel de NVIDIA permettant de distribuer des conteneurs avec accélération GPU. Votre charge de travail requiert un accès à ce référentiel pour extraire le conteneur de base DeepStream que notre charge de travail conteneurisée utilisera. Pour créer un compte ou vous connecter avec un compte existant, consultez la page de connexion NVIDIA NGC.
Connectez-vous ou créez un compte en accédant à la page de connexion NVIDIA NGC. Après vous être connecté à NVIDIA NGC, sélectionnez votre nom d’utilisateur dans le coin supérieur droit, puis Configuration. Les options suivantes s’affichent :
Sélectionnez Obtenir une clé API. Sur l’écran qui s’affiche, dans l’angle supérieur droit, sélectionnez Générer une clé API. Sélectionnez ensuite Confirmer dans l’invite qui apparaît.
Fournissez les informations d’identification au runtime Docker en exécutant les commandes suivantes dans un terminal sur l’ordinateur hôte :
sudo docker login nvcr.io
Lorsque vous êtes invité à entrer le Nom d’utilisateur, entrez $oauthtoken tel qu’indiqué. Lorsque vous êtes invité à entrer un Mot de passe, entrez la valeur de votre clé API générée. Le message « Connexion réussie » doit s’afficher.
Maintenant que vous avez accès à nvcr.io, vous pouvez commencer à créer des conteneurs qui utilisent les images de base fournies via NVIDIA NGC. L’outil container-builder peut générer des images en fournissant un fichier de configuration. Vous utiliserez l’un des exemples fournis dans le package des graphiques de référence.
Pour appeler conteneur-Builder afin d’empaqueter l’application deepstream-test1, exécutez les commandes suivantes sur l’ordinateur hôte :
cd /opt/nvidia/deepstream/deepstream-6.0/reference_graphs/deepstream-test1 sudo container_builder -c ds_test1_container_builder_dgpu.yaml -d /opt/nvidia/graph-composer/config/target_x86_64_cuda_11_4.yaml
Une fois l’opération terminée, vous devriez voir une sortie contenant le message « Successfully tagged deepstream_test1_dgpu:latest » (deepstream_test1_dgpu:latest étiqueté avec succès).
Notes
Si vous recevez une erreur « docker.errors.DockerException » lors de l’exécution des commandes précédentes, cela peut signifier que le runtime de Docker n’est pas installé sur l’ordinateur hôte. Pour continuer, passez en revue les instructions de la section « Installer les dépendances NVIDIA DeepStream Graph Composer » de ce module sur la procédure d’installation de Docker.
Notes
Si vous recevez une erreur « docker.errors.BuildError: unauthorized: authentication required », cela indique vous n’avez peut-être pas correctement authentifié votre compte NVIDIA NGC pour l’utiliser avec Docker.
Avant d’exécuter cette charge de travail conteneurisée, vous devez accorder un accès à l’environnement d’affichage X11 lorsqu’il s’exécute à partir d’un conteneur à l’aide d’un récepteur de sortie de type EGL (type = 2).
Exécutez les commandes suivantes à partir d’un terminal sur l’ordinateur hôte pour activer l’accès aux services X11 :
sudo xhost +
Vérifiez que la charge de travail conteneurisée s’exécute comme prévu en exécutant le code suivant dans un terminal sur l’ordinateur hôte :
sudo docker run -it --rm --gpus all -v /tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=:0 deepstream_test1_dgpu
Cette commande démarre une instance de l'image conteneur
deepstream_test1_dgpu
et lui donne accès à tout le matériel GPU disponibles sur l’ordinateur, de même qu’un accès au socket X11 et à la valeurDISPLAY
actuelle. Vous devriez voir une sortie similaire à l’exécution précédente qui a été appelée à l’aide deexecute_graph.sh
.
Vous êtes maintenant prêt à publier votre charge de travail conteneurisée dans un registre de conteneurs sécurisé pour la distribution.