The Promise of TurboQuant
In the pursuit of massive local context windows (256K+ tokens), managing the KV (Key/Value) Cache footprint is the ultimate battle. Historically, the community solved this by truncating the precision of the cache from 16-bit floats (FP16) down to 8-bit (Q8_0) or 4-bit (Q4_0) blocks.
As we discovered in previous tests, this “crude truncation” works fine for the Value cache, but the Key cache is hyper-sensitive to precision loss. Squashing the Key cache to 4 or 5 bits destroys the model’s logical cohesion over long contexts.
TurboQuant (Zandieh et al., ICLR 2026) represented a paradigm shift. Instead of just chopping off decimal places, TurboQuant applies a mathematical transformation:
- WHT Rotation: Applies a Walsh-Hadamard Transform (WHT) to the vector block, spreading statistical outliers evenly.
- Lloyd-Max Codebooks: Categorizes values into an optimized probability dictionary.
- QJL Residuals: Packs leftover “noise” into ultra-dense 1-bit flags.
The theoretical result is turbo4_0, consuming just 4.5 bits per value while retaining near-FP16 reasoning quality. It sounded like the Holy Grail for our 32GB Intel Arc Pro B70.
The Reality of Bleeding-Edge Forks
Because the TurboQuant unpacking sequence happens on the fly during inference, it requires highly optimized, hardware-specific kernels. The upstream implementation only supported NVIDIA (CUDA) and CPU.
We found an experimental open-source fork (balrogbob/llama-cpp-turboquant-SYCL) that ported the TQ dequantization kernels to Intel’s SYCL framework. We compiled it natively on the B70 using the icx/icpx compilers:
cmake -B build -DGGML_SYCL=ON -DGGML_SYCL_TARGET=INTEL
cmake --build build --config Release -j 16
Compilation succeeded. But compilation is not execution.
The Crash and Post-Mortem
When we attempted to launch a 35B Mixture of Experts model with the 256K context window backed by turbo4_0:
./llama-server -m ornith-1.0-35b-Q5_K_M.gguf \
--ctx-size 262144 \
--cache-type-k turbo4_0 \
--cache-type-v turbo4_0 \
-b 8192 -ub 4096 \
-fa on
It failed catastrophically.
The execution crashed immediately upon context allocation. Deep debugging revealed that current SYCL/Vulkan drivers face severe stability issues with SET_ROWS operations on cache_v_l3 view tensors during TQ execution. The experimental kernels simply could not interface correctly with the Arc’s memory management under heavy load.
The Takeaway: Back to Production Reality
This is the reality of AI infrastructure R&D. Not every experimental GitHub fork works, and hardware compatibility outside the CUDA ecosystem often lags by several months.
We did not get to run TurboQuant.
Instead, we fell back to our proven, stable configuration for pushing 256K contexts into 32GB VRAM without sacrificing reasoning: Asymmetric block quantization. By setting K=Q8_0 (protecting the sensitive keys) and V=Q4_1 (compressing the values), we achieve the necessary memory reduction using highly stable, upstream llama.cpp kernels.
We will revisit TurboQuant once the kernels mature and land in the upstream main branch. Until then, sticking to proven asymmetric quantization is the only way to keep production local AI nodes online.