[Refactor] Clean up radix cache related API (#7303)
Co-authored-by: Zhiqiang Xie <xiezhq@stanford.edu>
This commit is contained in:
@@ -1,5 +1,31 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Any, List, Tuple
|
||||
from typing import TYPE_CHECKING, Any, List, NamedTuple, Tuple
|
||||
|
||||
import torch
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from sglang.srt.managers.schedule_batch import Req
|
||||
else:
|
||||
Req = Any # Placeholder for Req type when not type checking
|
||||
|
||||
|
||||
class MatchResult(NamedTuple):
|
||||
"""Result of a prefix match operation.
|
||||
|
||||
Attributes:
|
||||
device_indices : Indices of the KV cache on the device matched by common prefix.
|
||||
last_device_node: The last TreeNode on the device that was matched.
|
||||
last_host_node : The last TreeNode on the host that was matched.
|
||||
Note that if HiCache is not enabled,
|
||||
this **must** be the same as `last_device_node`.
|
||||
host_hit_length : Length of the KV cache hit on the host, if applicable.
|
||||
0 if HiCache is not enabled.
|
||||
"""
|
||||
|
||||
device_indices: torch.Tensor
|
||||
last_device_node: Any
|
||||
last_host_node: Any
|
||||
host_hit_length: int = 0
|
||||
|
||||
|
||||
class BasePrefixCache(ABC):
|
||||
@@ -10,19 +36,15 @@ class BasePrefixCache(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def match_prefix(self, **kwargs) -> Tuple[List[int], int]:
|
||||
def match_prefix(self, key: List[int], **kwargs) -> MatchResult:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def insert(self, **kwargs):
|
||||
def cache_finished_req(self, req: Req, **kwargs):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def cache_finished_req(self, **kwargs):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def cache_unfinished_req(self, **kwargs):
|
||||
def cache_unfinished_req(self, req: Req, **kwargs):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
@@ -49,5 +71,27 @@ class BasePrefixCache(ABC):
|
||||
def pretty_print(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
def init_load_back(
|
||||
self,
|
||||
last_host_node: Any,
|
||||
host_hit_length: int,
|
||||
) -> Tuple[torch.Tensor, Any]:
|
||||
"""
|
||||
Preparing KV cache loading from host to device.
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def ready_to_load_host_cache(self) -> Any:
|
||||
"""
|
||||
Notify the cache controller to start the KV cache loading
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def check_hicache_events(self) -> Any:
|
||||
"""
|
||||
Check HiCache related activities to update radix tree and synchronize across TP workers if needed
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def take_events(self):
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user