[CI][PD] Add optional/nightly DSv4 Disaggregated eval (#42310)
Signed-off-by: NickLucche <nicolo.lucchesi@mistral.ai>
Nicolò Lucchesi committed
Jul 15, 2026 at 23:04 UTC
3034c8d389edaf4a131c30304eee76bb9aef5022
3 files changed
+31
-5
.buildkite/test_areas/disaggregated.yaml
+22
@@ -203,3 +203,25 @@ steps:
203
commands:
204
- bash /vllm-workspace/.buildkite/scripts/install-kv-connectors.sh
205
- bash v1/kv_connector/nixl_integration/run_multi_connector_edge_case_test.sh
206
+
207
+# P TP 4 - D DPEP 4 test case for DSv4-Flash
208
+- label: DSv4-Flash Disaggregated DP EP
209
+ key: dsv4-flash-disaggregated
210
+ timeout_in_minutes: 60
211
+ device: h200
212
+ optional: true
213
+ working_dir: "/vllm-workspace/tests"
214
+ num_devices: 8
215
+ env:
216
+ ENABLE_HMA_FLAG: "1"
217
+ DP_EP: "1"
218
+ GPU_MEMORY_UTILIZATION: "0.85"
219
+ PREFILLER_TP_SIZE: "4"
220
+ DECODER_TP_SIZE: "4"
221
+ PREFILL_BLOCK_SIZE: "256"
222
+ DECODE_BLOCK_SIZE: "256"
223
+ MODEL_NAMES: "deepseek-ai/DeepSeek-V4-Flash"
224
+ VLLM_SERVE_EXTRA_ARGS: "--trust-remote-code,--kv-cache-dtype,fp8"
225
+ commands:
226
+ - bash /vllm-workspace/.buildkite/scripts/install-kv-connectors.sh
227
+ - bash v1/kv_connector/nixl_integration/run_accuracy_test.sh
tests/v1/kv_connector/nixl_integration/run_accuracy_test.sh
+8
-5
@@ -140,12 +140,13 @@ run_tests_for_model() {
140
# Start prefill instances
141
for i in $(seq 0 $((NUM_PREFILL_INSTANCES-1))); do
142
# Calculate GPU ID - we'll distribute across available GPUs
143
- GPU_ID=$((i % $(get_num_gpus)))
144
- NEXT_GPU=${GPU_ID}
143
+ GPU_START=$((i % $(get_num_gpus)))
144
+ GPU_ID=$GPU_START
145
+ NEXT_GPU=$GPU_START
146
# Reserve TP*PP GPUs for the prefiller (TP shards across PP stages).
147
PREFILLER_WORLD_SIZE=$((PREFILLER_TP_SIZE * PREFILLER_PP_SIZE))
148
for (( j=1; j < PREFILLER_WORLD_SIZE; j++ )); do
148
- NEXT_GPU=$(((GPU_ID + j) % $(get_num_gpus)))
149
+ NEXT_GPU=$(((GPU_START + j) % $(get_num_gpus)))
150
GPU_ID="${GPU_ID},${NEXT_GPU}"
151
done
152
@@ -195,10 +196,12 @@ run_tests_for_model() {
196
# Start decode instances
197
for i in $(seq 0 $((NUM_DECODE_INSTANCES-1))); do
198
# Calculate GPU ID - we'll distribute across available GPUs, starting from after prefill GPUs
198
- GPU_ID=$(((i + NEXT_GPU + 1) % $(get_num_gpus)))
199
+ DECODE_START=$(((i + NEXT_GPU + 1) % $(get_num_gpus)))
200
+ GPU_ID=$DECODE_START
201
+ NEXT_GPU=$DECODE_START
202
# If DECODER_TP_SIZE is more than 1
203
for (( j=1; j < DECODER_TP_SIZE; j++ )); do
201
- NEXT_GPU=$(((GPU_ID + j) % $(get_num_gpus)))
204
+ NEXT_GPU=$(((DECODE_START + j) % $(get_num_gpus)))
205
GPU_ID="${GPU_ID},${NEXT_GPU}"
206
done
207
# Calculate port number (base port + instance number)
tests/v1/kv_connector/nixl_integration/test_accuracy.py
+1
@@ -26,6 +26,7 @@ EXPECTED_VALUES = {
26
"Qwen/Qwen3.5-0.8B": 0.33,
27
"google/gemma-4-E2B-it": 0.485,
28
"ai21labs/AI21-Jamba2-3B": 0.74,
29
+ "deepseek-ai/DeepSeek-V4-Flash": 0.95,
30
}
31
32
SIMPLE_PROMPT = (