Interrogez-nous, nous vous répondrons !

Qu'est-ce que le NVIDIA® MIG ?

Dans l'informatique moderne, les GPU jouent un rôle crucial dans divers domaines, de la médecine à la production cinématographique. Les GPU permettent de réduire considérablement le temps de calcul, souvent par des dizaines ou des centaines de facteurs. Ils présentent également des caractéristiques uniques à prendre en compte. Pour les scénarios à charge de travail unique ne nécessitant pas le partage d'un GPU entre les utilisateurs, presque n'importe quel GPU suffira.

De nombreuses applications prennent en charge le calcul parallèle, répartissant la charge de travail sur plusieurs cartes physiques. Cependant, des problèmes se posent lorsqu'il n'y a qu'un seul GPU puissant dans un serveur, ou lorsque plusieurs utilisateurs ont besoin d'exécuter exclusivement des calculs intensifs sur GPU, bloquant potentiellement les autres jusqu'à ce que leurs tâches soient terminées. La technologie MIG (Multi-Instance GPU) de NVIDIA® répond à ce problème. Disponible sur des modèles de GPU spécifiques tels que A30, A100 (PCIE/SXM4), H100 (PCIE/SXM5/GH200) et H200 (SXM5), la technologie MIG permet la division logique d'une seule carte en plusieurs instances accessibles de manière indépendante.

Ces instances de GPU sont isolées au niveau matériel, ce qui empêche les charges de travail d'affecter les performances ou la consommation de VRAM des autres. Chaque instance se voit attribuer une quantité fixe de mémoire vidéo. Si un processus tente de dépasser cette allocation, l'OOM-killer s'active et met fin au processus fautif.

Le nombre maximal d'instances est de 7, ce qui peut sembler étrange, car il serait plus logique de diviser le système en un nombre pair de parties. L'explication est simple : la 8e partie est également allouée, mais ses ressources informatiques sont utilisées pour contrôler la division. Elle devient donc indisponible pour une utilisation normale. La VRAM est également divisée en 8 parties au maximum et est répartie de manière égale entre les 7 instances de GPU. Chaque instance reçoit également une partie des autres ressources, telles que les unités de décodage matériel.

Cette caractéristique permet de paralléliser la charge de travail, même avec une seule carte. Au niveau du système d'exploitation, les instances de GPU apparaissent comme des cartes physiques différentes, ce qui permet à l'application d'accéder à chacune d'elles séparément et d'assurer un calcul parallèle. Cela permet d'optimiser l'utilisation des ressources GPU. Les fournisseurs d'informatique en nuage apprécient beaucoup cette fonctionnalité, car la capacité de gérer les ressources de manière flexible est essentielle, en particulier dans les environnements conteneurisés.

Fonctionnalités de MIG

Avant de travailler avec MIG, assurez-vous que le serveur dispose des pilotes GPU nécessaires et qu'il n'y a pas de tâches de calcul actives sur la carte. L'activation de MIG est une requête "lourde" à l'API du pilote, qui entraîne un effacement complet de la mémoire vidéo et un redémarrage du GPU. Actuellement, cela ne fonctionne que sous Linux, et l'utilisateur qui exécute une telle requête doit avoir les droits de superutilisateur.

Lorsque l'on travaille avec MIG, il faut garder à l'esprit plusieurs considérations importantes. Tout d'abord, MIG est conçu pour des tâches de calcul uniquement et ne prend pas en charge les applications graphiques. Si vous avez besoin d'exécuter des applications graphiques, il est nécessaire de désactiver le MIG.

La fonctionnalité MIG et le passage d'instances GPU dans les machines virtuelles ne sont pris en charge que sur les systèmes d'exploitation basés sur Linux. Vous ne pourrez pas utiliser le MIG avec Microsoft Hyper-V ou VMware ESXi. Dans ces cas, il est recommandé de désactiver la fonction MIG et d'effectuer un passage complet du GPU à la place.

Il convient de noter que les instances de GPU ne disposent pas de la connectivité P2P, même lorsqu'elles sont placées dans le même conteneur. Cette limitation, causée par des mécanismes d'isolation internes, peut poser des défis importants pour les infrastructures construites à l'aide de l'orchestrateur Kubernetes. Toutefois, des solutions logicielles tierces peuvent aider à surmonter ce problème.

Le MIG convient mieux aux serveurs dotés de GPU du même modèle. Les utilisateurs de LeaderGPU n'ont pas à s'en préoccuper, car toutes les configurations disponibles sont conçues en tenant compte de la compatibilité MIG. Pour activer le MIG, vous devrez exécuter des commandes spécifiques. Si vous utilisez les services NVIDIA® System Management et Data Center GPU Manager, assurez-vous d'abord de les arrêter :

