You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(sidecar): rename P2P kv_transfer_params sub-dict keys to match vLLM (llm-d#2140)
* fix(sidecar): rename P2P kv_transfer_params sub-dict keys to match vLLM
The OffloadingConnector P2P branch renamed the request-level sub-dict keys
for clarity (liranschour/vllm@530fa0d7 + @5bcf5b31): "prefill" ->
"remote_prefiller", "decode" -> "remote_decoder", "p2p" ->
"remote_kv_source", each named for the remote party it describes. Inner
fields (kv_request_id, remote_host, remote_port) and the secondary-tier
type "p2p" are unchanged. A sidecar emitting the old keys against a
renamed engine is silently inert - the engine ignores unknown sub-dicts
and every request recomputes - so the sidecar and engine must move
together.
Signed-off-by: nilig <nili.ifergan@gmail.com>
* docs: wrap the renamed disaggregation paragraphs at 80 columns
Review feedback on llm-d#2140: the two protocol paragraphs were single long
lines; wrapped for reviewable diffs. No content change.
Signed-off-by: nilig <nili.ifergan@gmail.com>
* fix(sidecar): sweep stale p2p key references from comments and specs
The kv_transfer_params nesting key is remote_kv_source; comments and test
descriptions that still call it the p2p key or p2p params read as if the
secondary-tier type (p2p, unchanged) were the request-field key.
Signed-off-by: nilig <nili.ifergan@gmail.com>
* refactor(sidecar): name request-field constants after their wire keys
The requestFieldP2P* constants held remote_* wire keys, so the names no
longer described the values. Naming them for their values matches the
sibling request-field constants and leaves P2P to name only the
OffloadingConnector tier and its protocol functions. Also sweeps test
comments and one spec title that still named the sub-dicts by the old
decode/prefill/p2p keys.
Signed-off-by: nilig <nili.ifergan@gmail.com>
---------
Signed-off-by: nilig <nili.ifergan@gmail.com>
Copy file name to clipboardExpand all lines: docs/disaggregation.md
+24-3Lines changed: 24 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -539,9 +539,30 @@ Specifies which KV transfer protocol the sidecar uses to coordinate prefill/deco
539
539
| `mooncake` | `MooncakeConnector` | [Mooncake](https://github.com/kvcache-ai/Mooncake) KV transfer using RDMA |
540
540
| `offloading` | `OffloadingConnector` | KV transfer over the vLLM CPU offloading tier. The decoder pulls KV from the prefiller via the `p2p` secondary tier. |
541
541
542
-
With `offloading`, the sidecar dispatches prefill and decode concurrently. It injects role-keyed `kv_transfer_params`: the prefiller receives `{"decode": {"kv_request_id": <id>}}` (no peer address), and the decoder receives `{"prefill": {"kv_request_id": <id>, "remote_host": <prefiller host>, "remote_port": <p2p-connector-port>}}` so it can pull KV from the prefiller. The prefiller host comes from the `x-prefiller-host-port` header; the port is `--p2p-connector-port`.
543
-
544
-
When the request also carries the `x-kv-cache-source-host-port` header (set by the EPP `p2p-source-producer` to a peer holding more cached prefix than the pod computing the prefix), the sidecar injects an additional `p2p` key so vLLM pulls that cached prefix over the P2P tier instead of recomputing it. Under disaggregation the prefiller leg carries `{"decode": {...}, "p2p": {"kv_request_id": <own id>, "remote_host": <source host>, "remote_port": <p2p-connector-port>}}` (the only supported multi-key combination); without a prefiller the decoder-only request carries `{"p2p": {...}}` alone. A malformed or disallowed source header is ignored and the request proceeds unchanged, as is any source header on a connector that cannot pull over the P2P tier: only `offloading`, or NIXLv2 with `--enable-p2p-pull`, honors it. For the pulled blocks to be servable, the source pod must offload its generated (decode-phase) KV: set `offload_prompt_only: false` in its `kv_connector_extra_config` (the default `true` offloads only prefill blocks).
542
+
With `offloading`, the sidecar dispatches prefill and decode concurrently. It
543
+
injects role-keyed `kv_transfer_params`, each key named for the remote party it
544
+
describes: the prefiller receives `{"remote_decoder": {"kv_request_id": <id>}}`
545
+
(no peer address), and the decoder receives `{"remote_prefiller":
The routing sidecar honors the `x-kv-cache-source-host-port` header, injecting `kv_transfer_params.p2p` so vLLM pulls cached prefix KV from the named peer over the OffloadingConnector P2P tier instead of recomputing it.
7
+
The routing sidecar honors the `x-kv-cache-source-host-port` header, injecting `kv_transfer_params.remote_kv_source` so vLLM pulls cached prefix KV from the named peer over the OffloadingConnector P2P tier instead of recomputing it.
0 commit comments