Wie die GPU-Speicherhierarchie die Geschwindigkeit der LLM-Inference beeinflusst
Automatische Übersetzung
Dieser Artikel wurde automatisch aus der englischen Originalversion übersetzt.
Die GPU-Speicherhierarchie beeinflusst die LLM-Inference, weil das Übertragen eines Zwischentensors in den GPU-Hauptspeicher mehr kostet als seine Wiederverwendung innerhalb eines laufenden Kernels. HBM enthält das große Model und den Attention-Cache. Register, Shared Memory und L2 bieten kleinere Speicherbereiche für die Wiederverwendung von Daten während der Berechnung.
Wer die Inference profiliert, muss Speicherkapazität und Speicherverkehr unterscheiden. Dass ein Model in HBM passt, belegt nicht, dass seine Kernels Daten effizient übertragen.
Was die einzelnen Speicher enthalten
| Speicher | Geltungsbereich | Rolle bei der Inference |
|---|---|---|
| Register | Von einem Thread verwendete Werte | Akkumulatoren und Zwischenberechnungen |
| Shared Memory | Threads innerhalb eines Rechenblocks | Gemeinsame Wiederverwendung von Matrixkacheln und Reduktionen |
| L2-Cache | Gemeinsam von der GPU genutzt | Wiederverwendung über Blockgrenzen hinweg ohne erneutes Laden aus dem Hauptspeicher |
| HBM | GPU-Hauptspeicher | Weights, KV cache, Eingaben, Ausgaben und größere Zwischenergebnisse |
Für den H100 SXM dokumentiert NVIDIA 80 GB HBM3 mit 3.35 TB/s, 50 MB L2 und bis zu 228 KB Shared Memory pro Streaming-Multiprozessor. Die für einen einzelnen Threadblock verfügbare Menge ist kleiner und hängt von den Zuweisungseinstellungen ab. Diese Spezifikationen gelten für diese GPU-Variante und sind keine gemeinsamen Grenzen aller H100-Modelle. Siehe die H100-Spezifikation und den Hopper-Tuning-Leitfaden.
Warum ein Zwischentensor eine Rolle spielt
Eine Folge separater Kernels kann ein Zwischenergebnis in HBM schreiben und im nächsten Kernel wieder einlesen. Fusion kann dieses Ergebnis in Registern oder Shared Memory halten. FlashAttention wendet verwandte Prinzipien der Datenwiederverwendung auf Attention an und vermeidet große Score-Matrizen in HBM.
Der Speicher auf dem Chip ist begrenzt. Ein Kernel, der zu viele Register oder zu viel Shared Memory verwendet, kann die Anzahl gleichzeitig laufender Blöcke reduzieren. Das Auslagern von Registerwerten kann zusätzlichen Speicherverkehr verursachen. Mehr Fusion garantiert daher keine schnellere Ausführung.
Vergleichen Sie bei der Untersuchung einer Änderung die übertragenen HBM-Bytes, die Registerbelegung, die Shared-Memory-Belegung, ausgelagerte Registerwerte und die Anzahl aktiver Blöcke. Halten Sie Model, Tensorformen, Präzision und GPU-Variante konstant. Messen Sie anschließend die gesamte Anfrage: Ein schnellerer Attention-Kernel kann nur einen kleinen Anteil der gesamten Latency ausmachen.
Engineering-Leitfaden: GPU-Speicherhierarchie zeigt, wo sich diese Speicher auf einem H100 SXM befinden.