15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
23.10.2024

Wie man NVLink auf einem Dedicated Server konfiguriert

NVLink ist NVIDIAs proprietäres Hochgeschwindigkeits-GPU-Interconnect, das den PCIe-Bus als primären Kommunikationspfad zwischen GPUs ersetzt — und in bestimmten Architekturen auch zwischen GPUs und CPUs. Es liefert bidirektionale Bandbreite von bis zu 600 GB/s pro Link bei Hopper-Generation-Hardware, verglichen mit einem theoretischen Maximum von etwa 64 GB/s bei PCIe 5.0 x16. Für Workloads wie das Training großer Sprachmodelle, Molekulardynamiksimulationen oder Multi-GPU-Inferenz ist dieser Unterschied nicht marginal — er ist architektonischer Natur.

Dieser Leitfaden bietet eine vollständige, produktionsreife Anleitung zur Konfiguration von NVLink auf einem Dedicated Server: von der physischen Hardware-Installation und dem Treiber-Stack-Setup bis hin zur Topologieüberprüfung, der Integration auf Anwendungsebene und der laufenden Leistungsüberwachung.

NVLink ist nicht einfach ein schnelleres Kabel. Es ist ein kohärentes, Punkt-zu-Punkt-Interconnect-Fabric, das direkt in den GPU-Die integriert ist. Jede NVLink-Lane überträgt Daten in beide Richtungen gleichzeitig über ein serialisiertes Differenzsignalprotokoll. Mehrere Lanes werden zu einem einzigen logischen Link gebündelt, und mehrere Links können dasselbe GPU-Paar für additive Bandbreite verbinden.

Entscheidend ist, dass NVLink cache-kohärenten Speicherzugriff unterstützt. Das bedeutet, GPU A kann aus dem Framebuffer-Speicher von GPU B lesen, ohne Daten über den Host-RAM oder den Speicher-Controller der CPU zu übertragen. Diese Eigenschaft ermöglicht das „Unified Memory”-Programmiermodell in CUDA — ein einziger virtueller Adressraum, der mehrere physische GPU-Speicher umfasst.

Was NVLink nicht ist: Es ist kein Ersatz für NVSwitch in großen Systemen. In Konfigurationen mit mehr als zwei GPUs verwendet NVIDIA NVSwitch — einen dedizierten Crossbar-Switching-Chip — um All-to-All-NVLink-Konnektivität bereitzustellen. Der DGX A100 verwendet beispielsweise sechs NVSwitch-Chips, um jeder seiner acht A100-GPUs volle NVLink-Bandbreite zu jeder anderen GPU gleichzeitig zu geben. Wenn Sie eine Zwei-GPU-Workstation oder einen Vier-GPU-Server mit einer unterstützten Bridge aufbauen, arbeiten Sie mit direkten NVLink-Verbindungen. Wenn Sie mit acht oder mehr GPUs arbeiten, befinden Sie sich mit ziemlicher Sicherheit im NVSwitch-Bereich.

Das Verständnis der Bandbreitengrenze Ihrer spezifischen Hardware ist vor dem Benchmarking oder der Kapazitätsplanung unerlässlich.

GPU-GenerationNVLink-VersionLinks pro GPUGesamte bidirektionale Bandbreite
Volta (V100)NVLink 2.06300 GB/s
Turing (RTX 2080 Ti)NVLink 2.02100 GB/s
Ampere (A100 SXM)NVLink 3.012600 GB/s
Ampere (RTX 3090)NVLink 3.02112,5 GB/s
Ada Lovelace (RTX 4090)NVLink 4.02112,5 GB/s
Hopper (H100 SXM)NVLink 4.018900 GB/s
Blackwell (B200)NVLink 5.0181800 GB/s

PCIe 4.0 x16 liefert etwa 32 GB/s bidirektional. PCIe 5.0 x16 verdoppelt das auf ungefähr 64 GB/s. Selbst eine Zwei-Link-Consumer-NVLink-Bridge auf RTX 3090-Karten bietet fast die doppelte Bandbreite von PCIe 5.0 — und Rechenzentrum-GPUs befinden sich in einer völlig anderen Kategorie.

Voraussetzungen und Hardware-Kompatibilität

