Skip to content

Commit 692c20a

Browse files
committed
findings(p2p): add Run N (Llama-8B EPP-e2e chat multi-turn P/D pulls)
Run N was completed 2026-07-18 but never committed here like the other runs. It is the scale-out of Run M: 4P+4D and 2P+4D under the EPP on a concurrent chat workload, 477K tokens pulled at 4P/C=48 and 1.65M at 2P/C=96, per-turn TTFT flat at 0.1-0.2s while the prompt grows to ~20K. Honest caveat recorded: arm-A parity at this model scale (cheap recompute), so the value here is prefill capacity, not latency. Drivers and both EPP arms under configs/run-n. Signed-off-by: nilig <nili.ifergan@gmail.com>
1 parent 6e3b62d commit 692c20a

6 files changed

Lines changed: 371 additions & 0 deletions

File tree

test/p2p-findings/RESULTS-2.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,63 @@ prefill-from-decode works when the request can name decode's ids
337337
(kubernetes-sigs/inference-perf#649) or analysis-dropping templates
338338
(gpt-oss harmony) regardless of the serving stack.
339339

340+
## Run N: EPP-e2e chat multi-turn, prefill pulls decode's history at scale (Llama-8B)
341+
342+
Run M proved the cross-role transfer on a single request; Run N runs it
343+
end-to-end under the EPP, on a multi-turn chat workload at concurrency,
344+
across a P/D pair.
345+
346+
Rig: `meta-llama/Llama-3.1-8B-Instruct`, 4 prefill + 4 decode (TP=1),
347+
then 2 prefill + 4 decode at saturation (`llama-pd.yaml`). Driver
348+
`chat_load.py`: concurrent conversations (48 at 4P, 96 at 2P), live
349+
history (each turn resends the accumulated chat), natural EOS (no
350+
`ignore_eos` - the same round-trip-stability requirement as Run M).
351+
Chat-completions rendered by the GPU engines (the CPU render image
352+
v0.23.0 lacks `/v1/chat/completions/render`;
353+
`llama-chat-render-svc.yaml`). Arms: A = precise prefix-cache placement,
354+
no pull (`epp-llama-a.yaml`); B = precise + `p2p-source-producer`,
355+
`minCachedTokenDelta: 1024` (`epp-llama-b.yaml`).
356+
357+
Mechanism (arm B): EPP-decided per-turn prefill<-decode pulls fired on
358+
every turn where the scheduled prefill worker lacked the history. **477K
359+
tokens pulled (4P, C=48)** and **1.65M tokens (2P, C=96)**; the decode
360+
session accepted the pull on all decode pods. Per-turn TTFT stayed flat
361+
as the conversation grew (arm B):
362+
363+
| turn | prompt (K tok) | TTFT p50 (s) | TTFT p95 (s) |
364+
|---|---|---|---|
365+
| 0 | 5.0 | 1.00 | 1.69 |
366+
| 1 | 7.1 | 0.10 | 0.12 |
367+
| 2 | 9.2 | 0.13 | 0.20 |
368+
| 3 | 11.3 | 0.15 | 0.17 |
369+
| 4 | 13.4 | 0.16 | 0.18 |
370+
| 5 | 15.5 | 0.18 | 0.21 |
371+
| 6 | 17.6 | 0.20 | 0.23 |
372+
| 7 | 19.7 | 0.21 | 0.23 |
373+
374+
Turn 0 pays the cold prefill (1.0s p50); every later turn's history
375+
arrives by pull and TTFT holds at 0.1-0.2s even as the prompt grows to
376+
~20K tokens.
377+
378+
BUT arm-A parity: on Llama-8B the recompute this replaces is cheap - a
379+
~2K-token answer re-prefills in ~60ms, about the pull's own cost - so arm
380+
A (recompute) and arm B (pull) tie on TTFT, and tails are dominated by
381+
decode first-token under batching, not prefill. Verdict at this model
382+
scale: the pull's value is prefill **capacity** (GPU-seconds saved), not
383+
user-visible latency. The latency win needs a regime where the recompute
384+
is expensive (longer history, slower/larger prefill, or prefill
385+
saturated) - which Run O (Qwen3-30B agentic) then demonstrates.
386+
387+
Three config bugs cost hours (recorded so they do not recur): a
388+
token-heavy system prompt (~3.3 tok/word) blew `max-model-len`; a
389+
chat-render 404 from the old CPU render image; and a stale `modelName` in
390+
the token-producer config renders 404 silently and starves the whole
391+
producer chain (check `modelName` when cloning EPP configs).
392+
393+
Configs: `configs/run-n` (`chat_load.py` driver, `epp-llama-a.yaml` /
394+
`epp-llama-b.yaml` arms, `llama-pd.yaml` rig,
395+
`llama-chat-render-svc.yaml`).
396+
340397
## Run O: agentic workload on P/D + P2P (Qwen3-30B-A3B-Thinking, EPP e2e)
341398

342399
The agentic-serving guide's benchmark model and workload shapes, served on
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
#!/usr/bin/env python3
2+
"""Heavy-decode chat multi-turn load with live message history.
3+
4+
Each conversation: unique ~6K-token system prompt, TURNS rounds; every round
5+
streams a long natural answer (temp 0, no ignore_eos) and appends it to the
6+
history, so turn N+1 carries the real generated text - the token-stable
7+
multi-turn that lets the EPP see decode-held KV. Reports per-turn TTFT
8+
(first SSE content chunk) and end-to-end times.
9+
10+
usage: chat_load.py HOST PORT CONCURRENCY TURNS TAG OUTFILE
11+
"""
12+
import http.client, json, sys, threading, time
13+
14+
HOST, PORT, C, TURNS, TAG, OUT = sys.argv[1], int(sys.argv[2]), int(sys.argv[3]), int(sys.argv[4]), sys.argv[5], sys.argv[6]
15+
MODEL = "meta-llama/Llama-3.1-8B-Instruct"
16+
QS = ["Analyze the scenario in 15 detailed numbered sections.",
17+
"Continue with 15 more sections, each a full paragraph.",
18+
"Now give counterarguments for each point, in detail.",
19+
"Propose alternatives, one paragraph each.",
20+
"Assess risks of each alternative in detail.",
21+
"Write an implementation plan with detailed steps.",
22+
"Review the plan critically, section by section.",
23+
"Summarize everything comprehensively section by section."]
24+
lock = threading.Lock()
25+
rows = []
26+
27+
def turn(conn_host, msgs):
28+
body = json.dumps({"model": MODEL, "messages": msgs, "max_tokens": 2500,
29+
"temperature": 0, "stream": True}).encode()
30+
c = http.client.HTTPConnection(conn_host, PORT, timeout=600)
31+
t0 = time.time(); ttft = None; text = []
32+
c.request("POST", "/v1/chat/completions", body=body,
33+
headers={"Content-Type": "application/json"})
34+
r = c.getresponse()
35+
if r.status != 200:
36+
c.close(); raise RuntimeError(f"HTTP {r.status}: {r.read()[:120]}")
37+
buf = b""
38+
while True:
39+
chunk = r.read1(65536)
40+
if not chunk: break
41+
buf += chunk
42+
while b"\n" in buf:
43+
line, buf = buf.split(b"\n", 1)
44+
line = line.strip()
45+
if not line.startswith(b"data:"): continue
46+
payload = line[5:].strip()
47+
if payload == b"[DONE]": continue
48+
try: d = json.loads(payload)
49+
except Exception: continue
50+
delta = d.get("choices", [{}])[0].get("delta", {}).get("content")
51+
if delta:
52+
if ttft is None: ttft = time.time() - t0
53+
text.append(delta)
54+
c.close()
55+
return "".join(text), ttft or (time.time() - t0), time.time() - t0
56+
57+
def conv(i):
58+
sysmsg = f"[{TAG}-c{i}] You are a meticulous analyst. " + " ".join(["ctx"] * 5000)
59+
msgs = [{"role": "system", "content": sysmsg}]
60+
for t in range(TURNS):
61+
msgs.append({"role": "user", "content": QS[t % len(QS)]})
62+
try:
63+
a, ttft, e2e = turn(HOST, msgs)
64+
except Exception as e:
65+
with lock: rows.append({"conv": i, "turn": t, "err": str(e)[:80]})
66+
return
67+
msgs.append({"role": "assistant", "content": a})
68+
with lock: rows.append({"conv": i, "turn": t, "ttft": round(ttft, 3), "e2e": round(e2e, 1), "chars": len(a)})
69+
70+
t0 = time.time()
71+
ths = [threading.Thread(target=conv, args=(i,)) for i in range(C)]
72+
for x in ths: x.start()
73+
for x in ths: x.join()
74+
dur = time.time() - t0
75+
76+
with open(OUT, "w") as f:
77+
for r in rows: f.write(json.dumps(r) + "\n")
78+
ok = [r for r in rows if "ttft" in r]; er = [r for r in rows if "err" in r]
79+
def pct(v, p):
80+
v = sorted(v); return v[min(len(v)-1, int(p*len(v)))] if v else 0
81+
print(f"{TAG}: turns ok={len(ok)} err={len(er)} dur={dur:.0f}s")
82+
for t in range(TURNS):
83+
tv = [r["ttft"] for r in ok if r["turn"] == t]
84+
if tv: print(f" turn{t}: n={len(tv)} ttft p50={pct(tv,.5):.2f} p95={pct(tv,.95):.2f}")
85+
allt = [r["ttft"] for r in ok]
86+
print(f" ALL: ttft p50={pct(allt,.5):.2f} p95={pct(allt,.95):.2f} p99={pct(allt,.99):.2f} gen_chars_avg={sum(r['chars'] for r in ok)//max(1,len(ok))}")
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
apiVersion: llm-d.ai/v1alpha1
2+
kind: EndpointPickerConfig
3+
# PD ARM A: the pd-disaggregation guide's shipped scheduling config, verbatim.
4+
# always-disagg, prefill profile prefix3/queue2/kv2, decode active2/prefix3.
5+
plugins:
6+
- type: disagg-headers-handler
7+
- type: always-disagg-pd-decider
8+
- type: disagg-profile-handler
9+
parameters:
10+
deciderPluginName: always-disagg-pd-decider
11+
- type: prefill-filter
12+
- type: decode-filter
13+
- type: prefix-cache-scorer
14+
- type: queue-scorer
15+
- type: kv-cache-utilization-scorer
16+
- type: active-request-scorer
17+
schedulingProfiles:
18+
- name: prefill
19+
plugins:
20+
- pluginRef: prefill-filter
21+
- pluginRef: prefix-cache-scorer
22+
weight: 3
23+
- pluginRef: queue-scorer
24+
weight: 2
25+
- pluginRef: kv-cache-utilization-scorer
26+
weight: 2
27+
- name: decode
28+
plugins:
29+
- pluginRef: decode-filter
30+
- pluginRef: active-request-scorer
31+
weight: 2
32+
- pluginRef: prefix-cache-scorer
33+
weight: 3
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
apiVersion: llm-d.ai/v1alpha1
2+
kind: EndpointPickerConfig
3+
# PD ARM B: ARM A + P2P only. Identical deciders, filters, scorers, weights.
4+
# Adds the machinery the pull needs: token-producer + precise index (feeds
5+
# ONLY the p2p-source-producer; the guide's prefix-cache-scorer keeps its
6+
# default approximate feed so placement is identical to arm A) and the
7+
# p2p-source-producer targeting the prefill profile.
8+
plugins:
9+
- type: disagg-headers-handler
10+
- type: always-disagg-pd-decider
11+
- type: disagg-profile-handler
12+
parameters:
13+
deciderPluginName: always-disagg-pd-decider
14+
- type: prefill-filter
15+
- type: decode-filter
16+
- type: token-producer
17+
parameters:
18+
modelName: meta-llama/Llama-3.1-8B-Instruct
19+
vllm:
20+
url: http://llama-chat-render:8000
21+
- type: endpoint-notification-source
22+
- type: precise-prefix-cache-producer
23+
parameters:
24+
tokenProcessorConfig:
25+
blockSize: 64
26+
kvEventsConfig:
27+
topicFilter: "kv@"
28+
discoverPods: true
29+
podDiscoveryConfig:
30+
socketPort: 5556
31+
- type: p2p-source-producer
32+
parameters:
33+
prefixMatchInfoProducerName: precise-prefix-cache-producer
34+
prefillProfileName: prefill
35+
minCachedTokenDelta: 1024
36+
- type: prefix-cache-scorer
37+
- type: queue-scorer
38+
- type: kv-cache-utilization-scorer
39+
- type: active-request-scorer
40+
dataLayer:
41+
sources:
42+
- pluginRef: endpoint-notification-source
43+
extractors:
44+
- pluginRef: precise-prefix-cache-producer
45+
schedulingProfiles:
46+
- name: prefill
47+
plugins:
48+
- pluginRef: prefill-filter
49+
- pluginRef: prefix-cache-scorer
50+
weight: 3
51+
- pluginRef: queue-scorer
52+
weight: 2
53+
- pluginRef: kv-cache-utilization-scorer
54+
weight: 2
55+
- name: decode
56+
plugins:
57+
- pluginRef: decode-filter
58+
- pluginRef: active-request-scorer
59+
weight: 2
60+
- pluginRef: prefix-cache-scorer
61+
weight: 3
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata: {name: llama-chat-render, namespace: nilig-p2p}
4+
spec:
5+
selector: {app: llama-pd, role: prefill}
6+
ports: [{port: 8000, targetPort: 8000}]
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
# DP-aware sidecar validation rig: 1 prefill (engine only) + 1 decode
2+
# (sidecar:dp-aware + engine). Llama-8B TP=1, MultiConnector(NIXL +
3+
# Offloading p2p tier), generic_p2p overlay. No EPP labels - driven by
4+
# direct curls with x-prefiller-host-port / x-kv-cache-source-host-port.
5+
apiVersion: apps/v1
6+
kind: Deployment
7+
metadata: {name: llama-pd-prefill, namespace: nilig-p2p, labels: {app: llama-pd, role: prefill}}
8+
spec:
9+
replicas: 1
10+
selector: {matchLabels: {app: llama-pd, role: prefill}}
11+
template:
12+
metadata: {labels: {app: llama-pd, role: prefill}}
13+
spec:
14+
serviceAccountName: pd-disaggregation-nvidia-gpu-vllm-sa
15+
containers:
16+
- name: modelserver
17+
image: quay.io/niliguy/vllm-openai:nightly-2afa3f7e950264bb179d030c23a1ed1f46558fd9
18+
imagePullPolicy: IfNotPresent
19+
command: ["sh","-c","rm -f /dev/shm/vllm_offload_*.mmap 2>/dev/null; exec vllm serve \"$@\"","sh"]
20+
args:
21+
- meta-llama/Llama-3.1-8B-Instruct
22+
- --port=8000
23+
- --tensor-parallel-size=1
24+
- --block-size=64
25+
- --max-model-len=20000
26+
- --gpu-memory-utilization=0.6
27+
- --kv-events-config
28+
- '{"enable_kv_cache_events":true,"publisher":"zmq","endpoint":"tcp://*:5556","topic":"kv@$(POD_IP):8000@meta-llama/Llama-3.1-8B-Instruct"}'
29+
- --kv-transfer-config
30+
- '{"kv_connector":"MultiConnector","kv_role":"kv_both","kv_connector_extra_config":{"connectors":[{"kv_connector":"NixlConnector","kv_role":"kv_both"},{"kv_connector":"OffloadingConnector","kv_role":"kv_both","kv_connector_extra_config":{"spec_name":"TieringOffloadingSpec","cpu_bytes_to_use":17179869184,"offload_prompt_only":false,"secondary_tiers":[{"type":"p2p","host":"$(POD_IP)","port":7777}]}}]}}'
31+
env:
32+
- {name: HF_TOKEN, valueFrom: {secretKeyRef: {name: llm-d-hf-token, key: HF_TOKEN}}}
33+
- {name: POD_IP, valueFrom: {fieldRef: {apiVersion: v1, fieldPath: status.podIP}}}
34+
- {name: PYTHONHASHSEED, value: "0"}
35+
- {name: VLLM_NIXL_SIDE_CHANNEL_HOST, valueFrom: {fieldRef: {apiVersion: v1, fieldPath: status.podIP}}}
36+
- {name: VLLM_NIXL_SIDE_CHANNEL_PORT, value: "5600"}
37+
ports: [{containerPort: 8000}, {containerPort: 5600}, {containerPort: 7777}, {containerPort: 5556}]
38+
resources: {limits: {cpu: "8", memory: 48Gi, nvidia.com/gpu: "1", rdma/ib: "1"}, requests: {cpu: "8", memory: 48Gi, nvidia.com/gpu: "1", rdma/ib: "1"}}
39+
startupProbe: {httpGet: {path: /v1/models, port: 8000}, initialDelaySeconds: 10, periodSeconds: 15, failureThreshold: 60}
40+
readinessProbe: {httpGet: {path: /v1/models, port: 8000}, periodSeconds: 5, failureThreshold: 3}
41+
volumeMounts:
42+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/envs.py, name: gp2p, subPath: envs.py}
43+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/spec.py, name: gp2p, subPath: spec.py}
44+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/manager.py, name: gp2p, subPath: tiering_manager.py}
45+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/manager.py, name: gp2p, subPath: manager.py}
46+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/data/base.py, name: gp2p, subPath: data_base.py}
47+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/data/nixl.py, name: gp2p, subPath: data_nixl.py}
48+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/session/client.py, name: gp2p, subPath: session_client.py}
49+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/session/protocol.py, name: gp2p, subPath: session_protocol.py}
50+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/session/server.py, name: gp2p, subPath: session_server.py}
51+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/session/session.py, name: gp2p, subPath: session_session.py}
52+
- {mountPath: /dev/shm, name: shm}
53+
- {mountPath: /.cache, name: cache}
54+
- {mountPath: /.config, name: cfg}
55+
- {mountPath: /.triton, name: triton}
56+
volumes:
57+
- {name: shm, emptyDir: {medium: Memory, sizeLimit: 24Gi}}
58+
- {name: gp2p, configMap: {name: generic-p2p-src}}
59+
- {name: cache, emptyDir: {}}
60+
- {name: cfg, emptyDir: {}}
61+
- {name: triton, emptyDir: {}}
62+
---
63+
apiVersion: apps/v1
64+
kind: Deployment
65+
metadata: {name: llama-pd-decode, namespace: nilig-p2p, labels: {app: llama-pd, role: decode}}
66+
spec:
67+
replicas: 1
68+
selector: {matchLabels: {app: llama-pd, role: decode}}
69+
template:
70+
metadata: {labels: {app: llama-pd, role: decode}}
71+
spec:
72+
serviceAccountName: pd-disaggregation-nvidia-gpu-vllm-sa
73+
initContainers:
74+
- name: routing-proxy
75+
image: quay.io/niliguy/llm-d-router-disagg-sidecar:dp-aware
76+
imagePullPolicy: Always
77+
restartPolicy: Always
78+
args: ["--port=8000","--vllm-port=8200","--kv-connector=nixlv2","--enable-p2p-pull","--zap-log-level=2","--secure-proxy=false"]
79+
env:
80+
- {name: POD_IP, valueFrom: {fieldRef: {apiVersion: v1, fieldPath: status.podIP}}}
81+
ports: [{containerPort: 8000}]
82+
containers:
83+
- name: modelserver
84+
image: quay.io/niliguy/vllm-openai:nightly-2afa3f7e950264bb179d030c23a1ed1f46558fd9
85+
imagePullPolicy: IfNotPresent
86+
command: ["sh","-c","rm -f /dev/shm/vllm_offload_*.mmap 2>/dev/null; exec vllm serve \"$@\"","sh"]
87+
args:
88+
- meta-llama/Llama-3.1-8B-Instruct
89+
- --port=8200
90+
- --tensor-parallel-size=1
91+
- --block-size=64
92+
- --max-model-len=20000
93+
- --gpu-memory-utilization=0.6
94+
- --kv-events-config
95+
- '{"enable_kv_cache_events":true,"publisher":"zmq","endpoint":"tcp://*:5556","topic":"kv@$(POD_IP):8000@meta-llama/Llama-3.1-8B-Instruct"}'
96+
- --kv-transfer-config
97+
- '{"kv_connector":"MultiConnector","kv_role":"kv_both","kv_connector_extra_config":{"connectors":[{"kv_connector":"NixlConnector","kv_role":"kv_both"},{"kv_connector":"OffloadingConnector","kv_role":"kv_both","kv_connector_extra_config":{"spec_name":"TieringOffloadingSpec","cpu_bytes_to_use":17179869184,"offload_prompt_only":false,"secondary_tiers":[{"type":"p2p","host":"$(POD_IP)","port":7777}]}}]}}'
98+
env:
99+
- {name: HF_TOKEN, valueFrom: {secretKeyRef: {name: llm-d-hf-token, key: HF_TOKEN}}}
100+
- {name: POD_IP, valueFrom: {fieldRef: {apiVersion: v1, fieldPath: status.podIP}}}
101+
- {name: PYTHONHASHSEED, value: "0"}
102+
- {name: VLLM_NIXL_SIDE_CHANNEL_HOST, valueFrom: {fieldRef: {apiVersion: v1, fieldPath: status.podIP}}}
103+
- {name: VLLM_NIXL_SIDE_CHANNEL_PORT, value: "5600"}
104+
ports: [{containerPort: 8200}, {containerPort: 5600}, {containerPort: 7777}, {containerPort: 5556}]
105+
resources: {limits: {cpu: "8", memory: 48Gi, nvidia.com/gpu: "1", rdma/ib: "1"}, requests: {cpu: "8", memory: 48Gi, nvidia.com/gpu: "1", rdma/ib: "1"}}
106+
startupProbe: {httpGet: {path: /v1/models, port: 8200}, initialDelaySeconds: 10, periodSeconds: 15, failureThreshold: 60}
107+
readinessProbe: {httpGet: {path: /v1/models, port: 8200}, periodSeconds: 5, failureThreshold: 3}
108+
volumeMounts:
109+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/envs.py, name: gp2p, subPath: envs.py}
110+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/spec.py, name: gp2p, subPath: spec.py}
111+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/manager.py, name: gp2p, subPath: tiering_manager.py}
112+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/manager.py, name: gp2p, subPath: manager.py}
113+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/data/base.py, name: gp2p, subPath: data_base.py}
114+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/data/nixl.py, name: gp2p, subPath: data_nixl.py}
115+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/session/client.py, name: gp2p, subPath: session_client.py}
116+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/session/protocol.py, name: gp2p, subPath: session_protocol.py}
117+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/session/server.py, name: gp2p, subPath: session_server.py}
118+
- {mountPath: /usr/local/lib/python3.12/dist-packages/vllm/v1/kv_offload/tiering/p2p/session/session.py, name: gp2p, subPath: session_session.py}
119+
- {mountPath: /dev/shm, name: shm}
120+
- {mountPath: /.cache, name: cache}
121+
- {mountPath: /.config, name: cfg}
122+
- {mountPath: /.triton, name: triton}
123+
volumes:
124+
- {name: shm, emptyDir: {medium: Memory, sizeLimit: 24Gi}}
125+
- {name: gp2p, configMap: {name: generic-p2p-src}}
126+
- {name: cache, emptyDir: {}}
127+
- {name: cfg, emptyDir: {}}
128+
- {name: triton, emptyDir: {}}

0 commit comments

Comments
 (0)