Precipice.tech Logo precipice.tech
Start / Blog / Speicherbandbreite
Deep Dive · KI-Infrastruktur

Ein Token ist ein Speicherzugriff, keine Rechenaufgabe

Bei Batch Size 1 entscheidet nicht die Rechenleistung, sondern die nackte Speicherbandbreite über die Tokens pro Sekunde. Das ist der Grund, warum ein ausgemusterter HBM2-Beschleuniger für 200 Euro Modelle schneller generiert als eine schicke Unified-Memory-Kiste, und zugleich der Grund, warum diese Rechnung nach zwölf Monaten trotzdem kippen kann. Beides steht hier, mit offengelegten Annahmen.

Autor Jan Uka Stand llama.cpp / vLLM, ROCm 6, CUDA 13 Lesezeit ~13 min Level Admin / Architekt
01

Die These: Die Compute Units langweilen sich

Gerade kauft gefühlt jeder Entwickler einen Mac mini mit Unified Memory, um lokale Sprachmodelle zu betreiben. Das Marketing funktioniert hervorragend: ein leises Aluminiumgehäuse, ein Speicher für CPU und GPU, kein Treiber-Theater. Die technische Realität dahinter ist deutlich unspektakulärer.

Autoregressive Generierung bei einer Batch Size von 1 hat exakt einen physischen Flaschenhals, und das sind nicht die Teraflops. Um ein einziges Token zu erzeugen, muss die Maschine sämtliche aktiven Gewichte des Modells einmal komplett aus dem Speicher in die Register schaufeln. Danach fällt genau ein Token heraus. Dann beginnt derselbe Durchlauf für das nächste Token von vorn.

Das Verhältnis von Rechenoperationen zu geladenen Bytes ist dabei erbarmungswürdig. Pro Gewicht fällt im Kern eine Multiplikation mit einer Addition an. Die arithmetische Intensität liegt damit bei ungefähr zwei Operationen pro geladenem Wert, während moderne Beschleuniger erst bei mehreren hundert Operationen pro Byte in ihr Rechenlimit laufen. Übersetzt: Die Recheneinheiten warten. Sie warten fast die gesamte Zeit.

Worum es hier geht und worum nicht Diese Betrachtung gilt für die Decode-Phase bei Batch Size 1, also den klassischen lokalen Assistenten mit einem Nutzer. Sobald mehrere Anfragen parallel laufen oder ein langer Prompt eingelesen wird, verschiebt sich das Bild in Richtung Rechenleistung. Abschnitt 07 rechnet auch diesen Fall durch.
02

Die Formel, die vor dem Kauf steht

Wer eine Hardware-Entscheidung für lokale Inferenz trifft, braucht keine Benchmark-Sammlung, sondern eine Division. Die theoretische Obergrenze der Generierungsgeschwindigkeit ist:

roofline
# Obergrenze der Decode-Rate bei Batch Size 1
tokens_pro_sekunde = (Speicherbandbreite_GBs * Effizienz) / Modellgroesse_GB

# Beispiel: 20 GB Gewichte auf 120 GB/s, 70 % erreichbare Bandbreite
#   (120 * 0.7) / 20 = 4.2 Tokens/s   -> und das ist die OBERGRENZE

Drei Dinge sind an dieser Formel wichtig. Erstens ist sie eine Obergrenze, kein Benchmark: Was tatsächlich herauskommt, liegt darunter, nie darüber. Zweitens ist der Effizienzfaktor keine Willkür, sondern die real erreichbare gegenüber der auf dem Datenblatt stehenden Bandbreite. Je nach Speichertyp, Kernel und Zugriffsmuster liegt er grob zwischen 60 und 85 Prozent; ich rechne hier durchgängig konservativ mit 70 Prozent.

