Field note 14 · Jun 23, 2026 · builder

Everyone quantizes the weights and forgets the KV cache

  • kv-cache-quantization
  • rope-aware-bit-allocation
  • 2bit-kv
  • block-gtq
  • long-context-serving
weights vs KV memory at 128K, and uniform-2bit vs RoPE-aware recall
weights vs KV memory at 128K, and uniform-2bit vs RoPE-aware recall

Everyone quantizes the weights and forgets the KV cache. On long context, that cache is what blows your VRAM budget.

You AWQ the model to 4-bit, fit it on the GPU, ship it. Then a user pastes a 200-page contract, and per-token KV at 128K quietly eats more memory than the weights you just shrank.

Low-bit KV cache used to be a trap: push it to 2-bit and needle-in-haystack recall falls apart. New work (Block-GTQ, RoPE-aware bit allocation, Jun 2026) says stop quantizing it uniformly. Under RoPE, key energy concentrates in a few frequency blocks. Spend bits where the signal is, starve the rest.

Paper-stated on Llama-3.1-8B, benchmark your own:

  • 3.24x KV-cache compression at fp16-comparable quality
  • needle recall 70.6 to 97.4 vs naive low-bit
  • 1.34x faster than fp16 attention at 128K on one H800

The trap: uniform 2-bit KV looks clean on short prompts and silently wrecks recall past 32K. You won't catch it in eval until a customer's long document returns the wrong clause.

Quantize the weights for the GPU bill. Quantize the KV cache for the context window. That second one is the on-prem win nobody is pricing in yet.