From 95af481818b29552d0d38a8d91259f2b69d44d50 Mon Sep 17 00:00:00 2001 From: Chukwuma Nwaugha Date: Thu, 11 Dec 2025 18:31:27 +0000 Subject: [PATCH 1/5] simplify the returned value from generate_beam_search > includes cleaning up wrap_device, generate_prompt_perplexity and get_image_asset Signed-off-by: Chukwuma Nwaugha --- tests/conftest.py | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 9f811d5d8db2a..e4c2384e874f1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -58,8 +58,7 @@ from vllm.distributed import ( initialize_model_parallel, ) from vllm.logger import init_logger -from vllm.logprobs import Logprob -from vllm.multimodal.base import MediaWithBytes +from vllm.logprobs import LogprobsOnePosition from vllm.multimodal.utils import fetch_image from vllm.outputs import RequestOutput from vllm.sampling_params import BeamSearchParams @@ -93,8 +92,7 @@ PromptVideoInput = _PromptMultiModalInput[np.ndarray] def _read_prompts(filename: str) -> list[str]: with open(filename) as f: - prompts = f.readlines() - return prompts + return f.readlines() class ImageAssetPrompts(TypedDict): @@ -267,7 +265,7 @@ class HfRunner: if isinstance(x, dict): return {k: self.wrap_device(v, device) for k, v in x.items()} - if hasattr(x, "device") and x.device.type == device: + if hasattr(x.device, "type") and x.device.type == device: return x return x.to(device) @@ -993,8 +991,8 @@ class VllmRunner: perplexities = [] for output in outputs: - output = cast(TokensTextLogprobsPromptLogprobs, output) - token_datas = cast(list[dict[int, Logprob] | None], output[3]) + assert isinstance(output, TokensTextLogprobsPromptLogprobs) + token_datas = cast(list[LogprobsOnePosition | None], output[3]) assert token_datas[0] is None token_log_probs = [] for token_data in token_datas[1:]: @@ -1025,12 +1023,11 @@ class VllmRunner: BeamSearchParams(beam_width=beam_width, max_tokens=max_tokens), concurrency_limit=concurrency_limit, ) - returned_outputs = [] - for output in outputs: - token_ids = [x.tokens for x in output.sequences] - texts = [x.text for x in output.sequences] - returned_outputs.append((token_ids, texts)) - return returned_outputs + + return [ + ([x.tokens for x in output.sequences], [x.text for x in output.sequences]) + for output in outputs + ] def classify(self, prompts: list[str]) -> list[list[float]]: req_outputs = self.llm.classify(prompts) @@ -1405,11 +1402,7 @@ class LocalAssetServer: return f"{self.base_url}/{name}" def get_image_asset(self, name: str) -> Image.Image: - image = fetch_image(self.url_for(name)) - # Unwrap MediaWithBytes if present - if isinstance(image, MediaWithBytes): - image = image.media - return image + return fetch_image(self.url_for(name)) @pytest.fixture(scope="session") From dc763bbbe7352fed26d80af0d879f57208d3073e Mon Sep 17 00:00:00 2001 From: Chukwuma Nwaugha <20521315+nwaughachukwuma@users.noreply.github.com> Date: Thu, 11 Dec 2025 18:41:08 +0000 Subject: [PATCH 2/5] Update tests/conftest.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Chukwuma Nwaugha <20521315+nwaughachukwuma@users.noreply.github.com> --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index e4c2384e874f1..2ec5bd4f43a1b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -265,7 +265,7 @@ class HfRunner: if isinstance(x, dict): return {k: self.wrap_device(v, device) for k, v in x.items()} - if hasattr(x.device, "type") and x.device.type == device: + if hasattr(x, "device") and x.device.type == device: return x return x.to(device) From b1bb0de09f176d4d8a139ab2250ab2f38e60f953 Mon Sep 17 00:00:00 2001 From: Chukwuma Nwaugha Date: Thu, 11 Dec 2025 20:49:05 +0000 Subject: [PATCH 3/5] cleanup Signed-off-by: Chukwuma Nwaugha --- tests/conftest.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index d8ffa8b34f8dd..19ba271ff6ed5 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -992,9 +992,11 @@ class VllmRunner: perplexities = [] for output in outputs: assert isinstance(output, TokensTextLogprobsPromptLogprobs) + token_datas = cast(list[LogprobsOnePosition | None], output[3]) assert token_datas[0] is None token_log_probs = [] + for token_data in token_datas[1:]: assert token_data is not None assert len(token_data) == 1 From 6cb031a2a90f43ac6a91109b2c3d203b5b6946e3 Mon Sep 17 00:00:00 2001 From: Chukwuma Nwaugha Date: Sun, 14 Dec 2025 13:03:25 +0000 Subject: [PATCH 4/5] Simplify type assertion for output in VllmRunner Signed-off-by: Chukwuma Nwaugha --- tests/conftest.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 5b44847168396..17dc87b861ed8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1018,8 +1018,7 @@ class VllmRunner: perplexities = [] for output in outputs: - assert isinstance(output, TokensTextLogprobsPromptLogprobs) - + output = cast(TokensTextLogprobsPromptLogprobs, output) token_datas = cast(list[LogprobsOnePosition | None], output[3]) assert token_datas[0] is None token_log_probs = [] From 101c957bff1c1174b63f063b6383505f8862826b Mon Sep 17 00:00:00 2001 From: Chukwuma Nwaugha Date: Wed, 17 Dec 2025 16:29:01 +0000 Subject: [PATCH 5/5] Move LogprobsOnePosition import to TYPE_CHECKING block in conftest.py Signed-off-by: Chukwuma Nwaugha --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 17dc87b861ed8..b571bf94e8bd8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -58,7 +58,6 @@ from vllm.distributed import ( initialize_model_parallel, ) from vllm.logger import init_logger -from vllm.logprobs import LogprobsOnePosition from vllm.multimodal.utils import fetch_image from vllm.outputs import RequestOutput from vllm.sampling_params import BeamSearchParams @@ -70,6 +69,7 @@ from torch._inductor.utils import fresh_cache if TYPE_CHECKING: + from vllm.logprobs import LogprobsOnePosition from transformers import PreTrainedTokenizer, PreTrainedTokenizerFast from transformers.generation.utils import GenerateOutput