Drittens steht im Nenner die Modellgröße im Speicher, nicht die Parameterzahl. Ein Modell mit 32 Milliarden Parametern belegt in 4-Bit-Quantisierung rund 20 GB, in FP16 dagegen über 60 GB. Quantisierung ist deshalb kein reiner Speicherspartrick, sondern die direkteste verfügbare Geschwindigkeitsschraube: Halbe Größe bedeutet in diesem Regime schlicht doppelte Geschwindigkeit.

Dazu kommt der KV-Cache, der mit jedem Token wächst und bei jedem Schritt mitgelesen werden muss. Bei kurzen Chats fällt er kaum ins Gewicht, bei 32k Kontext wird er zu einem eigenen Bandbreitenposten und erklärt, warum lange Kontexte spürbar zäher generieren als kurze.

03

Was die Plattformen wirklich liefern

Setzt man die Datenblattwerte in die Formel ein, entsteht ein Bild, das mit der Preisliste wenig zu tun hat. Unten lässt sich die Modellgröße umschalten. Balken mit Schraffur bedeuten: Das Modell passt nicht in den nutzbaren Speicher, die Plattform fällt für diese Größe komplett aus.

Abb. 1 · Theoretische Decode-Obergrenze aus Datenblatt-Bandbreite mal 70 Prozent, geteilt durch die Modellgröße. Kein Benchmark, sondern die physikalische Schranke, die kein Kernel überspringt.

Die Rangfolge ist unabhängig vom Modell immer dieselbe, weil sie ausschließlich von einer einzigen Spezifikationszeile abhängt. Ein Beschleuniger mit HBM2 liegt bei etwa 1 TB/s. Ein Basis-Mac-mini liegt mit seiner 128 Bit breiten Anbindung bei rund 120 GB/s. Das ist ein Faktor von etwa acht, und dieser Faktor landet bei Batch Size 1 fast unverändert auf der Tokenrate.

PlattformSpeichertypBandbreite laut DatenblattSpeicher für Modell
Mac mini M4, 16 GBLPDDR5X, 128 Bit~120 GB/s~11 GB
Mac mini M4 Pro, 64 GBLPDDR5X, 256 Bit~273 GB/s~48 GB
Desktop, 2 Kanäle DDR5-6000DDR5~96 GB/sRAM-abhängig
Epyc 9005, 12 Kanäle DDR5-6400DDR5, 12 Kanäle~614 GB/shunderte GB
Instinct MI50 / MI60, 32 GBHBM2~1.024 GB/s~30 GB
Tesla V100, 32 GBHBM2~900 GB/s~30 GB
RTX 3090, 24 GBGDDR6X~936 GB/s~22 GB

Die Werte in der Spalte „Speicher für Modell“ sind nicht die Kapazität, sondern das, was nach Framebuffer, Laufzeit und KV-Cache realistisch für Gewichte übrig bleibt. Auf dem Mac begrenzt macOS die der GPU zugestandene Menge; anheben lässt sich das über iogpu.wired_limit_mb, allerdings auf Kosten des Systems.

04

Der Gebrauchtmarkt: HBM2 zum Preis eines Mainboards

Interessant wird die Tabelle erst, wenn man die Beschaffungsseite danebenlegt. Rechenzentren mustern gerade in großer Zahl Beschleuniger der Generation um 2018 aus. Diese Karten sind aus Betreibersicht wertlos, weil sie für Training zu langsam und für moderne Datentypen zu alt sind. Ihr HBM2-Stack interessiert sich für diese Einordnung allerdings nicht: Er liefert weiterhin rund 1 TB/s, und das ist exakt die Eigenschaft, auf die es bei lokaler Inferenz ankommt.