Bevor Sie eine einzige Konfigurationsdatei anfassen, bestätigen Sie Folgendes:

GPU-Kompatibilität. NVLink ist nicht auf allen NVIDIA-GPUs verfügbar. Consumer-Karten unterhalb der RTX 2080 Ti unterstützen es nicht. Die RTX 4080 unterstützt NVLink trotz ihrer Hochklassigkeit nicht — nur die RTX 4090 tut dies in der Ada-Generation. Überprüfen Sie immer das offizielle GPU-Datenblatt von NVIDIA für Ihre genaue SKU.

NVLink-Bridge. Für Consumer- und Prosumer-GPUs ist ein physischer NVLink-Bridge-Connector erforderlich. Diese Bridges sind generationsspezifisch — eine Turing-Bridge passt nicht auf eine Ampere-Karte. Rechenzentrum-GPUs (A100, H100) im SXM-Formfaktor verwenden ein proprietäres Mezzanine-Board und keine separate Bridge.

Mainboard und PCIe-Slot-Abstand. Die NVLink-Bridge erfordert, dass sich die beiden GPUs in benachbarten PCIe x16-Slots mit einem bestimmten physischen Abstand befinden. Die meisten Consumer-Bridges überspannen zwei Slots. Einige High-End-Bridges überspannen drei Slots. Überprüfen Sie den Slot-Abstand Ihres Mainboards anhand der Bridge-Abmessungen, bevor Sie kaufen.

BIOS-Einstellungen. Aktivieren Sie „Above 4G Decoding” und „Resizable BAR” (auch Smart Access Memory auf AMD-Plattformen genannt) im UEFI. Einige Systeme erfordern auch das Deaktivieren von CSM (Compatibility Support Module), um eine vollständige PCIe-Adressraumzuweisung für mehrere GPUs zu ermöglichen.

Stromversorgung. Zwei High-End-GPUs unter voller NVLink-beschleunigter Last können zusammen 600 W oder mehr verbrauchen. Stellen Sie sicher, dass Ihr Netzteil ausreichend Reserven hat und dass die GPU-Stromkonnektoren nach Möglichkeit an separaten Schienen angeschlossen sind.

Betriebssystem. Dieser Leitfaden behandelt Linux (Ubuntu 22.04 LTS / Debian 12) als primäres Ziel, was die Standardumgebung für KI- und HPC-Workloads auf Dedicated Servers ist. Windows-spezifische Schritte werden dort erwähnt, wo sie sich wesentlich unterscheiden.

Schritt 1: Physische GPU- und Bridge-Installation

Schalten Sie den Server vollständig aus und trennen Sie ihn vom Stromnetz. Erden Sie sich mit einem ESD-Armband, bevor Sie PCIe-Karten anfassen.

  1. Entfernen Sie die PCIe-Slot-Abdeckungen für die Ziel-Slots.
  2. Setzen Sie die erste GPU in den primären x16-Slot ein (typischerweise am nächsten zur CPU).
  3. Setzen Sie die zweite GPU in den benachbarten x16-Slot ein und stellen Sie sicher, dass der physische Abstand zu Ihrer NVLink-Bridge passt.
  4. Drücken Sie beide Karten fest, bis die PCIe-Halteclips einrasten.
  5. Verbinden Sie alle erforderlichen PCIe-Stromkonnektoren vom Netzteil mit jeder GPU. Verwenden Sie keine Daisy-Chain-Konnektoren für Karten mit hohem TDP — verwenden Sie separate Kabel vom Netzteil.
  6. Richten Sie die NVLink-Bridge über den Goldkontaktpads an der Oberkante beider GPUs aus. Drücken Sie gleichmäßig und fest nach unten, bis sie vollständig einrastet. Eine nicht vollständig eingesetzte Bridge führt dazu, dass der Link lautlos ausfällt oder mit reduzierter Breite arbeitet.
  7. Wenn Ihre GPUs duale NVLink-Bridges unterstützen (z. B. hat die RTX 2080 Ti zwei NVLink-Konnektoren), installieren Sie beide Bridges für maximale Bandbreite.
  8. Schließen Sie das Gehäuse und schließen Sie die Stromversorgung wieder an.

Schritt 2: BIOS- und UEFI-Konfiguration

Starten Sie in das UEFI-Setup (typischerweise Del oder F2 beim POST).

  • Aktivieren Sie Above 4G Decoding.
  • Aktivieren Sie Resizable BAR, falls unterstützt.
  • Setzen Sie die PCIe-Linkgeschwindigkeit auf Auto oder Gen4/Gen5, je nach Ihrer Hardware.
  • Deaktivieren Sie CSM, wenn Ihr Betriebssystem über UEFI bootet.
  • Speichern und beenden Sie.

Schritt 3: NVIDIA-Treiber unter Linux installieren

NVIDIA bietet mehrere Installationspfade. Die Paketmanager-Methode wird für Server-Umgebungen bevorzugt, da sie sich in DKMS (Dynamic Kernel Module Support) integriert, das das Kernel-Modul nach Kernel-Updates automatisch neu erstellt.

Fügen Sie zunächst das NVIDIA-Paket-Repository hinzu und installieren Sie den Treiber:

sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install -y nvidia-driver-545 nvidia-dkms-545

Ersetzen Sie 545 durch die neueste verfügbare Produktionszweig-Version für Ihre GPU. Sie können verfügbare Versionen abfragen mit:

apt-cache search nvidia-driver | grep "^nvidia-driver"

Starten Sie nach der Installation neu:

sudo reboot

Überprüfen Sie nach dem Neustart, ob der Treiber korrekt geladen wurde:

nvidia-smi

Die Ausgabe sollte beide GPUs mit ihrer Treiberversion, CUDA-Versionskompatibilität und aktuellem Energiezustand auflisten. Wenn nur eine GPU erscheint, ist die zweite Karte möglicherweise nicht korrekt eingesetzt oder hat ein Problem mit der Stromversorgung.

Ein kritischer Fallstrick: Wenn Nouveau (der Open-Source-NVIDIA-Treiber) geladen ist, wird er mit dem proprietären Treiber in Konflikt geraten. Setzen Sie ihn explizit auf die Blacklist:

echo -e "blacklist nouveaunoptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
sudo reboot

Schritt 4: CUDA Toolkit installieren

NVLinks volle Leistungsfähigkeit — insbesondere Peer-to-Peer-Speicherzugriff und kollektive Kommunikation — erfordert das CUDA Toolkit. Installieren Sie es über das NVIDIA CUDA-Repository für die zuverlässigste Versionsübereinstimmung:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get install -y cuda-toolkit-12-4

Fügen Sie CUDA-Binärdateien und -Bibliotheken zu Ihrer Shell-Umgebung hinzu:

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

Überprüfen Sie die Installation:

nvcc --version

Sie sollten eine Ausgabe sehen, die die CUDA-Compiler-Version identifiziert. Führen Sie auch das CUDA-Sample deviceQuery aus, wenn Sie die Samples installiert haben — es wird beide GPUs aufzählen und NVLink-Capability-Flags melden.

Dies ist der diagnostisch wichtigste Schritt. nvidia-smi bietet mehrere Unterbefehle speziell für die NVLink-Inspektion.

Überprüfen Sie die System-Topologiematrix:

nvidia-smi topo -m

Die Ausgabe ist eine Matrix, die den Interconnect-Typ zwischen jedem Gerätepaar im System zeigt. Suchen Sie nach NV#-Bezeichnungen zwischen Ihren GPUs, wobei # die Anzahl der sie verbindenden NVLink-Bridges ist. Eine Bezeichnung von NV2 bedeutet, dass zwei NVLink-Bridges aktiv sind. Eine Bezeichnung von PIX oder PHB bedeutet, dass die GPUs über PCIe kommunizieren — NVLink ist nicht aktiv.

Beispielausgabe für ein korrekt konfiguriertes Dual-GPU-System:

        GPU0    GPU1    CPU Affinity    NUMA Affinity
GPU0     X      NV2     0-23            0
GPU1    NV2      X      0-23            0

NVLink-Link-Status pro GPU überprüfen:

nvidia-smi nvlink --status -i 0

Dies zeigt den Status jedes NVLink-Ports auf GPU 0. Aktive Links zeigen den Active-Status und die ausgehandelte Geschwindigkeit.

NVLink-Fehlerzähler überprüfen:

