diff --git a/vllm/v1/attention/backends/mla/indexer.py b/vllm/v1/attention/backends/mla/indexer.py index 8af81c8d29..00d14ceeb7 100644 --- a/vllm/v1/attention/backends/mla/indexer.py +++ b/vllm/v1/attention/backends/mla/indexer.py @@ -1261,7 +1261,6 @@ class DeepseekV32IndexerMetadataBuilder(AttentionMetadataBuilder): assert num_decode_tokens + num_prefill_tokens == num_tokens compressed_slot_mapping = slot_mapping - compressed_seq_lens = seq_lens indexer_block_table = block_table if self.compress_ratio > 1: kernel_block_size = self.kernel_block_size @@ -1297,10 +1296,12 @@ class DeepseekV32IndexerMetadataBuilder(AttentionMetadataBuilder): self.compressed_slot_mapping_buffer[:padded_num_tokens], dim=0, ) - compressed_seq_lens = seq_lens // self.compress_ratio prefill_metadata = None if num_prefills > 0: + compressed_seq_lens = ( + seq_lens // self.compress_ratio if self.compress_ratio > 1 else seq_lens + ) # This CPU value is an upper bound for async-spec extend rows. It # is safe for chunking/allocation because CUDA metadata below is # built from exact device seq_lens and gather ignores the tail. diff --git a/vllm/v1/attention/backends/mla/sparse_swa.py b/vllm/v1/attention/backends/mla/sparse_swa.py index 6fe20e0e69..7b07dae71c 100644 --- a/vllm/v1/attention/backends/mla/sparse_swa.py +++ b/vllm/v1/attention/backends/mla/sparse_swa.py @@ -613,7 +613,7 @@ class DeepseekSparseSWAMetadataBuilder(AttentionMetadataBuilder): ) is_valid_token = self.is_valid_token[: slot_mapping.shape[0]] - is_valid_token.copy_(slot_mapping >= 0) + torch.ge(slot_mapping, 0, out=is_valid_token) if replay_start is None: # Graph captures build without it; their dummy batches replay nothing. replay_start = self.no_replay_start