Zum Inhalt springen
Kurzer Hinweis: flozi00 TechHub ist ein Solo-Nebenprojekt neben einem Vollzeitjob — persönliche Lernnotizen, keine offiziellen Aussagen. Kritische Schritte selbst prüfen.

Ihre Agenten-Flotte ist ein Storage-Array: Die KV-Cache-Tiering-Mathematik hinter agentischer Inferenz

Warum Agenten-Token-Kosten nicht wie Chat skalieren: durchgerechnete KV-Bytes pro Runde für eine 100k-Kontext-Agentensession auf DeepSeek-V3-MLA, die flottenweiten GB/s allein fürs KV-Re-Read, die PCIe-vs-HBM-Tiering-Lücke und ehrliche Kapazitätsplanung in Working-Set-Bytes — belegt mit DualPath[^dualpath], HotInfra'26 und den Primärquellen.

7 Min. Lesezeitflozi00
aimachine-learninggpugpu-memoryinferenceoptimizationdeep-learning
Direkt zum Fachartikel
Sehen · ausprobieren · verstehen

Zwei Wege für dieselben KV-Daten

Das Wiederherstellen einer pausierten Sitzung und das Lesen aktiven Kontexts belasten andere Verbindungen.

KI-gestützte Lernvisualisierung · schematische Erklärung zum Artikel

Schritt 1 / 3Eine pausierte Sitzung zurückholen

Ein kaltes Tier ist ein größerer, langsamerer Speicher für Kontext. Fehlt dieser im HBM, braucht die fortgesetzte Sitzung einen Transfer über den Host- oder Storage-Pfad.

SystemAktueller SchrittBaustein anklicken, um ihn zu erklären
Pausierte Sitzung im kalten Tier
DRAM oder Storage bewahrt Kontext außerhalb des GPU-Speichers.
Am Rundenanfang zurückladen
Nur fehlender oder verdrängter Kontext braucht diesen Transfer.
KV-Daten im schnellen HBM
Der aktive Kontext belegt GPU-Speicher.
  1. Pausierte Sitzung im kalten Tier Am Rundenanfang zurückladen
    bei fehlendem Cache
  2. Am Rundenanfang zurückladen KV-Daten im schnellen HBM
    einmal übertragen
Das solltest du mitnehmen

Gespeicherte Bytes, Rücktransfer-Bandbreite und wiederholte Attention-Zugriffe getrennt planen.

Die großen Flottenbeispiele sind modellierte Grenzen. Cache-Layout, Kontextgrenzen und gemessene Kernels bestimmen reale Deployments.

Begriffe und vollständiger Ablauf
HBM
Direkt an die GPU angebundener Speicher mit hoher Bandbreite.
Tiering
Zustände auf Speicherebenen mit unterschiedlicher Größe und Geschwindigkeit verteilen.
  1. Eine pausierte Sitzung zurückholen

    Ein kaltes Tier ist ein größerer, langsamerer Speicher für Kontext. Fehlt dieser im HBM, braucht die fortgesetzte Sitzung einen Transfer über den Host- oder Storage-Pfad.

  2. Decode-Datenverkehr getrennt zählen

    Sobald der Kontext im GPU-Speicher liegt, liest volle Attention ihn für jede erzeugte Position. Dieser wiederholte HBM-Verkehr ist etwas anderes als der einmalige Rücktransfer.

  3. Das Wachstum zählen

    Ein Werkzeugergebnis ergänzt Eingabezustände, die Generierung weitere Zustände. Vorhandene Einträge werden wiederverwendet; neue vergrößern den Cache.

Alle Verbindungen

  • Pausierte Sitzung im kalten Tier → Am Rundenanfang zurückladen: bei fehlendem Cache
  • Am Rundenanfang zurückladen → KV-Daten im schnellen HBM: einmal übertragen
  • KV-Daten im schnellen HBM → Decode mit voller Attention: je Schritt lesen
  • Decode mit voller Attention → Neue K/V-Einträge: neuer Tokenzustand
  • Neue K/V-Einträge → KV-Daten im schnellen HBM: behalten
  • Neues Werkzeugergebnis → KV-Daten im schnellen HBM: Eingabe-KV ergänzen
Du bestimmst das Tempo. Pausiere jederzeit oder wähle einen Schritt aus.

Agentenschleifen mit langem Kontext können KV-Cache-Kapazität und Transferbandbreite stark beanspruchen. Die Rechnungen unten sind illustrative Untergrenzen für unkomprimierte BF16-KV bei Full Attention. Die tatsächliche Serving-Leistung hängt von Attention-Kernels, Batching, Cache-Residenz, Quantisierung und Modellparallelismus ab. Konfiguration und Quellen stehen auch im KV-Cache-Leitfaden.

Die Form des Workloads: Lange-Präfix-Re-Reads plus kleine Incremente

Eine Agentenschleife kann nach einem Tool-Aufruf ein langes Präfix fortsetzen. Betrachten wir 100k Kontext-Tokens, ein Tool-Ergebnis mit 2.048 Tokens und eine Antwort mit 512 Tokens:

  • Decode: Bei Full Attention greift jedes neue Token auf das bisherige Präfix zu. Die KV von ungefähr 100k Tokens wird in jedem der 512 Decode-Schritte gelesen; Implementierungsdetails und wachsender Kontext verändern die genaue Bytezahl.
  • Inkrement: Nur 2.048 + 512 Tokens neue KV werden berechnet und geschrieben.

Referenzgeometrie: DeepSeek-V3 MLA1 mit 512 latenten plus 64 RoPE-Elementen pro Token und Schicht, 61 Schichten, BF16 → 70.272 B ≈ 68,6 KiB pro Token, unter Annahme dieses Cache-Layouts. Die Modellkarte bewirbt 128K Kontext. Das 1M-Token-Szenario weiter unten extrapoliert lediglich diese Geometrie und ist keine unterstützte DeepSeek-V3-Konfiguration.2

KV pro Sitzung=70.272 B/Token×100.000 Tokens=7,03 GB\text{KV pro Sitzung} = 70.272 \, \text{B/Token} \times 100.000 \, \text{Tokens} = 7{,}03 \text{ GB}

Das ist die Cache-Kapazität einer Sitzung zu Beginn der Runde, ohne Verwaltungs- und Block-Overhead.

HBM-Bytes pro Runde: Agent vs Chat

Wenn diese KV im HBM bleibt und der Kernel bei jedem Decode-Schritt das gesamte Präfix liest, ergeben sich näherungsweise folgende Lesevolumina:

GrößeAgent: 100k Kontext, 512-Token-RundeChat: 8k Kontext, 256-Token-Runde
Gehaltene KV pro Sitzung7,03 GB0,56 GB
KV-Read pro Decode-Schritt7,03 GB0,56 GB
KV-Read pro Runde (Schritte × Voll-Read)512 × 7,03 = 3.598 GB256 × 0,56 = 144 GB
Neue KV pro Runde geschrieben (2.560 / 256 Tokens)0,18 GB0,018 GB

Dieses Beispiel ergibt 25-mal so viele KV-Lesebytes für die Agentenrunde. Das belegt keine 25-fachen Token-Kosten oder Latenzen: Batching, Kernel-Effizienz, Speicherplatzierung und Modellgewichte wirken ebenfalls mit.

Das inkrementelle Prefill des Tool-Ergebnisses berechnet ebenfalls neue KV. Seine Laufzeit lässt sich nicht zuverlässig aus Peak-FLOP/s allein ableiten, insbesondere bei einem verteilten MoE-Modell.

Eine hypothetische Flotte mit 50 Workern und 1M Kontext

Für eine Kapazitätsrechnung extrapolieren wir dasselbe BF16-MLA-Layout auf 50 gleichzeitige Worker mit je 1M Tokens. Dies überschreitet DeepSeek-V3s beworbene Kontextlänge und ist ein hypothetisches Cache-Sizing-Beispiel.

KV pro Worker=70.272×106 B=70,27 GBFlotten-Working-Set=50×70,27=3.514 GB (≈3,51 TB)\text{KV pro Worker} = 70.272 \times 10^6 \, \text{B} = 70{,}27 \text{ GB} \qquad \text{Flotten-Working-Set} = 50 \times 70{,}27 = 3.514 \text{ GB} \,(\approx 3{,}51 \text{ TB})

Falls die gesamte KV im HBM liegt und Full Attention sie bei jedem Schritt liest, ergeben diese Decode-Raten pro Worker folgende aggregierte HBM-KV-Leseanforderung:

Decode-Rate pro WorkerAggregierte KV-Read-Bandbreite
10 Tok/s50 × 10 × 70,27 GB = 35,1 TB/s
20 Tok/s70,3 TB/s
40 Tok/s140,5 TB/s

Eine H200 besitzt laut NVIDIA 141 GB HBM und 4,8 TB/s nominelle HBM-Bandbreite.3 3,514 TB geteilt durch 141 GB ergeben etwa 25 H200-Karten als strikte Kapazitätsuntergrenze nur für KV, ohne Platz für Gewichte, Fragmentierung oder Runtime-Zustand. Bei 20 Token/s pro Worker entfallen rechnerisch 70,3 TB/s geteilt durch 25, also 2,8 TB/s pro Karte: rund 59 % des theoretischen H200-HBM-Maximums. Das ist ein Bandbreitenbudget, keine gemessene Auslastung oder Durchsatzprognose.

HotInfra'264 schlägt speicherzentrierte KV-Cache-Server vor, unter anderem mit CXL-Expandern und Near-Memory Processing. Dieser Entwurf unterstreicht die Bedeutung der KV-Platzierung; er misst keine GPU-Auslastung von 3,4 % für unser Szenario. Siehe auch die Scale-up-Netzwerk-Analyse.

Das Tiering-Muster

DualPath5 behandelt das Laden von KV aus externem Storage an einer Rundengrenze in disaggregierten Prefill/Decode-Systemen. Es ergänzt einen Storage-zu-Decode-Pfad mit anschließendem RDMA-Transfer zu Prefill-Engines. Das Paper berichtet bis zu 1,87-fachen Offline-Durchsatz und 1,96-fachen durchschnittlichen Online-Durchsatz gegenüber der eigenen Baseline. Das sind Ergebnisse für dieses System und diese Workloads, kein genereller Speedup für alle Agentenflotten. Der einmalige KV-Transfer an der Rundengrenze ist von den wiederholten HBM-Zugriffen während des Decodes zu unterscheiden.

TensorRT-LLMs KV Cache Manager V26 unterstützt Hot-Pools im HBM und Cold-Page-Verwaltung. Die Einstellung use_kv_cache_manager_v2 steht standardmäßig auf auto: Dokumentierte modellspezifische Präferenzen wählen V2; ohne Präferenz fällt das System auf V1 zurück. V2 ist also nicht für alle Modelle standardmäßig aktiv. Cold-Pool-Funktionen betreffen Cache-Platzierung und Transfers; sie ermöglichen nicht, bei jedem Attention-Schritt Cold Storage mit HBM-Geschwindigkeit zu lesen.

Die mechanische Lücke: PCIe vs HBM

Für einen möglichen Auslagerungspfad bietet PCIe 5.0 x16 ungefähr 63 GB/s je Richtung nach 128b/130b-Kodierung, noch vor Paket- und Software-Overhead.7 Der publizierte H200-HBM-Peak liegt bei 4,8 TB/s. Der Vergleich dieser nominellen Werte ergibt:

4.800 GB/s63 GB/s≈76×\frac{4.800 \text{ GB/s}}{63 \text{ GB/s}} \approx 76\times

Das ungefähr 76-fache Verhältnis vergleicht Interface-Peaks, keine gemessenen End-to-End-Raten. Ideale Untergrenzen der Transferdauer:

BewegungHBM3e (4,8 TB/s)PCIe 5.0 x16 (~63 GB/s)
100k-KV (7,03 GB) nachladen — falls verdrängt1,46 ms0,112 s
1M-KV (70,27 GB) nachladen — Eviction/Snapshot-Restore14,6 ms1,12 s

Diese PCIe-Zeiten gelten nur, wenn der gesamte Cache nachgeladen werden muss. Ein Cache-Treffer braucht keinen solchen Transfer; Transfers können außerdem Rechenarbeit überlappen. NVIDIA nennt 900 GB/s bidirektionales NVLink-C2C für Grace Blackwell und bis zu 1,8 TB/s für Vera Rubin, nicht 2,25 TB/s.8 Die Linkrate allein bestimmt keine anwendungsseitige KV-Nachladezeit. Siehe die NVLink-Zahlen.

Energie und Kosten: Grenzen der Bandbreitenrechnung

Die Bytezahlen helfen bei Kapazitäts- und Bandbreitenbudgets. Sie bestimmen weder GPU-Auslastung noch Joule oder Preis pro Token. Dafür braucht man Modellplatzierung, Batchgröße, gemessene Leistung, Kernel-Durchsatz und tatsächliche Cache-Trefferquote. Eine frühere Einzelkarten-Tabelle kombinierte einen 65-GB-Gewichts-Read mit DeepSeek-V3s 37B aktiven Parametern und ließ die verteilten 671B Gesamtgewichte außer Acht; sie beschreibt kein reales DeepSeek-V3-Deployment.2

Was Prefix-Caching einspart

RadixAttention in SGLang9 verwendet KV-Blöcke geteilter Präfixe erneut. Bleibt ein Präfix resident, muss die nächste Runde dessen KV beim Prefill nicht neu berechnen. Die Decode-Attention liest die residente Präfix-KV weiterhin; Caching beseitigt diese HBM-Zugriffe nicht.

Wann es nicht geht: Eviction unter Gleichzeitigkeit

Prefix-Caching bleibt durch die Speicherkapazität begrenzt. Für eine idealisierte 141-GB-Karte, die vollständig KV vorbehalten ist:

1M-Worker pro 141-GB-Karte, nur KV: 141/70,27=2,0\text{1M-Worker pro 141-GB-Karte, nur KV: } 141/70{,}27 = 2{,}0

50 Worker × 1M Tokens benötigen 3,514 TB KV, entsprechend ungefähr 25 × 141-GB- oder 20 × 180-GB-Karten als Kapazitätsuntergrenze. Reale Systeme brauchen darüber hinaus Platz für Gewichte, Fragmentierung und Runtime-Puffer. Ob ein weiterer Worker eine Verdrängung auslöst, hängt von Platzierung und Policy ab; die reine Flottengröße entscheidet das nicht.

Wie Kapazitätsplanung wirklich aussieht (die kritische Sicht)

„Agenten laufen auf derselben Infrastruktur wie Chat" ist die Marketing-Zeile — meist gefolgt von einer Tokens/s-Zahl. Die Arithmetik sagt etwas anderes, und die ehrliche Faustregel fällt direkt aus den Zahlen oben:

KV-Bytes pro aktivem Agenten×aktive Agenten=gesamtes KV-Working-Set.\text{KV-Bytes pro aktivem Agenten} \times \text{aktive Agenten} = \text{gesamtes KV-Working-Set.}
  1. Working Set pro Agenten berechnen: Bytes/Token (hier 70,27 KB, gemäß den MLA-Zahlen) × Kontext. Aufschreiben; das ist die eine Zahl, die alles dimensioniert.
  2. Mit der Flottengröße multiplizieren: Das ist die Kapazität des Storage-Arrays. 50 × 1M = 3,5 TB verwalteter Zustand — planen wie Array-Kapazität: Hot-HBM-Tier, Cold-DRAM/CXL/Remote-Tier, Eviction-Politik als Placement-Engine.
  3. Zwei Pfade getrennt planen: Residente KV wird beim Decode aus dem HBM gelesen; fehlende oder verdrängte Präfixe werden an Rundengrenzen über Storage-/Host-Verbindungen geladen. Miss-Rate und Transferbytes getrennt schätzen.
  4. Das Deployment messen: Durchsatz, Auslastung und Energie mit tatsächlichem Modell, Kontextmix, Cache-Policy und Hardware prüfen.

DualPath, TensorRT-LLM V2 und der HotInfra-Entwurf behandeln verschiedene Teile dieses Platzierungsproblems. Der Break-even für Offloading oder zusätzlichen GPU-Speicher hängt vom Workload ab. Die Gleichungen liefern ein Ausgangsbudget, keine universelle Serving-Empfehlung.

Referenzen

Footnotes

  1. DeepSeek-V2, arXiv:2405.04434 (93,3 % KV-Reduktion); DeepSeek-V3-Konfiguration: kv_lora_rank 512 + qk_rope_head_dim 64 = 576 Elemente × 61 Schichten × 2 B = 70.272 B/Token ≈ 68,6 KiB. https://arxiv.org/abs/2405.04434 ↩

  2. Offizielle DeepSeek-V3-Modellkarte: 671B Gesamtparameter, 37B aktive Parameter, 128K Kontext. Die Konfiguration nennt 61 Schichten, kv_lora_rank=512, qk_rope_head_dim=64. https://huggingface.co/deepseek-ai/DeepSeek-V3 und https://huggingface.co/deepseek-ai/DeepSeek-V3/blob/main/config.json ↩ ↩2

  3. NVIDIA H200: 141 GB HBM3e, 4,8 TB/s nominelle Bandbreite. https://www.nvidia.com/en-us/data-center/h200/ ↩

  4. Kiyawat & Skadron, Reimagining LLM Inference Infrastructure with Memory-Centric KV Cache Servers, HotInfra '26 (3rd Workshop on Hot Topics in System Infrastructure, ko-lokiert mit ISCA '26, Raleigh, NC, 28. Juni 2026). PDF-verifiziert: CXL-DDRx-→-CXL+-→-PNM+PIM-Gerätespektrum, KV-Cache-Server-Disaggregation, 32K-Token-Beispiel-Workload. https://hotinfra.org/2026/papers/hotinfra26-final59.pdf ↩

  5. Wu et al., DualPath: Breaking the Storage Bandwidth Bottleneck in Agentic LLM Inference, arXiv:2602.21548 (Feb. 2026). Abstract-verifiziert: storage-I/O-dominierte agentische Inferenz, Storage-zu-Decode-RDMA-Pfad, bis zu 1,87× Offline- / 1,96× Online-Durchsatz. https://arxiv.org/abs/2602.21548 ↩

  6. NVIDIA, KV Cache System, Auswahl des Cache Managers und Cold-Page-Design; auto folgt der Modellpräferenz, sonst V1. https://nvidia.github.io/TensorRT-LLM/latest/features/kvcache.html ↩

  7. PCI-SIG, PCIe-5.0-FAQ und Webinar: 32 GT/s pro Lane, 128b/130b-Kodierung. Die rund 63 GB/s für x16 sind berechnete Link-Nutzdaten nach Kodierung, vor Transaktions-Overhead. https://pcisig.com/faq?field_category_value%5B%5D=pci_express_5.0 und https://pcisig.com/sites/default/files/files/PCIe_Specification_Webinar_Rev%206_FINAL_0.pdf ↩

  8. NVIDIA-Blog zu GB200 NVL: 900 GB/s bidirektionales Grace–Blackwell-NVLink-C2C; NVIDIA Vera CPU: bis zu 1,8 TB/s kohärentes NVLink-C2C. https://developer.nvidia.com/blog/nvidia-gb200-nvl72-delivers-trillion-parameter-llm-training-and-real-time-inference/ und https://www.nvidia.com/en-us/data-center/vera-cpu/ ↩

  9. Zheng et al., SGLang: Efficient Execution of Structured Language Model Programs, arXiv:2312.07104. RadixAttention-Radix-Baum-KV-Wiederverwendung, bis zu 6,4× Durchsatz auf präfix-lastigen (Multi-Turn-, Agenten-)Workloads. https://arxiv.org/abs/2312.07104 ↩