· Daniel Schleipfer · KI · 5 min read
Warum der GPU-Speicher voll ist, bevor er es sein müsste
Eine kurze Antwort kann viel GPU-Speicher blockieren. Paged Attention teilt den KV-Cache in Blöcke auf, die eine Anfrage erst bei Bedarf erhält.

Was ist Paged Attention?
Paged Attention teilt den KV-Cache in gleich große Blöcke. Jede Anfrage erhält die Blöcke, die ihre bisherigen Tokens benötigen. Dadurch bleibt weniger Speicher ungenutzt.
Eine kurze Antwort kann mehr GPU-Speicher blockieren, als sie braucht. Das passiert, wenn eine Engine den Platz für jede Anfrage vorab reserviert. Sie plant dann auch Tokens ein, die noch gar nicht da sind. Oft kommen sie nie: Die Antwort endet früher. Bis dahin fehlt dieser Platz anderen Anfragen.
Auch die Art der Zuteilung entscheidet also, wie viele Anfragen ein Server schafft. Mehr Speicher ist ein möglicher Ausweg. Der vorhandene Platz lässt sich aber oft besser nutzen.
Speicher kommt Block für Block dazu
Dieser Begriff sitzt bei "Inference" in der Gruppe "Die Maschine".
Die Maschine
- Architecture
- Mental Models
- Inference
- Efficiency
Das Harness
- Reliable Outputs
- Agents
- RAG
Die Disziplin
- Evals
- Production
Das Urteil
- Synthesis
Die Engine teilt den KV-Cache in viele kleine Blöcke. Zu Beginn bekommt eine Anfrage genug Platz für die Tokens ihres Prompts. Sobald dieser Platz voll ist, kommt ein freier Block dazu. Er muss nicht direkt daneben liegen.
Eine Tabelle hält fest, welche Blöcke zu welcher Anfrage gehören. Damit findet die Engine den passenden Inhalt auch dann, wenn die Blöcke im Speicher verteilt liegen. Endet die Anfrage, können ihre Blöcke wieder frei werden.
Dieses Verfahren hat einen Namen: Paged Attention.
Wie die Engine die Blöcke zuordnet
vLLM führte das Verfahren 2023 ein. Sein allgemeiner Konfigurations-Default ist 16 Tokens pro Block. Eine logische Blockfolge beschreibt die Reihenfolge innerhalb der Anfrage. Die Blocktabelle ordnet ihr die physischen Speicherblöcke zu.
Ein Rechenbeispiel: Ein KV-Cache mit 19 Tokens braucht bei dieser Blockgröße zwei Blöcke. Das ergibt 32 Plätze, davon bleiben 13 ungenutzt. Sie liegen alle im letzten Block. Wächst der Cache, füllt die Anfrage zunächst diese Plätze.
Das vLLM-Team berichtete 2023 von 60 bis 80 Prozent ungenutztem KV-Cache-Speicher in den untersuchten älteren Systemen. Mit Paged Attention lag der Anteil in seinen Versuchen unter 4 Prozent. Das Paper maß außerdem den zwei- bis vierfachen Durchsatz gegenüber FasterTransformer und Orca bei vergleichbarer Latenz. Diese Zahlen beschreiben die damaligen Vergleiche.
Die Blockgröße bleibt eine Abwägung. Kleine Blöcke lassen wenig Rest frei, können aber die Parallelität der GPU schlechter nutzen. Große Blöcke erhöhen den ungenutzten Rest am Ende einer Anfrage.
Vorausgesetzt sind KV-Cache und Continuous Batching. Der Cache hält frühere Rechenergebnisse vor. Continuous Batching besetzt frei werdende Plätze mit neuen Anfragen.
Gleiche Anfänge können Speicher teilen
Mehrere Anfragen beginnen oft mit derselben Systemanweisung. Mit aktiviertem Prefix-Caching kann die Engine passende Blöcke dieses Anfangs wiederverwenden. Sie muss sie dann nicht für jede Anfrage getrennt halten. Wie viel das bringt, hängt von Länge und Häufigkeit des gemeinsamen Anfangs ab.
Gemeinsam genutzte Daten dürfen beim Weiterschreiben nicht überschrieben werden. Für beschreibbare geteilte Blöcke gibt es Copy-on-Write: Die schreibende Anfrage erhält eine eigene Kopie. Das verhindert, dass ihre Änderungen andere Anfragen betreffen.
Bei mehreren Nutzern muss zusätzlich feststehen, wer einen Cache gemeinsam nutzen darf. vLLM bietet dafür getrennte Gruppen über cache_salt. Das begrenzt auch Rückschlüsse auf fremde Anfragen aus unterschiedlichen Antwortzeiten.
Was vor der Hardwarewahl zu prüfen ist
Eine größere GPU kann mehr Anfragen aufnehmen, auch ohne Paged Attention. Sie beseitigt nur nicht die Ursache ungenutzter Reservierungen. Für einen selbst betriebenen Assistenten gehören deshalb beide Fragen in die Planung: Wie viel Speicher ist vorhanden? Wie teilt die Engine ihn zu?
vLLM und TGI unterstützen Paged Attention. Ob das eigene Setup genügend Anfragen gleichzeitig schafft, zeigt ein Test mit den vorgesehenen Prompt- und Antwortlängen. Eine gemeinsame kurze Systemanweisung allein belegt noch keine große Ersparnis.
Mit Paged Attention wächst die Zahl der Speicherblöcke mit den Tokens einer Anfrage.
Nächster Begriff: Quantisierung. Wie weniger Bits den Platz für Modellgewichte verkleinern und dabei die Antworten verändern können.
Häufige Fragen
Was ist Paged Attention? Paged Attention teilt den KV-Cache in gleich große Blöcke. Jede Anfrage erhält die Blöcke, die ihre bisherigen Tokens benötigen. Dadurch bleibt weniger Speicher ungenutzt.
Warum kann eine kurze Antwort viel Speicher blockieren? Wenn eine Engine den Platz für die maximale Sequenz vorab reserviert, bleibt ein Teil davon ungenutzt. Andere Anfragen können diesen Platz währenddessen nicht nutzen. Paged Attention teilt neue Blöcke erst bei Bedarf zu.
Was ist Prefix-Sharing beim KV-Cache? Mit aktiviertem Prefix-Caching können Anfragen passende Cache-Blöcke eines identischen Anfangs wiederverwenden. Der Nutzen hängt davon ab, wie lang dieser Anfang ist und wie oft er vorkommt. Gemeinsam genutzte Daten dürfen beim Weiterschreiben nicht verändert werden.
Hilft eine größere GPU auch ohne Paged Attention? Ja. Mehr Speicher kann zusätzliche Anfragen aufnehmen. Die größere Karte beseitigt aber nicht die Verschwendung durch vorab reservierte Bereiche. Deshalb gehören Speicherkapazität und Speicherverwaltung beide in die Planung.
Quellen
- Kwon et al., „Efficient Memory Management for Large Language Model Serving with PagedAttention“, SOSP 2023. Paper: Blocktabellen, Copy-on-Write, Blockgrößen und damaliger Durchsatzvergleich.
- vLLM-Team, Juni 2023. Vorstellung von PagedAttention: gemessene Speicherverschwendung der damaligen Vergleichssysteme.
- vLLM: CacheConfig für den allgemeinen Blockgrößen-Default; Prefix-Caching für Wiederverwendung und Cache-Isolation.
- Hugging Face: PagedAttention in TGI.
Teil der Serie AI-Engineering-Begriffe erklärt. Verwandt: KV-Cache, Continuous Batching und Eigene KI-Modelle selbst hosten oder mieten?.



