[perf] xllm_fused_qknorm_rope.so compiled+wired, xllm_cache

This commit is contained in:
root
2026-09-01 06:36:44 +00:00
parent 0d88ac4b62
commit b168ff9e2d
19 changed files with 3749 additions and 880 deletions

View File

@@ -119,6 +119,7 @@ class RequestMetrics:
scheduler_time: Optional[float] = None
model_forward_time: Optional[float] = None
model_execute_time: Optional[float] = None
num_cached_tokens: Optional[int] = None
class SequenceDataDelta(
@@ -527,6 +528,11 @@ class Sequence:
self._last_output_token_ids_offset = output_len
# Return new tokens
if num_new_tokens == 0:
# During chunked prefill steps with no output yet, num_new_tokens=0.
# Python's [-0:] == [0:] returns the ENTIRE list — guard against this.
return []
if num_new_tokens == 1:
# Optimization for single decode token case
# (which is what we have most of the time)
@@ -935,6 +941,12 @@ class SequenceGroupMetadataDelta(
computed_block_nums: Optional[List[int]] = None
state: Optional[SequenceGroupState] = msgspec.field(
default_factory=lambda: SequenceGroupState())
# BI100 hybrid prefix-cache actions. Fields are appended for msgspec wire
# compatibility with the pre-existing array-like structure.
gdn_restore_key: Optional[Tuple[int, bytes]] = None
gdn_capture_points: Optional[List[Tuple[int, Tuple[int, bytes]]]] = None
gdn_evict_keys: Optional[List[Tuple[int, bytes]]] = None
gdn_segment_offsets: Optional[List[int]] = None
class SequenceGroupMetadata(
@@ -1000,6 +1012,12 @@ class SequenceGroupMetadata(
# Zero means speculative decoding is disabled for some reasons.
# TODO: We should maintain this states out of the sequence group.
num_speculative_tokens: Optional[int] = None
# BI100 hybrid prefix-cache actions. These are internal scheduler-to-worker
# metadata and never surface through the OpenAI API.
gdn_restore_key: Optional[Tuple[int, bytes]] = None
gdn_capture_points: Optional[List[Tuple[int, Tuple[int, bytes]]]] = None
gdn_evict_keys: Optional[List[Tuple[int, bytes]]] = None
gdn_segment_offsets: Optional[List[int]] = None
def __post_init__(self):
if self.seq_data is not None and self.token_chunk_size is None:
@@ -1046,6 +1064,14 @@ class SequenceGroupMetadata(
self.token_chunk_size = sequence_group_metadata_delta.token_chunk_size
self.do_sample = sequence_group_metadata_delta.do_sample
self.is_prompt = sequence_group_metadata_delta.is_prompt
self.computed_block_nums = (
sequence_group_metadata_delta.computed_block_nums)
self.gdn_restore_key = sequence_group_metadata_delta.gdn_restore_key
self.gdn_capture_points = (
sequence_group_metadata_delta.gdn_capture_points)
self.gdn_evict_keys = sequence_group_metadata_delta.gdn_evict_keys
self.gdn_segment_offsets = (
sequence_group_metadata_delta.gdn_segment_offsets)
def finish_step(self) -> None:
assert self.state is not None