From fbb0323f3f55684774c85a136c0f32b4f07ab80a Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 8 Jul 2026 16:18:02 -0500 Subject: [PATCH 1/3] chore: perf-changelog entry for gb200 dsv4 vllm agentic full sweep --- perf-changelog.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 0cf684364..ccf491de2 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4643,3 +4643,11 @@ - "Recipes sourced from NVIDIA/srt-slurm branch sa-submission-q2-2026 (gb300_nvfp4 MTP recipes)" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1799 +- config-keys: + - dsv4-fp4-gb200-dynamo-vllm-agentic-3p2d-tep8-tp8 + - dsv4-fp4-gb200-dynamo-vllm-agentic-2p1d-dep8-dep8 + description: + - "Full agentic-coding sweep of the DSv4 FP4 GB200 dynamo-vllm disagg topologies on the June 21 AgentX corpus" + - "3p2d TEP8 prefill / TP8 decode (40 inference GPUs): c4-c80" + - "2p1d DEP8 prefill / DEP8 decode (24 inference GPUs): c32-c256 including exploratory tail past the c160 normalized-throughput peak" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2122 From dda02feac84f9c199404a123663e5f0ac613f673 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Wed, 8 Jul 2026 16:30:27 -0500 Subject: [PATCH 2/3] fix: pass multinode agentic conc list as JSON in run-sweep sweep-multi-node-agentic rendered the conc array directly into string inputs ('[${{ matrix.config.conc }}]' and conc), which fails template expansion for multinode agentic entries where conc is a list. Mirror e2e-tests.yml: toJson() for conc-list and conc[0] for the first point. --- .github/workflows/run-sweep.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-sweep.yml b/.github/workflows/run-sweep.yml index fe77ba101..a7a3ef2e9 100644 --- a/.github/workflows/run-sweep.yml +++ b/.github/workflows/run-sweep.yml @@ -536,7 +536,7 @@ jobs: model-prefix: ${{ matrix.config.model-prefix }} framework: ${{ matrix.config.framework }} precision: ${{ matrix.config.precision }} - conc-list: '[${{ matrix.config.conc }}]' + conc-list: ${{ toJson(matrix.config.conc) }} spec-decoding: ${{ matrix.config.spec-decoding }} disagg: ${{ matrix.config.disagg }} prefill-hardware: ${{ matrix.config.prefill.hardware }} @@ -551,7 +551,7 @@ jobs: decode-ep: ${{ matrix.config.decode.ep }} decode-dp-attn: ${{ matrix.config.decode.dp-attn }} decode-additional-settings: ${{ toJson(matrix.config.decode.additional-settings) }} - conc: ${{ matrix.config.conc }} + conc: ${{ matrix.config.conc[0] }} kv-offloading: ${{ matrix.config.kv-offloading }} kv-offload-backend: ${{ matrix.config.kv-offload-backend }} duration: ${{ matrix.config.duration }} From 5fc7c84e38742e206b632a351db9d88e4a3e5e00 Mon Sep 17 00:00:00 2001 From: Cam Quilici Date: Thu, 9 Jul 2026 09:50:11 -0500 Subject: [PATCH 3/3] fix: add prefill allocator headroom to gb200 3p2d agentic recipe Both first-pass sweep attempts of the 3p2d TEP8/TP8 topology died to prefill CUDA OOM on serving-time transients (sparse-indexer logits alloc during c64, DeepGEMM JIT module load during c4) with <1 GiB free per GPU at gpu-memory-utilization 0.9. MLA KV is compact, so 0.85 trades unneeded KV space for allocator headroom. Decode stays at 0.9; all 2p1d DEP8/DEP8 chunks passed untouched. --- .../agentic/disagg-gb200-3p2d-tep8-tp8-agentic.yaml | 6 +++++- perf-changelog.yaml | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/benchmarks/multi_node/srt-slurm-recipes/vllm/deepseek-v4/agentic/disagg-gb200-3p2d-tep8-tp8-agentic.yaml b/benchmarks/multi_node/srt-slurm-recipes/vllm/deepseek-v4/agentic/disagg-gb200-3p2d-tep8-tp8-agentic.yaml index 9e2b66584..b1f22f1d2 100644 --- a/benchmarks/multi_node/srt-slurm-recipes/vllm/deepseek-v4/agentic/disagg-gb200-3p2d-tep8-tp8-agentic.yaml +++ b/benchmarks/multi_node/srt-slurm-recipes/vllm/deepseek-v4/agentic/disagg-gb200-3p2d-tep8-tp8-agentic.yaml @@ -110,7 +110,11 @@ backend: # FULL capture conflicts with NCCL symmetric-memory registration on the # TP prefill path; PIECEWISE preserves compilation and safe graph regions. compilation-config: '{"cudagraph_mode":"PIECEWISE"}' - gpu-memory-utilization: 0.9 + # 0.9 leaves <1 GiB free per GPU on the TEP8 prefill workers and both + # sweep attempts died to serving-time transients (sparse-indexer logits + # alloc at c64, DeepGEMM JIT module load at c4). MLA KV is compact, so + # trading KV space for allocator headroom costs prefill nothing. + gpu-memory-utilization: 0.85 no-disable-hybrid-kv-cache-manager: true tokenizer-mode: deepseek_v4 decode: diff --git a/perf-changelog.yaml b/perf-changelog.yaml index ccf491de2..3e98cc3a3 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -4650,4 +4650,5 @@ - "Full agentic-coding sweep of the DSv4 FP4 GB200 dynamo-vllm disagg topologies on the June 21 AgentX corpus" - "3p2d TEP8 prefill / TP8 decode (40 inference GPUs): c4-c80" - "2p1d DEP8 prefill / DEP8 decode (24 inference GPUs): c32-c256 including exploratory tail past the c160 normalized-throughput peak" + - "Lower 3p2d prefill gpu-memory-utilization 0.9 -> 0.85: both first-pass attempts OOMed on prefill serving-time transients (sparse-indexer logits at c64, DeepGEMM JIT at c4) with <1 GiB free per GPU" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2122