Sie fragen - wir antworten!

Was ist NVIDIA® MIG?

In der modernen Datenverarbeitung spielen GPUs eine entscheidende Rolle in verschiedenen Bereichen, von der Medizin bis zur Filmproduktion. Zwar können GPUs die Rechenzeit erheblich verkürzen - oft um den Faktor zehn oder hundert. Sie haben aber auch einzigartige Eigenschaften, die es zu berücksichtigen gilt. Für Single-Workload-Szenarien ohne die Notwendigkeit, einen Grafikprozessor mit anderen Nutzern zu teilen, ist fast jeder Grafikprozessor ausreichend.

Viele Anwendungen unterstützen parallele Berechnungen, bei denen die Arbeitslast auf mehrere physische Karten verteilt wird. Problematisch wird es jedoch, wenn in einem Server nur ein leistungsfähiger Grafikprozessor vorhanden ist oder wenn mehrere Benutzer ausschließlich GPU-intensive Berechnungen durchführen müssen, wodurch andere möglicherweise blockiert werden, bis ihre Aufgaben abgeschlossen sind. Nvidias MIG-Technologie (Multi-Instance GPU) geht dieses Problem an. MIG ist für bestimmte GPU-Modelle wie A30, A100 (PCIE/SXM4), H100 (PCIE/SXM5/GH200) und H200 (SXM5) verfügbar und ermöglicht die logische Aufteilung einer einzelnen Karte in mehrere unabhängig voneinander zugängliche Instanzen.

Diese GPU-Instanzen sind auf Hardware-Ebene isoliert, so dass sich die Arbeitslasten nicht gegenseitig in ihrer Leistung oder ihrem VRAM-Verbrauch beeinflussen können. Jeder Instanz wird ein fester Betrag an Videospeicher zugewiesen. Wenn ein Prozess versucht, diese Zuteilung zu überschreiten, wird der OOM-Killer aktiviert und der betreffende Prozess beendet.

Die maximal mögliche Anzahl von Instanzen ist 7. Dies mag seltsam erscheinen, da es logischer wäre, sie in eine gerade Anzahl von Teilen aufzuteilen. Dafür gibt es eine einfache Erklärung: Der 8. Teil wird ebenfalls zugewiesen, aber seine Rechenressourcen werden für die Steuerung der Aufteilung verwendet. Daher steht er für den normalen Gebrauch nicht mehr zur Verfügung. Der VRAM wird ebenfalls in maximal 8 Teile aufgeteilt und gleichmäßig auf die 7 GPU-Instanzen verteilt. Jede Instanz erhält auch einen Teil anderer Ressourcen, z. B. Hardware-Decodiereinheiten.

Diese Funktion ermöglicht die Parallelisierung von Arbeitslasten sogar mit einer einzigen Karte. Auf Betriebssystemebene erscheinen die GPU-Instanzen als unterschiedliche physische Karten, so dass die Anwendung auf jede separat zugreifen und eine parallele Berechnung gewährleisten kann. Dadurch wird eine optimale Nutzung der GPU-Ressourcen erreicht. Cloud-Anbieter wissen diese Funktion sehr zu schätzen, da die Möglichkeit, Ressourcen flexibel zu verwalten, insbesondere in containerisierten Umgebungen von entscheidender Bedeutung ist.

MIG-Funktionen

Bevor Sie mit MIG arbeiten, stellen Sie sicher, dass auf dem Server die erforderlichen GPU-Treiber installiert sind und dass keine aktiven Rechenaufgaben auf der Karte ausgeführt werden. Die Aktivierung von MIG ist eine "schwere" Anforderung an die Treiber-API, die eine vollständige Löschung des Videospeichers und einen Neustart der GPU verursacht. Derzeit funktioniert dies nur unter Linux, und der Benutzer, der eine solche Anfrage ausführt, muss über Superuser-Rechte verfügen.

Bei der Arbeit mit MIG sind mehrere wichtige Aspekte zu beachten. Erstens ist MIG nur für Berechnungsaufgaben konzipiert und unterstützt keine grafischen Anwendungen. Wenn Sie grafische Anwendungen ausführen müssen, ist es notwendig, MIG zu deaktivieren.

Die MIG-Funktionalität und das Passthrough von GPU-Instanzen innerhalb virtueller Maschinen werden nur von Linux-basierten Betriebssystemen unterstützt. Sie können MIG nicht mit Microsoft Hyper-V oder VMware ESXi verwenden. In diesen Fällen empfiehlt es sich, MIG zu deaktivieren und stattdessen ein vollständiges GPU-Passthrough durchzuführen.

