Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
5f301c0
dsv4 gb300 agentic: Dynamo session-routing upgrade (dev20260718 + X-D…
csahithi Jul 23, 2026
eb527b6
perf-changelog: set dsv4 gb300 session-routing pr-link to #2319
csahithi Jul 23, 2026
41407f3
Merge remote-tracking branch 'origin/main' into nv-dsv4-gb300-session…
csahithi Jul 23, 2026
269a70b
aiperf: bump to agentx-v1.0 branch tip (session-routing re-landed via…
csahithi Jul 27, 2026
40bcd01
Merge remote-tracking branch 'origin/main' into nv-dsv4-gb300-session…
csahithi Jul 27, 2026
56c1f46
merge: sync PR #2319 with main
Ankur-singh Jul 27, 2026
f12dd57
Merge origin/main and resolve perf changelog
Ankur-singh Jul 30, 2026
f798a75
Merge remote-tracking branch 'origin/main' into nv-dsv4-gb300-session…
csahithi Aug 4, 2026
5c87e91
Merge remote-tracking branch 'origin/main' into nv-dsv4-gb300-session…
weireweire Aug 5, 2026
19362ee
perf(agentx): restore pre-watchdog DSV4 concurrency at 300s cap
weireweire Aug 5, 2026
7534520
Remove explicit AgentX idle gap cap overrides
weireweire Aug 5, 2026
e80607c
fix(agentx): collect DSV4 SGLang worker metrics
weireweire Aug 7, 2026
201b22d
perf(agentx): move DSV4 12P4D point to concurrency 2048
weireweire Aug 7, 2026
b30c5f8
Merge branch 'main' of https://github.com/SemiAnalysisAI/InferenceX i…
weireweire Aug 7, 2026
4e6e18f
Merge branch 'main' of https://github.com/SemiAnalysisAI/InferenceX i…
weireweire Aug 8, 2026
3471a80
Use concurrency 1536 for DSV4 AgentX throughput point
weireweire Aug 8, 2026
0f53217
fix perf-changelog to be append-only
xinli-sw Aug 8, 2026
12605b8
fix perf-changelog
xinli-sw Aug 8, 2026
b33ee5f
Merge branch 'main' into nv-dsv4-gb300-session-routing
xinli-sw Aug 8, 2026
54ed9c1
Merge origin/main into nv-dsv4-gb300-session-routing
csahithi Aug 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ model:

dynamo:
install: true
wheel: "1.3.0.dev1"
wheel: "1.3.0.dev20260718"

slurm:
time_limit: "8:00:00"
Expand Down Expand Up @@ -44,19 +44,18 @@ infra:
frontend:
type: dynamo
nginx_session_affinity: true
nginx_session_affinity_header: X-Correlation-ID
nginx_session_affinity_header: X-Dynamo-Session-ID
enable_multiple_frontends: true
num_additional_frontends: 4
env:
DYN_ROUTER_TEMPERATURE: "10000000"
# The sglang image is PEP 668 externally-managed; the runtime dynamo
# install (dynamo_wheels.py / source build) runs pip and fails with
# "externally-managed-environment" without this. Lets pip install into
# the system env. Applies to both dynamo.hash (source) and dynamo.wheel.
PIP_BREAK_SYSTEM_PACKAGES: "1"
args:
router-mode: "kv"
router-reset-states: true
router-session-affinity-ttl-secs: "3600"
active-decode-blocks-threshold: "None"
active-prefill-tokens-threshold: "None"
active-prefill-tokens-threshold-frac: "None"
Expand All @@ -66,6 +65,9 @@ backend:

aggregated_environment:
SGLANG_DEFAULT_THINKING: '1'
# TP4/bs128 can spend over an hour capturing the DSV4 EAGLE draft-extend
# graph. Keep the target/decode graphs and use the upstream eager fallback.
SGLANG_DISABLE_DRAFT_EXTEND_CUDA_GRAPH: "1"
SGLANG_DSV4_REASONING_EFFORT: high
SGLANG_SIMULATE_ACC_LEN: '2.49'
SGLANG_SIMULATE_ACC_METHOD: match-expected
Expand Down Expand Up @@ -140,7 +142,8 @@ benchmark:
# in process_agentic_result.py instead. TP must match sglang_config tp-size.
IS_MULTINODE: "false"
TP: "4"
# Bind each conversation through the supported Dynamo session header.
# Stamp X-Dynamo-Session-ID on every turn so both nginx and Dynamo's
# router keep the session on the worker that owns its KV prefix.
AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: "true"
AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: "0"
AIPERF_REQUIRED_SERVER_METRIC_PREFIX: "sglang:"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: "disagg-gb300-12p4d-dep8-dep16-c1024-mtp-kvoffload"
name: "disagg-gb300-12p4d-dep8-dep16-c1536-mtp-kvoffload"

# Agentic-coding SGLang disaggregated Pareto recipe for DeepSeek-V4-Pro on GB300
# (12P x DEP8 / 4D x DEP16, MTP + hierarchical-cache KV offload), tuned for concurrency 1024.
# (12P x DEP8 / 4D x DEP16, MTP + hierarchical-cache KV offload), tuned for concurrency 1536.
#
# Uses the flat single-variant srtctl schema the agentic CI flow expects;
# resources + backend (prefill/decode env + sglang_config) are normalized
Expand All @@ -15,7 +15,7 @@ model:

dynamo:
install: true
wheel: "1.3.0.dev1"
wheel: "1.3.0.dev20260718"

slurm:
time_limit: "8:00:00"
Expand All @@ -41,18 +41,17 @@ infra:
frontend:
type: dynamo
nginx_session_affinity: true
nginx_session_affinity_header: X-Correlation-ID
nginx_session_affinity_header: X-Dynamo-Session-ID
enable_multiple_frontends: true
num_additional_frontends: 4
env:
DYN_ROUTER_TEMPERATURE: "10000000"
# AgentX warmup can legitimately keep the single wide decode worker busy
# for longer than Dynamo's 10-second TCP request-plane default.
DYN_TCP_REQUEST_TIMEOUT: "60"
PIP_BREAK_SYSTEM_PACKAGES: "1"
args:
router-mode: "kv"
router-reset-states: true
router-session-affinity-ttl-secs: "3600"
active-decode-blocks-threshold: "None"
active-prefill-tokens-threshold: "None"
active-prefill-tokens-threshold-frac: "None"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: "disagg-gb300-2p1d-dep8-tp4-c8-mtp-kvoffload"
name: "disagg-gb300-2p1d-dep8-tp4-c80-mtp-kvoffload"

# Agentic-coding SGLang disaggregated Pareto recipe for DeepSeek-V4-Pro on GB300
# (2P x DEP8 / 1D x TP4, MTP + hierarchical-cache KV offload), tuned for concurrency 8.
# (2P x DEP8 / 1D x TP4, MTP + hierarchical-cache KV offload), tuned for concurrency 80.
#
# Uses the flat single-variant srtctl schema the agentic CI flow expects;
# resources + backend (prefill/decode env + sglang_config) are normalized
Expand All @@ -15,7 +15,7 @@ model:

dynamo:
install: true
wheel: "1.3.0.dev1"
wheel: "1.3.0.dev20260718"

slurm:
time_limit: "8:00:00"
Expand All @@ -41,15 +41,14 @@ infra:
frontend:
type: dynamo
nginx_session_affinity: true
nginx_session_affinity_header: X-Correlation-ID
nginx_session_affinity_header: X-Dynamo-Session-ID
enable_multiple_frontends: true
num_additional_frontends: 4
env:
DYN_ROUTER_TEMPERATURE: "10000000"
PIP_BREAK_SYSTEM_PACKAGES: "1"
args:
router-mode: "kv"
router-reset-states: true
router-session-affinity-ttl-secs: "3600"
active-decode-blocks-threshold: "None"
active-prefill-tokens-threshold: "None"
active-prefill-tokens-threshold-frac: "None"
Expand Down Expand Up @@ -92,6 +91,9 @@ backend:

decode_environment:
SGLANG_DISAGGREGATION_WAITING_TIMEOUT: "900"
# Match the TP4 aggregate worker: avoid the pathological DSV4 EAGLE
# draft-extend graph capture while retaining the target/decode graphs.
SGLANG_DISABLE_DRAFT_EXTEND_CUDA_GRAPH: "1"
SGLANG_SIMULATE_ACC_LEN: '2.49'
SGLANG_SIMULATE_ACC_METHOD: match-expected
SGLANG_SIMULATE_ACC_TOKEN_MODE: "real-draft-token"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ model:

dynamo:
install: true
wheel: "1.3.0.dev1"
wheel: "1.3.0.dev20260718"

slurm:
time_limit: "8:00:00"
Expand All @@ -41,15 +41,14 @@ infra:
frontend:
type: dynamo
nginx_session_affinity: true
nginx_session_affinity_header: X-Correlation-ID
nginx_session_affinity_header: X-Dynamo-Session-ID
enable_multiple_frontends: true
num_additional_frontends: 4
env:
DYN_ROUTER_TEMPERATURE: "10000000"
PIP_BREAK_SYSTEM_PACKAGES: "1"
args:
router-mode: "kv"
router-reset-states: true
router-session-affinity-ttl-secs: "3600"
active-decode-blocks-threshold: "None"
active-prefill-tokens-threshold: "None"
active-prefill-tokens-threshold-frac: "None"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: "disagg-gb300-4p4d-dep8-dep16-c256-mtp-kvoffload"
name: "disagg-gb300-4p4d-dep8-dep16-c512-mtp-kvoffload"

# Agentic-coding SGLang disaggregated recipe for DeepSeek-V4-Pro on GB300
# (4P x DEP8 / 4D x DEP16, MTP + hierarchical-cache KV offload), tuned for concurrency 256.
# (4P x DEP8 / 4D x DEP16, MTP + hierarchical-cache KV offload), tuned for concurrency 512.
#
# DEP8-prefill variant aligned with the measured Pareto point: prefill uses
# tp/dp/ep 8, four nodes, and SGLANG_DSV4_MHC_PREWARM=1.
Expand All @@ -15,7 +15,7 @@ model:

dynamo:
install: true
wheel: "1.3.0.dev1"
wheel: "1.3.0.dev20260718"

slurm:
time_limit: "8:00:00"
Expand All @@ -40,15 +40,14 @@ infra:
frontend:
type: dynamo
nginx_session_affinity: true
nginx_session_affinity_header: X-Correlation-ID
nginx_session_affinity_header: X-Dynamo-Session-ID
enable_multiple_frontends: true
num_additional_frontends: 4
env:
DYN_ROUTER_TEMPERATURE: "10000000"
PIP_BREAK_SYSTEM_PACKAGES: "1"
args:
router-mode: "kv"
router-reset-states: true
router-session-affinity-ttl-secs: "3600"
active-decode-blocks-threshold: "None"
active-prefill-tokens-threshold: "None"
active-prefill-tokens-threshold-frac: "None"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: "disagg-gb300-6p4d-dep8-dep16-c512-mtp-kvoffload"
name: "disagg-gb300-6p4d-dep8-dep16-c768-mtp-kvoffload"

# Agentic-coding SGLang disaggregated Pareto recipe for DeepSeek-V4-Pro on GB300
# (6P x DEP8 / 4D x DEP16, MTP + hierarchical-cache KV offload), tuned for concurrency 512.
# (6P x DEP8 / 4D x DEP16, MTP + hierarchical-cache KV offload), tuned for concurrency 768.
#
# Uses the flat single-variant srtctl schema the agentic CI flow expects;
# resources + backend (prefill/decode env + sglang_config) are normalized
Expand All @@ -15,7 +15,7 @@ model:

dynamo:
install: true
wheel: "1.3.0.dev1"
wheel: "1.3.0.dev20260718"

slurm:
time_limit: "8:00:00"
Expand All @@ -41,15 +41,14 @@ infra:
frontend:
type: dynamo
nginx_session_affinity: true
nginx_session_affinity_header: X-Correlation-ID
nginx_session_affinity_header: X-Dynamo-Session-ID
enable_multiple_frontends: true
num_additional_frontends: 4
env:
DYN_ROUTER_TEMPERATURE: "10000000"
PIP_BREAK_SYSTEM_PACKAGES: "1"
args:
router-mode: "kv"
router-reset-states: true
router-session-affinity-ttl-secs: "3600"
active-decode-blocks-threshold: "None"
active-prefill-tokens-threshold: "None"
active-prefill-tokens-threshold-frac: "None"
Expand Down
26 changes: 13 additions & 13 deletions configs/nvidia-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7419,21 +7419,21 @@ kimik3-fp4-gb200-dynamo-vllm-agentic:
dp-attn: true

dsv4-fp4-gb300-dynamo-sglang-agentic-agg:
image: lmsysorg/sglang:nightly-dev-cu13-20260711-7de33ce8
image: lmsysorg/sglang:nightly-dev-cu13-20260719-99f5a6f4
model: deepseek-ai/DeepSeek-V4-Pro
model-prefix: dsv4
runner: cluster:gb300-nv
precision: fp4
framework: dynamo-sglang
router: { name: dynamo-router, version: "1.3.0.dev1" }
router: { name: dynamo-router, version: "1.3.0.dev20260718" }
multinode: true
disagg: false
scenarios:
agentic-coding:
- dram-utilization: 0.80
search-space:
- spec-decoding: mtp
conc-list: [1, 4, 8, 16]
conc-list: [2, 4, 8, 16]
kv-offloading: dram
kv-offload-backend: { name: hicache }
prefill:
Expand All @@ -7453,13 +7453,13 @@ dsv4-fp4-gb300-dynamo-sglang-agentic-agg:
dp-attn: false

dsv4-fp4-gb300-dynamo-sglang-agentic-disagg:
image: lmsysorg/sglang:nightly-dev-cu13-20260711-7de33ce8
image: lmsysorg/sglang:nightly-dev-cu13-20260719-99f5a6f4
model: deepseek-ai/DeepSeek-V4-Pro
model-prefix: dsv4
runner: cluster:gb300-nv
precision: fp4
framework: dynamo-sglang
router: { name: dynamo-router, version: "1.3.0.dev1" }
router: { name: dynamo-router, version: "1.3.0.dev20260718" }
kv-p2p-transfer: mooncake
multinode: true
disagg: true
Expand All @@ -7468,7 +7468,7 @@ dsv4-fp4-gb300-dynamo-sglang-agentic-disagg:
- dram-utilization: 0.80
search-space:
- spec-decoding: mtp
conc-list: [8]
conc-list: [80]
kv-offloading: dram
kv-offload-backend: { name: hicache }
prefill:
Expand All @@ -7477,7 +7477,7 @@ dsv4-fp4-gb300-dynamo-sglang-agentic-disagg:
ep: 8
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/sglang/deepseek-v4/agentic/disagg-gb300-2p1d-dep8-tp4-c8-mtp-kvoffload.yaml"
- "CONFIG_FILE=recipes/sglang/deepseek-v4/agentic/disagg-gb300-2p1d-dep8-tp4-c80-mtp-kvoffload.yaml"
decode:
num-worker: 1
tp: 4
Expand All @@ -7500,7 +7500,7 @@ dsv4-fp4-gb300-dynamo-sglang-agentic-disagg:
ep: 16
dp-attn: true
- spec-decoding: mtp
conc-list: [256]
conc-list: [512]
kv-offloading: dram
kv-offload-backend: { name: hicache }
prefill:
Expand All @@ -7509,14 +7509,14 @@ dsv4-fp4-gb300-dynamo-sglang-agentic-disagg:
ep: 8
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/sglang/deepseek-v4/agentic/disagg-gb300-4p4d-dep8-dep16-c256-mtp-kvoffload.yaml"
- "CONFIG_FILE=recipes/sglang/deepseek-v4/agentic/disagg-gb300-4p4d-dep8-dep16-c512-mtp-kvoffload.yaml"
decode:
num-worker: 1
tp: 16
ep: 16
dp-attn: true
- spec-decoding: mtp
conc-list: [512]
conc-list: [768]
kv-offloading: dram
kv-offload-backend: { name: hicache }
prefill:
Expand All @@ -7525,14 +7525,14 @@ dsv4-fp4-gb300-dynamo-sglang-agentic-disagg:
ep: 8
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/sglang/deepseek-v4/agentic/disagg-gb300-6p4d-dep8-dep16-c512-mtp-kvoffload.yaml"
- "CONFIG_FILE=recipes/sglang/deepseek-v4/agentic/disagg-gb300-6p4d-dep8-dep16-c768-mtp-kvoffload.yaml"
decode:
num-worker: 1
tp: 16
ep: 16
dp-attn: true
- spec-decoding: mtp
conc-list: [1024]
conc-list: [1536]
kv-offloading: dram
kv-offload-backend: { name: hicache }
prefill:
Expand All @@ -7541,7 +7541,7 @@ dsv4-fp4-gb300-dynamo-sglang-agentic-disagg:
ep: 8
dp-attn: true
additional-settings:
- "CONFIG_FILE=recipes/sglang/deepseek-v4/agentic/disagg-gb300-12p4d-dep8-dep16-c1024-mtp-kvoffload.yaml"
- "CONFIG_FILE=recipes/sglang/deepseek-v4/agentic/disagg-gb300-12p4d-dep8-dep16-c1536-mtp-kvoffload.yaml"
decode:
num-worker: 1
tp: 16
Expand Down
11 changes: 11 additions & 0 deletions perf-changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5709,3 +5709,14 @@
- "Enable SGLang metrics on every aggregate, prefill, and decode engine."
- "Use supported header-based Dynamo session routing with the in-repo AIPerf build."
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2520

- config-keys:
- dsv4-fp4-gb300-dynamo-sglang-agentic-agg
- dsv4-fp4-gb300-dynamo-sglang-agentic-disagg
description:
- "Upgrade Dynamo from 1.3.0.dev1 to 1.3.0.dev20260718 so router queueing is disabled by default at high concurrency"
- "Migrate AgentX session affinity from nvext.session_control to X-Dynamo-Session-ID headers with a 3600-second router TTL"
- "Remove the DYN_ROUTER_TEMPERATURE=10000000 override and restore Dynamo's deterministic 0.0 default"
- "Upgrade SGLang from nightly-dev-cu13-20260711-7de33ce8 to nightly-dev-cu13-20260719-99f5a6f4, the latest nightly before the scheduler WAR-barrier regression in SGLang #31687"
- "Restore the pre-watchdog AgentX concurrency grid and use AIPerf's default 300-second per-trajectory idle-gap cap"
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2319