Use trtllm mha decode kernel for target_verify in speculative decoding (#13976)
Co-authored-by: Kangyan-Zhou <zky314343421@gmail.com>
This commit is contained in:
co-authored by
Kangyan-Zhou
parent
5443db8759
commit
7cb04dc0e5
@@ -377,6 +377,7 @@ class TRTLLMHAAttnBackend(FlashInferAttnBackend):
|
|||||||
]
|
]
|
||||||
page_indices //= self.page_size
|
page_indices //= self.page_size
|
||||||
metadata.page_table[:, :max_seq_pages].copy_(page_indices)
|
metadata.page_table[:, :max_seq_pages].copy_(page_indices)
|
||||||
|
metadata.max_seq_len_q = self.speculative_num_draft_tokens
|
||||||
elif forward_mode.is_draft_extend():
|
elif forward_mode.is_draft_extend():
|
||||||
metadata = self.draft_extend_metadata[bs]
|
metadata = self.draft_extend_metadata[bs]
|
||||||
metadata.cache_seqlens_int32.copy_(seq_lens)
|
metadata.cache_seqlens_int32.copy_(seq_lens)
|
||||||
@@ -614,24 +615,42 @@ class TRTLLMHAAttnBackend(FlashInferAttnBackend):
|
|||||||
bmm1_scale = q_scale * k_scale * layer.scaling
|
bmm1_scale = q_scale * k_scale * layer.scaling
|
||||||
bmm2_scale = 1.0
|
bmm2_scale = 1.0
|
||||||
|
|
||||||
o = flashinfer.prefill.trtllm_batch_context_with_kv_cache(
|
if forward_batch.forward_mode.is_target_verify():
|
||||||
query=q,
|
o = flashinfer.decode.trtllm_batch_decode_with_kv_cache(
|
||||||
kv_cache=kv_cache,
|
query=q,
|
||||||
workspace_buffer=self.workspace_buffer,
|
kv_cache=kv_cache,
|
||||||
block_tables=self.forward_metadata.page_table,
|
workspace_buffer=self.workspace_buffer,
|
||||||
seq_lens=self.forward_metadata.cache_seqlens_int32,
|
block_tables=self.forward_metadata.page_table,
|
||||||
max_q_len=self.forward_metadata.max_seq_len_q,
|
seq_lens=self.forward_metadata.cache_seqlens_int32,
|
||||||
max_kv_len=self.max_context_len,
|
max_seq_len=self.max_context_len,
|
||||||
bmm1_scale=bmm1_scale,
|
bmm1_scale=bmm1_scale,
|
||||||
bmm2_scale=bmm2_scale,
|
bmm2_scale=bmm2_scale,
|
||||||
batch_size=forward_batch.batch_size,
|
window_left=layer.sliding_window_size,
|
||||||
cum_seq_lens_q=self.forward_metadata.cu_seqlens_q,
|
# TODO: add attention_sink operation or nvfp4 scale factor if needed
|
||||||
cum_seq_lens_kv=self.forward_metadata.cu_seqlens_k,
|
sinks=attention_sink,
|
||||||
window_left=layer.sliding_window_size,
|
out_dtype=self.q_data_type, # model_runner.dtype
|
||||||
# TODO: add attention_sink operation or nvfp4 scale factor if needed
|
q_len_per_req=self.forward_metadata.max_seq_len_q,
|
||||||
sinks=attention_sink,
|
)
|
||||||
out_dtype=self.q_data_type, # model_runner.dtype
|
else:
|
||||||
)
|
|
||||||
|
o = flashinfer.prefill.trtllm_batch_context_with_kv_cache(
|
||||||
|
query=q,
|
||||||
|
kv_cache=kv_cache,
|
||||||
|
workspace_buffer=self.workspace_buffer,
|
||||||
|
block_tables=self.forward_metadata.page_table,
|
||||||
|
seq_lens=self.forward_metadata.cache_seqlens_int32,
|
||||||
|
max_q_len=self.forward_metadata.max_seq_len_q,
|
||||||
|
max_kv_len=self.max_context_len,
|
||||||
|
bmm1_scale=bmm1_scale,
|
||||||
|
bmm2_scale=bmm2_scale,
|
||||||
|
batch_size=forward_batch.batch_size,
|
||||||
|
cum_seq_lens_q=self.forward_metadata.cu_seqlens_q,
|
||||||
|
cum_seq_lens_kv=self.forward_metadata.cu_seqlens_k,
|
||||||
|
window_left=layer.sliding_window_size,
|
||||||
|
# TODO: add attention_sink operation or nvfp4 scale factor if needed
|
||||||
|
sinks=attention_sink,
|
||||||
|
out_dtype=self.q_data_type, # model_runner.dtype
|
||||||
|
)
|
||||||
|
|
||||||
return o.view(-1, layer.tp_q_head_num * layer.head_dim)
|
return o.view(-1, layer.tp_q_head_num * layer.head_dim)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user