Skip to content

Commit a0edf96

Browse files
Juntian777claudefunctionstackx
authored
config: update B300 DSV41flash vLLM image and retune TP4/DEP2 (#3653)
Move the B300 DeepSeek-V4.1-Flash vLLM AgentX recipe to nightly-dev-x86_64-cu130-ac9126e58aa7 and enable FlashInfer autotuning. Run TP4 at CONC 1-16 and replace TP2 with DEP2 (TP1 x DP2 + EP2, MegaMoE) at CONC 8-192 behind a consistent-hash vLLM Router. Append the perf-changelog entry and document the B300 settings. 将 B300 DeepSeek-V4.1-Flash vLLM AgentX 配方更新到 nightly-dev-x86_64-cu130-ac9126e58aa7,并开启 FlashInfer autotune。 TP4 覆盖 CONC 1-16;用 DEP2(TP1 x DP2 + EP2,MegaMoE)替代 TP2,覆盖 CONC 8-192,前置一致性哈希 vLLM Router。追加 perf-changelog 条目,并补充 B300 配置文档。 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: functionstackx <47992694+functionstackx@users.noreply.github.com>
1 parent 2abaa91 commit a0edf96

5 files changed

Lines changed: 89 additions & 214 deletions

File tree

‎inferencex-e2e/benchmarks/single_node/srt-slurm-recipes/dsv41flash/vllm/b300-fp4-mtp/agentic.yaml‎

Lines changed: 60 additions & 193 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ base:
66
name: dsv41flash-fp4-b300-vllm-agentic
77
model:
88
path: hf:deepseek-ai/DeepSeek-V4.1-Flash
9-
container: vllm/vllm-openai:nightly-ddd6fbca148a867aad1fcab7ec72f582b9977db4
9+
container: vllm/vllm-openai:nightly-dev-x86_64-cu130-ac9126e58aa7
1010
precision: fp4
1111
resources:
1212
gpu_type: b300
@@ -37,17 +37,21 @@ base:
3737
enable-auto-tool-choice: true
3838
reasoning-parser: deepseek_v41
3939
engram-config: '{"cpu_offload":true}'
40-
# FlashInfer sparse attention with the merged Blackwell sparse indexer
41-
# (MXFP4 indexer KV, sparse logits) at both TP sizes; fp8 KV cache.
40+
kernel-config: '{"enable_flashinfer_autotune":true}'
4241
attention-config: '{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
4342
kv-cache-dtype: fp8
4443
# Five-token DSpark with probabilistic drafting. Throughput runs replace
4544
# block rejection with the golden acceptance length.
4645
speculative-config: '{"method":"dspark","num_speculative_tokens":5,"draft_sample_method":"probabilistic","rejection_sample_method":"block","enable_adaptive_verification":false}'
4746
max-model-len: 1048576
48-
max-num-seqs: 256
47+
# Piecewise graph capture sizes are multiples of the six-token DSpark
48+
# verification block, denser for small batches.
49+
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
50+
max-cudagraph-capture-size: 8190
51+
max-num-batched-tokens: 8192
4952
disable-uvicorn-access-log: true
5053
env:
54+
VLLM_USE_V2_MODEL_RUNNER: '1'
5155
VLLM_USE_RUST_FRONTEND: '1'
5256
PYTHONUNBUFFERED: '1'
5357
VLLM_ENGINE_READY_TIMEOUT_S: '7200'
@@ -58,203 +62,66 @@ base:
5862
MODEL: deepseek-ai/DeepSeek-V4.1-Flash
5963
AIPERF_REQUIRED_SERVER_METRIC_PREFIX: 'vllm:'
6064

61-
# One variant per point. Piecewise graph capture sizes are multiples of the
62-
# six-token DSpark verification block, denser for small batches, and each
63-
# batched-token limit matches the largest captured graph: CONC <= 4 and TP2
64-
# CONC 128 capture up to 2046 tokens (the latter at 0.97 memory utilization),
65-
# every other point up to 8190.
66-
override_tp4_c1:
67-
roles:
68-
agg:
69-
gpus: 4
70-
args:
71-
tensor-parallel-size: 4
72-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046]}'
73-
max-cudagraph-capture-size: 2046
74-
max-num-batched-tokens: 2048
75-
benchmark:
76-
env:
77-
CONC: '1'
78-
79-
override_tp4_c2:
80-
roles:
81-
agg:
82-
gpus: 4
83-
args:
84-
tensor-parallel-size: 4
85-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046]}'
86-
max-cudagraph-capture-size: 2046
87-
max-num-batched-tokens: 2048
88-
benchmark:
89-
env:
90-
CONC: '2'
91-
92-
override_tp4_c4:
93-
roles:
94-
agg:
95-
gpus: 4
96-
args:
97-
tensor-parallel-size: 4
98-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046]}'
99-
max-cudagraph-capture-size: 2046
100-
max-num-batched-tokens: 2048
101-
benchmark:
102-
env:
103-
CONC: '4'
104-
105-
override_tp4_c8:
106-
roles:
107-
agg:
108-
gpus: 4
109-
args:
110-
tensor-parallel-size: 4
111-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
112-
max-cudagraph-capture-size: 8190
113-
max-num-batched-tokens: 8192
114-
benchmark:
115-
env:
116-
CONC: '8'
117-
118-
override_tp4_c16:
119-
roles:
120-
agg:
121-
gpus: 4
122-
args:
123-
tensor-parallel-size: 4
124-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
125-
max-cudagraph-capture-size: 8190
126-
max-num-batched-tokens: 8192
127-
benchmark:
128-
env:
129-
CONC: '16'
130-
131-
override_tp4_c32:
132-
roles:
133-
agg:
134-
gpus: 4
135-
args:
136-
tensor-parallel-size: 4
137-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
138-
max-cudagraph-capture-size: 8190
139-
max-num-batched-tokens: 8192
140-
benchmark:
141-
env:
142-
CONC: '32'
143-
144-
override_tp4_c64:
145-
roles:
146-
agg:
147-
gpus: 4
148-
args:
149-
tensor-parallel-size: 4
150-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
151-
max-cudagraph-capture-size: 8190
152-
max-num-batched-tokens: 8192
153-
benchmark:
154-
env:
155-
CONC: '64'
65+
# Native zip expansion creates one variant per concurrency.
15666

157-
override_tp4_c128:
67+
# TP4 covers low concurrency with THP Engram tables.
68+
zip_override_tp4:
15869
roles:
15970
agg:
16071
gpus: 4
16172
args:
16273
tensor-parallel-size: 4
163-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
164-
max-cudagraph-capture-size: 8190
165-
max-num-batched-tokens: 8192
166-
benchmark:
167-
env:
168-
CONC: '128'
169-
170-
override_tp2_c2:
171-
roles:
172-
agg:
173-
gpus: 2
174-
args:
175-
tensor-parallel-size: 2
176-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046]}'
177-
max-cudagraph-capture-size: 2046
178-
max-num-batched-tokens: 2048
179-
benchmark:
180-
env:
181-
CONC: '2'
182-
183-
override_tp2_c4:
184-
roles:
185-
agg:
186-
gpus: 2
187-
args:
188-
tensor-parallel-size: 2
189-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046]}'
190-
max-cudagraph-capture-size: 2046
191-
max-num-batched-tokens: 2048
192-
benchmark:
193-
env:
194-
CONC: '4'
195-
196-
override_tp2_c8:
197-
roles:
198-
agg:
199-
gpus: 2
200-
args:
201-
tensor-parallel-size: 2
202-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
203-
max-cudagraph-capture-size: 8190
204-
max-num-batched-tokens: 8192
205-
benchmark:
206-
env:
207-
CONC: '8'
74+
engram-config: '{"cpu_offload":true,"use_thp":true}'
75+
max-num-seqs: [8, 8, 16, 32]
76+
compilation-config:
77+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092]}'
78+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092]}'
79+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
80+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190],"decoder_replay_cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2048,2304,2560,2816,3072,3328,3584,3840,4096]}'
81+
max-cudagraph-capture-size: [4092, 4092, 8190, 8190]
82+
max-num-batched-tokens: [4096, 4096, 8192, 8192]
83+
benchmark:
84+
env:
85+
CONC: ['1', '4', '8', '16']
20886

209-
override_tp2_c16:
210-
roles:
211-
agg:
212-
gpus: 2
213-
args:
214-
tensor-parallel-size: 2
215-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
216-
max-cudagraph-capture-size: 8190
217-
max-num-batched-tokens: 8192
218-
benchmark:
219-
env:
220-
CONC: '16'
221-
222-
override_tp2_c32:
223-
roles:
224-
agg:
225-
gpus: 2
226-
args:
227-
tensor-parallel-size: 2
228-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
229-
max-cudagraph-capture-size: 8190
230-
max-num-batched-tokens: 8192
231-
benchmark:
232-
env:
233-
CONC: '32'
234-
235-
override_tp2_c64:
236-
roles:
237-
agg:
238-
gpus: 2
239-
args:
240-
tensor-parallel-size: 2
241-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
242-
max-cudagraph-capture-size: 8190
243-
max-num-batched-tokens: 8192
244-
benchmark:
245-
env:
246-
CONC: '64'
247-
248-
override_tp2_c128:
87+
# DEP2: TP1 x DP2 + EP2 with MegaMoE behind a consistent-hash router;
88+
# MegaAttention at CONC 128 and above.
89+
zip_override_dep2:
90+
frontend:
91+
type: vllm-router
92+
args:
93+
policy: consistent_hash
94+
prometheus-host: 127.0.0.1
95+
prometheus-port: 18000
96+
request-timeout-secs: 14400
97+
disable-retries: true
98+
setup_script: vllm-router-0.1.14.sh
24999
roles:
250100
agg:
251101
gpus: 2
252102
args:
253-
tensor-parallel-size: 2
254-
compilation-config: '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046]}'
255-
max-cudagraph-capture-size: 2046
256-
max-num-batched-tokens: 2048
257-
gpu-memory-utilization: 0.97
258-
benchmark:
259-
env:
260-
CONC: '128'
103+
tensor-parallel-size: 1
104+
data-parallel-size: 2
105+
enable-expert-parallel: true
106+
kernel-config: '{"enable_flashinfer_autotune":true,"moe_backend":"deep_gemm_mega_moe"}'
107+
engram-config: '{"cpu_offload":true,"embedding_across_dp":true}'
108+
max-num-seqs: [16, 16, 32, 64, 128, 192]
109+
attention-config:
110+
- '{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
111+
- '{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
112+
- '{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
113+
- '{"backend":"FLASHINFER_MLA_SPARSE_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
114+
- '{"backend":"FLASHMLA_MEGA_ATTN_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
115+
- '{"backend":"FLASHMLA_MEGA_ATTN_DSV41","indexer_kv_dtype":"mxfp4","indexer_sparse_logits":true}'
116+
compilation-config:
117+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
118+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190]}'
119+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190],"decoder_replay_cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2048,2304,2560,2816,3072,3328,3584,3840,4096]}'
120+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190],"decoder_replay_cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2048,2304,2560,2816,3072,3328,3584,3840,4096]}'
121+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092,6144,8190],"decoder_replay_cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2048,2304,2560,2816,3072,3328,3584,3840,4096]}'
122+
- '{"mode":"VLLM_COMPILE","cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2046,3072,4092],"decoder_replay_cudagraph_capture_sizes":[6,12,18,24,30,36,48,60,72,96,120,144,192,240,288,384,480,576,768,1020,1536,2048]}'
123+
max-cudagraph-capture-size: [8190, 8190, 8190, 8190, 8190, 4092]
124+
max-num-batched-tokens: [8192, 8192, 8192, 8192, 16384, 16384]
125+
benchmark:
126+
env:
127+
CONC: ['8', '16', '32', '64', '128', '192']

‎inferencex-e2e/configs/nvidia-master.yaml‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8475,7 +8475,7 @@ dsv41flash-fp4-gb200-sglang-agentic-dspark:
84758475
- { tp: 2, ep: 1, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16, 32, 64, 128], srt-recipe: benchmarks/single_node/srt-slurm-recipes/dsv41flash/sglang/gb200-fp4-mtp/agentic.yaml }
84768476

84778477
dsv41flash-fp4-b300-vllm-agentic-dspark:
8478-
image: vllm/vllm-openai:nightly-ddd6fbca148a867aad1fcab7ec72f582b9977db4
8478+
image: vllm/vllm-openai:nightly-dev-x86_64-cu130-ac9126e58aa7
84798479
model: deepseek-ai/DeepSeek-V4.1-Flash
84808480
model-prefix: dsv41flash
84818481
runner: cluster:b300-dsxe
@@ -8486,11 +8486,12 @@ dsv41flash-fp4-b300-vllm-agentic-dspark:
84868486
agentic-coding:
84878487
- dram-utilization: 0.80
84888488
search-space:
8489-
# Engram weights use UVA DRAM; the KV cache stays GPU-resident. The B300
8490-
# script uses explicit piecewise CUDA graph capture tiers.
8491-
- { tp: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16, 32, 64, 128], srt-recipe: benchmarks/single_node/srt-slurm-recipes/dsv41flash/vllm/b300-fp4-mtp/agentic.yaml }
8492-
# Run the same B300 recipe on two GPUs.
8493-
- { tp: 2, kv-offloading: none, spec-decoding: mtp, conc-list: [2, 4, 8, 16, 32, 64, 128], srt-recipe: benchmarks/single_node/srt-slurm-recipes/dsv41flash/vllm/b300-fp4-mtp/agentic.yaml }
8489+
# Engram weights use UVA DRAM; the KV cache stays GPU-resident.
8490+
# TP4 covers low concurrency with FlashInfer attention and THP Engram tables.
8491+
- { tp: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 4, 8, 16], srt-recipe: benchmarks/single_node/srt-slurm-recipes/dsv41flash/vllm/b300-fp4-mtp/agentic.yaml }
8492+
# DEP2 is native TP1 x DP2 + EP2 with MegaMoE behind a consistent-hash vLLM
8493+
# Router; FlashInfer attention up to conc 64, MegaAttention above.
8494+
- { tp: 2, ep: 2, dp-attn: true, kv-offloading: none, spec-decoding: mtp, conc-list: [8, 16, 32, 64, 128, 192], router: { name: vllm-router, version: "0.1.14" }, srt-recipe: benchmarks/single_node/srt-slurm-recipes/dsv41flash/vllm/b300-fp4-mtp/agentic.yaml }
84948495

84958496
dsv41flash-fp4-b200-vllm-agentic-dspark:
84968497
image: vllm/vllm-openai:nightly-ddd6fbca148a867aad1fcab7ec72f582b9977db4

‎inferencex-e2e/docs/configuration-procedures.md‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -331,10 +331,10 @@ The B200 DSpark recipe uses the same minimum capture size and preserves the same
331331
The GB300 DSpark recipe uses the same minimum capture size and preserves the same workload settings.
332332
The H200 DSpark recipe uses the same minimum capture size and preserves the same workload settings.
333333

334-
B300 uses the same minimum capture size at c1/c2/c4. Its c1 CI comparison reduced request ITL P90/P99 from 38.74/41.42 ms to 2.62/3.45 ms; c2/c4 require CI confirmation.
334+
The B300 DSpark recipe sets explicit capture sizes per point, described below.
335335

336336
The AgentX-only `dsv41flash-fp4-<sku>-vllm-agentic-dspark` recipes use the per-SKU
337-
`image` pinned in [`nvidia-master.yaml`](../configs/nvidia-master.yaml) (originally `vllm/vllm-openai:deepseekv41-flash-0909`, which B300 still uses) at TP4 on Blackwell SKUs with native five-token DSpark,
337+
`image` pinned in [`nvidia-master.yaml`](../configs/nvidia-master.yaml) (originally `vllm/vllm-openai:deepseekv41-flash-0909`) at TP4 on Blackwell SKUs with native five-token DSpark,
338338
probabilistic drafting. Throughput uses the [committed golden AL](../infx/golden_al_distribution/dsv41flash_dspark.yaml) of 3.51 for thinking on and five draft tokens, with synthetic rejection sampling and adaptive verification disabled. Accuracy evals retain real block rejection and adaptive verification. `--engram-config '{"cpu_offload":true}'`
339339
stores Engram embedding tables in pinned host DRAM accessed through UVA;
340340
`kv-offloading: none` describes the separate, GPU-resident KV cache. MXFP4 expert
@@ -349,12 +349,11 @@ The recipe probes the serving port on the compute node and selects an available
349349
port if the preferred one is occupied. Serving, replay, metrics, and eval share
350350
that endpoint.
351351

352-
The B300 entry also includes a TP2 variant at concurrency 2–128. Its dedicated
353-
script uses `FULL_AND_PIECEWISE` CUDA graphs with explicit capture-size sets ending
354-
at 2046 or 8190 tokens. It sets `--max-num-batched-tokens` to 2048 for concurrency
355-
1–4 and TP2 concurrency 128, and to 8192 otherwise; `--max-num-seqs` is 256. The
356-
TP2 concurrency-128 variant also sets `--gpu-memory-utilization 0.97`. Other SKUs
357-
continue to use the shared script.
352+
The B300 entry uses `vllm/vllm-openai:nightly-dev-x86_64-cu130-ac9126e58aa7` with FlashInfer
353+
autotuning. TP4 covers concurrency 1–16; DEP2 (TP1 x DP2 + EP2, DeepGEMM MegaMoE) covers 8–192
354+
behind a consistent-hash vLLM Router, switching to MegaAttention at 128 and above. All points use
355+
`FULL_AND_PIECEWISE` CUDA graphs sized in multiples of the six-token verification block.
356+
Other SKUs continue to use the shared script.
358357

359358
The GB300 launcher allows 7200 seconds for engine readiness. In [run 34504969146](https://github.com/SemiAnalysisAI/InferenceX/actions/runs/34504969146), the Rust frontend exhausted its 3600-second deadline while the engine was still capturing graphs; model loading alone took 18–23 minutes. This extends startup time without changing the benchmark duration or decoding settings.
360359

0 commit comments

Comments
 (0)