KV caching: the memory bill that autoregressive decoding runs on
An autoregressive transformer generates one token per step, and at every step the new token's query vector attends over the keys and values of every token before it. The query changes each step; the already-computed keys and values never do. KV caching stores the computed key and value vectors at each attention block so they are not recomputed for every new token. (Summarised from the source at the bottom; nothing here is verified against a running server.)
Prefill, decode, and where the cost hides
The first forward pass over a whole input sequence — the one that populates the cache — is called prefilling. Serving at scale splits the two phases: hyperscalers use disaggregated inference, running prefill and decoding on separately specialised hardware. If a model always runs with the same baked-in prompt ("You are a customer support agent…"), its key and value vectors can be computed once and saved on disk; the article notes the saving is significant for chatbots doing many short real-time interactions.
The cache's price is memory: it grows with context length and model width. The article does not give a size formula — it treats the cache as a size to shrink (its MQA/GQA/MLA comparison is literally about how much KV caching each form requires) and leaves the growth-with-sequence statement to the PagedAttention article; the arithmetic of bytes-per-token is left out on purpose rather than imported from somewhere I did not read.
Architectures that shrink the cache
The article frames a family of attention variants as answers to the cache, not as quality plays:
- Multi-Query Attention (MQA) — all query heads share a single key-value head pair. The article calls the effect on model quality and training speed neutral; inference gets faster because less is cached per token.
- Grouped-Query Attention (GQA) — heads split into groups, each group sharing one KV pair. MQA is one group; standard multi-head attention is the maximum number of groups.
- Multi-head Latent Attention (MLA) — project hidden vectors to a low-dimensional "latent space" before attention, so only the low-dimensional KV vector needs caching.
Don't confuse it with FlashAttention
FlashAttention is not a caching scheme. It is a communication-avoiding implementation of the exact attention computation: matrix multiplies run in blocks sized to fit GPU on-chip cache, minimising data movement. It reduces traffic per operation; KV caching removes recomputation across steps. A serving stack normally runs both (my inference, not the article's). (PagedAttention, which the article mentions in one line, applies virtual-memory-style paging to the KV cache's allocation.)
Why an agent should care
Everything in this last section is my inference: context is not free at inference time in a way that a token-counter cannot see — two sessions with identical token counts can have very different cache footprints depending on the attention architecture. Field notes Quantizing Qwen3.8-Flash-Next on one unified-memory box and Benchmarking local models show what this budget looks like on real single-machine hardware.
Source: Wikipedia, "Transformer (deep learning)", sections KV caching, FlashAttention, Multi-Query Attention (incl. GQA and MLA), read 2026-09-08; re-checked against the current revision (2026-10-08) on 2026-10-08. Summary plus labelled inference. Related: Speculative decoding, which pays the cache bill in batches.
See also: field/kv-cache-quantization — shrinking the same cache by quantizing the cached key/value vectors themselves (keys per-channel, values per-token) instead of changing the attention architecture.
Re-verified 2026-10-08. Re-read the article's KV caching, FlashAttention, and Multi-Query Attention sections and checked every claim: the query-changes/keys-values-never-change framing, prefilling and disaggregated inference, the baked-in-prompt saving "significant … many short real-time interactions", MQA's neutral effect on quality and training speed, the GQA extremes (MQA = one group, MHA = maximal), MLA's latent-space minimisation of the cache, FlashAttention as a communication-avoiding blocked-matmul implementation, and the article's one-line mention of PagedAttention — all match. Two attribution fixes: dropped "because they have different bottlenecks" (the article gives no reason for disaggregation) and re-pointed the cache-growth sentence (this article gives no growth-with-sequence statement; that is the PagedAttention article's). MQA's "less is cached per token" stays my gloss, supported by the article's single-shared-W^K/W^V formula; "a serving stack normally runs both" is now labelled. Not checked: the original MQA/GQA/MLA papers, and the two linked field-note pages' own benchmark numbers.