[attn backend] Make spec_v2 seq_lens_cpu optional in trtllm_mla backend (#26824)
This commit is contained in:
@@ -262,6 +262,10 @@ class TRTLLMMLADecodeMetadata:
|
|||||||
class TRTLLMMLABackend(FlashInferMLAAttnBackend):
|
class TRTLLMMLABackend(FlashInferMLAAttnBackend):
|
||||||
"""TRTLLM MLA attention kernel from flashinfer."""
|
"""TRTLLM MLA attention kernel from flashinfer."""
|
||||||
|
|
||||||
|
# trtllm-gen kernels rebuild metadata from preallocated buffers and never
|
||||||
|
# read seq_lens_cpu / seq_lens_sum; opt out of the D2H sync.
|
||||||
|
needs_cpu_seq_lens: bool = False
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
model_runner: ModelRunner,
|
model_runner: ModelRunner,
|
||||||
@@ -335,6 +339,7 @@ class TRTLLMMLABackend(FlashInferMLAAttnBackend):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.num_draft_tokens = model_runner.server_args.speculative_num_draft_tokens
|
self.num_draft_tokens = model_runner.server_args.speculative_num_draft_tokens
|
||||||
|
self.cuda_graph_custom_mask = None
|
||||||
|
|
||||||
def _calc_padded_blocks(self, max_seq_len: int) -> int:
|
def _calc_padded_blocks(self, max_seq_len: int) -> int:
|
||||||
"""
|
"""
|
||||||
@@ -442,8 +447,20 @@ class TRTLLMMLABackend(FlashInferMLAAttnBackend):
|
|||||||
device=self.device,
|
device=self.device,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if self.num_draft_tokens and not self.skip_prefill:
|
||||||
|
# Worst-case FULL_MASK tree-mask scratch (bool); build_tree writes it
|
||||||
|
# in-place so the gpu_only path needs no seq_lens_sum.
|
||||||
|
self.cuda_graph_custom_mask = torch.zeros(
|
||||||
|
max_num_tokens * (self.max_context_len + self.num_draft_tokens),
|
||||||
|
dtype=torch.bool,
|
||||||
|
device=self.device,
|
||||||
|
)
|
||||||
|
|
||||||
super().init_cuda_graph_state(max_bs, max_num_tokens, kv_indices_buf)
|
super().init_cuda_graph_state(max_bs, max_num_tokens, kv_indices_buf)
|
||||||
|
|
||||||
|
def get_verify_buffers_to_fill_after_draft(self):
|
||||||
|
return [self.cuda_graph_custom_mask, None]
|
||||||
|
|
||||||
def _init_cuda_graph_metadata(
|
def _init_cuda_graph_metadata(
|
||||||
self,
|
self,
|
||||||
bs: int,
|
bs: int,
|
||||||
@@ -1241,6 +1258,10 @@ class TRTLLMMLABackend(FlashInferMLAAttnBackend):
|
|||||||
class TRTLLMMLAMultiStepDraftBackend(FlashInferMLAMultiStepDraftBackend):
|
class TRTLLMMLAMultiStepDraftBackend(FlashInferMLAMultiStepDraftBackend):
|
||||||
"""Multi-step draft backend for TRT-LLM MLA used by EAGLE."""
|
"""Multi-step draft backend for TRT-LLM MLA used by EAGLE."""
|
||||||
|
|
||||||
|
# Per-step draft decode never reads seq_lens_cpu / seq_lens_sum; opt out so
|
||||||
|
# decide_needs_cpu_seq_lens' OR over the backends stays False.
|
||||||
|
needs_cpu_seq_lens: bool = False
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
model_runner: "ModelRunner",
|
model_runner: "ModelRunner",
|
||||||
|
|||||||
Reference in New Issue
Block a user