Fathom: Per-Query Read Depth for Sparse Decoding over Offloaded KV Caches
Vivek Kalyanarangan
Published September 15, 2026 · on the feed September 17, 2026 · ▲ 6 · arXiv 2609.17652
The abstract
When agentic sessions run to a million tokens with many sessions resident at once, the KV cache and the index that ranks it live in host memory, and the scan that ranks all n keys for a top-k step becomes the traffic that bounds decoding. We present Fathom, a key scan in which each query decides how many bits of each key channel to read. The 4-bit K cache is stored channel-major as bit planes, so a prefix of t planes is exactly the channel's t-bit quantizer, and the query spends its bit budget by reverse water-filling over the variance-weighted importance of its channels. At one million tokens on Qwen3-8B a decode step is 1.67x faster in GPU time than with the 136-bit scans of Double Sparsity, Loki and SparQ r=32, and in the same GPU time as SparQ's 68-bit read (r=16) Fathom reads 18% fewer bytes with lower attention error on six of seven model and context settings. On RULER-style tasks every per-token scan matches exact top-k decoding, and on real coding-agent sessions Fathom reaches the step agreement of the most accurate 136-bit scan at 92 bits. The store is the 4-bit K copy a quantized serving stack already holds, and the method is not faster when the index is resident in GPU memory.
The Brief
2:22A short podcast summary of the paper. Written and voiced by AI.
Transcript
Fathom. Per-Query Read Depth for Sparse Decoding over Offloaded KV Caches. By Vivek Kalyanarangan. Published on the fifteenth of September. Its code repository is public and real: about twenty-five source files.
Agentic sessions can run to a million tokens, with many sessions resident at the same time. At that scale the KV cache, and the index that ranks it, live in host memory rather than on the GPU. Sparse decoding picks the top keys at each step, and to do that it scans all of the keys to rank them. That scan, the traffic of reading every key from host memory, becomes the thing that limits how fast decoding can go. In other words, the cost is not the arithmetic of attention. It is the number of bytes that have to be read just to decide which keys to attend to.
Fathom is a key scan in which each query decides for itself how many bits of each key channel to read. A query that can tell the keys apart with a coarse look reads less. The depth of reading is set per query, which is what the title means by per-query read depth.
The key cache is stored at four bits, arranged channel-major as bit planes. That layout means the first t planes of a channel are exactly that channel's t-bit quantizer, so reading fewer planes is the same as reading a coarser version of the key. Each query spends its bit budget by reverse water-filling over the importance of its channels, weighted by their variance. More bits go where they matter most.
At one million tokens on Qwen3-8B, a decode step is one point six seven times faster in GPU time than with the one hundred and thirty-six bit scans of Double Sparsity, Loki, and SparQ at r of thirty-two. Compared at equal GPU time with SparQ's sixty-eight bit read, Fathom reads eighteen percent fewer bytes, with lower attention error on six of seven model and context settings.
On RULER-style tasks, every per-token scan matches exact top-k decoding. On real coding-agent sessions, Fathom reaches the step agreement of the most accurate one hundred and thirty-six bit scan while reading ninety-two bits.
Two practical facts frame where this applies. The store Fathom reads is the four-bit copy of the keys that a quantized serving stack already holds, so no extra copy has to be kept. And the authors state plainly that the method is not faster when the index already sits in GPU memory. Its advantage belongs to the setting it was built for: long sessions, many of them, with the index offloaded to the host, where every bit not read is traffic saved.
Paper Quest · 7 chapters · about 39 min
Play this paper
Learn it by doing: make the calls the authors made, guess the result before you see it, and defend it in a viva graded on your own words. Chapter 1 is right here.
Chapter 1 🧩 · The problem
Million-token sessions, too many to fit on the GPU. Every decode step starts by reading every key.
You serve coding agents whose sessions run to a million tokens, with many sessions resident at once. Their key-value caches no longer fit on the GPU, so they live in host memory.
The road ahead
- 1 · The problem ~6 min When long sessions push the key cache into host memory, the scan that ranks every key becomes the bytes that limit decoding speed.
- 2 · What came before ~3 min
- 3 · The key idea ~8 min Fathom lets each query decide how many bits of each key channel to read, from keys stored as bit planes.
- 4 · Choose your own research ~3 min
- 5 · Build the method ~8 min Store keys as bit planes, weight channels by importance, water-fill each query's budget, read only those planes, then attend to the top keys.
- 6 · The experiment ~6 min You’ll guess: At one million tokens on Qwen3-8B, how much faster in GPU time was a decode step with Fathom than with the 136-bit scans?
- 7 · The viva ~5 min Three questions from the examiners, answered in your own words. Win it for the paper’s trophy.
Free, with Google or an email address. Your stars and progress are kept.