nvidia-smi nvlink --errorcounters -i 0

Nicht-null Replay- oder Recovery-Fehlerzählungen weisen auf ein Problem auf der physischen Schicht hin — eine nicht vollständig eingesetzte Bridge, ein beschädigter Konnektor oder Signalintegritätsprobleme durch unzureichende Stromversorgung.

NVLink-Durchsatz in Echtzeit überwachen:

nvidia-smi nvlink -s

Dies gibt kumulative Durchsatzzähler aus. Für Echtzeit-Delta-Überwachung kombinieren Sie es mit watch:

watch -n 1 nvidia-smi nvlink -s

Schritt 6: Peer-to-Peer-Speicherzugriff aktivieren und überprüfen

NVLinks kohärenter Speicherzugriff erfordert, dass Peer-to-Peer (P2P) auf CUDA-Ebene aktiviert ist. Sie können dies programmatisch überprüfen:

cat << 'EOF' > check_p2p.py
import subprocess
result = subprocess.run(['nvidia-smi', 'topo', '-p2p', 'r'], capture_output=True, text=True)
print(result.stdout)
EOF
python3 check_p2p.py

Oder verwenden Sie ein CUDA-C-Programm mit cudaDeviceCanAccessPeer(). Zur schnellen Validierung sind die CUDA-Samples simpleP2P und p2pBandwidthLatencyTest die definitiven Werkzeuge:

cd /usr/local/cuda/samples/1_Utilities/p2pBandwidthLatencyTest
make
./p2pBandwidthLatencyTest

Die Ausgabe zeigt die bidirektionale Bandbreite zwischen GPU-Paaren. Über NVLink sollten Sie Werte sehen, die mit der obigen Bandbreitentabelle übereinstimmen. Wenn Sie PCIe-Bandbreite (~10–30 GB/s) sehen, ist P2P über NVLink nicht aktiv — überprüfen Sie, ob die Bridge vollständig eingesetzt ist und ob keine IOMMU-Einstellungen den Peer-Zugriff blockieren.

IOMMU-Überlegung: Auf AMD EPYC- und einigen Intel Xeon-Plattformen kann IOMMU standardmäßig aktiviert sein und den GPU-P2P-Zugriff blockieren. Wenn P2P nicht funktioniert, fügen Sie iommu=pt (Passthrough-Modus) oder amd_iommu=on iommu=pt zu Ihrer Kernel-Befehlszeile in /etc/default/grub hinzu:

sudo nano /etc/default/grub
# Add iommu=pt to GRUB_CMDLINE_LINUX_DEFAULT
sudo update-grub
sudo reboot

Moderne Frameworks erkennen NVLink automatisch über NCCL (NVIDIA Collective Communications Library), aber das Verstehen, wie dieses Verhalten überprüft und optimiert werden kann, ist für Produktionsbereitstellungen unerlässlich.

NCCL-Umgebungsvariablen für NVLink-Optimierung:

export NCCL_DEBUG=INFO
export NCCL_P2P_LEVEL=NVL        # Force NVLink for P2P transfers
export NCCL_SHM_DISABLE=0        # Keep shared memory enabled
export NCCL_SOCKET_IFNAME=eth0   # Specify network interface for multi-node

Das Setzen von NCCL_DEBUG=INFO veranlasst NCCL, seine Topologieerkennung zur Laufzeit auszugeben. Sie werden Zeilen wie [0] NCCL INFO Channel 00 : 0[...] -> 1[...] via NVL sehen, die bestätigen, dass NVLink für Inter-GPU-Transfers verwendet wird.

PyTorch Multi-GPU-Überprüfung:

import torch

print(f"CUDA available: {torch.cuda.is_available()}")
print(f"GPU count: {torch.cuda.device_count()}")

for i in range(torch.cuda.device_count()):
    for j in range(torch.cuda.device_count()):
        if i != j:
            can_access = torch.cuda.can_device_access_peer(i, j)
            print(f"GPU {i} -> GPU {j} P2P access: {can_access}")

Wenn can_device_access_peer für beide Richtungen True zurückgibt, werden PyTorchs DataParallel und DistributedDataParallel NVLink automatisch für die Gradienten-Synchronisation verwenden.

TensorFlow Multi-GPU-Überprüfung:

import tensorflow as tf

gpus = tf.config.list_physical_devices('GPU')
print(f"Detected GPUs: {len(gpus)}")
for gpu in gpus:
    print(gpu)

# Enable memory growth to prevent TF from allocating all VRAM at startup
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)

TensorFlow verwendet NCCL für kollektive Operationen bei der Ausführung mit MirroredStrategy, sodass die oben genannten NCCL-Umgebungsvariablen gleichermaßen gelten.

Bevor Sie Produktions-Workloads übergeben, erstellen Sie eine Leistungsbasislinie. Dies dient auch als Regressionstest nach Treiber-Updates oder Hardware-Änderungen.

NCCL All-Reduce-Bandbreitentest (der repräsentativste Benchmark für verteiltes Training):

git clone https://github.com/NVIDIA/nccl-tests.git
cd nccl-tests
make CUDA_HOME=/usr/local/cuda
./build/all_reduce_perf -b 8 -e 512M -f 2 -g 2

Das Flag -g 2 gibt zwei GPUs an. Schauen Sie auf die Spalte busbw — das ist die effektive Bus-Bandbreite. Über NVLink auf RTX 3090-Karten sollten Sie Werte sehen, die sich 100 GB/s annähern. Über PCIe erwarten Sie 20–30 GB/s.

cuBLAS GEMM-Benchmark für rechenintensive Workloads:

/usr/local/cuda/extras/demo_suite/bandwidthTest --mode=shmoo

Schritt 9: Laufende Überwachung und Alarmierung

Für Produktionsumgebungen ist nvidia-smi im Daemon-Modus oder die Integration mit Prometheus über dcgm-exporter der empfohlene Ansatz.

Installieren Sie DCGM (Data Center GPU Manager):

sudo apt-get install -y datacenter-gpu-manager
sudo systemctl enable nvidia-dcgm
sudo systemctl start nvidia-dcgm

Fragen Sie NVLink-spezifische Metriken über DCGM ab:

dcgmi dmon -e 1011,1012,1013,1014

Feld-IDs 1011–1014 entsprechen NVLink-Bandbreitenzählern (TX/RX pro Link). Diese können nach Prometheus exportiert und in Grafana für langfristige Trendanalysen visualisiert werden.

Für leichtgewichtigere Überwachung erfasst eine einfache nvidia-smi-Schleife das Wesentliche:

nvidia-smi dmon -s pucvmet -d 5

Die Flags -s pucvmet aktivieren die Berichterstattung über Leistung, Auslastung, Takt, VRAM, Speicherbandbreite, ECC und Temperatur in 5-Sekunden-Intervallen.

SzenarioEmpfohlenes InterconnectBegründung
2-GPU-Consumer-WorkstationNVLink-BridgeKostengünstig, 2x PCIe-Bandbreite
2-4 GPU Prosumer-ServerNVLink-Bridge (falls unterstützt)Bedeutsamer Bandbreitengewinn für Training
8-GPU-RechenzentrumsknotenNVSwitch-FabricAll-to-All-Konnektivität, kein Engpass
Multi-Node verteiltes TrainingInfiniBand + NVLinkNVLink innerhalb des Knotens, IB zwischen Knoten
Inferenz-Serving (latenzempfindlich)NVLinkReduziert Inter-GPU-Synchronisationslatenz
Video-Transkodierung (embarrassingly parallel)PCIe ausreichendKeine Inter-GPU-Kommunikation erforderlich

Häufige Fehlermodi und Fehlerbehebung

NVLink nach physischer Installation nicht erkannt. Führen Sie nvidia-smi topo -m aus und prüfen Sie auf PIX anstelle von NV#. Setzen Sie die Bridge neu ein. Überprüfen Sie, ob sich beide GPUs auf demselben PCIe-Root-Complex befinden — GPUs auf verschiedenen CPU-Sockeln, die über QPI/UPI verbunden sind, bilden kein NVLink-Paar, selbst wenn eine Bridge installiert ist.

P2P-Bandbreite entspricht PCIe-Geschwindigkeiten trotz NVLink-Bridge. IOMMU blockiert höchstwahrscheinlich den Peer-Zugriff. Wenden Sie den Kernel-Parameter iommu=pt wie oben beschrieben an.

