main
py 44 lines 1.54 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3 from typing import Any
4
5 from transformers import PreTrainedConfig
6 from transformers.models.gemma4.configuration_gemma4 import Gemma4VisionConfig
7
8
9 def _init_text_config(self: PreTrainedConfig, **kwargs: Any) -> None:
10 PreTrainedConfig.__init__(self, **kwargs)
11 # DiffusionGemma always uses MoE and K=V sharing for full_attention
12 # layers. The HF reference removed these config fields entirely.
13 if getattr(self, "num_experts", None):
14 self.enable_moe_block = True
15 self.attention_k_eq_v = True
16
17
18 class DiffusionGemmaTextConfig(PreTrainedConfig):
19 model_type = "diffusion_gemma_text"
20
21 def __init__(self, **kwargs: Any):
22 _init_text_config(self, **kwargs)
23
24
25 class DiffusionGemmaConfig(PreTrainedConfig):
26 model_type = "diffusion_gemma"
27
28 def __init__(
29 self,
30 text_config: dict[str, Any] | None = None,
31 canvas_length: int = 256,
32 self_conditioning_size: int | None = None,
33 **kwargs: Any,
34 ):
35 self.text_config = DiffusionGemmaTextConfig(**(text_config or {}))
36 self.canvas_length = canvas_length
37 self.self_conditioning_size = self_conditioning_size
38 vision_config = kwargs.pop("vision_config", None)
39 if isinstance(vision_config, dict):
40 self.vision_config = Gemma4VisionConfig(**vision_config)
41 else:
42 self.vision_config = vision_config
43 self.audio_config = None
44 PreTrainedConfig.__init__(self, **kwargs)