sudo systemctl stop nvsm dcgm

Après vous être assuré qu'il n'y a pas de tâches actives sur le GPU, passez aux modes de commutation. Par exemple, la commande suivante active le MIG sur le GPU ID 0 :

sudo nvidia-smi -i 0 -mig 1

Répétez cette commande pour chaque GPU que vous souhaitez diviser en instances. Ensuite, examinons les profils disponibles pour cette division :

sudo nvidia-smi mig -lgip

Sélectionnez les profils souhaités et notez leur ID. Supposons que nous ayons un GPU NVIDIA® A100. Nous allons diviser la carte en quatre instances de GPU : la première aura trois instances de calcul et 20 Go de mémoire vidéo, tandis que les trois autres instances de GPU auront une instance de calcul et 5 Go de mémoire vidéo.

Notez que le système applique les profils de manière séquentielle. Pour éviter les erreurs potentielles, spécifiez toujours en premier lieu le profil ayant le plus grand nombre d'instances de calcul et de mémoire :

sudo nvidia-smi mig -cgi 9,19,19,19 -C
Successfully created GPU instance ID  2 on GPU  0 using profile MIG 3g.20gb (ID  9)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  2 using profile MIG 3g.20gb (ID  2)
Successfully created GPU instance ID  7 on GPU  0 using profile MIG 1g.5gb (ID 19)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  7 using profile MIG 1g.5gb (ID  0)
Successfully created GPU instance ID  8 on GPU  0 using profile MIG 1g.5gb (ID 19)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  8 using profile MIG 1g.5gb (ID  0)
Successfully created GPU instance ID  9 on GPU  0 using profile MIG 1g.5gb (ID 19)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  9 using profile MIG 1g.5gb (ID  0)

Sinon, vous risquez de rencontrer une erreur :

Failed to create GPU instances: Insufficient Resources

Après avoir appliqué le profil, vérifiez les instances GPU disponibles :

sudo nvidia-smi mig -lgi
+-------------------------------------------------------+
| GPU instances:                                        |
| GPU   Name             Profile  Instance   Placement  |
|                          ID       ID       Start:Size |
|=======================================================|
|   0  MIG 1g.5gb          19        7          0:1     |
+-------------------------------------------------------+
|   0  MIG 1g.5gb          19        8          1:1     |
+-------------------------------------------------------+
|   0  MIG 1g.5gb          19        9          2:1     |
+-------------------------------------------------------+
|   0  MIG 3g.20gb          9        2          4:4     |
+-------------------------------------------------------+

Vous pouvez maintenant rétablir le fonctionnement du NVSM et du DCGM :

sudo systemctl start nvsm dcgm

Gestion alternative

La méthode de gestion standard utilisant l'utilitaire nvidia-smi présente plusieurs inconvénients. Tout d'abord, elle ne répartit les ressources que dans un nombre fixe d'instances. Ensuite, la reconfiguration nécessite de décharger toutes les tâches de calcul de la mémoire et d'arrêter les applications. Cette approche n'est pas adaptée à l'informatique en nuage, car elle limite la mise à l'échelle automatique. Pour utiliser pleinement MIG, un logiciel supplémentaire comme Run:ai est nécessaire.

Cette plateforme offre une gestion plus souple de l'utilisation des GPU, en complétant MIG par sa propre technologie de fractionnement. Elle veille à ce que chaque application en cours d'exécution reçoive sa part de puissance de calcul. Grâce à une application de surveillance spécialisée, la plateforme alloue des ressources informatiques égales à chaque application et redistribue les ressources inutilisées entre les autres applications actives.

Run:ai garantit également l'exécution parallèle des charges de travail, maximisant ainsi l'utilisation des ressources. La division étant logicielle, une attention particulière est accordée à la gestion de la VRAM afin d'éviter les collisions.

Au-delà de la gestion dynamique, la plateforme permet de réserver des ressources informatiques spécifiques à des applications particulières. Il n'est donc pas nécessaire de décharger toutes les autres applications, car le partitionnement se fait à la volée. La plateforme veille à ce que ce processus ne perturbe pas les applications GPU en cours d'exécution.

Voir aussi :



Mis à jour: 28.03.2025

Publié: 04.10.2024


Des questions ? Écrivez-nous!

By clicking «I Accept» you confirm that you have read and accepted the website Terms and Conditions, Privacy Policy, and Moneyback Policy.