Skip to content

test: Phase 1 topologies and runners (sidecar, 2P+1D, two nodes, k8s, Slurm) - #141

Draft
luckyq wants to merge 1 commit into
doxu/phase1-4-tc05-tc06from
doxu/phase1-5-topologies
Draft

luckyq wants to merge 1 commit into
doxu/phase1-4-tc05-tc06from
doxu/phase1-5-topologies

Conversation

@luckyq

@luckyq luckyq commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Series map (Phase 1 harness, one PR per step; each is based on the previous one)

PR Step Test cases
#137 Harness core: stack, client, telemetry, reference engine, CI unit tests; phase1 job in vllm-e2e.yml on the two-GPU runner (TC-01; #138/#139 extend --cases) TC-01 integration generation correctness
#138 Local DRAM flow and hinted peer transfer, hybrid geometry flags TC-02, TC-03
#139 Guard protection, takeover, replacement TC-04
#140 Streaming client, performance arms, Guard recovery timing TC-05, TC-06
#141 Sidecar kvcr_service, 2P+1D, two nodes, k8s / Slurm / Docker runners; phase1-2p1d CI job (2P+1D on the two-GPU runner, prefill workers share GPU 0) all cases on those topologies
#142 docs/ci.md: what the two CI lanes verify, how to run them elsewhere, how to read evidence —
#143 Test plan, run history, bare-vLLM probes —
#180 --engine sglang: dynamo.sglang + HiCache KVCR storage backend (quick-start config), SGLang telemetry mapping, deterministic mode; no Guard/disagg TC-01..03, TC-05 on SGLang

Replaces #103. All seven are drafts until the per-PR GPU runs on the current main image are done.

Problem

  • Part 5 of the stacked Phase 1 series (on top of TC-05/06). So far every case runs the aggregated two-worker layout in one container; the deployments that matter for KVCR (sidecar kvcr_service containers, 2P+1D disaggregation, two nodes) have no runner.

What this adds

  • --external-services DIR: sidecar topology, kvcr_service runs in its own containers and shares sockets/logs through DIR.

  • --topology disagg: 2P+1D on three GPUs; workers 0/1 are prefill workers with a MultiConnector (KVCR OffloadingConnector + NixlConnector producer), worker 2 the decode consumer; requests pin the prefill worker. The KVCR tier list, state-agent settings and self_describing_kv_events are mirrored at the MultiConnector top level because Dynamo read them only there (fixed upstream by dynamo#16778).

  • --remote-worker INDEX=URL + --etcd: two-node runs through tests/e2e/phase1/node_agent.py (spawns the remote worker and its sidecar, relays logs); etcd discovery because Dynamo's file discovery does not cross nodes.

  • Runners: scripts/docker/ (build the quick-start image from committed source with recorded Dynamo / vLLM-adapter revisions; run the harness in that image on two selected GPUs), scripts/k8s/phase1-pod.py (pod manifests: single or two nodes, overlays, extra env), scripts/dlcluster/ (Slurm sbatch + image build) with the hybrid matrix pinned to the measured Qwen3.5-4B geometry.

  • Dockerfile.quick-start-vllm (rebased onto v0.2.0 pins): records the Dynamo / vLLM-adapter / KVCR revisions into /opt/kvcr-build/source-revisions.json so result.json carries image provenance; configurable runtime user for sidecar images.

  • phase1-2p1d job in .github/workflows/vllm-e2e.yml: the 2P+1D layout on the two-GPU runner (--gpus 0,0,1 --gpu-memory-utilization 0.35, kvcr-service sidecars as background processes of the step), TC-01..04 + TC-06, functional verdicts only.

Validation

  • Shared-GPU 2P+1D on dev-02 (v020c-2p1d-shared, 2×H100): TC-01..04 + TC-06 PASS, Guard promoted 1.0 s, first correct response 1.4 s, replacement serving 82 s.
  • ruff, pytest tests/ci: see CI.
  • GPU: 2P+1D single node and two nodes 6/6 with KVCR v0.1.1 + Retry a refused start_write once with metadata after promotion #107 (two-node TC-06 5/5 Guard hits, first correct response 1.5 s); findings and workarounds (replacement prefill needs --gpu-memory-utilization 0.35 because the decode worker keeps the dead prefill's KV mapped over NIXL) are in the test plan part of this series.

@copy-pr-bot

copy-pr-bot Bot commented Oct 27, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@luckyq
luckyq marked this pull request as draft October 27, 2026 19:33
@luckyq
luckyq force-pushed the doxu/phase1-5-topologies branch 3 times, most recently from ef6424e to b699987 Compare November 2, 2026 22:44
@luckyq
luckyq force-pushed the doxu/phase1-4-tc05-tc06 branch from 8122f88 to df9077b Compare November 2, 2026 23:15
@luckyq
luckyq force-pushed the doxu/phase1-5-topologies branch 3 times, most recently from e27b3b6 to 3a35342 Compare November 2, 2026 23:53
@luckyq
luckyq force-pushed the doxu/phase1-4-tc05-tc06 branch 2 times, most recently from 19d03a6 to c21f34f Compare November 3, 2026 18:18
@luckyq
luckyq force-pushed the doxu/phase1-5-topologies branch 2 times, most recently from 8a27d99 to 91aa5c0 Compare November 3, 2026 19:13
@luckyq
luckyq force-pushed the doxu/phase1-4-tc05-tc06 branch from c21f34f to 72fd8e9 Compare November 3, 2026 19:45
@luckyq
luckyq force-pushed the doxu/phase1-5-topologies branch from 91aa5c0 to 21cdac1 Compare November 3, 2026 19:45
@luckyq
luckyq force-pushed the doxu/phase1-4-tc05-tc06 branch from 72fd8e9 to 896cea0 Compare November 3, 2026 19:46
@luckyq
luckyq force-pushed the doxu/phase1-5-topologies branch from 21cdac1 to 81f9c6d Compare November 3, 2026 19:46
@luckyq
luckyq force-pushed the doxu/phase1-4-tc05-tc06 branch from 896cea0 to 3da11fb Compare November 3, 2026 20:22
@luckyq
luckyq force-pushed the doxu/phase1-5-topologies branch 2 times, most recently from 3ad327c to df1faa0 Compare November 3, 2026 21:24
Sidecar kvcr_service containers (--external-services), 2P+1D disaggregation
on three GPUs (--topology disagg: prefill workers with a KVCR + NIXL
MultiConnector, one decode consumer, prefill pinning), two-node runs through
a node agent with etcd discovery (--remote-worker, --etcd), and the runners:
scripts/docker (image build with recorded source revisions, containerised
harness run), scripts/k8s (pod manifests, one or two nodes, overlays) and
scripts/dlcluster (Slurm sbatch + image build). Dockerfile.quick-start records
the source revisions the image was built from into the evidence.

Part 5 of the stacked Phase 1 series.

Signed-off-by: doxu <doxu@nvidia.com>
@luckyq
luckyq force-pushed the doxu/phase1-4-tc05-tc06 branch from 3da11fb to d2a7ea7 Compare November 4, 2026 01:14
@luckyq
luckyq force-pushed the doxu/phase1-5-topologies branch from df1faa0 to 81af848 Compare November 4, 2026 01:14

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant