Glossar · GPU und Speicher
Wissensstufe: GrundlageUnified Memory
Unified Memory ist ein Speicher, den CPU und GPU gemeinsam adressieren, sodass beide mit denselben Daten arbeiten, ohne sie zwischen zwei Speichern zu kopieren.
Auch: Gemeinsamer Speicher, Shared Memory (CPU/GPU)
Einfach erklärt
Zwei Abteilungen arbeiten an denselben Akten: Entweder führt jede ein eigenes Archiv, und ein Bote trägt Kopien hin und her, oder beide greifen auf ein gemeinsames Archiv zu. Unified Memory ist das gemeinsame Archiv.
Was technisch passiert
In einem klassischen Rechner mit Grafikkarte hat jeder Prozessor seinen eigenen Speicher. Der Hauptprozessor nutzt den Arbeitsspeicher auf der Hauptplatine, die GPU ihren Grafikspeicher. Bevor die GPU rechnen kann, muss Software die Daten ausdrücklich dorthin übertragen. Wie groß ein Modell auf der GPU sein darf, entscheidet allein der Grafikspeicher.
Die CUDA-Dokumentation beschreibt Unified Memory zunächst als Programmiermodell: ein einziger Adressraum, den Code auf CPU und GPU gleichermaßen verwenden kann. Auf Systemen mit getrennten Speichern sorgt die Laufzeitumgebung dafür, dass Daten im Hintergrund dorthin wandern, wo sie gebraucht werden. Beim GB10-Chip des DGX Spark ist die Einheit auch physisch vorhanden: CPU und GPU teilen sich einen Pool aus 128 GB LPDDR5x. Einen zweiten Speicher, in den kopiert werden müsste, gibt es nicht.
Daraus folgen zwei Eigenschaften. Erstens kann die GPU Modellgewichte und KV-Cache in einer Größe halten, die Grafikkarten für Arbeitsplatzrechner in der Regel nicht bieten. Zweitens wird die Bandbreite zur Grenze: NVIDIA gibt für den DGX Spark 273 GB/s an. Für jedes erzeugte Token liest das Modell große Teile seiner Gewichte, deshalb bestimmt die Speicherbandbreite wesentlich, wie schnell Text entsteht. Zudem belegen Betriebssystem und laufende Programme einen Teil desselben Pools, für das Modell steht also nicht die volle Menge zur Verfügung.
In der Praxis
Bei AI SolutionX bringt jedes der vier Systeme des Forschungsverbunds seine 128 GB ein, zusammen 512 GB. Das ist trotzdem kein einzelner Speicher: Im Tensor-Parallel-Betrieb hält jeder Knoten nur seinen Anteil der Gewichte im eigenen Unified Memory, und Zwischenergebnisse wandern über das Netzwerk zu den anderen Knoten. Der gemeinsame Speicher innerhalb eines Geräts erklärt, warum ein Modell jenseits von 128 GB überhaupt auf vier kompakte Systeme passt. Wie die Teile zusammenarbeiten, beschreibt der Eintrag zur Multi-Node-Inferenz.
Wann ist das sinnvoll?
- Wenn ein Modell samt Kontext mehr Speicher braucht, als eine einzelne Grafikkarte mitbringt, und das Tokentempo nicht das wichtigste Kriterium ist.
- Wenn lange Eingaben einen großen KV-Cache erzeugen, der neben den Gewichten Platz finden muss.
- Wenn mehrere Modelle gleichzeitig auf einem Gerät liegen sollen, etwa Sprachmodell, Embedding-Modell und Transkription.
- Weniger geeignet, wenn kleine Modelle möglichst schnell antworten sollen: Der Grafikspeicher einer diskreten GPU ist dafür in der Regel schneller angebunden.
Nicht verwechseln mit
- Getrennter CPU- und GPU-Speicher mit Kopien
- Bei einer diskreten Grafikkarte liegen Arbeitsspeicher und Grafikspeicher physisch getrennt, Daten werden vor jeder Berechnung hinübertransportiert. Auch das CUDA-Programmiermodell Managed Memory verschiebt dort im Hintergrund zwischen zwei Speichern; beim GB10 existiert nur ein Pool.
- Shared Memory in CUDA-Kerneln
- In der GPU-Programmierung heißt Shared Memory ein kleiner, sehr schneller Speicher, den sich die Threads eines Blocks auf dem Chip teilen. Mit dem gemeinsamen Hauptspeicher von CPU und GPU hat er nichts zu tun.
Quellen
- CUDA Programming Guide: Unified Memory · abgerufen am
- CUDA Programming Guide: Unified and System Memory · abgerufen am
- DGX Spark User Guide: Hardware Overview · abgerufen am
Fachlich geprüft am · Alle Begriffe im Glossar