diff --git a/tests/v1/worker/test_attn_utils.py b/tests/v1/worker/test_attn_utils.py index 1bff5ae466..73a0131915 100644 --- a/tests/v1/worker/test_attn_utils.py +++ b/tests/v1/worker/test_attn_utils.py @@ -77,6 +77,7 @@ def test_get_kv_cache_spec_resolves_hisparse_block_size( layers = {} for name, sizes in zip(specs, [main_sizes, indexer_sizes, [block_size]]): backend = SimpleNamespace( + get_name=lambda name=name: name, customize_spec=AttentionBackend.customize_spec, get_supported_kernel_block_sizes=lambda sizes=sizes: sizes, ) diff --git a/tests/v1/worker/test_gpu_model_runner.py b/tests/v1/worker/test_gpu_model_runner.py index e77d278116..fb4b7d1e58 100644 --- a/tests/v1/worker/test_gpu_model_runner.py +++ b/tests/v1/worker/test_gpu_model_runner.py @@ -298,6 +298,10 @@ def _make_mock_backend_for_kernel_block_size( supported_sizes: list[int | MultipleOf], ): class _MockBackend: + @staticmethod + def get_name(): + return "MOCK" + @staticmethod def get_supported_kernel_block_sizes(): return supported_sizes diff --git a/vllm/v1/attention/backend.py b/vllm/v1/attention/backend.py index 5d661634d7..319b9977f4 100644 --- a/vllm/v1/attention/backend.py +++ b/vllm/v1/attention/backend.py @@ -54,6 +54,9 @@ class MultipleOf: def __init__(self, base: int): self.base = base + def __repr__(self) -> str: + return f"MultipleOf({self.base})" + class AttentionBackend(ABC): """Abstract class for attention backends.""" diff --git a/vllm/v1/worker/utils.py b/vllm/v1/worker/utils.py index ff6d1a5a6f..8200685ee2 100644 --- a/vllm/v1/worker/utils.py +++ b/vllm/v1/worker/utils.py @@ -383,7 +383,13 @@ def select_common_block_size( for size in sorted(candidates, reverse=True): if block_size_is_supported(backends, size): return size - raise ValueError(f"No common block size for {kv_manager_block_size}.") + raise ValueError( + f"No common block size for {kv_manager_block_size} (" + + "; ".join( + f"{b.get_name()}: {b.get_supported_kernel_block_sizes()}" for b in backends + ) + + ")." + ) def allocate_kv_cache(