CoolFace
Modelpublic

allenai/MolmoPoint-GUI-8B

sourceHugging Faceapache-2.0updated 6mo agoView on Hugging Face
20likes347downloads
configuration_molmo_point.py255 linesDownload Raw Back to root
1"""2Molmo2 configuration3"""4 5from typing import Optional6 7from transformers import PretrainedConfig, LogitsProcessor8from transformers.utils import logging9 10from .configuration_molmo2 import Molmo2TextConfig, Molmo2VitConfig, \11    Molmo2AdapterConfig12 13logger = logging.get_logger(__name__)14 15 16class MolmoPointAdapterConfig(PretrainedConfig):17    r"""18    This is the configuration class to store the configuration of Molmo2Adapter. With Molmo2VitConfig,19    It is used to instantiate an Molmo2VisionBackbone according to the specified arguments,20    defining the model architecture.21 22    Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the23    documentation from [`PretrainedConfig`] for more information.24 25    Example:26 27    ```python28    >>> from transformers import Molmo2VitConfig, Molmo2AdapterConfig, Molmo2VisionBackbone29 30    >>> # Initializing a Molmo2VitConfig and a Molmo2AdapterConfig31    >>> vit_config = Molmo2VitConfig()32    >>> adapter_config = MolmoPoolingConfig()33 34    >>> # Initializing a Molmo2VisionBackbone (with random weights)35    >>> model = Molmo2VisionBackbone(vit_config, adapter_config)36 37    >>> # Accessing the model configuration38    >>> vit_configuration = model.vit_config39    >>> adapter_configuration = model.adapter_config40    ```"""41 42    model_type = "molmo_point"43    base_config_key = "adapter_config"44 45    def __init__(46        self,47        vit_layers: tuple = (-3, -9),48        pooling_attention_mask: bool = False,49        hidden_size: int = 1152,50        num_attention_heads: int = 16,51        num_key_value_heads: int = 16,52        head_dim: int = 72,53        float32_attention: bool = True,54        attention_dropout: float = 0.0,55        residual_dropout: float = 0.0,56        hidden_act: str = "silu",57        intermediate_size: int = 18944,58        text_hidden_size: int = 3584,59        image_feature_dropout: float = 0.0,60        initializer_range: float = 0.02,61        attn_implementation: str = "eager",62        positional_embeddings: int = 16,63        attention_pooling_out_layer: bool = False,64        **kwargs,65    ):66        self.attn_implementation = attn_implementation67        super().__init__(68            attn_implementation=attn_implementation,69            **kwargs70        )71        self.vit_layers = vit_layers72        self.pooling_attention_mask = pooling_attention_mask73        self.hidden_size = hidden_size74        self.num_attention_heads = num_attention_heads75        self.num_key_value_heads = num_key_value_heads76        self.head_dim = head_dim77        self.float32_attention = float32_attention78        self.attention_dropout = attention_dropout79        self.residual_dropout = residual_dropout80        self.hidden_act = hidden_act81        self.intermediate_size = intermediate_size82        self.text_hidden_size = text_hidden_size83        self.image_feature_dropout = image_feature_dropout84        self.initializer_range = initializer_range85        self.positional_embeddings = positional_embeddings86        self.attention_pooling_out_layer = attention_pooling_out_layer87 88 89class MolmoPointConfig(PretrainedConfig):90    r"""91    This is the configuration class to store the configuration of a [`MolmoPointForConditionalGeneration`].92    It is used to instantiate an Molmo2 model according to the specified arguments, defining the model architecture.93 94    Example:95 96    ```python97    >>> from transformers import Molmo2Config, Molmo2VitConfig, Molmo2AdapterConfig, Molmo2TextConfig98 99    >>> # Initializing a Molmo2VitConfig100    >>> vit_config = Molmo2VitConfig()101 102    >>> # Initializing a Molmo2AdapterConfig103    >>> adapter_config = MolmoPointAdapterConfig()104 105    >>> # Initializing a Molmo2TextConfig106    >>> text_config = Molmo2TextConfig()107 108    >>> # Initializing a Molmo2Config109    >>> configuration = MolmoPointConfig(110    >>>     vit_config=vit_config,111    >>>     adapter_config=adapter_config,112    >>>     text_config=text_config,113    >>>     image_start_token_id=151936,114    >>>     image_end_token_id=151937,115    >>>     image_patch_id=151938,116    >>>     image_col_id=151939,117    >>>     low_res_image_start_token_id=151940,118    >>>     image_low_res_id=151942,119    >>>     frame_start_token_id=151943,120    >>>     frame_end_token_id=151944,121    >>> )122 123    >>> # Initializing a model124    >>> model = MolmoPointForConditionalGeneration(configuration)125 126    >>> # Accessing the model configuration127    >>> configuration = model.config128    ```"""129 130    model_type = "molmo_point"131    sub_configs = {132        "text_config": Molmo2TextConfig,133        "vit_config": Molmo2VitConfig,134        "adapter_config": MolmoPointAdapterConfig,135    }136 137    def __init__(138        self,139        vit_config: Molmo2VitConfig = None,140        adapter_config: MolmoPointAdapterConfig = None,141        text_config: Molmo2TextConfig = None,142        image_start_token_id: int = None,143        low_res_image_start_token_id: int = None,144        image_end_token_id: int = None,145        image_patch_id: int = None,146        image_non_indexable_patch_id: int = None,147        image_col_id: int = None,148        frame_start_token_id: int = None,149        frame_end_token_id: int = None,150        patch_token_id: int = None,151        subpatch_token_id: int = None,152        location_token_id: int = None,153        use_frame_special_tokens: bool = True,154        initializer_range: float = 0.02,155 156        # point config157        patch_location: Optional[str]="3x3",158        no_more_points_class: bool=False,159        patch_embed_dim: int=256,160        patch_embedding_kind: str="linear",161        embed_selected_vit_patch: Optional[str]="linear",162        embed_location: bool=False,163        layer_norm_x: bool=True,164        norm_logits: bool=True,165        # FIXME figure out how infernce params work166        mask_patches: Optional[str]="always",167        mask_subpatches: str="inference",168        mask_repeats: Optional[str]="inference",169        token_prediction_rotary: bool=True,170        token_prediction_rotary_theta: Optional[float]=50000,171        **kwargs,172    ):173        super().__init__(**kwargs)174        if vit_config is None:175            self.vit_config = Molmo2VitConfig()176        elif isinstance(vit_config, dict):177            self.vit_config = Molmo2VitConfig(**vit_config)178        else:179            self.vit_config = vit_config180        if adapter_config is None:181            self.adapter_config = Molmo2AdapterConfig()182        elif isinstance(adapter_config, dict):183            self.adapter_config = Molmo2AdapterConfig(**adapter_config)184        else:185            self.adapter_config = adapter_config186        if text_config is None:187            self.text_config = Molmo2TextConfig()188        elif isinstance(text_config, dict):189            self.text_config = Molmo2TextConfig(**text_config)190        else:191            self.text_config = text_config192        self.image_start_token_id = image_start_token_id193        self.low_res_image_start_token_id = low_res_image_start_token_id194        self.image_end_token_id = image_end_token_id195        self.image_high_res_id = image_patch_id196        self.image_non_indexable_patch_id = image_non_indexable_patch_id197        self.image_patch_id = image_patch_id198        self.image_col_id = image_col_id199        self.frame_start_token_id = frame_start_token_id200        self.frame_end_token_id = frame_end_token_id201        self.patch_token_id = patch_token_id202        self.subpatch_token_id = subpatch_token_id203        self.location_token_id = location_token_id204        self.use_frame_special_tokens = use_frame_special_tokens205        self.initializer_range = initializer_range206        self.patch_location = patch_location207        self.no_more_points_class = no_more_points_class208        self.patch_embed_dim = patch_embed_dim209        self.patch_embedding_kind = patch_embedding_kind210        self.embed_selected_vit_patch = embed_selected_vit_patch211        self.embed_location = embed_location212        self.layer_norm_x = layer_norm_x213        self.norm_logits = norm_logits214        self.mask_patches = mask_patches215        self.mask_subpatches = mask_subpatches216        self.mask_repeats = mask_repeats217        self.token_prediction_rotary = token_prediction_rotary218        self.token_prediction_rotary_theta = token_prediction_rotary_theta219 220    @property221    def image_num_patch(self):222        assert self.vit_config is not None223        return self.vit_config.image_num_patch224    225    @property226    def num_attention_heads(self):227        return self.text_config.num_attention_heads228    229    @property230    def num_key_value_heads(self):231        return self.text_config.num_key_value_heads232 233    @property234    def head_dim(self):235        return self.text_config.head_dim236 237    @property238    def num_hidden_layers(self):239        return self.text_config.num_hidden_layers240    241    @property242    def hidden_size(self):243        return self.text_config.hidden_size244    245    @property246    def vocab_size(self):247        return self.text_config.vocab_size248    249    @property250    def max_position_embeddings(self):251        return self.text_config.max_position_embeddings252 253 254MolmoPointAdapterConfig.register_for_auto_class()255MolmoPointConfig.register_for_auto_class()