Files
vllm-omni/tests/worker/test_gpu_generation_model_runner.py
8f869c8ea5 [Refactor] Output Processor Phase 2: separate multimodal output channel (#1601) (#2744)
Signed-off-by: Megha Agarwal <agarwalmegha1308@gmail.com>
Signed-off-by: meghaagr13 <divyanshsinghvi@gmail.com>
Signed-off-by: Taichang Zhou <tzhouam@connect.ust.hk>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com>
Co-authored-by: meghaagr13 <divyanshsinghvi@gmail.com>
Co-authored-by: Boao Shi <aoibosh@connect.hku.hk>
Co-authored-by: Taichang Zhou <tzhouam@connect.ust.hk>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 15:19:14 +08:00

86 lines
2.3 KiB
Python

import pytest
import torch
from vllm_omni.worker.gpu_generation_model_runner import (
ExecuteModelState,
GPUGenerationModelRunner,
)
pytestmark = [pytest.mark.core_model, pytest.mark.cpu]
class _DummyInputBatch:
def __init__(self):
self.req_ids = ["req-1"]
self.req_id_to_index = {"req-1": 0}
self.num_reqs = 1
self.vocab_size = 10
def _make_runner(multimodal_outputs):
runner = object.__new__(GPUGenerationModelRunner)
runner.execute_model_state = ExecuteModelState(
None,
None,
None,
None,
None,
None,
None,
None,
None,
None,
multimodal_outputs,
None,
)
runner.kv_connector_output = None
runner.input_batch = _DummyInputBatch()
runner.use_async_scheduling = False
runner.device = torch.device("cpu")
runner.supports_mm_inputs = False
runner.speculative_config = None
runner.routed_experts_initialized = False
return runner
def test_sample_tokens_tensor_output():
multimodal_outputs = torch.randn(1, 2, 3)
runner = _make_runner(multimodal_outputs)
output = GPUGenerationModelRunner.sample_tokens(runner)
assert len(output.multimodal_outputs) == 1
assert output.multimodal_outputs[0]["model_outputs"].shape == (2, 3)
def test_sample_tokens_list_output():
multimodal_outputs = [torch.randn(2, 1)]
runner = _make_runner(multimodal_outputs)
output = GPUGenerationModelRunner.sample_tokens(runner)
assert len(output.multimodal_outputs) == 1
assert output.multimodal_outputs[0]["model_outputs"].shape == (2, 1)
def test_sample_tokens_list_allows_none_output():
multimodal_outputs = [None]
runner = _make_runner(multimodal_outputs)
output = GPUGenerationModelRunner.sample_tokens(runner)
assert len(output.multimodal_outputs) == 1
assert output.multimodal_outputs[0]["model_outputs"] is None
def test_sample_tokens_dict_output():
multimodal_outputs = {"audio": torch.randn(1, 4), "unused": None}
runner = _make_runner(multimodal_outputs)
output = GPUGenerationModelRunner.sample_tokens(runner)
assert len(output.multimodal_outputs) == 1
assert "audio" in output.multimodal_outputs[0]
assert "unused" not in output.multimodal_outputs[0]
assert output.multimodal_outputs[0]["audio"].shape == (1, 4)