From 3034c8d389edaf4a131c30304eee76bb9aef5022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Lucchesi?= Date: Wed, 15 Jul 2026 23:04:54 +0200 Subject: [PATCH] [CI][PD] Add optional/nightly DSv4 Disaggregated eval (#42310) Signed-off-by: NickLucche --- .buildkite/test_areas/disaggregated.yaml | 22 +++++++++++++++++++ .../nixl_integration/run_accuracy_test.sh | 13 ++++++----- .../nixl_integration/test_accuracy.py | 1 + 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/.buildkite/test_areas/disaggregated.yaml b/.buildkite/test_areas/disaggregated.yaml index b25884a96f..4012f1ebd5 100644 --- a/.buildkite/test_areas/disaggregated.yaml +++ b/.buildkite/test_areas/disaggregated.yaml @@ -203,3 +203,25 @@ steps: commands: - bash /vllm-workspace/.buildkite/scripts/install-kv-connectors.sh - bash v1/kv_connector/nixl_integration/run_multi_connector_edge_case_test.sh + +# P TP 4 - D DPEP 4 test case for DSv4-Flash +- label: DSv4-Flash Disaggregated DP EP + key: dsv4-flash-disaggregated + timeout_in_minutes: 60 + device: h200 + optional: true + working_dir: "/vllm-workspace/tests" + num_devices: 8 + env: + ENABLE_HMA_FLAG: "1" + DP_EP: "1" + GPU_MEMORY_UTILIZATION: "0.85" + PREFILLER_TP_SIZE: "4" + DECODER_TP_SIZE: "4" + PREFILL_BLOCK_SIZE: "256" + DECODE_BLOCK_SIZE: "256" + MODEL_NAMES: "deepseek-ai/DeepSeek-V4-Flash" + VLLM_SERVE_EXTRA_ARGS: "--trust-remote-code,--kv-cache-dtype,fp8" + commands: + - bash /vllm-workspace/.buildkite/scripts/install-kv-connectors.sh + - bash v1/kv_connector/nixl_integration/run_accuracy_test.sh diff --git a/tests/v1/kv_connector/nixl_integration/run_accuracy_test.sh b/tests/v1/kv_connector/nixl_integration/run_accuracy_test.sh index a357128d3c..77235582fe 100755 --- a/tests/v1/kv_connector/nixl_integration/run_accuracy_test.sh +++ b/tests/v1/kv_connector/nixl_integration/run_accuracy_test.sh @@ -140,12 +140,13 @@ run_tests_for_model() { # Start prefill instances for i in $(seq 0 $((NUM_PREFILL_INSTANCES-1))); do # Calculate GPU ID - we'll distribute across available GPUs - GPU_ID=$((i % $(get_num_gpus))) - NEXT_GPU=${GPU_ID} + GPU_START=$((i % $(get_num_gpus))) + GPU_ID=$GPU_START + NEXT_GPU=$GPU_START # Reserve TP*PP GPUs for the prefiller (TP shards across PP stages). PREFILLER_WORLD_SIZE=$((PREFILLER_TP_SIZE * PREFILLER_PP_SIZE)) for (( j=1; j < PREFILLER_WORLD_SIZE; j++ )); do - NEXT_GPU=$(((GPU_ID + j) % $(get_num_gpus))) + NEXT_GPU=$(((GPU_START + j) % $(get_num_gpus))) GPU_ID="${GPU_ID},${NEXT_GPU}" done @@ -195,10 +196,12 @@ run_tests_for_model() { # Start decode instances for i in $(seq 0 $((NUM_DECODE_INSTANCES-1))); do # Calculate GPU ID - we'll distribute across available GPUs, starting from after prefill GPUs - GPU_ID=$(((i + NEXT_GPU + 1) % $(get_num_gpus))) + DECODE_START=$(((i + NEXT_GPU + 1) % $(get_num_gpus))) + GPU_ID=$DECODE_START + NEXT_GPU=$DECODE_START # If DECODER_TP_SIZE is more than 1 for (( j=1; j < DECODER_TP_SIZE; j++ )); do - NEXT_GPU=$(((GPU_ID + j) % $(get_num_gpus))) + NEXT_GPU=$(((DECODE_START + j) % $(get_num_gpus))) GPU_ID="${GPU_ID},${NEXT_GPU}" done # Calculate port number (base port + instance number) diff --git a/tests/v1/kv_connector/nixl_integration/test_accuracy.py b/tests/v1/kv_connector/nixl_integration/test_accuracy.py index bb68b7a572..711f27d209 100644 --- a/tests/v1/kv_connector/nixl_integration/test_accuracy.py +++ b/tests/v1/kv_connector/nixl_integration/test_accuracy.py @@ -26,6 +26,7 @@ EXPECTED_VALUES = { "Qwen/Qwen3.5-0.8B": 0.33, "google/gemma-4-E2B-it": 0.485, "ai21labs/AI21-Jamba2-3B": 0.74, + "deepseek-ai/DeepSeek-V4-Flash": 0.95, } SIMPLE_PROMPT = (