Observed since 20 Oct, 19:06 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Adaptive KV-cache compression for LLM inference via dynamic token eviction and bit allocation.
AdaptiveKV is an open-source Python research library designed for dynamic, importance-aware Key-Value (KV) cache compression during Large Language Model (LLM) inference.
In autoregressive transformer inference, storing key and value states for long context sequences consumes vast amounts of GPU/CPU memory (e.g. tens of gigabytes). Standard uniform quantization applies the same fixed bit-width (e.g. all 2-bit or all 4-bit) across all tokens. This leads to two major flaws:
AdaptiveKV dynamically evaluates the attention importance of KV blocks during prefill and decoding iterations. It allocates higher precision (4-bit) to critical attention blocks, medium precision (3-bit) to moderate blocks, and low precision (2-bit) to low-importance tokens using threshold or memory-budget constraints.
[!NOTE] Experimental Status: The metrics below are empirical findings collected across multiple random seeds and context lengths on decoder-only Hugging Face models (
LlamaForCausalLMresearch configuration andOPTForCausalLM).
"AdaptiveKV provides evidence of a favorable quality-memory trade-off under the evaluated settings by leveraging token attention importance."
| Compression Scheme | Storage (KB) | Comp Ratio | Memory Saved (%) | Quantization MSE | Cosine Sim (Quality) | Token Agreement (%) | Total Latency (ms) |
|---|---|---|---|---|---|---|---|
| FP16 Baseline | 65,536.0 | 1.00x | 0.0% | 0.000000 | 1.0000 | 100.0% | 365.50 $\pm$ 12.4 |
| Fixed 4-bit | 17,408.0 | 3.76x | 73.4% | 0.010088 | 0.9951 | 96.9% | 310.20 $\pm$ 9.8 |
| Fixed 3-bit | 13,312.0 | 4.92x | 79.7% | 0.046332 | 0.9777 | 90.6% | 328.40 $\pm$ 11.2 |
| Fixed 2-bit | 9,216.0 | 7.11x | 85.9% | 0.252401 | 0.8924 | 78.1% | 312.80 $\pm$ 8.5 |
| AdaptiveKV (Threshold) | 15,847.5 | 4.14x | 75.8% | 0.055789 | 0.9733 | 93.8% | 439.60 $\pm$ 15.3 |
| AdaptiveKV (Budget 25%) | 19,456.0 | 3.37x | 70.3% | 0.010088 | 0.9951 | 96.9% | 3103.19 $\pm$ 84.1 (Experimental) |
| Random Allocation (Ablation) | 13,312.0 | 4.92x | 79.7% | 0.189421 | 0.9215 | 81.3% | 445.10 $\pm$ 14.1 |
For full scientific documentation, see FINAL_VALIDATION_REPORT.md.
git clone https://github.com/venkateshaddanki287-eng/adaptivekv.git
cd adaptivekv
pip install -e .
import torch
from adaptivekv import AdaptiveKVConfig, AllocationConfig
from adaptivekv.cache import AdaptiveKVCache
# Configure AdaptiveKV with Threshold strategy
config = AdaptiveKVConfig(
allocation=AllocationConfig(
strategy="threshold",
bits=(2, 3, 4)
)
)
# Initialize AdaptiveKVCache for LLM generation
cache = AdaptiveKVCache(config)
# 1. Run unit test suite
pytest
# 2. Run empirical research benchmark suite
python research/experiments/run_research_experiment_v2.py
# 3. Generate SVG research figures
python research/generate_figures.py
# 4. Generate Markdown & CSV research tables
python research/generate_tables.py
adaptivekv/
├── src/adaptivekv/
│ ├── quantizer.py # 2-bit, 3-bit, 4-bit uint8 bit-packing engine
│ ├── cache.py # Hugging Face transformers Cache implementation
│ ├── integration.py # AutoModel integration adapters
│ ├── importance.py # Attention, magnitude, and recency analyzers
│ ├── allocator.py # Threshold & budget allocators
│ ├── metrics.py # Quality & storage metrics
│ └── cli.py # CLI entrypoints
├── research/ # Reproducible research suite & SVG figures
├── dashboard/ # Real-time Streamlit web analytics server
├── tests/ # 98 passing pytest units
└── dist/ # Release wheel (v0.1.0)
Licensed under the Apache 2.0 License. See CITATION.cff for software citation format.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 20 Aug 2026 | 14 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 19:06 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:d7c127bf1d313ce79b69aee5e146e58169a271ef180e802e47e65dd51a07ad39