Es ist erwähnenswert, dass GPU-Instanzen keine P2P-Konnektivität aufweisen, selbst wenn sie sich im selben Container befinden. Diese Einschränkung, die durch interne Isolationsmechanismen verursacht wird, kann für Infrastrukturen, die mit dem Kubernetes-Orchestrator aufgebaut wurden, eine große Herausforderung darstellen. Softwarelösungen von Drittanbietern können jedoch helfen, dieses Problem zu überwinden.

MIG ist am besten für Server mit GPUs desselben Modells geeignet. LeaderGPU-Benutzer müssen sich darüber keine Gedanken machen, da alle verfügbaren Konfigurationen mit Blick auf MIG-Kompatibilität entwickelt wurden. Um MIG zu aktivieren, müssen Sie bestimmte Befehle ausführen. Wenn Sie die Dienste NVIDIA® System Management und Data Center GPU Manager verwenden, stellen Sie sicher, dass Sie diese zuerst beenden:

sudo systemctl stop nvsm dcgm

Nachdem Sie sich vergewissert haben, dass keine aktiven Aufträge auf der GPU laufen, fahren Sie mit dem Wechsel des Modus fort. Mit dem folgenden Befehl wird beispielsweise MIG auf GPU ID 0 aktiviert:

sudo nvidia-smi -i 0 -mig 1

Wiederholen Sie diesen Befehl für jede GPU, die Sie in Instanzen unterteilen möchten. Sehen wir uns nun die verfügbaren Profile für diese Aufteilung an:

sudo nvidia-smi mig -lgip

Wählen Sie die gewünschten Profile aus und notieren Sie deren IDs. Nehmen wir an, wir haben eine NVIDIA® A100 GPU. Wir werden die Karte in vier GPU-Instanzen aufteilen: Die erste wird drei Compute-Instanzen und 20 GB Videospeicher haben, während die anderen drei GPU-Instanzen eine Compute-Instanz und 5 GB Videospeicher haben werden.

Beachten Sie, dass das System die Profile sequentiell anwendet. Um mögliche Fehler zu vermeiden, geben Sie immer zuerst das Profil mit der größten Anzahl von Compute-Instanzen und Speicher an:

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)

Andernfalls kann ein Fehler auftreten:

Failed to create GPU instances: Insufficient Resources

Überprüfen Sie nach der Anwendung des Profils die verfügbaren GPU-Instanzen:

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     |
+-------------------------------------------------------+

Sie können nun den Betrieb von NVSM und DCGM wiederherstellen:

sudo systemctl start nvsm dcgm

Alternative Verwaltung

Die Standardverwaltungsmethode mit dem nvidia-smi-Dienstprogramm hat mehrere Nachteile. Erstens teilt sie die Ressourcen nur in eine feste Anzahl von Instanzen auf. Zweitens erfordert die Neukonfiguration das Entladen aller Rechenaufgaben aus dem Speicher und das Anhalten der Anwendungen. Dieser Ansatz ist für Cloud Computing schlecht geeignet, da er die automatische Skalierung einschränkt. Um MIG vollständig nutzen zu können, ist zusätzliche Software wie Run:ai erforderlich.

Diese Plattform bietet ein flexibleres Management der GPU-Nutzung und ergänzt MIG mit seiner eigenen Fraktionierungstechnologie. Sie stellt sicher, dass jede laufende Anwendung ihren Anteil an der Rechenleistung erhält. Über eine spezielle Überwachungsanwendung weist die Plattform jeder Anwendung die gleichen Rechenressourcen zu und verteilt ungenutzte Ressourcen auf andere aktive Anwendungen um.

Run:ai garantiert auch die parallele Ausführung von Workloads und maximiert so die Ressourcenauslastung. Da die Aufteilung softwarebasiert ist, wird dem VRAM-Management besondere Aufmerksamkeit gewidmet, um Kollisionen zu vermeiden.

Neben der dynamischen Verwaltung ermöglicht die Plattform auch die Reservierung bestimmter Rechenressourcen für bestimmte Anwendungen. Damit entfällt die Notwendigkeit, alle anderen Anwendungen zu entlasten, da die Partitionierung im laufenden Betrieb erfolgt. Die Plattform stellt sicher, dass dieser Prozess laufende GPU-Anwendungen nicht unterbricht.

Siehe auch:



Aktualisiert: 28.03.2025

Veröffentlicht: 04.10.2024


Haben Sie noch Fragen? Schreiben Sie uns!

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