[Feature]: Add explicit cache IDs for reusable multimodal and inference state
The feature, motivation and pitch
There are already several caching mechanisms in vLLM, including multimodal processing/encoder caching and prefix caching.
It would be useful to expose an explicit, application-level cache_id (or similar handle) for reusable cached state.
The idea is simple: an application sends a large context or image once, vLLM performs the expensive processing and returns a cache_id. Subsequent requests could reference that ID instead of sending and processing the same data again.
For example:
large document / image ↓ process once ↓ cache_id ↓ question 1 question 2 question 3 ...
The handle would be implementation-independent: it could refer to multimodal/vision state, prefix/KV state, or other expensive intermediate state.
This would be particularly useful for workloads where the same document or image is queried many times, such as RAG, document analysis, multimodal agents, and batch processing.
The main goal is to let applications explicitly retain and reuse expensive computation, rather than relying only on automatic cache matching.
Alternatives
The existing automatic prefix caching and multimodal UUID mechanisms are useful, but they still require the application to work with the specific caching mechanism.
An explicit cache_id would provide a simple, unified application-level handle while allowing vLLM to decide internally what representation is stored and how it is managed.
Additional context
No response
Before submitting a new issue...
- Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.
Source: vllm-project/vllm