Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion tests/v1/kv_offload/tiering/test_obj_tier.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ def _make_offloading_config(
world_size: int | None = None,
replicated_layout: bool = False,
is_parallelism_agnostic: bool = False,
blocks_per_chunk: int = 1,
) -> OffloadingConfig:
if world_size is None:
world_size = tp_size
Expand All @@ -64,7 +65,9 @@ def _make_offloading_config(
extra_config={},
engine_id="test-engine",
model=OffloadingModelConfig(name="test/model", dtype="float16"),
cache=OffloadingCacheConfig(tokens_per_hash=16, blocks_per_chunk=1),
cache=OffloadingCacheConfig(
tokens_per_hash=16, blocks_per_chunk=blocks_per_chunk
),
parallel=OffloadingParallelConfig(
rank=rank,
world_size=world_size,
Expand All @@ -83,6 +86,7 @@ def _make_offloading_config(

_OFFLOADING_SPEC = SimpleNamespace(
config=_make_offloading_config(enable_kv_cache_events=False),
blocks_per_chunk=1,
)

_STORE_CONFIG = {
Expand Down Expand Up @@ -221,6 +225,7 @@ def _make_events_spec(enable_kv_cache_events: bool) -> SimpleNamespace:
"""Offloading spec stub with an explicit global KV events flag."""
return SimpleNamespace(
config=_make_offloading_config(enable_kv_cache_events),
blocks_per_chunk=1,
kv_events_config=OffloadingKVEventsConfig(
enable_kv_cache_events=enable_kv_cache_events,
self_describing_kv_events=False,
Expand Down Expand Up @@ -780,6 +785,7 @@ def test_obj_tier_replicated_layout_collapses_mapper_identity():
config=_make_offloading_config(
False, tp_size=2, world_size=2, rank=1, replicated_layout=True
),
blocks_per_chunk=1,
kv_events_config=OffloadingKVEventsConfig(
enable_kv_cache_events=False,
self_describing_kv_events=False,
Expand All @@ -789,6 +795,7 @@ def test_obj_tier_replicated_layout_collapses_mapper_identity():
config=_make_offloading_config(
False, tp_size=4, world_size=4, rank=3, replicated_layout=True
),
blocks_per_chunk=1,
kv_events_config=OffloadingKVEventsConfig(
enable_kv_cache_events=False,
self_describing_kv_events=False,
Expand All @@ -806,3 +813,22 @@ def test_obj_tier_replicated_layout_collapses_mapper_identity():
finally:
tp2_tier.shutdown()
tp4_tier.shutdown()


def test_obj_tier_namespace_includes_blocks_per_chunk():
"""Chunks of different sizes have different layouts, so they must not share
object keys (the fs tier namespaces by chunk size the same way)."""
tiers = []
for blocks_per_chunk in (1, 4):
spec = SimpleNamespace(
config=_make_offloading_config(False, blocks_per_chunk=blocks_per_chunk),
blocks_per_chunk=blocks_per_chunk,
)
tiers.append(_make_tier(offloading_spec=spec)[0])
try:
assert tiers[0]._file_mapper.get_file_name(key(1)) != (
tiers[1]._file_mapper.get_file_name(key(1))
)
finally:
for tier in tiers:
tier.shutdown()
5 changes: 4 additions & 1 deletion vllm/v1/kv_offload/tiering/obj/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,10 @@ def __init__(
root_dir = f"{prefix}/" if prefix else ""
# Opt in; FileMapper enables it only for a parallelism-invariant block.
self._file_mapper = FileMapper.from_offloading_spec(
root_dir, offloading_spec, parallel_agnostic=True
root_dir,
offloading_spec,
blocks_per_file=offloading_spec.blocks_per_chunk,
parallel_agnostic=True,
)
self._next_obj_dev_id: int = 1 # dev_id=0 is reserved for _exists() probes

Expand Down
Loading