Instinct MI50 32 GB~200 Euro, 1.024 GB/s
512 GB/s je 100 €
RTX 3090 24 GB~650 Euro, 936 GB/s
144 GB/s je 100 €
Mac mini M4 16 GB~700 Euro, 120 GB/s
17 GB/s je 100 €
Mac mini M4 Pro 64 GB~2.000 Euro, 273 GB/s
14 GB/s je 100 €
Faktor 30 zwischen der ausgemusterten Karte und dem Gerät, das für genau diesen Zweck beworben wird. Nur auf den Anschaffungspreis gerechnet, Betriebskosten stehen in Abschnitt 07.
Abb. 2 · Bandbreite je 100 Euro Anschaffungspreis. Preise sind Marktbeobachtung von Juli 2026 und schwanken stark.
Preise sind hier keine Zusage Der Gebrauchtmarkt für ausgemusterte Beschleuniger ist dünn und volatil. Am unteren Ende liegen aktuell die Vega-basierten Instinct-Karten (MI50 und MI60, 32 GB HBM2) im Bereich von etwa 150 bis 250 Euro. Die Tesla V100 liegt deutlich darüber, wobei SXM2-Module oft billiger angeboten werden als PCIe-Karten, dafür aber ein passendes Baseboard voraussetzen, das die Ersparnis sofort auffrisst. Wer plant, prüft die aktuellen Angebote selbst, statt sich auf eine Zahl aus einem Blogpost zu verlassen.

Worauf beim Kauf zu achten ist

Diese Karten sind für den Einbau in ein Rack konstruiert, nicht für einen Tower unter dem Schreibtisch. Daraus folgen drei Dinge, die regelmäßig übersehen werden.

ThemaWas passiertWas zu tun ist
KühlungDer Kühlkörper ist passiv und setzt Zwangsbelüftung durch das Chassis voraus. Im offenen Gehäuse läuft die Karte innerhalb von Minuten ins thermische Limit.Radiallüfter mit Adapter-Shroud, Temperatur unter Last dauerhaft protokollieren
StromversorgungServerkarten nutzen teils EPS12V-Stecker mit anderer Pinbelegung als PCIe-8-Pin. Ein falsch gestecktes Kabel zerstört die Karte sofort.Belegung gegen das Datenblatt prüfen, nie ein Adapterkabel aus dem Zubehörkarton raten
FirmwareKarten mit großem Adressraum werden ohne Above 4G Decoding nicht initialisiert. Das System startet, die Karte fehlt.Above 4G Decoding und Resizable BAR im UEFI aktivieren
BildausgabeViele Rechenkarten haben keinen Displayausgang.Zweite GPU oder Onboard-Grafik für die Konsole einplanen
05

Der Haken: Der Software-Stack lässt diese Karten fallen

Es gibt einen Grund, warum das nicht jeder macht, und er hat nichts mit Physik zu tun. Diese Hardware ist End of Life, und zwar nicht nur im Sinne von „kein Support mehr“, sondern im Sinne von „fällt aus den offiziellen Build-Matrizen heraus“.

Auf AMD-Seite hat der ROCm-Stack die Vega-Generation (gfx906) aus der Support-Matrix genommen. Auf Nvidia-Seite ist Volta (sm_70) den Weg über Deprecation in CUDA 12 zur Entfernung in CUDA 13 gegangen. Praktisch heißt das: Ein pip install liefert unter Umständen ein Wheel, das für deine Karte überhaupt keinen Code enthält, und der Fehler taucht erst zur Laufzeit als kryptischer Kernel-Fehler auf.

diagnose
# Erste Frage vor jeder Fehlersuche: kennt der Build meine Architektur ueberhaupt?
python3 -c "import torch; print(torch.cuda.get_arch_list())"
# Fehlt sm_70 in der Liste, ist die Karte fuer dieses Wheel schlicht nicht vorhanden.

# AMD: welche GPU-Architektur meldet die Karte?
rocminfo | grep -i gfx
rocm-smi --showproductname

Der pragmatische Weg führt deshalb nicht über die großen Framework-Wheels, sondern über Engines, die man selbst gegen die eigene Architektur baut. Für llama.cpp ist das ein Einzeiler, sobald man das Zielkürzel kennt.

build
# llama.cpp gegen gfx906 bauen, statt auf ein passendes Wheel zu hoffen
cmake -B build -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx906 -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j $(nproc)

# Fallback, wenn ROCm zickt: das Vulkan-Backend kennt keine Support-Matrix.
# Etwas langsamer, dafuer unabhaengig vom Herstellerstack.
cmake -B build-vk -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release

# Gegenprobe: erreicht die Karte real die Bandbreite aus Abschnitt 03?
./build/bin/llama-bench -m modell.gguf -p 512 -n 128

Bei vLLM wird es unbequemer. Die Engine ist auf moderne Architekturen ausgelegt: FlashAttention verlangt Ampere oder neuer, und die schnellen Kernels für 4-Bit-Gewichte setzen ebenfalls neuere Compute Capabilities voraus. Auf einer V100 lässt sich vLLM mit älteren Attention-Backends betreiben, auf einer gfx906-Karte ist der Aufwand in der Regel größer als der Gewinn. Wer Batch-Serving mit vielen parallelen Nutzern braucht, ist mit dieser Hardware am falschen Platz. Wer einen einzelnen lokalen Assistenten will, ist mit llama.cpp ohnehin besser bedient.

Ehrliche Aufwandsangabe Das ist kein Plug and Play. Rechne mit einem Abend für Treiber und Build, einem zweiten für Kühlung und Firmware und mit der dauerhaften Aussicht, dass ein Upgrade des Stacks die Karte irgendwann endgültig aussperrt. Wer diese Zeit nicht investieren will oder kann, sollte den Aufpreis für unterstützte Hardware zahlen. Das ist keine Niederlage, sondern eine korrekte Kosten-Nutzen-Entscheidung.
06

Der zweite Weg: Bandbreite über Speicherkanäle

Es gibt eine Alternative zum Beschleuniger, und sie folgt exakt derselben Logik. Bandbreite entsteht auch aus Breite: Eine aktuelle Epyc-Generation adressiert zwölf Speicherkanäle und kommt damit rechnerisch in den Bereich von 600 GB/s allein über den Systemarbeitsspeicher. Das ist die halbe HBM2-Klasse, aber mit einem entscheidenden Unterschied: Der Speicher ist nicht auf 32 GB begrenzt, sondern auf mehrere hundert Gigabyte ausbaubar. Modelle, die auf keiner bezahlbaren Karte laufen, laufen hier.

Der Haken liegt nicht im Datenblatt, sondern in der Topologie. Die zwölf Kanäle liefern ihre Bandbreite nur, wenn alle Kanäle bestückt sind und wenn der Prozess auf den Kernen läuft, die lokal an den benutzten Speicher angebunden sind. Wer ein Modell blind lädt, verteilt die Gewichte quer über die NUMA-Knoten und liest sie anschließend zu einem großen Teil über den Interconnect statt aus dem lokalen Speicher. Das kostet Bandbreite und treibt die Latenz nach oben, und zwar so deutlich, dass die teure Plattform am Ende hinter einer Desktop-Kiste landen kann.

numa
# Wie sieht die Topologie ueberhaupt aus?
lscpu | grep -i numa
numactl --hardware

# Prozess auf einen Knoten festnageln, Speicher lokal allokieren
numactl --cpunodebind=0 --membind=0 ./llama-server -m modell.gguf
Weiterlesen Die NUMA-Falle sauber aufzulösen, ist mehr als ein numactl-Aufruf: Es geht um Interleaving gegen Pinning, um Speicherbestückung pro Kanal, um Thread-Zuordnung auf Core- und Socket-Ebene und um die Frage, wann sich ein zweiter Sockel überhaupt rechnet. Genau das steht in Die NUMA-Falle, dort am Beispiel von Hypervisor und vNUMA durchgespielt. Das Messverfahren und die Platzierungslogik sind dieselben, egal ob eine VM oder ein Inferenz-Prozess auf dem falschen Knoten liegt.
07

Die ehrliche Gegenrechnung

Bis hierhin gewinnt die 200-Euro-Karte jeden Vergleich. Das liegt daran, dass bisher nur der Anschaffungspreis in der Rechnung stand. Sobald der Betrieb dazukommt, dreht sich ein Teil des Bildes, und wer das verschweigt, verkauft genauso unsauber wie das Marketing, gegen das dieser Text argumentiert.

Strom ist der größte Posten

Eine Instinct-Karte hat eine TDP im Bereich von 300 Watt, dazu kommt eine Serverplattform, die auch im Leerlauf nicht bei null steht. Ein Gerät mit Apple-Silicon spielt in einer anderen Liga, und das ist keine Marketingaussage, sondern Messtechnik.

PositionGPU-Kiste mit MI50Mac mini M4
Anschaffung~200 € Karte, ~350 € Plattform~700 €
Leerlauf~90 W~5 W
Unter Last~420 W~40 W
Strom pro Jahr (Annahme unten)~1.030 kWh, ~310 €~70 kWh, ~21 €
Geräusch am SchreibtischRadiallüfter, deutlich hörbarpraktisch lautlos
Annahmen der Modellrechnung 24 Stunden Bereitschaft pro Tag, davon 2 Stunden unter Volllast, Strompreis 0,30 €/kWh, 365 Tage. Die Leistungsaufnahmen sind typische Größenordnungen, keine Messwerte deines Aufbaus. Setz deine eigenen Zahlen ein, das Verhältnis bleibt stabil.

Die daraus folgende Aussage ist unbequem und trotzdem richtig: Im Dauerbetrieb kostet die Karte im ersten Jahr mehr Strom, als sie in der Anschaffung gekostet hat. Wer eine 200-Euro-Karte kauft und die Kiste dann 24/7 durchlaufen lässt, hat den Preisvorteil nach etwa einem Jahr aufgebraucht.

Es gibt zwei wirksame Gegenmittel. Das erste ist ein Power-Limit. Weil die Last bandbreitengebunden ist und die Recheneinheiten ohnehin warten, kostet ein deutlich abgesenktes Power-Limit erstaunlich wenig Tokenrate. Das zweite ist, die Maschine nicht durchlaufen zu lassen, sondern bei Bedarf zu wecken.

power
# AMD: Leistungsaufnahme deckeln und den Effekt gegen llama-bench messen
rocm-smi --setpoweroverdrive 200
rocm-smi --showpower --showtemp

# Nvidia: dasselbe Spiel
nvidia-smi -q -d POWER
nvidia-smi -pl 200

Wo die Unified-Memory-Kiste tatsächlich gewinnt

Und dann gibt es Fälle, in denen die Entscheidung schlicht andersherum ausfällt. Drei davon sind wichtig.

Kapazität. Ein 70B-Modell in 4 Bit belegt rund 43 GB. Auf einer einzelnen 32-GB-Karte läuft es nicht, egal wie schnell ihr Speicher ist. Ein Gerät mit 64 GB Unified Memory führt es aus, langsam zwar, aber es führt es aus. Genau das zeigt Abbildung 1 im 70B-Modus. Die Gegenmaßnahme sind zwei Karten mit Layer-Split, was den Preisvorteil zwar halbiert, ihn aber nicht aufhebt.

Prompt-Verarbeitung. Das Einlesen eines langen Prompts ist compute-gebunden, nicht bandbreitengebunden. Hier zählen Rechenwerke und moderne Datentypen, und hier spielt die alte Karte einen Teil ihres Vorsprungs wieder zurück. Wer ständig 30k-Token-Kontexte einliest, misst ein anderes Rennen als der, der kurze Fragen stellt.

Mehrere Nutzer. Sobald Anfragen gebatcht werden, teilen sich mehrere Sequenzen denselben Gewichtsdurchlauf. Die arithmetische Intensität steigt, die Last verschiebt sich Richtung Rechenleistung, und der ganze Ansatz dieses Artikels verliert seine Gültigkeit. Für einen Team-Endpunkt gelten andere Regeln, dazu mehr auf der Seite zu GPU- und HPC-Infrastruktur.

FrageZeigt auf gebrauchte HBM2-KarteZeigt auf Fertiggerät
Wie groß ist das Zielmodell?bis ~30 GBdarüber, ohne zweite Karte
Läuft die Maschine ohnehin?ja, Workstation oder Homelabnein, sie liefe nur dafür
Wo steht das Gerät?Keller, Schrank, RackSchreibtisch im Büro
Wie viel Zeit für den Stack?zwei Abende sind eingeplantes soll heute laufen
Wie viele Nutzer?einerein Team, gebatcht
Wer betreibt es in zwei Jahren?jemand mit Linux-Tiefeniemand mit Zeit dafür
08

Blueprint für eine lokale Inferenz-Kiste

Konkret, damit die Diskussion nicht abstrakt bleibt. Das ist der Zuschnitt, den wir für einen privaten oder team-internen Inferenz-Knoten bauen, wenn Datensouveränität die Anforderung ist und das Budget nicht bei einem Fertiggerät landen soll.

KomponenteAuslegungBegründung
Beschleuniger2 × 32 GB HBM2, Layer-Split64 GB Modellspeicher bei voller Bandbreite pro Karte
PlattformServer- oder Workstation-Board mit 2 × PCIe x16Above 4G Decoding, genug Lanes, ordentliche Spannungsversorgung
KühlungRadiallüfter je Karte, Temperatur-Alarmpassive Server-Kühlkörper brauchen Zwangsluft
Power-Limitje Karte gedeckelt, gegen Tokenrate verifiziertbandbreitengebundene Last verliert dadurch kaum Leistung
Enginellama.cpp, selbst gebaut, Vulkan als Fallbackunabhängig von Support-Matrizen der Hersteller
Modellformat4-Bit-Quantisierunghalbe Größe ist in diesem Regime doppelte Geschwindigkeit
BetriebWake bei Bedarf statt 24/7-Leerlaufgrößter Hebel auf die Betriebskosten
Abnahmellama-bench gegen die Rechnung aus Abschnitt 02zeigt sofort, ob der Stack die Bandbreite wirklich abruft

Der letzte Punkt ist der wichtigste und wird am häufigsten ausgelassen. Rechne vor dem Kauf aus, welche Tokenrate die Physik zulässt, und miss nach dem Aufbau, welche du tatsächlich bekommst. Liegt das Ergebnis weit unter der Rechnung, ist nicht die Hardware zu langsam, sondern der Stack falsch gebaut: falsche Architektur im Build, Gewichte im falschen NUMA-Knoten, ein Teil der Layer auf der CPU, ein Power-Limit zu tief. Alle vier Fehler sind ohne die Vergleichszahl unsichtbar.

Zum Mitnehmen Bei Batch Size 1 kauft man für lokale Inferenz keine Rechenleistung, sondern Speicherbandbreite. Wer das versteht, findet die Hardware dafür zum Preis eines Mainboards, muss dafür aber Treiber-Arbeit und Stromkosten einkalkulieren. Wer das nicht will, kauft ein Fertiggerät und bekommt dafür bewusst weniger Bandbreite pro Euro. Beides sind vertretbare Entscheidungen. Die einzige unvertretbare ist, eine Maschine für Teraflops zu kaufen, die sie nie abruft.
Nächster Schritt

KI-Infrastruktur, die zur Last passt

Wir planen und bauen lokale Inferenz- und Trainingssysteme nach der Anforderung, nicht nach dem Datenblatt: vom Sizing über Bandbreite, Kühlung und Stromkosten bis zum Stack, der die Hardware auch wirklich abruft. Alles im eigenen Haus, ohne dass Prompts das Netz verlassen.