Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
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
6 changes: 6 additions & 0 deletions examples/backends/vllm/launch/agg_multimodal_router.sh
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ COMMON_ENV=(

GPU_MEM_ARGS=$(build_vllm_gpu_mem_args)

# Phase 1: launch all workers in parallel.
for i in $(seq 1 "${NUM_WORKERS}"); do
WORKER_PORT=$((VLLM_SYSTEM_PORT_BASE + (i - 1) * 2))
KV_EVENTS_PORT=$((KV_EVENTS_PORT_BASE + (i - 1)))
Expand All @@ -150,6 +151,11 @@ for i in $(seq 1 "${NUM_WORKERS}"); do
--max-model-len "${MAX_MODEL_LEN}" \
--kv-events-config "${KV_EVENTS_CONFIG}" \
${GPU_MEM_ARGS} ${VLLM_EXTRA_ARGS} "${PASSTHRU_ARGS[@]}" &
done

# Phase 2: wait for all workers to be ready.
for i in $(seq 1 "${NUM_WORKERS}"); do
WORKER_PORT=$((VLLM_SYSTEM_PORT_BASE + (i - 1) * 2))
wait_ready "http://127.0.0.1:${WORKER_PORT}/health" "vLLM backend $i"
done

Expand Down
18 changes: 4 additions & 14 deletions tests/serve/multimodal_profiles/vllm.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,21 +100,11 @@
requested_vllm_kv_cache_bytes=1_719_075_000,
tests=[MmCase(payload=make_video_payload(["red", "static", "still"]))],
),
# `agg_router` exercises agg_multimodal_router.sh: Rust frontend
# with the `lightseek-mm` feature, MM-aware KV routing, multi-worker.
# Smoke-level on post_merge so regressions to the script's plumbing
# (worker boot order, ZMQ KV events, MM-routing build) surface in
# CI. The fine-grained routing-correctness assertions live in
# tests/mm_router/test_router_rust_mm_router_e2e.py.
#
# The payload sends two identical MM requests and asserts the
# second sees cached_tokens > 0 — proves the warm worker reused
# its KV cache, which only happens if the router routed both
# requests to the same worker. If routing silently regressed to
# text-prefix only, both requests would still succeed but the
# second's cached_tokens would be 0 and this case would fail.
# Pre_merge gater for the lightseek MM-routing path. Fine-grained
# assertions live in tests/mm_router/test_router_rust_mm_router_e2e.py
# (post_merge).
"agg_router": TopologyConfig(
marks=[pytest.mark.post_merge],
marks=[pytest.mark.pre_merge],
timeout_s=400,
profiled_vram_gib=18.7,
requested_vllm_kv_cache_bytes=1_719_075_000,
Expand Down
2 changes: 1 addition & 1 deletion tests/utils/multimodal.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ def make_image_payload_cached_tokens(
],
}
],
"max_tokens": 100,
"max_tokens": 50,
"temperature": 0.0,
"stream": False,
},
Expand Down
Loading