Compare commits

...
Author SHA1 Message Date
khluuandClaude Opus 4.6 c0be8b1f82 [CI] Fix model swap test failures
- Responses API: Qwen3-1.7B too small for reasoning + tool calling,
  bump to Qwen3-4B (~8 GiB, fits on 17GB MIG slice)
- MM cache stats: llava-onevision produces more multimodal tokens per
  image than llava-1.5, increase max_model_len from 4096 to 8192

Signed-off-by: Kevin H. Luu <khluu000@gmail.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 20:18:50 -07:00
khluuandClaude Opus 4.6 6ec55b6485 [CI] Swap to smaller models for MIG slice compatibility
Use smaller models / lower max_model_len in tests that OOM on 1g.18gb
(17GB) MIG slices. These changes are safe because the affected tests
are testing functionality (benchmarking, LoRA preloading, structured
output, cache metrics, etc.), not specific model architectures.

Changes:
- Benchmarks: Llama-2-7b-chat-hf -> Qwen/Qwen3-0.6B (serving bench)
- Examples: Llama-2-13b-chat-hf -> Llama-3.1-8B-Instruct (cpu-offload)
- LoRA test_add_lora: chatglm3-6b -> Qwen/Qwen3-0.6B
- Responses API: Qwen3-8B -> Qwen3-1.7B (test_simple, test_parsable_context)
- e2e Core: add max_model_len=16384 for gemma-3n-E2B-it
- Voxtral: add --max-model-len 4096 for test_basic_audio
- MM cache/validation: llava-1.5-7b -> llava-onevision-qwen2-0.5b-ov-hf

Signed-off-by: Kevin H. Luu <khluu000@gmail.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 18:33:42 -07:00
9 changed files with 15 additions and 14 deletions
+3 -3
View File
@@ -18,7 +18,7 @@ vllm bench throughput --input-len 256 --output-len 256 --output-json throughput_
bench_throughput_exit_code=$?
# run server-based benchmarks and upload the result to buildkite
vllm serve meta-llama/Llama-2-7b-chat-hf &
vllm serve Qwen/Qwen3-0.6B &
server_pid=$!
wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json
@@ -28,10 +28,10 @@ vllm bench serve \
--backend vllm \
--dataset-name sharegpt \
--dataset-path ./ShareGPT_V3_unfiltered_cleaned_split.json \
--model meta-llama/Llama-2-7b-chat-hf \
--model Qwen/Qwen3-0.6B \
--num-prompts 20 \
--endpoint /v1/completions \
--tokenizer meta-llama/Llama-2-7b-chat-hf \
--tokenizer Qwen/Qwen3-0.6B \
--save-result \
2>&1 | tee benchmark_serving.txt
bench_serving_exit_code=$?
+1 -1
View File
@@ -106,7 +106,7 @@ steps:
# for basic
- python3 basic/offline_inference/chat.py
- python3 basic/offline_inference/generate.py --model facebook/opt-125m
- python3 basic/offline_inference/generate.py --model meta-llama/Llama-2-13b-chat-hf --cpu-offload-gb 10
- python3 basic/offline_inference/generate.py --model meta-llama/Llama-3.1-8B-Instruct --cpu-offload-gb 4
- python3 basic/offline_inference/classify.py
- python3 basic/offline_inference/embed.py
- python3 basic/offline_inference/score.py
+2 -2
View File
@@ -63,8 +63,8 @@ def test_mm_cache_stats(
caplog_vllm,
):
llm = LLM(
model="llava-hf/llava-1.5-7b-hf",
max_model_len=4096,
model="llava-hf/llava-onevision-qwen2-0.5b-ov-hf",
max_model_len=8192,
max_num_seqs=5,
enforce_eager=True,
mm_processor_cache_type=mm_processor_cache_type,
@@ -21,7 +21,7 @@ def test_out_of_vocab_token():
def test_require_mm_embeds():
llm = LLM(
model="llava-hf/llava-1.5-7b-hf",
model="llava-hf/llava-onevision-qwen2-0.5b-ov-hf",
enforce_eager=True,
enable_mm_embeds=False,
)
@@ -20,7 +20,7 @@ from .conftest import (
logger = logging.getLogger(__name__)
MODEL_NAME = "Qwen/Qwen3-8B"
MODEL_NAME = "Qwen/Qwen3-4B"
_PYTHON_TOOL_INSTRUCTION = (
"You must use the Python tool to execute code. "
@@ -9,7 +9,7 @@ from tests.utils import RemoteOpenAIServer
from .conftest import validate_streaming_event_stack
MODEL_NAME = "Qwen/Qwen3-8B"
MODEL_NAME = "Qwen/Qwen3-4B"
@pytest.fixture(scope="module")
@@ -71,6 +71,7 @@ async def test_basic_audio(mary_had_lamb, model_name, rocm_aiter_fa_attention):
if model_name.startswith("mistralai"):
server_args += MISTRAL_FORMAT_ARGS
server_args += ["--max-model-len", "4096"]
add_attention_backend(server_args, rocm_aiter_fa_attention)
+4 -5
View File
@@ -14,8 +14,8 @@ from vllm.lora.request import LoRARequest
from vllm.sampling_params import SamplingParams
from vllm.utils.async_utils import merge_async_iterators
MODEL_PATH = "zai-org/chatglm3-6b"
LORA_RANK = 64
MODEL_PATH = "Qwen/Qwen3-0.6B"
LORA_RANK = 8
DEFAULT_MAX_LORAS = 4 * 3
@@ -54,7 +54,7 @@ async def requests_processing_time(llm, lora_requests: list[LoRARequest]) -> flo
@pytest.mark.asyncio
async def test_add_lora(chatglm3_lora_files):
async def test_add_lora(qwen3_lora_files):
"""
The add_lora function is used to preload some LoRA adapters into the
engine in anticipation of future requests using these adapters. To test
@@ -64,7 +64,7 @@ async def test_add_lora(chatglm3_lora_files):
We measure the request processing time in both cases and expect the time
to be lesser in the case with add_lora() calls.
"""
lora_requests: list[LoRARequest] = get_lora_requests(chatglm3_lora_files)
lora_requests: list[LoRARequest] = get_lora_requests(qwen3_lora_files)
max_loras = len(set([lr.lora_int_id for lr in lora_requests]))
# Create engine in eager-mode. Due to high max_loras, the CI can
@@ -76,7 +76,6 @@ async def test_add_lora(chatglm3_lora_files):
max_lora_rank=LORA_RANK,
max_model_len=128,
gpu_memory_utilization=0.8, # avoid OOM
trust_remote_code=True,
enforce_eager=True,
)
@@ -87,6 +87,7 @@ def test_kv_sharing_fast_prefill(
llm = LLM(
model="google/gemma-3n-E2B-it",
max_model_len=16384,
enforce_eager=enforce_eager,
compilation_config=compilation_config,
seed=SEED,