NVLink-Fehler häufen sich in nvidia-smi nvlink --errorcounters. Problem auf der physischen Schicht. Untersuchen Sie die Bridge-Kontaktpads auf Schmutz oder Beschädigungen. Versuchen Sie, die Bridge neu einzusetzen. Wenn Fehler anhalten, ist die Bridge selbst möglicherweise defekt.

NCCL verwendet NVLink nicht, obwohl die Topologie NV2 zeigt. Setzen Sie NCCL_P2P_LEVEL=NVL explizit. Überprüfen Sie auch die NCCL-Versionskompatibilität mit Ihrer CUDA-Version — Fehlanpassungen veranlassen NCCL, auf gemeinsamen Speicher oder Socket-Transport zurückzufallen.

Treiberinstallation schlägt mit DKMS-Fehlern fehl. Die Kernel-Header für Ihren laufenden Kernel sind möglicherweise nicht installiert. Beheben Sie dies mit:

sudo apt-get install -y linux-headers-$(uname -r)
sudo dkms autoinstall

Die NVLink-Konfiguration ist nur so effektiv wie die zugrunde liegende Server-Plattform. Mehrere Infrastrukturfaktoren wirken sich in der Praxis direkt auf die NVLink-Leistung aus:

PCIe-Topologie. Auf Dual-Socket-EPYC- oder Xeon-Plattformen sind PCIe-Lanes auf beide CPUs verteilt. GPUs, die mit verschiedenen CPUs verbunden sind, kommunizieren über das Inter-Socket-Fabric (Infinity Fabric oder UPI), was Latenz hinzufügt und die effektive Bandbreite für GPU-zu-GPU-Transfers reduziert, die die Socket-Grenze überschreiten müssen. Installieren Sie NVLink-gepaarte GPUs nach Möglichkeit in PCIe-Slots, die mit demselben CPU-Socket verbunden sind.

Speicherbandbreite. Selbst wenn NVLink GPU-zu-GPU-Transfers übernimmt, bleibt das Speicher-Subsystem der CPU der Engpass für die Datenaufnahme. Hochbandbreiten-DDR5- oder HBM-ausgestattete Plattformen reduzieren die Zeit, die für das Staging von Daten benötigt wird, bevor sie die GPU erreichen.

Speicherdurchsatz. Große Modell-Checkpoints und Trainingsdatensätze erfordern schnellen Speicher. NVMe SSDs mit sequenziellen Lesegeschwindigkeiten über 7 GB/s verhindern, dass die Speicherschicht während des Datenladens zum Engpass wird.

Kühlung. Zwei High-TDP-GPUs unter anhaltender NVLink-beschleunigter Last erzeugen erhebliche Wärme. Stellen Sie ausreichende Luftzirkulation oder Flüssigkühlungskapazität sicher. Thermisches Drosseln reduziert die GPU-Taktgeschwindigkeiten und negiert den Bandbreitenvorteil, den NVLink bietet.

Für Teams, die Multi-GPU-KI-Training oder HPC-Simulationen durchführen, bieten Dedicated Server mit NVMe-Speicher und Root-Zugriff die notwendige Hardware-Kontrolle, um die in diesem Leitfaden beschriebene vollständige Konfiguration umzusetzen. Für GPU-beschleunigte Workloads speziell bietet GPU Hosting vorkonfigurierte Umgebungen mit bereits installierten NVIDIA-Treibern. Teams, die eine flexible Basis für benutzerdefinierte CUDA-Umgebungen benötigen, finden möglicherweise auch VPS Hosting nützlich für Entwicklung und Tests, bevor sie auf dedizierte Hardware skalieren.

Wichtige Erkenntnisse und Entscheidungs-Checkliste

Überprüfen Sie vor der Bereitstellung von NVLink in der Produktion jeden Punkt:

  • Hardware bestätigt: Beide GPUs befinden sich auf NVIDIAs NVLink-Kompatibilitätsliste für Ihre spezifische SKU, nicht nur die Produktfamilie.
  • Bridge-Generation abgestimmt: Die NVLink-Bridge-Generation stimmt mit der GPU-Generation überein (Turing-Bridge für Turing-GPUs, Ampere-Bridge für Ampere-GPUs).
  • Physische Installation überprüft: nvidia-smi topo -m zeigt NV1 oder NV2 zwischen GPU-Paaren, nicht PIX oder PHB.
  • P2P-Zugriff bestätigt: p2pBandwidthLatencyTest meldet NVLink-Bandbreite (nicht PCIe-Bandbreite).
  • IOMMU adressiert: Bei Ausführung auf EPYC oder Xeon ist iommu=pt in den Kernel-Parametern gesetzt.
  • NCCL-Transport bestätigt: NCCL_DEBUG=INFO-Ausgabe zeigt via NVL für Inter-GPU-Kanäle.
  • Fehlerzähler sauber: nvidia-smi nvlink --errorcounters zeigt null Replay- und Recovery-Fehler nach einem Burn-in-Test.
  • Überwachung aktiv: DCGM oder nvidia-smi dmon protokolliert NVLink-Bandbreite und Fehlermetriken in einem persistenten Speicher.
  • Thermischer Spielraum bestätigt: Beide GPUs halten Ziel-Taktgeschwindigkeiten unter Volllast ohne thermisches Drosseln aufrecht.
  • Treiber- und CUDA-Versionen fixiert: Produktionsumgebungen verwenden fixierte Treiberversionen, die über DKMS verwaltet werden, um zu verhindern, dass unbeabsichtigte Updates die Konfiguration beschädigen.

Häufig gestellte Fragen

Funktioniert NVLink auf allen NVIDIA RTX-Karten?

Nein. Die NVLink-Unterstützung variiert erheblich selbst innerhalb der RTX-Reihe. Die RTX 4080 unterstützt beispielsweise NVLink nicht, obwohl sie eine High-End-Ada-Lovelace-Karte ist. Nur die RTX 4090 unterstützt NVLink in dieser Generation. Überprüfen Sie immer das Datenblatt der spezifischen GPU, nicht die Produktfamilie.

Kann NVLink über verschiedene GPU-Modelle hinweg verwendet werden?

Im Allgemeinen nein. NVLink erfordert, dass beide GPUs dasselbe Modell und dieselbe Generation sind. NVIDIA unterstützt offiziell keine gemischten NVLink-Konfigurationen, und der Treiber-Stack bildet keine Peer-to-Peer-NVLink-Beziehung zwischen unterschiedlichen GPUs, selbst wenn die physischen Konnektoren kompatibel sind.

Was passiert, wenn die NVLink-Bridge entfernt wird, während das System läuft?

Das System stürzt nicht sofort ab, aber alle aktiven P2P-Transfers über NVLink schlagen fehl, was typischerweise dazu führt, dass die laufende CUDA-Anwendung einen CUDA-Fehler auslöst und beendet wird. Die GPUs fallen für nachfolgende Operationen auf PCIe zurück. Das Hot-Removal der Bridge wird nicht unterstützt und birgt das Risiko physischer Schäden an den Kontaktpads.

Wird NVLink automatisch von PyTorch und TensorFlow verwendet, oder ist eine explizite Konfiguration erforderlich?

Beide Frameworks verwenden NCCL für Multi-GPU-kollektive Operationen, und NCCL erkennt die NVLink-Topologie automatisch. Sie sollten jedoch immer mit NCCL_DEBUG=INFO überprüfen, dass NCCL tatsächlich den NVLink-Transportpfad auswählt. In einigen Konfigurationen — insbesondere bei aktiviertem IOMMU oder nicht übereinstimmenden NCCL/CUDA-Versionen — fällt NCCL lautlos auf langsamere Transporte zurück.

Wie erkenne ich, ob NVLink meinen Trainingsdurchsatz tatsächlich verbessert?

Führen Sie Ihren Trainingsjob mit NCCL_P2P_DISABLE=1 (erzwingt PCIe) und dann ohne ihn (erlaubt NVLink) aus. Vergleichen Sie die Iterationszeit oder Samples pro Sekunde. Für kommunikationsintensive Workloads wie das Training großer Transformer mit häufigen All-Reduce-Operationen reduziert NVLink typischerweise die Inter-GPU-Synchronisationszeit um 40–70 % im Vergleich zu PCIe, was sich direkt in schnelleren Epoch-Zeiten niederschlägt.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen