Zurück zur Startseite

Prompt Caching LLM: KV cache 10-mal günstiger

Prompt Caching optimiert die LLM-Inferenz durch Caching von KV-Paaren der Attention für wiederholte Prompt-Präfixe. Reduziert Input-Token-Kosten um das 10-Fache und Latenz um bis zu 85 %. Aufschlüsselung der Transformer-Architektur, Tokenisierung und Embeddings für Middle-/Senior-Entwickler.

Wie Prompt Caching LLM 10-mal günstiger beschleunigt
Advertisement 728x90

# Prompt Caching in LLMs: Optimierung des KV-Caches zur Reduzierung von Kosten und Latenz

Prompt Caching reduziert die Kosten für LLM-Eingabe-Tokens um das 10-Fache und verkürzt die Latenz bei langen Prompts um bis zu 85 %. OpenAI und Anthropic cachen keine Responses; sie cachen Zwischenschritte im Transformer-Attention-Mechanismus – speziell den KV-Cache. Dieser speichert Key-Value-Paare für wiederholte Prompt-Präfixe, beschleunigt die Inferenz und erhält die Generierungsqualität.

Die Technologie eignet sich ideal für Aufgaben mit wiederholtem Kontext: RAG, Chatbots mit Gesprächshistorie, mehrstufige Pipelines. Tests bei API-Anbietern zeigen, dass eine vollständige Nutzung des Caches eine deutliche Beschleunigung des ersten Tokens bringt.

LLM-Architektur und die Rolle der Attention

Ein LLM besteht aus einer Abfolge von Transformer-Blöcken, die Embeddings als Eingabe nehmen und aktualisierte Repräsentationen ausgeben. Die Inferenz läuft in einer Schleife: Der Prompt wird tokenisiert, Embeddings durchlaufen Attention- und Feed-Forward-Schichten, der nächste Token wird generiert und dem Kontext hinzugefügt.

Google AdInline article slot
prompt = "What is the meaning of life?";
tokens = tokenizer(prompt);
while (true) {
    embeddings = embed(tokens);
    for ([attention, feedforward] of transformers) {
        embeddings = attention(embeddings);
        embeddings = feedforward(embeddings);
    }
    output_token = output(embeddings);
    if (output_token === END_TOKEN) {
        break;
    }
    tokens.push(output_token);
}
print(decode(tokens));

Das Caching findet in der Attention statt. Self-Attention berechnet für jeden Token eine gewichtete Summe vorheriger Tokens basierend auf der Ähnlichkeit zwischen Query (aktueller Token) und Keys (vorherige Tokens). Für query_i: attention(Q_i, K, V) = softmax(Q_i K^T / sqrt(d)) V.

Beim Generieren jedes neuen Tokens erweitert sich der KV-Cache für alle vorherigen Tokens, was zu quadratischer Komplexität O(n^2) bezüglich der Sequenzlänge führt.

Tokenization und Embeddings

Der Tokenizer zerlegt Text in Subword-Einheiten und weist IDs zu. Beispiel für GPT: "Check out ngrok.ai" → [4383, 842, 1657, 17690, 75584]. Er ist deterministisch, case-sensitive und verwendet BPE-ähnliche Algorithmen.

Google AdInline article slot

Embeddings wandeln Tokens in n-dimensionale Vektoren um (n > 10k in großen Modellen). Die Embeddings-Matrix ist nach dem Training fix:

function embed(tokens) {
    return tokens.map((token, i) => {
        const embeddings = EMBEDDINGS[token];
        return encodePosition(embeddings, i);
    });
}

Positional Encoding fügt Informationen zur Reihenfolge hinzu. Mehr Dimensionen erfassen Semantik besser: Ton, Stil, Ähnlichkeit.

Attention-Mechanismus und KV-Cache

Im Multi-Head-Attention:

Google AdInline article slot
  • Projektionen: Q = X W_Q, K = X W_K, V = X * W_V (X — Embeddings-Matrix).
  • Scores: attention_scores = Q * K^T / sqrt(d_k).
  • Softmax und gewichtete Summe: attention_output = softmax(scores) * V.

Für eine Sequenz der Länge n besteht der KV-Cache aus K- und V-Tensoren der Größe [n, d_model]. Beim Generieren des t-ten Tokens nutzt Attention den gesamten vergangenen Cache plus den aktuellen.

Prompt Caching speichert den KV-Cache des Prompt-Präfixs über API-Aufrufe hinweg. Bei einem neuen Prompt, der mit einem gecachten Präfix beginnt (Hit), werden Attention-Berechnungen für diese Tokens übersprungen – der fertige KV wird verwendet. Die Kosten sinken, da ~90 % der Rechenleistung bei langen Kontexten übersprungen werden.

  • Cache-Hit: Präfix > 1024 Tokens (Anthropic), Kosten /10.
  • Cache-Miss: Volle Neuberechnung.
  • TTL: Cache lebt ~5-10 Min., abhängig vom Anbieter.

Vorteile und Einschränkungen

Latenzgewinne: Bei Prompts mit 10k+ Tokens sinkt TTFB um 50-85 %.

Einsparungen: Gecachte Eingabe-Tokens – $0.0001/1k vs $0.001/1k (ca.).

Einschränkungen:

  • Nur Präfix-Matching (keine beliebigen Substrings).
  • Cacht keine Output-Embeddings oder Logits.
  • Abhängig vom Tokenizer des Anbieters.

Im Produktiveinsatz: Für Sitzungsbasierte Chats mit wiederholter Historie nutzen.

Wichtige Erkenntnisse

  • Prompt Caching speichert Attention-KV-Paare für Präfixe, reduziert Rechenaufwand um 90 %+ bei langen Kontexten.
  • Time to first token sinkt um bis zu 85 %, Eingabekosten /10.
  • Erfordert exaktes Präfix-Matching und kompatiblen Tokenizer.
  • Ideal für RAG, Chat-Historien, mehrstufige Aufgaben.
  • Kein Einfluss auf Qualität: Generierung bleibt stochastisch.

— Editorial Team

Advertisement 728x90

Weiterlesen