Most capacity claims for an AI server name a number of users. Some add a context length. Almost none name the precision of the key-value cache, and that omission alone can move the answer by nearly a factor of two.
What the key-value cache is, and why it runs out first
A language model reads back everything already said in a conversation before it writes the next word. Rather than recompute that work each time, the server stores a key and a value for every token it has seen. That store is the key-value cache.
The weights are a fixed cost. You pay for them once, whether one person or fifty are connected. The cache is different: every open conversation has its own, and it grows with every token in it. On a single card the weights are the entry fee and the cache is what decides how many people fit.
What fp8 does to it
The cache does not have to be stored at the precision the model was trained in. An 8-bit floating point format holds each number in one byte instead of two. The vLLM project, whose documentation was read on 2026-09-23, describes the effect plainly:
Quantizing the KV (Key-Value) cache to FP8 format can significantly reduce its memory footprint.
vLLM, Quantized KV Cache, read 2026-09-23
It is one server setting. No new hardware, no different model, no change to the weights.
The arithmetic on a real card
Take a 96 GB accelerator. NVIDIA's own page for the RTX PRO 6000, read on 2026-09-23, gives 96 GB of GDDR7 with error-correcting code. Reserve a tenth of it for the working space every inference engine needs, and 86.4 GB is left.
Now take a real model. Qwen3.8-27B publishes 64 layers, of which 16 use full attention, with 4 key-value heads and a head dimension of 256, read on 2026-09-23. Its published checkpoint occupies about 21.9 GB. So 64.5 GB is free for conversations.
| fp8 cache | bfloat16 cache | |
|---|---|---|
| Attention cache per conversation | 0.268 GB | 0.537 GB |
| Fixed recurrent state per conversation | 0.079 GB | 0.079 GB |
| Total per conversation | 0.347 GB | 0.616 GB |
| Conversations that fit in 64.5 GB | 185 | 104 |
One setting, 1.78 times the seats. Same card, same weights, same model.
The second effect, which is about speed
Memory is only the first constraint. To write one token for everybody at once, the server has to read the active weights plus every open conversation's cache. At 35 concurrent conversations the fp8 step reads about 29.8 GB. The same 35 at bfloat16 read about 39.2 GB, which is 32 per cent more traffic for the same answer.
So the cache precision moves both constraints in the same direction. This is why two honest vendors can quote user counts that differ by half, and neither is lying. They set a different cache dtype.
What fp8 costs, because it is not free
Halving the precision of stored numbers is an approximation, and the engine documentation says so in its own configuration options. Three things are worth knowing before anyone treats fp8 as a default.
- Out of the box, nothing is calibrated. vLLM's documentation states that with no calibration all quantization scales are set to 1.0. The recommended path estimates them from a calibration dataset instead.
- Not every layer tolerates it equally. The same documentation notes that some attention layer types are more sensitive to key-value cache quantization, and provides a flag to leave named layers at the model's own precision.
- There is more than one 8-bit format and more than one strategy. vLLM lists fp8_e4m3 and fp8_e5m2, and quantization per tensor or per attention head. They are not interchangeable, and the per-head strategy needs the calibration path.
The honest position is that fp8 is a very good trade for most work, taken deliberately, with the quality checked on your own documents. It is not a free doubling of capacity.
What to ask a vendor
A capacity claim is checkable when it carries four terms: how many concurrent users, at what context length, at what tokens per second each, and with what cache precision. Ask a fifth question of anyone quoting fp8: was the cache calibrated, or are the scales left at the default.
With Bastion
What Bastion changes
Bastion is a private AI system delivered as one sealed appliance that runs inside your building. One monthly fee covers the hardware, the model, the hardened operating system and support, and nothing your team types leaves the building.
Bastion writes the cache precision into every capacity figure it publishes, because a user count without it cannot be checked by the buyer.
The quote for the Reasoning node is 35 concurrent users, at 8,000 tokens of context, at 30 tokens per second each, with an fp8 key-value cache. All four terms travel together, in the offer and on this page.
That figure is calculated, not measured. The first box is not built. When it is measured, the measurement replaces the calculation and the page says which one it shows.
Questions this article answers
- What is an fp8 KV cache?
- It stores each number in the model's key-value cache in one byte instead of two. Calculated from a published configuration on a 96 GB card, that raises the number of concurrent 8,000-token conversations from 104 to 185, with the same weights and the same model.
- Does fp8 KV cache reduce quality?
- It is an approximation, so it can. vLLM's documentation, read 2026-09-23, states that with no calibration all quantization scales are set to 1.0, and recommends estimating them from a calibration dataset. It also notes that some attention layer types are more sensitive and can be left at full precision.
- How much memory does a KV cache need per user?
- It follows the model's configuration. Qwen3.8-27B has 16 full-attention layers, 4 key-value heads and a head dimension of 256, read 2026-09-23, which gives 0.268 GB of attention cache per 8,000-token conversation at fp8 and 0.537 GB at bfloat16, plus a fixed 0.079 GB of recurrent state.
On the record
- 1
- 2
- 3
- 4
Read next
- Dense or mixture of experts: what the architecture costs the buyerTwo model configurations, read on the same day, put real numbers on the choice. The MoE holds a quarter of the key-value cache per conversation. It also routes every token to 8 of 256 experts, and a batch reads the union of them, which is where the throughput promise starts to fail.Read the article
- What hardware runs a local LLM, and what the parts list leaves outThe memory arithmetic, calculated from a published model configuration and a published card specification. Why a 32-billion-parameter model does not fit on a 32 GB card, what a conversation costs in memory, and the five items no parts list contains.Read the article