fix(fa3): skip scheduler_metadata precompute under DP attention (#24632)

This commit is contained in:
YAMY
2026-05-08 16:19:20 -07:00
committed by GitHub
parent 62c2e091f6
commit 6971a03fe6
2 changed files with 29 additions and 3 deletions
@@ -224,6 +224,16 @@ class FlashAttentionBackend(AttentionBackend):
and server_args.disable_radix_cache
)
# Skip the FA3 scheduler_metadata precompute (PR #21104) under DP
# attention. The precomputed buffer can become inconsistent with the
# num_splits the C++ mha_fwd kernel derives from live cache_seqlens
# during decode, leading to an OOB read in the split-KV combine kernel
# (flash_fwd_combine_launch_template.h:52). Leaving scheduler_metadata
# unset uses the existing per-layer metadata path.
self._disable_scheduler_metadata_precompute = bool(
getattr(server_args, "enable_dp_attention", False)
)
def _compute_scheduler_metadata(
self, batch_size, max_seq_len_k, cache_seqlens, cu_seqlens_q
):
@@ -233,6 +243,8 @@ class FlashAttentionBackend(AttentionBackend):
"""
if self._get_scheduler_metadata is None or self.use_mla:
return None
if self._disable_scheduler_metadata_precompute:
return None
# Always use window_size=(-1, -1) because scheduler_metadata is only
# consumed by non-SWA layers (SWA layers skip it in forward_decode).
return self._get_scheduler_metadata(