Skip to content

Commit 79ebca7

Browse files
committed
[CI] Shard Hybrid SSM NixlConnector PD accuracy tests into 3 config groups
Split hybrid-ssm-nixlconnector-pd-accuracy-tests-4-gpus (~45.7m wall in build 83851) into parallelism: 3 via a new opt-in CONFIG_INDICES env in config_sweep_accuracy_test.sh that selects configs from the chosen array by zero-based index. Unset means run everything, so the other jobs sharing the sweep script (tp/dp_ep/sw_attn variants and the AMD mirrors) are unchanged. CONFIG_EXPECTED_COUNT=7 makes each shard fail loudly if the hybrid config array changes without rebalancing the index lists. Buckets are balanced on measured per-config runtime: shard 0 = configs 0,4 (~14.5m), shard 1 = configs 5,6 (~13.2m), shard 2 = configs 1,2,3 (~16.3m); expected wall ~18m incl. ~1.7m install/canary per shard. Timeout 60 -> 30. The AMD mirror keeps its own unchanged command and is pinned to parallelism: 1 (stays a single unsharded job; requires the pipeline generator change in vllm-project/ci-infra#473). Signed-off-by: Kevin Luu <51931015+khluu@users.noreply.github.com>
1 parent 63a9a50 commit 79ebca7

2 files changed

Lines changed: 30 additions & 2 deletions

File tree

.buildkite/test_areas/disaggregated.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,19 +107,27 @@ steps:
107107

108108
- label: Hybrid SSM NixlConnector PD accuracy tests (4 GPUs)
109109
key: hybrid-ssm-nixlconnector-pd-accuracy-tests-4-gpus
110-
timeout_in_minutes: 60
110+
timeout_in_minutes: 30
111111
working_dir: "/vllm-workspace/tests"
112112
num_devices: 4
113+
parallelism: 3
113114
source_file_dependencies:
114115
- vllm/distributed/kv_transfer/kv_connector/v1/nixl/
115116
- tests/v1/kv_connector/nixl_integration/
116117
commands:
117118
- bash /vllm-workspace/.buildkite/scripts/install-kv-connectors.sh
118-
- HYBRID_SSM=1 bash v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh
119+
# Timing-balanced index buckets over the 7 hybrid_ssm_configs (measured on
120+
# build 83851): shard 0 = configs 0,4 (~14.5m), shard 1 = configs 5,6
121+
# (~13.2m), shard 2 = configs 1,2,3 (~16.3m). CONFIG_EXPECTED_COUNT makes
122+
# the sweep fail loudly if the config array changes without rebalancing.
123+
- test "$$BUILDKITE_PARALLEL_JOB" != "0" || HYBRID_SSM=1 CONFIG_EXPECTED_COUNT=7 CONFIG_INDICES=0,4 bash v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh
124+
- test "$$BUILDKITE_PARALLEL_JOB" != "1" || HYBRID_SSM=1 CONFIG_EXPECTED_COUNT=7 CONFIG_INDICES=5,6 bash v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh
125+
- test "$$BUILDKITE_PARALLEL_JOB" != "2" || HYBRID_SSM=1 CONFIG_EXPECTED_COUNT=7 CONFIG_INDICES=1,2,3 bash v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh
119126
mirror:
120127
amd:
121128
dind: false
122129
device: mi300_4
130+
parallelism: 1
123131
timeout_in_minutes: 55
124132
depends_on:
125133
- image-build-amd

tests/v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,26 @@ else
5555
configs=("${tp_configs[@]}")
5656
fi
5757

58+
# Opt-in CI sharding: CONFIG_INDICES selects a comma-separated subset of the
59+
# chosen config array by zero-based index; unset means run everything, so all
60+
# existing callers are unchanged. CONFIG_EXPECTED_COUNT fails the run loudly
61+
# when the array size changes, instead of letting a newly added config be
62+
# silently skipped by stale shard index lists.
63+
if [[ -n "${CONFIG_EXPECTED_COUNT:-}" && "${#configs[@]}" -ne "${CONFIG_EXPECTED_COUNT}" ]]; then
64+
echo "Selected config set has ${#configs[@]} entries, expected ${CONFIG_EXPECTED_COUNT}."
65+
echo "Rebalance the CONFIG_INDICES shard lists in .buildkite/test_areas for this job."
66+
exit 1
67+
fi
68+
if [[ -n "${CONFIG_INDICES:-}" ]]; then
69+
IFS=',' read -r -a shard_indices <<< "${CONFIG_INDICES}"
70+
shard_configs=()
71+
for idx in "${shard_indices[@]}"; do
72+
shard_configs+=("${configs[$idx]}")
73+
done
74+
configs=("${shard_configs[@]}")
75+
echo "CONFIG_INDICES=${CONFIG_INDICES}: running ${#configs[@]} of the selected configs"
76+
fi
77+
5878
run_tests() {
5979
local label=$1
6080
local extra_args=$2

0 commit comments

Comments
 (0)