refactor: cleanup vision attention related codes (#13228)
Signed-off-by: Xinyuan Tong <xinyuantong.cs@gmail.com> Co-authored-by: alisonshao <54658187+alisonshao@users.noreply.github.com> Co-authored-by: Mick <mickjagger19@icloud.com> Co-authored-by: Baizhou Zhang <sobereddiezhang@gmail.com> Co-authored-by: Kangyan-Zhou <zky314343421@gmail.com>
This commit is contained in:
co-authored by
alisonshao
Mick
Baizhou Zhang
Kangyan-Zhou
parent
8e3663d4e8
commit
b1c688fba2
@@ -141,7 +141,6 @@ class CLIPEncoderLayer(nn.Module):
|
|||||||
config: CLIPVisionConfig,
|
config: CLIPVisionConfig,
|
||||||
act_layer: Type[nn.Module] = QuickGELU,
|
act_layer: Type[nn.Module] = QuickGELU,
|
||||||
norm_layer: Type[nn.Module] = None,
|
norm_layer: Type[nn.Module] = None,
|
||||||
attn_implementation: Optional[str] = "sdpa",
|
|
||||||
quant_config: Optional[QuantizationConfig] = None,
|
quant_config: Optional[QuantizationConfig] = None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -150,22 +149,11 @@ class CLIPEncoderLayer(nn.Module):
|
|||||||
norm_layer = partial(nn.LayerNorm, eps=config.layer_norm_eps)
|
norm_layer = partial(nn.LayerNorm, eps=config.layer_norm_eps)
|
||||||
self.layer_norm1 = norm_layer(config.hidden_size)
|
self.layer_norm1 = norm_layer(config.hidden_size)
|
||||||
self.layer_norm2 = norm_layer(config.hidden_size)
|
self.layer_norm2 = norm_layer(config.hidden_size)
|
||||||
if attn_implementation == "sdpa":
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
elif attn_implementation == "flash_attention_2":
|
|
||||||
qkv_backend = "triton_attn"
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
elif attn_implementation == "eager":
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
softmax_in_single_precision = True
|
|
||||||
self.self_attn = VisionAttention(
|
self.self_attn = VisionAttention(
|
||||||
embed_dim=config.hidden_size,
|
embed_dim=config.hidden_size,
|
||||||
num_heads=config.num_attention_heads,
|
num_heads=config.num_attention_heads,
|
||||||
projection_size=config.hidden_size,
|
projection_size=config.hidden_size,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
qkv_backend=qkv_backend,
|
|
||||||
softmax_in_single_precision=softmax_in_single_precision,
|
|
||||||
flatten_batch=True,
|
flatten_batch=True,
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("self_attn", prefix),
|
prefix=add_prefix("self_attn", prefix),
|
||||||
@@ -233,7 +221,6 @@ class CLIPEncoder(nn.Module):
|
|||||||
CLIPEncoderLayer(
|
CLIPEncoderLayer(
|
||||||
config=config,
|
config=config,
|
||||||
norm_layer=norm_layer,
|
norm_layer=norm_layer,
|
||||||
attn_implementation="sdpa",
|
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix(f"layers.{layer_idx}", prefix),
|
prefix=add_prefix(f"layers.{layer_idx}", prefix),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -532,8 +532,6 @@ class VisionTransformerBlock(nn.Module):
|
|||||||
num_heads=num_heads,
|
num_heads=num_heads,
|
||||||
projection_size=dim,
|
projection_size=dim,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
qkv_backend="sdpa",
|
|
||||||
softmax_in_single_precision=False,
|
|
||||||
dropout=attn_drop,
|
dropout=attn_drop,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -154,21 +154,13 @@ class DotsVisionBlock(nn.Module):
|
|||||||
config: DotsVisionConfig,
|
config: DotsVisionConfig,
|
||||||
quant_config: Optional[QuantizationConfig] = None,
|
quant_config: Optional[QuantizationConfig] = None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
attn_implementation: str = "flash_attention_2",
|
|
||||||
):
|
):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
if attn_implementation == "flash_attention_2":
|
|
||||||
qkv_backend = "fa3"
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
else:
|
|
||||||
raise RuntimeError("Unimplemented")
|
|
||||||
self.attn = VisionAttention(
|
self.attn = VisionAttention(
|
||||||
embed_dim=config.embed_dim,
|
embed_dim=config.embed_dim,
|
||||||
num_heads=config.num_attention_heads,
|
num_heads=config.num_attention_heads,
|
||||||
projection_size=config.embed_dim,
|
projection_size=config.embed_dim,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
qkv_backend=qkv_backend,
|
|
||||||
softmax_in_single_precision=softmax_in_single_precision,
|
|
||||||
flatten_batch=True,
|
flatten_batch=True,
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("attn", prefix),
|
prefix=add_prefix("attn", prefix),
|
||||||
@@ -211,9 +203,7 @@ class DotsVisionTransformer(PreTrainedModel):
|
|||||||
_num_hidden_layers = config.num_hidden_layers
|
_num_hidden_layers = config.num_hidden_layers
|
||||||
self.blocks = nn.ModuleList(
|
self.blocks = nn.ModuleList(
|
||||||
[
|
[
|
||||||
DotsVisionBlock(
|
DotsVisionBlock(config, quant_config, f"blocks.{i}")
|
||||||
config, quant_config, f"blocks.{i}", config.attn_implementation
|
|
||||||
)
|
|
||||||
for i in range(_num_hidden_layers)
|
for i in range(_num_hidden_layers)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -104,7 +104,6 @@ class Glm4vVisionBlock(nn.Module):
|
|||||||
dim: int,
|
dim: int,
|
||||||
intermediate_dim: int,
|
intermediate_dim: int,
|
||||||
num_heads: int,
|
num_heads: int,
|
||||||
attn_implementation: Optional[str] = None,
|
|
||||||
quant_config: Optional[QuantizationConfig] = None,
|
quant_config: Optional[QuantizationConfig] = None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
num_dummy_heads: int = 0,
|
num_dummy_heads: int = 0,
|
||||||
@@ -114,37 +113,13 @@ class Glm4vVisionBlock(nn.Module):
|
|||||||
self.norm1 = RMSNorm(dim, eps=rms_norm_eps)
|
self.norm1 = RMSNorm(dim, eps=rms_norm_eps)
|
||||||
self.norm2 = RMSNorm(dim, eps=rms_norm_eps)
|
self.norm2 = RMSNorm(dim, eps=rms_norm_eps)
|
||||||
|
|
||||||
if attn_implementation is None:
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = None
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "sdpa":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "flash_attention_2":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "triton_attn"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "eager":
|
|
||||||
softmax_in_single_precision = True
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "flash_attention_3":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "fa3"
|
|
||||||
flatten_batch = True
|
|
||||||
|
|
||||||
self.attn = VisionAttention(
|
self.attn = VisionAttention(
|
||||||
embed_dim=dim,
|
embed_dim=dim,
|
||||||
num_heads=num_heads,
|
num_heads=num_heads,
|
||||||
projection_size=dim,
|
projection_size=dim,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
rotary_embed="normal",
|
|
||||||
proj_bias=True,
|
proj_bias=True,
|
||||||
qkv_backend=qkv_backend,
|
flatten_batch=True,
|
||||||
softmax_in_single_precision=softmax_in_single_precision,
|
|
||||||
flatten_batch=flatten_batch,
|
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("attn", prefix),
|
prefix=add_prefix("attn", prefix),
|
||||||
num_dummy_heads=num_dummy_heads,
|
num_dummy_heads=num_dummy_heads,
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ class Idefics2EncoderLayer(nn.Module):
|
|||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
dropout=config.attention_dropout,
|
dropout=config.attention_dropout,
|
||||||
qkv_backend="sdpa",
|
|
||||||
softmax_in_single_precision=True,
|
softmax_in_single_precision=True,
|
||||||
flatten_batch=False,
|
flatten_batch=False,
|
||||||
prefix=add_prefix("self_attn", prefix),
|
prefix=add_prefix("self_attn", prefix),
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ class InternAttention(nn.Module):
|
|||||||
self.scale = self.head_dim**-0.5
|
self.scale = self.head_dim**-0.5
|
||||||
|
|
||||||
self.attn = VisionAttention(
|
self.attn = VisionAttention(
|
||||||
qkv_backend="fa3",
|
|
||||||
embed_dim=self.embed_dim,
|
embed_dim=self.embed_dim,
|
||||||
num_heads=self.num_heads,
|
num_heads=self.num_heads,
|
||||||
projection_size=self.embed_dim,
|
projection_size=self.embed_dim,
|
||||||
|
|||||||
@@ -202,9 +202,6 @@ class MllamaVisionEncoderLayer(nn.Module):
|
|||||||
self.hidden_size,
|
self.hidden_size,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
dropout=0.0,
|
|
||||||
qkv_backend="sdpa",
|
|
||||||
softmax_in_single_precision=False,
|
|
||||||
flatten_batch=False,
|
flatten_batch=False,
|
||||||
prefix=add_prefix("self_attn", prefix),
|
prefix=add_prefix("self_attn", prefix),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -173,9 +173,6 @@ class Llama4VisionEncoderLayer(nn.Module):
|
|||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
# vision_model is explicitly ignored in Maverick-17B-128E-Instruct-FP8
|
# vision_model is explicitly ignored in Maverick-17B-128E-Instruct-FP8
|
||||||
quant_config=None,
|
quant_config=None,
|
||||||
dropout=0.0,
|
|
||||||
qkv_backend="sdpa",
|
|
||||||
softmax_in_single_precision=False,
|
|
||||||
flatten_batch=False,
|
flatten_batch=False,
|
||||||
prefix=add_prefix("self_attn", prefix),
|
prefix=add_prefix("self_attn", prefix),
|
||||||
qkv_bias=True,
|
qkv_bias=True,
|
||||||
|
|||||||
@@ -106,7 +106,6 @@ class PixtralHFTransformerBlock(nn.Module):
|
|||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
dropout=0.0,
|
dropout=0.0,
|
||||||
use_context_forward=False,
|
use_context_forward=False,
|
||||||
softmax_in_single_precision=False,
|
|
||||||
flatten_batch=False,
|
flatten_batch=False,
|
||||||
prefix=f"{prefix}.attention",
|
prefix=f"{prefix}.attention",
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -111,7 +111,6 @@ class Qwen2_5_VisionBlock(nn.Module):
|
|||||||
num_heads: int,
|
num_heads: int,
|
||||||
hidden_act="silu",
|
hidden_act="silu",
|
||||||
norm_layer: Type[nn.Module] = None,
|
norm_layer: Type[nn.Module] = None,
|
||||||
attn_implementation: Optional[str] = None,
|
|
||||||
quant_config: Optional[QuantizationConfig] = None,
|
quant_config: Optional[QuantizationConfig] = None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
num_dummy_heads: int = 0,
|
num_dummy_heads: int = 0,
|
||||||
@@ -121,37 +120,13 @@ class Qwen2_5_VisionBlock(nn.Module):
|
|||||||
self.norm1 = RMSNorm(dim, eps=rms_norm_eps)
|
self.norm1 = RMSNorm(dim, eps=rms_norm_eps)
|
||||||
self.norm2 = RMSNorm(dim, eps=rms_norm_eps)
|
self.norm2 = RMSNorm(dim, eps=rms_norm_eps)
|
||||||
|
|
||||||
if attn_implementation is None:
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = None
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "sdpa":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "flash_attention_2":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "triton_attn"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "eager":
|
|
||||||
softmax_in_single_precision = True
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "flash_attention_3":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "fa3"
|
|
||||||
flatten_batch = True
|
|
||||||
|
|
||||||
self.attn = VisionAttention(
|
self.attn = VisionAttention(
|
||||||
embed_dim=dim,
|
embed_dim=dim,
|
||||||
num_heads=num_heads,
|
num_heads=num_heads,
|
||||||
projection_size=dim,
|
projection_size=dim,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
rotary_embed="normal",
|
|
||||||
proj_bias=True,
|
proj_bias=True,
|
||||||
qkv_backend=qkv_backend,
|
flatten_batch=True,
|
||||||
softmax_in_single_precision=softmax_in_single_precision,
|
|
||||||
flatten_batch=flatten_batch,
|
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("attn", prefix),
|
prefix=add_prefix("attn", prefix),
|
||||||
num_dummy_heads=num_dummy_heads,
|
num_dummy_heads=num_dummy_heads,
|
||||||
|
|||||||
@@ -127,7 +127,6 @@ class Qwen2VisionBlock(nn.Module):
|
|||||||
mlp_ratio: float,
|
mlp_ratio: float,
|
||||||
act_layer: Type[nn.Module] = QuickGELU,
|
act_layer: Type[nn.Module] = QuickGELU,
|
||||||
norm_layer: Type[nn.Module] = None,
|
norm_layer: Type[nn.Module] = None,
|
||||||
attn_implementation: Optional[str] = "sdpa",
|
|
||||||
quant_config: Optional[QuantizationConfig] = None,
|
quant_config: Optional[QuantizationConfig] = None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -137,23 +136,12 @@ class Qwen2VisionBlock(nn.Module):
|
|||||||
self.norm1 = norm_layer(dim)
|
self.norm1 = norm_layer(dim)
|
||||||
self.norm2 = norm_layer(dim)
|
self.norm2 = norm_layer(dim)
|
||||||
mlp_hidden_dim = int(dim * mlp_ratio)
|
mlp_hidden_dim = int(dim * mlp_ratio)
|
||||||
if attn_implementation == "sdpa":
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
elif attn_implementation == "flash_attention_2":
|
|
||||||
qkv_backend = "triton_attn"
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
elif attn_implementation == "eager":
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
softmax_in_single_precision = True
|
|
||||||
|
|
||||||
self.attn = VisionAttention(
|
self.attn = VisionAttention(
|
||||||
embed_dim=dim,
|
embed_dim=dim,
|
||||||
num_heads=num_heads,
|
num_heads=num_heads,
|
||||||
projection_size=dim,
|
projection_size=dim,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
qkv_backend=qkv_backend,
|
|
||||||
softmax_in_single_precision=softmax_in_single_precision,
|
|
||||||
flatten_batch=True,
|
flatten_batch=True,
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("attn", prefix),
|
prefix=add_prefix("attn", prefix),
|
||||||
@@ -333,7 +321,6 @@ class Qwen2VisionTransformer(nn.Module):
|
|||||||
num_heads=num_heads,
|
num_heads=num_heads,
|
||||||
mlp_ratio=mlp_ratio,
|
mlp_ratio=mlp_ratio,
|
||||||
norm_layer=norm_layer,
|
norm_layer=norm_layer,
|
||||||
attn_implementation="sdpa",
|
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix(f"blocks.{i}", prefix),
|
prefix=add_prefix(f"blocks.{i}", prefix),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -61,10 +61,7 @@ class Qwen3OmniMoeAudioEncoderLayer(nn.Module):
|
|||||||
num_heads=config.encoder_attention_heads,
|
num_heads=config.encoder_attention_heads,
|
||||||
projection_size=embed_dim,
|
projection_size=embed_dim,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
rotary_embed="normal",
|
|
||||||
proj_bias=True,
|
proj_bias=True,
|
||||||
qkv_backend="fa3",
|
|
||||||
softmax_in_single_precision=False,
|
|
||||||
flatten_batch=True,
|
flatten_batch=True,
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("attn", prefix),
|
prefix=add_prefix("attn", prefix),
|
||||||
|
|||||||
@@ -130,7 +130,6 @@ class Qwen3_VisionBlock(nn.Module):
|
|||||||
intermediate_dim: int,
|
intermediate_dim: int,
|
||||||
hidden_act="silu",
|
hidden_act="silu",
|
||||||
norm_layer: Optional[Callable[[int], nn.Module]] = None,
|
norm_layer: Optional[Callable[[int], nn.Module]] = None,
|
||||||
attn_implementation: Optional[str] = "sdpa",
|
|
||||||
quant_config: Optional[QuantizationConfig] = None,
|
quant_config: Optional[QuantizationConfig] = None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -140,33 +139,13 @@ class Qwen3_VisionBlock(nn.Module):
|
|||||||
self.norm1 = norm_layer(dim)
|
self.norm1 = norm_layer(dim)
|
||||||
self.norm2 = norm_layer(dim)
|
self.norm2 = norm_layer(dim)
|
||||||
|
|
||||||
if attn_implementation == "sdpa":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "flash_attention_2":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "triton_attn"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "eager":
|
|
||||||
softmax_in_single_precision = True
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
flatten_batch = True
|
|
||||||
elif attn_implementation == "flash_attention_3":
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
qkv_backend = "fa3"
|
|
||||||
flatten_batch = True
|
|
||||||
|
|
||||||
self.attn = VisionAttention(
|
self.attn = VisionAttention(
|
||||||
embed_dim=dim,
|
embed_dim=dim,
|
||||||
num_heads=num_heads,
|
num_heads=num_heads,
|
||||||
projection_size=dim,
|
projection_size=dim,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
rotary_embed="normal",
|
|
||||||
proj_bias=True,
|
proj_bias=True,
|
||||||
qkv_backend=qkv_backend,
|
flatten_batch=True,
|
||||||
softmax_in_single_precision=softmax_in_single_precision,
|
|
||||||
flatten_batch=flatten_batch,
|
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("attn", prefix),
|
prefix=add_prefix("attn", prefix),
|
||||||
)
|
)
|
||||||
@@ -283,7 +262,6 @@ class Qwen3VLMoeVisionModel(nn.Module):
|
|||||||
intermediate_dim=vision_config.intermediate_size,
|
intermediate_dim=vision_config.intermediate_size,
|
||||||
hidden_act=vision_config.hidden_act,
|
hidden_act=vision_config.hidden_act,
|
||||||
norm_layer=norm_layer,
|
norm_layer=norm_layer,
|
||||||
attn_implementation="flash_attention_3",
|
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix(f"blocks.{layer_idx}", prefix),
|
prefix=add_prefix(f"blocks.{layer_idx}", prefix),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ class SiglipEncoderLayer(nn.Module):
|
|||||||
config: SiglipVisionConfig,
|
config: SiglipVisionConfig,
|
||||||
act_layer: Type[nn.Module] = QuickGELU,
|
act_layer: Type[nn.Module] = QuickGELU,
|
||||||
norm_layer: Type[nn.Module] = None,
|
norm_layer: Type[nn.Module] = None,
|
||||||
attn_implementation: Optional[str] = "sdpa",
|
|
||||||
quant_config: Optional[QuantizationConfig] = None,
|
quant_config: Optional[QuantizationConfig] = None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -106,22 +105,11 @@ class SiglipEncoderLayer(nn.Module):
|
|||||||
norm_layer = partial(nn.LayerNorm, eps=config.layer_norm_eps)
|
norm_layer = partial(nn.LayerNorm, eps=config.layer_norm_eps)
|
||||||
self.layer_norm1 = norm_layer(config.hidden_size)
|
self.layer_norm1 = norm_layer(config.hidden_size)
|
||||||
self.layer_norm2 = norm_layer(config.hidden_size)
|
self.layer_norm2 = norm_layer(config.hidden_size)
|
||||||
if attn_implementation == "sdpa":
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
elif attn_implementation == "flash_attention_2":
|
|
||||||
qkv_backend = "triton_attn"
|
|
||||||
softmax_in_single_precision = False
|
|
||||||
elif attn_implementation == "eager":
|
|
||||||
qkv_backend = "sdpa"
|
|
||||||
softmax_in_single_precision = True
|
|
||||||
self.self_attn = VisionAttention(
|
self.self_attn = VisionAttention(
|
||||||
embed_dim=config.hidden_size,
|
embed_dim=config.hidden_size,
|
||||||
num_heads=config.num_attention_heads,
|
num_heads=config.num_attention_heads,
|
||||||
projection_size=config.hidden_size,
|
projection_size=config.hidden_size,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
qkv_backend=qkv_backend,
|
|
||||||
softmax_in_single_precision=softmax_in_single_precision,
|
|
||||||
flatten_batch=True,
|
flatten_batch=True,
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("self_attn", prefix),
|
prefix=add_prefix("self_attn", prefix),
|
||||||
@@ -190,7 +178,6 @@ class SiglipEncoder(nn.Module):
|
|||||||
SiglipEncoderLayer(
|
SiglipEncoderLayer(
|
||||||
config=config,
|
config=config,
|
||||||
norm_layer=norm_layer,
|
norm_layer=norm_layer,
|
||||||
attn_implementation="sdpa",
|
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix(f"layers.{layer_idx}", prefix),
|
prefix=add_prefix(f"layers.{layer_idx}", prefix),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -571,7 +571,6 @@ class Step3VisionAttention(nn.Module):
|
|||||||
self,
|
self,
|
||||||
dim: int,
|
dim: int,
|
||||||
num_heads: int = 16,
|
num_heads: int = 16,
|
||||||
qkv_backend="fa3",
|
|
||||||
quant_config=None,
|
quant_config=None,
|
||||||
prefix: str = "",
|
prefix: str = "",
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -593,9 +592,7 @@ class Step3VisionAttention(nn.Module):
|
|||||||
num_heads=num_heads,
|
num_heads=num_heads,
|
||||||
projection_size=dim,
|
projection_size=dim,
|
||||||
use_qkv_parallel=True,
|
use_qkv_parallel=True,
|
||||||
rotary_embed="normal",
|
|
||||||
proj_bias=True,
|
proj_bias=True,
|
||||||
qkv_backend=qkv_backend,
|
|
||||||
quant_config=quant_config,
|
quant_config=quant_config,
|
||||||
prefix=add_prefix("attn", prefix),
|
prefix=add_prefix("attn", prefix),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user