main
py 45 lines 1.17 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4 from dataclasses import dataclass
5 from typing import Any
6
7 from vllm.v1.attention.backend import AttentionBackend, CommonAttentionMetadata
8 from vllm.v1.attention.backends.mamba_attn import (
9 BaseMambaAttentionMetadata,
10 BaseMambaAttentionMetadataBuilder,
11 )
12
13
14 class Mamba1AttentionBackend(AttentionBackend):
15 @staticmethod
16 def get_name() -> str:
17 return "MAMBA1_ATTN"
18
19 @staticmethod
20 def get_builder_cls() -> type["Mamba1AttentionMetadataBuilder"]:
21 return Mamba1AttentionMetadataBuilder
22
23 @classmethod
24 def is_ssm(cls) -> bool:
25 return True
26
27
28 @dataclass
29 class Mamba1AttentionMetadata(BaseMambaAttentionMetadata):
30 pass
31
32
33 class Mamba1AttentionMetadataBuilder(
34 BaseMambaAttentionMetadataBuilder[Mamba1AttentionMetadata]
35 ):
36 metadata_cls = Mamba1AttentionMetadata
37
38 def build(
39 self,
40 common_prefix_len: int,
41 common_attn_metadata: CommonAttentionMetadata,
42 fast_build: bool = False,
43 **kwargs: Any,
44 ) -> Mamba1AttentionMetadata:
45 return self._compute_common_metadata(common_attn_metadata)