HomeArtificial IntelligenceTurboQuant: 3-Bit KV Cache via PolarQuant + QJL (ICLR 2026)

TurboQuant: 3-Bit KV Cache via PolarQuant + QJL (ICLR 2026)

Last updated: June 2026

TurboQuant is a vector quantization algorithm from Google Research (ICLR 2026, arXiv:2504.19874) that compresses LLM key-value caches to roughly 3 bits per coordinate with zero accuracy loss. It combines PolarQuant — a rotation-based coordinate transform — with a 1-bit QJL residual correction, achieving at least 6× memory reduction and up to 8× faster attention computation on NVIDIA H100 GPUs. The method is data-oblivious, requires no training, and operates within a factor of ≈2.7 of the information-theoretic limit.

ICLR 2026 KV Cache Vector Quantization PolarQuant + QJL Google Research

Why Does KV Cache Size Limit LLM Inference?

Every time a decoder-based transformer generates a new token, it stores a key vector and a value vector for that token in every attention layer. This collection of vectors — the key-value (KV) cache — is the model’s working memory for the current context.

The problem is straightforward: KV cache size scales linearly with both model depth (number of layers × attention heads) and context length. A model like Qwen2.5-3B with 36 layers accumulates roughly 289 MB of KV cache at 8K tokens in FP16 precision. On a 12 GB consumer GPU, the KV cache — not the model weights — becomes the binding constraint on how long a context the model can process. At 128K tokens, production models like Llama-3.1-8B-Instruct can consume over 4 GB of KV cache in FP16, forcing engineers to choose between context length and batch size.

Quantization compresses these vectors from 16-bit floats to lower precision (4-bit, 3-bit, or even 2-bit integers), reducing memory proportionally. But naïve scalar quantization at very low bit-widths destroys the geometric relationships between vectors — specifically, their inner products (dot products) — which are exactly what the attention mechanism computes. This is where TurboQuant enters the picture.

The KV cache memory formula

It helps to see the exact arithmetic, because it shows precisely where a bit-width reduction lands. The KV cache size for a single sequence is:

KV bytes = 2 × layers × kv_heads × head_dim × seq_len × bytes_per_value

The leading 2 covers one key plus one value per token. kv_heads is the number of key/value heads (with grouped-query attention this is far smaller than the number of query heads). bytes_per_value is 2 for FP16 and 0.375 for 3-bit TurboQuant (3 bits ÷ 8).

Worked example, Llama-3.1-8B-Instruct (32 layers, 8 KV heads, head_dim 128) at a 128K context, batch size 1:

PrecisionBytes/valueKV cache @ 128Kvs FP16
FP16 (baseline)2.0≈ 16 GB
4-bit0.5≈ 4 GB
3-bit TurboQuant0.375≈ 3 GB≈ 5.3×

The same model with multi-head attention (no GQA) would be 4× larger again — which is exactly why memory-bound inference moved to grouped-query attention and aggressive KV quantization at the same time. TurboQuant attacks the second lever.

What Is TurboQuant and How Does It Work?

TurboQuant is a two-stage vector quantization algorithm designed by researchers at Google Research and New York University. It was published at ICLR 2026 (originally posted as arXiv:2504.19874 in April 2025) and builds on two companion papers: PolarQuant (AISTATS 2026) and Quantized Johnson-Lindenstrauss / QJL.

The core insight is that MSE-optimal quantizers introduce systematic bias in inner product estimation. TurboQuant solves this by splitting the compression budget into two stages:

Stage 1: PolarQuant — MSE-Optimal Compression

The input vector is multiplied by a random orthogonal matrix (generated via QR decomposition of a Gaussian matrix). This rotation has a critical mathematical effect: after rotation, each coordinate follows a concentrated Beta distribution — well-approximated by Gaussian N(0, 1/d) for typical head dimensions. Because this distribution is known and coordinates become nearly independent in high dimensions, you can apply an optimal Lloyd-Max scalar quantizer to each coordinate independently.

Lloyd-Max quantization solves a continuous k-means problem: given a known distribution and a bit budget (e.g., 3 bits = 8 reconstruction levels), it finds the bucket boundaries and centroids that minimize mean squared error. The codebooks are precomputed once per bit-width — they do not depend on the data at all. This is what makes TurboQuant data-oblivious and suitable for online (streaming) applications like KV cache compression, where vectors arrive one token at a time.

Key difference from conventional quantization:

Traditional methods (e.g., per-channel min-max quantization) need to store normalization constants (scale and zero-point) for every small block of data — typically adding 1–2 extra bits per coordinate of overhead. PolarQuant eliminates this overhead entirely because the post-rotation distribution is fixed and known in advance.

Stage 2: QJL — 1-Bit Residual Correction

Stage 1 minimizes MSE but introduces a small bias in dot products. For the attention mechanism, which computes Q·K dot products to produce attention scores, this bias accumulates across tokens.

TurboQuant corrects this by applying the Quantized Johnson-Lindenstrauss (QJL) transform to the residual vector (the difference between the original and quantized vector). QJL reduces each coordinate of the residual to a single sign bit (+1 or −1), adding exactly 1 bit per coordinate of overhead with zero additional memory for normalization constants. The resulting combined estimator for the inner product is provably unbiased.

The total bit-width is therefore (b − 1) bits for PolarQuant + 1 bit for QJL = b bits total. At 3 bits total, the method achieves what the paper calls “absolute quality neutrality” — no measurable accuracy degradation compared to FP16.

TurboQuant Two-Stage Quantization Pipeline Diagram showing TurboQuant’s two-stage compression: Stage 1 applies random rotation then Lloyd-Max scalar quantization (PolarQuant) using b−1 bits; Stage 2 applies QJL 1-bit sign quantization to the residual. Combined output achieves unbiased inner product estimation at b total bits per coordinate, within 2.7× of the information-theoretic lower bound. TurboQuant Two-Stage Quantization Pipeline DecodeTheFuture.org TurboQuant, vector quantization, KV cache compression, PolarQuant, QJL Architecture diagram of TurboQuant showing PolarQuant MSE-optimal stage followed by QJL 1-bit residual correction for unbiased inner product quantization. Diagram image/svg+xml en © DecodeTheFuture.org Input Vector x ∈ ℝᵈ STAGE 1 — PolarQuant (b−1 bits) Random orthogonal rotation: x̃ = Rx Each coord ~ Beta → Lloyd-Max quantizer Output: Q(x) — MSE-optimal, biased IP residual r = x − Q⁻¹(Q(x)) STAGE 2 — QJL (1 bit per coord) Sign-bit quantization of residual: sign(r) Zero memory overhead, removes IP bias Combined: b bits total Unbiased inner product • ≈2.7× of Shannon bound 3-bit → 6× less RAM 289 MB → 58 MB @ 8K 4-bit → 8× faster attention on H100

What Do the Benchmarks Show?

Google Research evaluated TurboQuant across multiple long-context benchmarks — LongBench, Needle-In-A-Haystack, ZeroSCROLLS, RULER, and L-Eval — using open-source models (Gemma, Mistral, Llama-3.1-8B-Instruct). The results are striking:

Metric 3-bit TurboQuant 4-bit TurboQuant FP16 Baseline
LongBench aggregate scoreQuality neutralQuality neutral100%
Needle-In-A-HaystackPerfect retrievalPerfect retrievalPerfect retrieval
KV memory reduction≥ 6×≥ 4×
Attention speedup (H100)Up to 8×
Training / fine-tuning requiredNoneNone
TurboQuant LongBench benchmark results showing KV cache compression performance across multiple methods on Llama-3.1-8B-Instruct, with TurboQuant achieving quality-neutral scores at 3–4 bit quantization
TurboQuant KV cache compression performance on the LongBench benchmark across multiple compression methods on Llama-3.1-8B-Instruct. Bitwidths indicated in brackets. Source: Google Research, March 2026.

Community reimplementations confirm the paper’s claims. A from-scratch PyTorch implementation tested on Qwen2.5-3B-Instruct reports 99.5% cosine similarity between compressed and original attention scores at 3-bit, with 9/9 exact nearest-vector retrieval across all bit-widths and context lengths tested. At 3 bits, the KV cache for an 8K-token context drops from 289 MB to 58 MB — the difference between fitting ~8K context and ~40K context on a 12 GB GPU.

TurboQuant attention logit computation speedup chart showing up to 8× performance increase at 4-bit quantization on H100 GPUs compared to JAX baseline
Speedup in computing attention logits using TurboQuant at various bit-widths, measured against a highly optimized JAX FP32 baseline on NVIDIA H100 GPUs. 4-bit TurboQuant achieves up to 8× speedup. Source: Google Research, March 2026.

For nearest neighbor search on the GloVe embedding dataset (d=200), TurboQuant achieved the best recall ratios across top-k retrieval tasks compared to standard Product Quantization and RaBitQ, while reducing indexing time to virtually zero (because codebooks are precomputed, not learned from data).

TurboQuant 1@k recall ratio on GloVe dataset d=200 showing superior retrieval performance compared to Product Quantization and RaBitQ baselines
TurboQuant retrieval performance on the GloVe dataset (d=200), showing optimal 1@k recall ratio relative to state-of-the-art vector quantization baselines including PQ and RaBitQ. Source: Google Research, March 2026.

How Does TurboQuant Compare to Other KV Cache Compression Methods?

The KV cache compression landscape has evolved rapidly. Here is where TurboQuant sits relative to key alternatives:

Method Type Min bits Training needed Inner product unbiased
TurboQuant (ICLR 2026)Data-oblivious VQ2.5–3NoYes (with QJL)
KIVIPer-channel scalar2NoNo
KVQuant (NeurIPS 2024)NUQ + dense-sparse3CalibrationNo
CommVQ (ICML 2025)Additive VQ + codebook2EM trainingNo
VQKV (2026)SimVQ + residual codebooks~1 (index)No (training-free)No
VecInfer (2025)Hadamard + VQ2NoNo

TurboQuant’s distinctive properties are the combination of provable near-optimality (within ≈2.7× of Shannon’s distortion-rate bound), unbiased inner product estimation, zero training requirements, and zero normalization overhead. Most competing methods either require calibration data, store per-block normalization constants that add 1–2 bits of overhead, or both.

Practical nuance

An expert analysis notes that most easy compression gains (2–3× from basic int8/int4 quantization, 3–4× with outlier-aware methods like SmoothQuant/AWQ) are already deployed in production LLM systems. TurboQuant pushes the boundary to approximately 4–4.5× effective compression. The remaining gains are real but smaller, and each additional step is increasingly expensive to implement and stabilize in production. The theory is settled — the engineering challenge is the bottleneck.

TurboQuant, QJL, PolarQuant and RotorQuant: the method family

TurboQuant did not appear in isolation — it is the convergence point of a short lineage of papers from the same research group. If you have seen these names searched together, here is how they actually relate:

MethodarXiv / venueRole in the family
QJL (Quantized Johnson-Lindenstrauss) 2406.03482 The 1-bit, zero-overhead sign-quantization transform with an unbiased inner-product estimator. It is the residual-correction stage TurboQuant reuses in Stage 2.
PolarQuant 2502.02617 · AISTATS 2026 The rotation + polar-coordinate transform that makes the post-rotation distribution known and concentrated, removing per-block normalization overhead. It is TurboQuant’s Stage 1.
TurboQuant 2504.19874 · ICLR 2026 The unification: PolarQuant (MSE-optimal) + QJL (1-bit residual) → a single data-oblivious quantizer that is both MSE-optimal and unbiased on inner products, within ≈2.7× of the Shannon distortion-rate bound.
RotorQuant (community variant) open-source A Clifford-algebra reformulation of TurboQuant with fused Triton kernels; community benchmarks claim 10–19× faster quantization with far fewer parameters at large d. Not an official Google paper.

The mental model: QJL solved the unbiased-inner-product problem, PolarQuant solved the normalization-overhead problem, and TurboQuant fuses both into one online algorithm with a formal optimality proof. When people search “TurboQuant PolarQuant QJL paper” or “quantized Johnson-Lindenstrauss,” they are usually trying to reconstruct exactly this lineage — the canonical reference is arXiv 2504.19874.

What Does the Math Actually Guarantee?

TurboQuant comes with formal information-theoretic proofs. The paper derives Shannon lower bounds on the best achievable distortion rate for any vector quantizer and shows that TurboQuant’s distortion differs from these bounds by only a constant factor of approximately 2.7. This is significant: it means no algorithm — regardless of computational cost or data dependence — can fundamentally do more than ~2.7× better than TurboQuant at the same bit budget.

Formally, for a b-bit quantizer operating on unit-norm vectors in ℝᵈ, TurboQuant achieves MSE distortion proportional to 2⁻²ᵇ, which matches the exponential scaling of the Shannon bound. The factor of 2.7 comes from the gap between the Lloyd-Max quantizer (which is optimal for scalar quantization of a known distribution) and the theoretical limit for vector quantization of the same distribution.

For practitioners, the implication is straightforward: at 3.5 bits per coordinate, TurboQuant achieves “absolute quality neutrality” (zero measurable degradation). At 2.5 bits, degradation is marginal. Going below 2 bits per coordinate, any method — including TurboQuant — will hit the information-theoretic wall.

How Can You Use TurboQuant Today?

As of mid-2026, TurboQuant is not yet integrated into mainstream inference frameworks (vLLM, TGI, llama.cpp), but several open-source implementations exist:

Python — TurboQuant quantization pipeline (conceptual)
import torch
import numpy as np

# Stage 1: Random rotation (PolarQuant)
def random_rotation_matrix(d: int) -> torch.Tensor:
    """Generate random orthogonal matrix via QR decomposition."""
    G = torch.randn(d, d)
    Q, R = torch.linalg.qr(G)
    # Ensure proper orthogonal matrix (det = +1)
    Q *= torch.sign(torch.diag(R))
    return Q

# Lloyd-Max codebooks are precomputed for Beta distribution
# Example for 3-bit (8 levels), d=128
CODEBOOK_3BIT = precompute_lloyd_max(n_levels=8, d=128)

def turboquant_encode(x: torch.Tensor, R: torch.Tensor,
                      codebook: dict, n_bits: int = 3):
    """Encode vector x using TurboQuant two-stage pipeline."""
    norm = x.norm()
    x_unit = x / norm

    # Stage 1: Rotate and scalar-quantize
    x_rot = R @ x_unit
    indices = quantize_lloyd_max(x_rot, codebook)
    x_recon = dequantize_lloyd_max(indices, codebook)

    # Stage 2: QJL on residual
    residual = x_rot - x_recon
    qjl_bits = torch.sign(residual)  # 1-bit per coord

    return norm, indices, qjl_bits

def turboquant_decode(norm, indices, qjl_bits,
                      R: torch.Tensor, codebook: dict):
    """Decode: reconstruct approximate vector."""
    x_recon = dequantize_lloyd_max(indices, codebook)
    # QJL correction for unbiased inner products
    x_corrected = x_recon  # + qjl_correction_term
    x_orig_space = R.T @ x_corrected
    return norm * x_orig_space

Production-quality implementations are available on GitHub — notably tonbistudio/turboquant-pytorch (validated on Qwen2.5-3B, RTX 3060) and scrya-com/rotorquant (a Clifford algebra variant with Triton GPU kernels, benchmarked on RTX 5090). The RotorQuant variant claims 10–19× faster quantization than the reference TurboQuant with 44× fewer parameters at d=4096.

What Does This Mean for RAG and Vector Search?

TurboQuant is not limited to KV cache compression. The same algorithm applies directly to vector databases used in retrieval-augmented generation (RAG) and nearest neighbor search. Traditional Product Quantization (PQ) for vector search requires expensive offline training — clustering the dataset to build codebooks that are specific to the data distribution. TurboQuant’s codebooks are data-oblivious and precomputed, meaning indexing time drops to virtually zero while recall either matches or exceeds PQ on standard benchmarks. If you are choosing a store for these vectors, see our guide to vector databases.

For RAG pipelines where the embedding database changes frequently (new documents added, old ones removed), the elimination of codebook retraining is a significant operational advantage. The vectors can be quantized as they arrive — no batch processing, no reindexing.

What Does This Mean in Practice?

For engineers running LLM inference:

The immediate practical impact is straightforward: at 3-bit quantization, a model that previously needed 4 GB of KV cache for a 128K context can run in under 700 MB. On a single A100 80 GB or H100 GPU, this translates directly to either longer contexts or larger batch sizes — both of which reduce per-token cost. The absence of any training or calibration step means TurboQuant can be dropped into existing inference pipelines without reprocessing the model. The same memory math drives the economics of hosted inference — see how providers price it in our best inference APIs comparison.

The deeper significance is that TurboQuant marks the point where KV cache compression is approaching a hard information-theoretic boundary. The ≈2.7× gap to the Shannon bound leaves limited room for future improvement. Most future gains in LLM memory efficiency will need to come from architectural changes (e.g., multi-query attention, shared KV heads, sliding window attention) rather than better compression of the same data.

For the LLM ecosystem broadly, TurboQuant — together with methods like KVQuant, CommVQ, and VQKV — is closing the gap between what the theory allows and what deployed systems achieve. The compression question is increasingly solved; the remaining challenges are kernel-level GPU implementation and integration into inference frameworks.

FAQ

TurboQuant is a two-stage vector quantization algorithm from Google Research (ICLR 2026) that compresses high-dimensional vectors — particularly LLM key-value caches — to as low as 3 bits per coordinate with zero accuracy loss. It combines PolarQuant (rotation + Lloyd-Max scalar quantization) with QJL (1-bit residual correction) to achieve provably near-optimal compression with unbiased inner product estimation.
At 3-bit quantization, TurboQuant achieves at least 6× memory reduction compared to FP16 storage. For example, the KV cache of Qwen2.5-3B at 8K tokens drops from 289 MB to approximately 58 MB. On NVIDIA H100 GPUs, 4-bit TurboQuant provides up to 8× speedup in attention logit computation.
No. TurboQuant is entirely data-oblivious — its codebooks are precomputed from the known Beta distribution and do not depend on the input data. This makes it suitable for online (streaming) applications where vectors arrive one at a time, such as KV cache compression during autoregressive generation.
KVQuant (NeurIPS 2024) uses per-channel quantization, pre-RoPE key quantization, non-uniform datatypes, and dense-and-sparse quantization — requiring calibration data and per-block normalization constants. TurboQuant is data-oblivious with zero normalization overhead and provably near-optimal distortion. TurboQuant also provides unbiased inner product estimation, which KVQuant does not guarantee.
Yes. TurboQuant applies directly to nearest neighbor search in vector databases. Because its codebooks are precomputed and data-independent, indexing time is virtually zero — a major advantage over Product Quantization (PQ), which requires expensive offline codebook training. On the GloVe benchmark, TurboQuant achieved superior recall compared to PQ and RaBitQ baselines.
Shannon’s distortion-rate theory establishes a lower bound on the MSE achievable by any b-bit quantizer for a given source distribution. TurboQuant operates within a factor of approximately 2.7 of this bound — meaning no algorithm can fundamentally perform more than ~2.7× better at the same bit budget, regardless of computational cost or data dependence.
As of mid-2026, TurboQuant is not yet integrated into mainstream inference frameworks. However, several open-source PyTorch implementations exist on GitHub (tonbistudio/turboquant-pytorch, scrya-com/rotorquant). The RotorQuant variant includes optimized Triton GPU kernels and has been benchmarked on RTX 5090 and RTX 3060 hardware.
The paper is “TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate” by Amir Zandieh, Majid Daliri, Majid Hadian, and Vahab Mirrokni, published at ICLR 2026 and available as arXiv:2504.19874 (first posted April 2025). Google Research summarised it in a March 2026 blog post.
No — it combines them. PolarQuant (arXiv:2502.02617, AISTATS 2026) is the rotation + polar-coordinate stage that removes normalization overhead. QJL (arXiv:2406.03482) is the 1-bit residual transform that gives unbiased inner products. TurboQuant fuses PolarQuant as Stage 1 and QJL as Stage 2 into one provably near-optimal, data-oblivious quantizer.
Both framings are correct. The paper reports 3.5 bits per channel for “absolute quality neutrality” (no measurable degradation) and 2.5 bits for marginal degradation; Google’s blog rounds this to a headline “3 bits per coordinate.” In KV-cache terms the practical sweet spot is roughly 3 bits, which yields the ≥6× memory reduction figure.

Bibliography

Zandieh, A., Daliri, M., Hadian, M., & Mirrokni, V. (2025). TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate. ICLR 2026. https://arxiv.org/abs/2504.19874

Zandieh, A., Han, I., Daliri, M., & Karbasi, A. (2024). QJL: 1-Bit Quantized JL Transform for KV Cache Quantization with Zero Overhead. https://arxiv.org/abs/2406.03482

Zandieh, A., Hadian, M., & Mirrokni, V. (2025). PolarQuant: Quantizing KV Caches with Polar Transformation. AISTATS 2026. https://arxiv.org/abs/2502.02617

Google Research. (2026, March 24). TurboQuant: Redefining AI efficiency with extreme compression. Google Research Blog. https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/

Hooper, C., Kim, S., Mohammadzadeh, H., Mahoney, M. W., Shao, Y. S., Keutzer, K., & Gholami, A. (2024). KVQuant: Towards 10 Million Context Length LLM Inference with KV Cache Quantization. NeurIPS 2024. https://arxiv.org/abs/2401.18079

Vaswani, A., Shazeer, N., Parmar, N., et al. (2017). Attention Is All You Need. NeurIPS 2017, 5998–6008. https://arxiv.org/abs/1706.03762

Shannon, C. E. (1959). Coding theorems for a discrete source with a fidelity criterion. IRE National Convention Record, 7(4), 142–163.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments