Déployez vos applications d’IA conteneurisées avec nvidia-docker

De as well as en in addition de produits et providers tirent parti des capacités de modélisation et de prédiction de l’IA. Cet write-up présente l’outil nvidia-docker permettant d’intégrer des briques logicielles d’IA (Intelligence Artificielle) dans une architecture de microservices. Le principal avantage exploré ici est l’utilisation des ressources GPU (Graphical Processing Device) du système hôte pour accélérer plusieurs applications d’IA conteneurisées.

Pour comprendre l’utilité de nvidia-docker, nous commencerons par décrire quel type d’IA peut bénéficier de l’accélération GPU. Dans un second temps nous présenterons comment implémenter l’outil nvidia-docker. Enfin, nous décrirons quels outils sont disponibles pour utiliser l’accélération GPU dans vos purposes et comment les utiliser.

Pourquoi utiliser des GPU dans les applications d’IA ?

Dans le domaine de l’intelligence artificielle, nous avons deux principaux sous-domaines qui sont utilisés : l’apprentissage automatique et l’apprentissage profond. Cette dernière fait partie d’une famille furthermore significant de méthodes d’apprentissage automatique basées sur réseaux de neurones artificiels.

Dans le cadre du deep discovering, où les opérations sont essentiellement des multiplications matricielles, les GPU sont as well as performants que les CPU (Central Processing Models). C’est pourquoi l’utilisation des GPU s’est développée ces dernières années. En effet, les GPU sont considérés comme le cœur du deep studying en raison de leur architecture massivement parallèle.

Cependant, les GPU ne peuvent pas exécuter n’importe quel programme. En effet, ils utilisent un langage spécifique (CUDA pour NVIDIA) pour tirer profit de leur architecture. Alors, comment utiliser et communiquer avec les GPU de vos applications ?

La technologie NVIDIA CUDA

NVIDIA CUDA (Compute Unified Product Architecture) est une architecture de calcul parallèle associée à une API pour la programmation des GPU. CUDA traduit le code d’application en un jeu d’instructions que les GPU peuvent exécuter.

Un SDK CUDA et des bibliothèques telles que cuBLAS (Standard Linear Algebra Subroutines) et cuDNN (Deep Neural Network) ont été développés pour communiquer facilement et efficacement avec un GPU. CUDA est disponible en C, C++ et Fortran. Il existe des wrappers pour d’autres langages, notamment Java, Python et R. Par exemple, des bibliothèques d’apprentissage en profondeur telles que TensorFlow et Keras sont basées sur ces technologies.

Pourquoi utiliser nvidia-docker ?

Nvidia-docker répond aux besoins des développeurs qui souhaitent ajouter des fonctionnalités d’IA à leurs applications, les conteneuriser et les déployer sur des serveurs alimentés par des GPU NVIDIA.

L’objectif est de mettre en position une architecture permettant le développement et le déploiement de modèles de deep understanding dans des companies disponibles by way of une API. Ainsi, le taux d’utilisation des ressources GPU est optimisé en les rendant disponibles pour plusieurs occasions d’application.

De additionally, nous bénéficions des avantages des environnements conteneurisés :

  • Isolement des instances de chaque modèle d’IA.
  • Colocation de plusieurs modèles avec leurs dépendances spécifiques.
  • Colocation d’un même modèle sous plusieurs versions.
  • Déploiement cohérent des modèles.
  • Suivi des performances du modèle.

Nativement, l’utilisation d’un GPU dans un conteneur nécessite d’installer CUDA dans le conteneur et de donner des privilèges pour accéder à l’appareil. Dans cet esprit, le docker nvidia Un outil a été développé, permettant aux périphériques GPU NVIDIA d’être exposés dans des conteneurs de manière isolée et sécurisée.

Au moment de la rédaction de cet write-up, la dernière variation de nvidia-docker est la v2. Cette model diffère grandement de la v1 sur les points suivants :

  • Variation 1: Nvidia-docker est implémenté en superposition à Docker. Autrement dit, pour créer le conteneur, vous deviez utiliser nvidia-docker (Ex : nvidia-docker operate ...) qui effectue les actions (entre autres la création de volumes) permettant de voir les périphériques GPU dans le conteneur.
  • Edition 2: Le déploiement est simplifié avec le remplacement des volumes Docker par l’utilisation des runtimes Docker. En effet, pour lancer un conteneur, il faut maintenant utiliser le runtime NVIDIA through Docker (Ex : docker run --runtime nvidia ...)

A noter qu’en raison de leur architecture différente, les deux variations ne sont pas compatibles. Une software écrite en v1 doit être réécrite pour la v2.

Configuration de nvidia-docker

Les éléments requis pour utiliser nvidia-docker sont :

  • Un environnement d’exécution de conteneur.
  • Un GPU disponible.
  • La Boîte à outils de conteneur NVIDIA (partie principale de nvidia-docker).

Conditions préalables

Docker

Un environnement d’exécution de conteneur est requis pour exécuter le Boîte à outils de conteneur NVIDIA. Docker est le runtime recommandé, mais Podman et containerd sont également pris en cost.

La la documentation officielle donne la procédure d’installation de Docker.

Pilote NVIDIA

Les pilotes sont nécessaires pour utiliser un périphérique GPU. Dans le cas des GPU NVIDIA, les pilotes correspondant à un OS donné peuvent être obtenus auprès du Page de téléchargement des pilotes NVIDIAen renseignant les informations sur le modèle de GPU.

L’installation des pilotes se fait by using l’exécutable. Pour Linux, utilisez les commandes suivantes en remplaçant le nom du fichier téléchargé :

chmod +x NVIDIA-Linux-x86_64-470.94.operate
./NVIDIA-Linux-x86_64-470.94.operate

Redémarrez la equipment hôte à la fin de l’installation pour prendre en compte les pilotes installés.

Installer nvidia docker

Nvidia-docker est disponible sur le Site du projet GitHub. Pour l’installer, suivez les installation Manuel en fonction de votre serveur et des spécificités de l’architecture.

Nous avons maintenant une infrastructure qui nous permet d’avoir des environnements isolés donnant accès aux ressources GPU. Pour utiliser l’accélération GPU dans les purposes, plusieurs outils ont été développés par NVIDIA (liste non exhaustive) :

  • Boîte à outils CUDA: un ensemble d’outils pour développer des logiciels/programmes capables d’effectuer des calculs en utilisant à la fois le CPU, la RAM et le GPU. Il peut être utilisé sur les plates-formes x86, Arm et Electric power.
  • NVIDIA cuDNN: une bibliothèque de primitives pour accélérer les réseaux d’apprentissage en profondeur et optimiser les performances GPU pour les principaux frameworks tels que Tensorflow et Keras.
  • NVIDIA cuBLAS: une bibliothèque de sous-programmes d’algèbre linéaire accélérés par GPU.

En utilisant ces outils dans le code d’application, les tâches d’IA et d’algèbre linéaire sont accélérées. Les GPU étant désormais visibles, l’application est able d’envoyer les données et les opérations à traiter sur le GPU.

La boîte à outils CUDA est l’option de niveau le moreover bas. Il offre le furthermore de contrôle (mémoire et guidance) pour créer des purposes personnalisées. Les bibliothèques fournissent une abstraction des fonctionnalités de CUDA. Ils vous permettent de vous concentrer sur le développement de l’application plutôt que sur la mise en œuvre de CUDA.

Une fois tous ces éléments implémentés, l’architecture utilisant le assistance nvidia-docker est prête à l’emploi.

Voici un schéma pour résumer tout ce que nous avons vu :


CUDA_CUDNN_PNG

Conclusion

Nous avons mis en spot une architecture permettant l’utilisation des ressources GPU de nos applications dans des environnements isolés. Pour résumer, l’architecture est composée des briques suivantes :

  • Système d’exploitation : Linux, Windows…
  • Docker : isolation de l’environnement à l’aide de conteneurs Linux
  • Pilote NVIDIA : installation du pilote du matériel en problem
  • Runtime de conteneur NVIDIA : orchestration des trois précédents
  • Purposes sur conteneur Docker :
    • CUDA
    • cuDNN
    • CUBLAS
    • Tensorflow/Keras

NVIDIA continue on de développer des outils et des bibliothèques autour des technologies d’IA, dans le but de s’imposer comme un leader. D’autres systems peuvent compléter nvidia-docker ou peuvent être in addition appropriées que nvidia-docker selon le cas d’utilisation.

Leave a Reply

Next Post

Quelle est la prochaine étape pour le jumeau numérique – Grape Up

Les jumeaux numériques, ou copies virtuelles d’objets matériels, sont utilisés dans divers sorts de simulations et l’industrie vehicle exploite le potentiel offert par cette technologie. Les représentants de ce marché peuvent surveiller de manière exhaustive les équipements et les systèmes et prévenir de nombreuses pannes. Mais quel avenir pour les […]