Yes. KV cache eviction can hide LLM failures because a serving policy may discard attention state that mattered, then lack enough information to estimate the damage from the retained cache alone.
A paper submitted on July 23, 2026, gives this problem a precise boundary: deterministic, value-blind top-k eviction cannot consistently estimate its induced attention-output error from retained state. The proposed alternative keeps a probability sample of the discarded tail and builds a statistical certificate around the estimated error. The method improved failure attribution in the reported experiments, but the prototype is slower, the experiments stop at 16K context and 8B parameters, and the paper does not prove end-to-end answer correctness.
Before rollout, compare every candidate cache treatment with a full-cache control on the same frozen requests. Count the cases where full cache passes and the candidate fails. Test eviction, quantization, offload, and reuse separately so each comparison isolates one source of error.
Reader level: Advanced. This guide assumes you understand transformer inference, attention, and basic model evaluation.
Contents
Why KV cache eviction can hide failures
Attention output depends on retained entries and the entries that the policy removes. After a deterministic policy discards the tail, a monitor that sees only the selected set cannot inspect the missing values.
ArXiv:2607.21475 studies this observability problem. Its negative result applies to deterministic, value-blind top-k eviction: retained state alone cannot support a consistent estimate of the attention-output error caused by eviction. The result does not say that every deterministic policy produces poor outputs. It says this policy class cannot reliably certify its induced error using only what it kept.
The proposed method preserves evidence about the discarded tail. It Poisson-samples entries that would otherwise disappear, applies a Hájek correction, and combines that estimate with a retained-set variance certificate.
Measured: The error certificate recorded 0.97 coverage across 12,096 attention replay cells. A separate real-workload study used about 74,000 generations to test failure attribution. In that study, the certificate reached AUC 0.73–0.75 for distinguishing cache-induced failures from inherent model failures. Output confidence reached 0.47–0.54 on the same attribution task.
Measured: Output confidence predicted overall failure better. The two signals answer different questions:
Inferred: Low output confidence cannot serve as the sole cache-regression alarm. It may flag a weak answer without identifying its cause, while a confident answer may still change after the cache policy removes useful state.
The paper also reports negative and operational results. Three of seven preregistered claims failed. Its prototype took 0.043 seconds per token, compared with 0.023 for deterministic eviction and 0.015 for full cache. Experiments covered contexts up to 16K, models up to 8B, and a single-turn proxy. The authors provide no theorem that connects the certificate to end-to-end task correctness.
Practical interpretation: Treat the certificate as an attribution signal under the studied conditions. It does not certify production readiness.
Four cache treatments, four reliability questions
Teams often group several interventions under “KV cache optimization.” Each intervention changes a different part of inference.
| Treatment | What changes | Reliability question |
|---|---|---|
| --- | --- | --- |
| Eviction | Removes selected key-value states | Did a later token need the removed state? |
| Quantization | Stores retained states at lower precision | Did numerical error change attention enough to alter the result? |
| Offload or tiering | Moves state between GPU, CPU, or another storage tier | Did movement, scheduling, or implementation behavior change availability, latency, or correctness? |
| Reuse or prefix caching | Reuses state from an earlier matching prefix | Did the state come from the correct model, prefix, configuration, and isolation boundary? |
The system-aware survey in arXiv:2607.08057 classifies the field through temporal scheduling, spatial placement and migration, and structural representation and retention. That taxonomy also works as an evaluation boundary. A full-cache BF16 control compared with an evicted FP8 candidate changes two structural variables at once. A failed candidate cannot identify whether eviction, quantization, or their interaction caused the regression.
Practical interpretation: Test each cache intervention as its own experiment. Combine them only after the individual treatments pass.
Policies that preserve more useful state
Two other papers show that policy design can preserve more quality at the same memory budget. Neither supplies a universal production threshold.
VaSE, arXiv:2606.03928, protects high-magnitude value states while retaining stochastic diversity. On Qwen3-4B and Qwen3-14B across six reasoning tasks, it achieved roughly 4× cache compression and improved results by 4.4 and 4.9 points over the strongest eviction baseline. One 16K, single-A100 setup reached 3.1× tokens per second.
Those measurements cover decode only, Qwen3 models, and no production batching. They do not establish the same gain for another model family, serving engine, concurrency level, or workload.
K-VEC, arXiv:2606.29563, coordinates retention coverage across attention heads and layers. On Llama 3.1 8B across 16 LongBench subsets, it improved scores by as much as 10.35 points and by 1.61 points on average at a budget of `B=128`. The evaluation uses one model family and one benchmark suite, and the method adds prefill work.
Practical interpretation: Value-aware, stochastic, and coverage-aware policies deserve candidate slots in an evaluation. Your full-cache run remains the local source of truth.
Why quantization needs a separate control
FP8 KV cache quantization reduces precision rather than removing tokens. Its errors can still reach the application without an engine error.
An official vLLM FP8 investigation, published April 22, 2026, reported long-context needle accuracy falling from 91% with BF16 cache to 13% with FP8 before a two-level accumulation fix. The fix restored accuracy to 89%. In the best reported FP8 configuration, the decode slope was 54% of BF16.
Measured: One numerical path produced a severe regression, and a kernel-level correction recovered most of the lost accuracy.
Not established: FP8 cache does not universally cause that regression or deliver that speedup. The result depends on the implementation, model, hardware, attention path, and benchmark.
vLLM issue #37554 adds a narrow warning: a reporter found silent corrupted FP8 KV scaling on a hybrid model. This bug report cannot support a general claim about FP8 or hybrid architectures.
A LocalLLaMA discussion from April 7 contains conflicting practitioner reports about cache formats and quality. Those reports can suggest test cases, but controlled evaluation must decide a rollout.
The vLLM v0.26.0 release, dated July 25, contains 411 commits from 212 contributors and expands visibility into KV tiering, offload metrics, and cache reuse. Release activity and new observability features do not prove broad production adoption or correctness.
A paired full-cache validation workflow
Define “full cache” as the model’s native attention behavior with no added eviction or cache quantization. Keep model weights, tokenizer, runtime version, attention backend, sampling settings, prompt tokens, and output validator fixed within each pair.
1. Run an ablation matrix
Use at least four treatments:
| Run | Retention | Precision | Comparison |
|---|---|---|---|
| --- | --- | --- | --- |
| A | Full | Reference precision | Control |
| B | Full | Candidate quantization | A → B isolates quantization |
| C | Candidate eviction | Reference precision | A → C isolates eviction |
| D | Candidate eviction | Candidate quantization | A → D measures the combined treatment |
| Optional E | Full | Reference precision, with offload or reuse | A → E isolates placement or reuse |
Comparing only A with D can reveal a combined regression, but it cannot assign a cause. Runs B and C provide the missing controls.
Test every supported model, runtime, kernel, and hardware path separately. The vLLM FP8 result shows why a label such as “FP8 enabled” lacks enough detail for a reliability decision.

*Caption: Paired full-cache validation isolates candidate-only failures before eviction or quantization reaches production.*
2. Freeze a workload matrix
Build the matrix from real request shapes and include boundary cases:
Long-context workloads need more than a synthetic needle test. If the product runs code agents or extended workflows, include representative traces. Token volume and workflow shape affect the economics described in More Tokens, Better AI — and the Compute Bill and Code Agents, 21 Billion Activity Tokens, and the Fable of GPT-5.6.
3. Pair requests and isolate cache state
Use this evaluation logic:
for each frozen_case:
full = run(frozen_case, treatment=A, isolated_cache=true)
candidate = run(frozen_case, treatment=candidate, isolated_cache=true)
full_pass = validate(full, frozen_case.expected_behavior)
candidate_pass = validate(candidate, frozen_case.expected_behavior)
record(full_pass, candidate_pass, context_length,
task_type, model, runtime, hardware, treatment)This block is pseudocode, not an engine-specific API. Use a task validator rather than text equality when several answers can be correct. Suitable validators include unit tests for generated code, schema checks for structured output, exact tool-and-argument checks, retrieval assertions, or a preregistered rubric.
Keep cache namespaces isolated. Prefix state reused across treatments can contaminate the comparison.
4. Measure candidate-only failures
Use this primary metric:
cache_induced_failure_rate =
count(full passes and candidate fails)
/
count(full passes)The denominator conditions the rate on full-cache success. A pair where both runs fail does not show that cache compression caused the failure.
Report the raw numerator and denominator for every critical slice. One aggregate can hide a regression at maximum context, on one model, or under one attention backend. Track total failure rate beside the paired metric because output confidence and cache-attribution signals cover different failure modes.
5. Predeclare the decision rule
Choose the maximum acceptable rate, `τ`, before viewing candidate results. Set stricter rules for critical tasks. A reproducible candidate-only failure may justify rejection on a tool, safety, or transaction path even when the aggregate stays below `τ`.
Cache configuration belongs in the execution policy. Record and enforce it with the discipline used for deterministic AI-agent permissions: explicit configuration, observable decisions, and a repair path when enforcement fails.
Rollout decisions
| Evidence | Decision | Next action |
|---|---|---|
| --- | --- | --- |
| No valid full-cache pairs | Block | Fix the evaluation harness |
| Candidate exceeds `τ` overall or on a critical slice | Reject | Increase the cache budget, change policy, or disable quantization |
| Aggregate passes but one model, kernel, or context slice regresses | Hold | Isolate that path and repeat the paired test |
| Offline pairs pass, but batching or production hardware remains untested | Canary only | Sample paired traffic and keep a full-cache fallback |
| Paired results pass across supported paths and operational gains reproduce | Gradual rollout | Expand by slice while retaining rollback thresholds |
| Online candidate-only failures cross the declared limit | Roll back | Restore the last passing full-cache or candidate configuration |
Release-note activity, anecdotal reports, and average benchmark gains cannot replace a paired rollout gate.
Limits of the current evidence
The strongest certificate result covers attention-output error under a single-turn proxy, not end-to-end application correctness. Its experiments stop at 16K and 8B, while production systems may run larger models, longer contexts, multiple turns, tools, and batches. The measured prototype also costs more time per token than deterministic eviction and full cache in the reported setup.
VaSE and K-VEC remain tied to specific models, tasks, budgets, and serving setups. The vLLM evidence shows that implementation details can dominate a cache-format result. None of these sources supplies a universal safe compression ratio.
Practical interpretation: Use the research to choose candidate policies and monitoring signals. Use paired full-cache validation to decide whether your implementation meets the reliability limits for your workload.
Claim checks
| Claim | Evidence-based wording |
|---|---|
| --- | --- |
| “Deterministic eviction is unsafe.” | Too broad. The negative result concerns consistent self-estimation from retained state for deterministic, value-blind top-k eviction. |
| “The certificate detects wrong answers.” | It estimates cache-induced attention error and showed useful failure attribution; no end-to-end correctness theorem exists. |
| “FP8 KV cache destroys accuracy.” | One vLLM path fell from 91% to 13%, then recovered to 89% after a fix. The result is path-specific. |
| “Stochastic eviction is production-ready.” | VaSE and the certificate prototype show measured tradeoffs with model, context, batching, and speed limits. |
| “vLLM’s new metrics prove adoption.” | They improve visibility. Release scope and contributor counts do not prove production use. |



