Skip to content

[Feature]: General cross-instance KV-cache transfer/staging (kv_transfer) #15735

Description

@nafis271

🚀 The feature, motivation and pitch

Disaggregated serving already moves a request's KV from a context server to a generation server on
demand. We'd like to expose that same transceiver path as a standalone, proactive operation: tell
instance B to pull a given prompt's KV from instance A and commit it to B's reuse cache, without
generating
.

Motivation. Today the only ways to get a prompt's KV onto a specific instance are to actually run
a request there (cold prefill) or to rely on on-demand disagg at request time. A proactive transfer
enables, all on the existing transceiver:

  • Cache migration / rebalancing — move a hot prompt's KV off an overloaded instance onto an idle
    one, instead of recomputing it there.
  • Replication — keep a copy of a prompt's KV on more than one instance.

Proposed surface (additive, off by default):

  • A kv_transfer_only flag on a generation_only disaggregated request: the engine pulls the KV over
    the transceiver, commits it for reuse, and finishes without a generation forward pass.
  • A fire-and-forget POST /v1/kv_transfer {model, messages|prompt, source} endpoint (+
    GET /v1/kv_transfer/stats) that orchestrates the existing context_onlygeneration_only ticket
    flow internally, so callers never handle disagg tickets.

It reuses the existing disagg transceiver — no new transport, and regular disagg/serving paths are
unchanged. A PR follows in #15736.

Alternatives

No response

Additional context

No response

Before submitting a new issue...

  • Make sure you already searched for relevant issues, and checked the documentation and examples for answers to frequently asked questions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Disaggregated serving<NV>Deploying with separated, distributed components (params, kv-cache, compute). Arch & perf.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions