[Misc] Name each backend and its kernel block sizes in block-size errors (#58557)
Signed-off-by: Eugenio "Jay" Zuccarelli <11176606+jayzuccarelli@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Eugenio "Jay" Zuccarelli committed
Sep 28, 2026 at 02:33 UTC
004e37ece2fd3f49b5ba471e016668f23d0e7c8b
4 files changed
+15
-1
tests/v1/worker/test_attn_utils.py
+1
@@ -77,6 +77,7 @@ def test_get_kv_cache_spec_resolves_hisparse_block_size(
77
layers = {}
78
for name, sizes in zip(specs, [main_sizes, indexer_sizes, [block_size]]):
79
backend = SimpleNamespace(
80
+ get_name=lambda name=name: name,
81
customize_spec=AttentionBackend.customize_spec,
82
get_supported_kernel_block_sizes=lambda sizes=sizes: sizes,
83
)
tests/v1/worker/test_gpu_model_runner.py
+4
@@ -298,6 +298,10 @@ def _make_mock_backend_for_kernel_block_size(
298
supported_sizes: list[int | MultipleOf],
299
):
300
class _MockBackend:
301
+ @staticmethod
302
+ def get_name():
303
+ return "MOCK"
304
+
305
@staticmethod
306
def get_supported_kernel_block_sizes():
307
return supported_sizes
vllm/v1/attention/backend.py
+3
@@ -54,6 +54,9 @@ class MultipleOf:
54
def __init__(self, base: int):
55
self.base = base
56
57
+ def __repr__(self) -> str:
58
+ return f"MultipleOf({self.base})"
59
+
60
61
class AttentionBackend(ABC):
62
"""Abstract class for attention backends."""
vllm/v1/worker/utils.py
+7
-1
@@ -383,7 +383,13 @@ def select_common_block_size(
383
for size in sorted(candidates, reverse=True):
384
if block_size_is_supported(backends, size):
385
return size
386
- raise ValueError(f"No common block size for {kv_manager_block_size}.")
386
+ raise ValueError(
387
+ f"No common block size for {kv_manager_block_size} ("
388
+ + "; ".join(
389
+ f"{b.get_name()}: {b.get_supported_kernel_block_sizes()}" for b in backends
390
+ )
391
+ + ")."
392
+ )
393
394
395
def allocate_kv_cache(