- GPUs spielen im modernen Machine Learning eine zentrale Rolle und bestehen aus einer Struktur, die zahlreiche auf schnelle Matrixmultiplikation spezialisierte Streaming Multiprocessors (SMs) mit HBM (High Bandwidth Memory) kombiniert
- Die SMs einer GPU sind in Tensor Cores (Matrixmultiplikation) und CUDA Cores (Vektoroperationen) gegliedert und unterstützen massive Parallelverarbeitung sowie flexible Programmierung
- GPU und TPU unterscheiden sich in interner Struktur und Netzwerkaufbau; GPUs bieten eine hohe Allgemeinheit und Skalierbarkeit, erfordern aber mehr Überlegungen, um optimale Leistung zu erreichen
- Innerhalb eines Nodes ermöglichen NVLink und NVSwitch ultraschnelle Kommunikation zwischen GPUs, während zwischen Nodes Netzwerke wie InfiniBand große verteilte Trainingsläufe unterstützen
- Kollektivoperationen (Collectives) auf GPUs (z. B. AllReduce, AllGather) hängen leistungsmäßig stark von Hardwarestruktur und Netzwerkebene ab und liegen in der Praxis tendenziell unter der theoretischen Bandbreite
Was ist eine GPU?
- Moderne ML-(Machine-Learning-)GPUs (z. B. H100, B200) kombinieren Dutzende bis Hunderte auf Matrixmultiplikation spezialisierte Streaming Multiprocessors (SMs) mit schnellem HBM-Speicher
- Jeder SM enthält Tensor Cores (Matrixmultiplikation), Warp Scheduler (Vektoroperationen) und SMEM (On-Chip-Cache)
- Anders als bei einer TPU ermöglichen GPUs mit mehr als 100 SMs flexiblere und stärker parallelisierte Verarbeitung
Details zur SM-Struktur
- Ein SM ist in 4 Subpartitionen unterteilt; jede Subpartition enthält jeweils Tensor Cores, CUDA Cores (Vektoroperationen), Warp Scheduler, Register File usw.
- CUDA Cores sind für Vektor-Arithmetik (SIMD/SIMT) zuständig, Tensor Cores sind auf Matrixmultiplikation spezialisiert
- Die FLOPs der Tensor Cores sind überwältigend höher, und bei Berechnungen mit niedrigerer Präzision steigt der Durchsatz weiter
- Aktuelle GPUs (z. B. B200) verfügen zusätzlich über großes TMEM, um umfangreiche Eingaben für Tensor Cores zu unterstützen
Die Flexibilität der CUDA Cores
- Die CUDA Cores einer GPU verwenden das SIMT-Modell (Single Instruction Multiple Threads), bei dem ein Befehl parallel auf viele Threads ausgeführt wird
- Jeder Thread besitzt einen eigenen Befehlszeiger (Program Counter) und bietet damit Flexibilität etwa für bedingte Verzweigungen; viele Verzweigungen innerhalb eines Warps führen jedoch zu Leistungseinbußen
- Jeder CUDA Core kann seinen Zustand und Speicherzugriffe individuell handhaben (TPUs können nur zusammenhängenden Speicher verarbeiten)
Scheduling/Parallelität
- Ein SM plant viele Warps (bis zu 64) zur gleichzeitigen Ausführung ein, wobei jeder Warp Scheduler jeweils ein Programm gleichzeitig ausführt
- Diese Struktur ermöglicht GPUs eine hohe Parallelität bei gleichzeitig beträchtlicher Flexibilität
Speicherstruktur der GPU
- Bei GPUs ist HBM der größte Speicher; daneben gibt es eine Speicherhierarchie aus L2/L1 (SMEM)/TMEM/Registern
Zusammenfassung aktueller GPU-Spezifikationen
- Anzahl der SMs (Streaming Multiprocessors), Takt, Speicher, FLOPs und Bandbreite (BW) unterscheiden sich je nach Modell
- Speicherkapazität (HBM), Bandbreite und FLOPs (Floating Point/Ganzzahl/niedrige Präzision) steigen von Generation zu Generation
- Wichtige Merkmale aus der Tabelle (ausgelassen): Blackwell (B200) bietet HBM 192GB, HBM-BW 8.0TB/s, FP8-FLOPs 4.5e15 usw.
- Der Hardware-Fortschritt zeigt sich klar in jeder Generation, etwa bei Register- und On-Chip-Cache-(SMEM-)Kapazität sowie der Ergänzung von TMEM
GPU/TPU-Vergleich
- GPUs sind allgemein einsetzbar und in viele kleine SMs (parallele Einheiten) modularisiert; sie bieten viel Hardwarekontrolle, sind aber schwieriger zu verstehen und zu optimieren
- TPUs bestehen aus wenigen großen Tensor Cores und vielen Vektor-ALUs (VPUs); durch die Steuerung über einen einzelnen Thread kann die Hardware einfacher und kostengünstiger sein
- Daher ist bei TPUs Compiler-Optimierung unverzichtbar, während GPUs mehrere Kernel unabhängig ausführen können, was die Nutzung erleichtert
- Beim Verhältnis von Leistung zu Preis bietet die aktuelle H200-GPU etwa doppelt so viele FLOPs/s wie eine TPU v5p, 1,5-mal so viel HBM, kostet aber etwa 2,5-mal so viel
- TPUs verfügen über viel und schnelles VMEM (On-Chip-Cache), was etwa bei der Inferenz von LLMs große Vorteile bringen kann
Kernaussagen aus dem GPU-Hardware-Quiz Q&A
- Das H100 hat insgesamt 16.896 fp32-CUDA-Cores (132 SM x 4 x 32), das B200 18.944
- Die FLOPs für Vektoroperationen liegen beim H100 bei maximal rund 33,5TFLOPs/s und damit 30-mal unter den Matrixmultiplikations-FLOPs der Tensor Cores (990TFLOPs/s)
- Die kombinierte Kapazität von L1/SMEM und Registern im H100 beträgt 66MB, TPU-VMEM 120MB
- Das Verhältnis von Bandwidth (Bandbreite) zu FLOPs (theoretische Rechenintensität) liegt bei H100/B200 jeweils bei etwa 280–300 und ist damit ähnlich wie bei TPUs
GPU-Networking (Kommunikationsstruktur)
Node-/Cluster-Struktur
- GPU-Nodes sind meist in Gruppen von 8 GPUs aufgebaut und über NVLink (ultraschnell) sowie NVSwitch (Switch) mit voller Bandbreite direkt verbunden
- Zwischen Nodes ist Scale-out über InfiniBand (oder Ethernet usw.) möglich
- Aktuelle GPUs (Blackwell) unterstützen Architekturen, die sich auf bis zu 72 Nodes erweitern lassen
Merkmale nach Netzwerkebene
- Innerhalb eines Nodes (NVLink-Bereich): Egress pro GPU 450GB/s (H100), 900GB/s (B200), bis zu 1,6TB/s pro NVSwitch
- Oberhalb des Nodes (InfiniBand Leaf/Spine): Struktur mit Leaf Switches (8) bis Spine Switches (16), wobei theoretisch 400GB/s Full Bandwidth zwischen GPU und GPU erhalten bleiben
- In großen Architekturen wie SuperPod mit 1024 GPUs (128 Nodes) oder GB200 (72-GPU-Node) steigt die Bandbreite um das 9-Fache (3600GB/s)
Wichtige Punkte zur Netzwerkleistung
- Die theoretische Netzwerkstruktur (Full Fat Tree) ist so ausgelegt, dass auch zwischen Node und Node maximale Bandbreite bereitgestellt wird
- Wegen Hardware-Port-Beschränkungen wird bei einer Skalierung auf 1024–4096 GPUs eine mehrstufige Struktur mit zusätzlichen Spine-/Core-Switches verwendet
- Der Wechsel von Bandbreite innerhalb des Nodes (450GB/s) zu Bandbreite zwischen Nodes (400GB/s) führt zu Leistungsunterschieden bei Kollektivoperationen
Struktur von Kollektivoperationen (Collectives)
- Unterstützung für übergeordnete Kollektivoperationen wie AllGather, AllReduce (Summierung) und AllToAll (Verteilung)
- Innerhalb eines Nodes sind über NVLink direkte Verbindungen mit optimaler Leistung möglich (theoretische B/W), zwischen Nodes läuft die Kommunikation über InfiniBand
- Verwendet werden Bibliotheken wie NVIDIA NCCL und NVSHMEM
Leistungsanalyse von Kollektivoperationen
- AllGather/ReduceScatter: per Ring-Verfahren mit B/W (450GB/s beim H100) implementiert; bei kleinen Nachrichten ist auch ein Tree-Verfahren möglich
- AllToAll: Jede GPU sendet direkt an die jeweilige Ziel-GPU; da die Bandbreite durch N geteilt wird, ist es innerhalb eines Nodes theoretisch doppelt so schnell
- Tatsächliche Messungen zeigen bei AllReduce etwa 370GB/s und erreichen damit nicht das Hardware-Maximum
- Im Vergleich zu TPUs wird die Peak Bandwidth der Hardware erst bei großen Datenmengen (zig MB bis GB) annähernd erreicht
Zusammenfassung und Erkenntnisse
- GPUs punkten mit Allgemeinheit und Skalierbarkeit, aber je nach Hardware- und Netzwerkstruktur sind Leistungsoptimierung und Beobachtbarkeit anspruchsvoller als bei TPUs
- Networking (Intra-Node/NVLink/InfiniBand/Leaf/Spine usw.) ist entscheidend für die Leistung großer Trainingsläufe; auf die Differenz zwischen realer und theoretischer Bandbreite muss geachtet werden
- Das Verständnis von Kollektivoperationen und Netzwerkstrukturen ist ein wesentlicher Faktor für das Training/Serving extrem großer verteilter Modelle
- Um Engpässe und optimale Bedingungen zu identifizieren, ist ein Vorgehen erforderlich, das auf praktischen Benchmarks und einem Verständnis der Hardwaredetails basiert
Noch keine Kommentare.