What it does
A model server keeps the KV cache of each prompt in GPU memory, but only while there is space. Sometimes the server evicts a long conversation, the context of an agent or a shared system prompt. The next request with the same start must then compute the full prefill again. The same happens after a restart of the server. On a large model with a long context, this prefill takes tens of seconds.
The ADP KV cache gives the engine a second, much larger tier for this cache. The engine also writes each KV page that it computes to the ADP card. When a prompt comes back, the engine restores its prefix from the card and does not compute it again. The keys are the block hashes of the engine. So the cache stays after a restart of the model server, and all requests with the same prefix share it. A long prompt comes back in seconds instead of tens of seconds of prefill.
What you get:
- Restore, not recompute. The time to first token of a long prompt that comes back is an order of magnitude shorter. The GPUs use that time for new work.
- A cache that stays when GPU memory does not. Terabytes of KV cache on NVMe behind the card. The cache stays after restarts, upgrades of the model server and evictions from GPU memory.
- One cache for many pods. Replicas on several servers can share one cache on a set of cards (Cluster modes).
- No extra tier in host RAM. The integration uses only a shared-memory transfer window of a few GiB.
- Stock engines. vLLM loads the integration with one command-line option, and SGLang through its storage backend interface. There is no fork of the engine.
Architecture
The integration runs inside the engine, next to each tensor-parallel rank. It gives KV pages to the storage gateway, a separate process on the same server, through a ring in shared memory. The gateway schedules the reads and writes, cuts large objects into fragments that the card accepts, and spreads them over the databases of the card. The ADP card keeps them on NVMe SSDs.
The card can be in one of two places. Nothing above the gateway changes between them:
| Placement | Where the card is | How the gateway reaches it | Gateway backend |
|---|---|---|---|
| Local | a PCIe slot of the GPU server | the ADP software stack on the same host | local-xdp |
| Remote | a storage server | NVMe over Fabrics on an RDMA network (RoCE v2 or InfiniBand) | remote-xdp |
A remote card keeps storage off the GPU servers, and the cache can be on hardware sized for it. A local card needs no fabric. Several pods can also share one cache on several remote cards (Cluster modes). Architecture follows a page through the system.
Compatibility at a glance
| Supported | |
|---|---|
| Inference engines | vLLM 0.28, 0.29 and 0.31 with the OffloadingSpec backend. vLLM 0.28 and 0.29 with the vLLM KV connector, and 0.26 on request. SGLang 0.5.21 with the HiCache backend. |
| GPUs | the NVIDIA GPUs that the engine image supports (compute capability 7.5 and newer in the upstream images) |
| CUDA | the CUDA of the engine base image: 13.0 for the default vllm/vllm-openai tags, 12.9 for the -cu129 tags |
| Model architectures | full attention, sliding window, MLA, DeepSeek Sparse Attention, compressed sparse MLA, Mamba, Mamba-2, Gated DeltaNet and Kimi Delta Attention hybrids, MoE, multi-token prediction (MTP) |
| Parallelism | tensor parallelism. Pipeline parallelism 1 for hybrid models. |
| Host | Linux x86_64, Docker or Kubernetes |
Supported models lists the models that we verified on hardware and the engine version for each. Requirements has all requirements.
Integration options
There are four ways to put the ADP card under an inference engine. They share the gateway and the card. They differ in how the engine gives its KV cache to the gateway. Choosing an integration compares them.
Next steps
- Check the requirements for the GPU server, the card and the network.
- Set up the ADP card, local or remote.
- Install the gateway and vLLM with the OffloadingSpec backend, and check a restore.
- Tune with the configuration reference and the notes for your model.
- For many pods on many cards, read Cluster modes.
- When several tenants use one deployment, set up tenant isolation.
- Measure the effect on your hardware: Reproducing the 8×H200 benchmark.
Planning a deployment?
Talk to our engineers about your models, context lengths, concurrency and where the ADP card should sit.